Я новичок в настройке сервера и усилении защиты сервера, но мне нужно было начать сегодня. В основном у меня есть опыт работы со своим рабочим столом ubuntu.
В любом случае, я только что создал нового пользователя, которого собираюсь использовать для доступа ко всему веб-сайту, например:
Как root:
useradd -d /var/www/example.com example
passwd example
... (typing in the pw)
окей. Теперь, если я попытаюсь переключиться на этого пользователя, с
su example
Я даже не получаю подсказки о пароле, а вижу только
$
Странно то, что у меня, по-видимому, нет нормальной командной строки, как обычно, но многие вещи не работают: например, подсветка синтаксиса, автоматическое завершение с помощью 'TAB' и т.д. - на моем рабочем столе ubuntu я вместо этого получаю обычный example@...:~#
линия. Что я делаю не так?
Пока все хорошо. У вашего нового пользователя другая оболочка. Вы можете проверить:
echo $SHELL
Можно изменить стандартную оболочку текущего пользователя с помощью:
chsh -s /bin/bash
Или с помощью root можно изменить оболочку пользователя:
chsh -s /bin/bash example
Вы не делаете ничего плохого.
su - это, по сути, действие, которое создает оболочку внутри вашей текущей оболочки, а не столько переключение внутри текущей оболочки. И в зависимости от выбора новой загружаемой оболочки она будет вести себя по-разному. Вот почему при выходе из su вы возвращаетесь к предыдущему пользователю; вы просто вышли из внутренней оболочки.
Кроме того, su не будет запрашивать пароль, если вы сделаете это от root, потому что вы root.
Немного о команде SU. Если вы вошли в систему как пользователь корень, вы всегда можете стать другим пользователем, не зная пароля. Стать пример и оставаться в текущем каталоге
[root@host ~]#su example
Стать пример и перейдите в домашний каталог пользователя
[root@host ~]#su - example
Теперь, если вы попробуете эти команды, у непривилегированного пользователя будет запрашиваться пароль.
Что такое $? Это оболочка
По умолчанию в вашей операционной системе используется SH (оболочка оболочки). Если вы хотите использовать оболочку bash, тогда, когда пользователь, укажите ее:
[root@host ~]# useradd -s /bin/bash exmaple