Войдите в систему как пользователь без полномочий root в терминале


18

Это вопрос, на который я бы рассчитывал быстро получить ответ от Google. Однако как-то гугл меня подводит. Давайте предположим, что я вошел в сеанс терминала и хотел бы временно работать в качестве другого пользователя без полномочий root, пароль которого я знаю, не выходя из сеанса. Когда вы вошли в систему как этот пользователь, я хочу, чтобы домашний каталог и т. Д. Для этого пользователя были настроены правильно, пока я не выйду из системы. Как мне это сделать?

Я старался

su -- username

и затем ввод пароля, он не выдавал никаких ошибок, но я не увидел видимых изменений в командной строке, в которой все равно было бы написано myname @ myhost. Домашний каталог также был моим именем, а не новым логином, в который я пытался войти.

Я - как сейчас очевидно - довольно неопытен в Linux / Ubuntu, поэтому любая информация приветствуется.

Ответы:


18

На какого пользователя вы хотите перейти?

Проблема в том, что вы пытаетесь "su" войти в пользователя, которому не назначена оболочка. Большинство пользователей, таких как mysql, pulse и т. Д., Созданных системой или некоторыми пакетами при установке программного обеспечения, не имеют назначенной оболочки.

Вы можете проверить, имеет ли пользователь назначенную оболочку, посмотрев в /etc/passwdфайл, просто посмотрите на конец строки каждого пользователя, если он говорит, что /bin/falseэто означает, что ему не назначена оболочка, если у него есть что-то подобное /bin/bashили любое другое shell, тогда вы должны быть в состоянии "su" в этом пользователе.

Когда я говорю «назначенная оболочка», это в основном означает, что она имеет «доступ к оболочке»

Тем не менее, если пользователь не имеет доступа к оболочке, вы всегда можете выполнять команды как этот пользователь с

 sudo -u user command

Тем не менее, если у пользователя нет доступа к оболочке, вы всегда можете выполнять команды от имени этого пользователя с помощью команды «sudo -u user command»
Сэм

Добавьте -s /bin/bashк вашей suкоманде или используйте, chsh -u username -s /bin/bashчтобы изменить оболочку для пользователя. Остерегайтесь возможных последствий для безопасности.
gertvdijk

7

если у вас есть доступ к sudo, то я бы порекомендовал

sudo su username -

Он делает то же самое, но требует, чтобы вы знали свой пароль, а не другие пользователи.

однако, если у вас есть пароль других пользователей:

su username - должно работать просто отлично.

обратите внимание на 1 - и что это в конце.


Так или иначе оба описанных вами способа ведут себя точно так же, как у меня - команда принята без ошибок, но домашний каталог неверен, и в подсказке говорится, что я все еще являюсь исходным пользователем. Если я делаю выход после этого, я выхожу полностью.
Андрей Савиных

Хорошо, пользователь вошел в систему как разрешенный для входа? Вы можете заблокировать учетную запись от входа в систему, установив для своей оболочки значение «true», и это будет действовать именно так, как вы описали. Раньше это использовалось много раз на «системной» учетной записи, такой как «apache» и «ftp». Чтобы проверить, sudo cat /etc/passwdНЕ ПРОПИСЫВАЙТЕ СОДЕРЖАНИЕ ЗДЕСЬ. Просто взгляните на это и убедитесь, что у пользователя есть настоящая оболочка как последняя часть их линии.
Котейр

1
Заметьте, что более правильный способ сделать это - установить оболочку в «false», что приведет к ошибке. Хотя некоторые системы и учетные записи все еще используют true по техническим причинам или по соображениям псевдобезопасности (чтобы усугубить сопли у
хулиганов
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.