Назад | Перейти на главную страницу

centos: su тихо не работает

На сервере CentOS, где я вошел в систему через SSH как root, я делаю:

su otherusername

где "otherusername" - это имя другого пользователя, который существует.

Ничего не делает. После этого у меня все еще root. whoami возвращает root, любой файл, который я создаю, принадлежит root, то есть su просто не su.

Однако это не выдает никаких сообщений об ошибках. Если я попытаюсь выполнить su с недопустимым именем пользователя, появится сообщение об ошибке.

Что мне не хватает ??

Делает другое имя пользователя иметь действующую оболочку в /etc/passwd?

какой su выполняет процесс от имени другого пользователя. По умолчанию он выбирает то, что указано в последнем поле в /etc/passwd для рассматриваемого пользователя. Обычно это оболочка типа /bin/sh или /bin/bash. Когда этот процесс завершается, вы попадаете обратно в исходную оболочку, в которой вы запустили, и которая принадлежит пользователю root.

Так далеко как su обеспокоен, он успешно переключился на правильного пользователя, поэтому сообщение об ошибке не требуется. Затем он передает управление настроенной оболочке, выполнив это. Если эта оболочка похожа на /bin/false, он просто сделает то, что /bin/false всегда делает, что означает выход с 1 (ложный) status, возвращая вас к родительской оболочке, принадлежащей пользователю root. /bin/true делает то же самое, но со статусом 0 (правда).

Другие псевдооболочки могут вести себя иначе. Например, /usr/sbin/nologin эхо

Этот аккаунт в настоящее время недоступен.

перед выходом с 1.

Вы можете изменить настроенную оболочку для пользователя с usermod -s /bin/bash otherusername как пользователь root.


Вы можете увидеть подобное сбивающее с толку поведение вокруг sudo если вы используете его с cd. Если вы обычный пользователь и не можете cd в каталог, sudo cd directory не будет печатать сообщение об ошибке, не изменит вас на root и не изменит ваш каталог.

Причина этого в том, что он запускает новую оболочку как root, меняет каталог на правильный каталог, а затем немедленно выходит, оставляя вас обратно в исходную оболочку в исходном каталоге.