su (Русский)
su (substitute user) — это основная утилита, которая используется для выполнения программ от имени друого пользователя в системе, по умолчанию root.
Поведение su можно настроить с помощью PAM.
Установка
su входит в состав пакета util-linux.
Использование
Чтобы выполнить вход в другого пользователя, передайте имя пользователя, которым вы хотите стать, в команду su:
# su пользователь
Вам будет предложено ввести пароль пользователя, которым вы пытаетесь стать.
Если имя пользователя не указано, su по умолчанию будет root, и пароль, который вам будет предложено ввести, должен быть паролем root.
Полная документация доступна в su(1).
Советы и рекомендации
Оболочка входа
По умолчанию su остаётся в текущем каталоге и сохраняет переменные окружения исходного пользователя (а не переключается на переменные нового пользователя).
Обратите внимание на следующие важные противоположные соображения:
- Иногда системному администратору может быть полезно использовать учётную запись обычного пользователя, а не свою собственную. В частности, иногда наиболее эффективным способом решения проблемы пользователя является вход в учётную запись этого пользователя для воспроизведения или отладки проблемы.
- Однако во многих ситуациях нежелательно и даже может быть опасно, чтобы пользователь root работал из учётной записи обычного пользователя и с переменными окружения этой учётной записи, а не из root. Случайно используя окружение обычного пользователя, root может установить программу или внести другие изменения в систему, которые поведут себя не так, как если бы они были сделаны в полном окружении root. Например, может быть установлена программа, которая даст обычному пользователю возможность случайно повредить систему или получить несанкционированный доступ к данным.
Таким образом, рекомендуется, чтобы администраторы и другие пользователи, которым разрешено использовать su (а предполагается, что таких пользователей очень мало, если вообще есть), приобрели привычку всегда запускать команду su с опцией -l
/--login
. Это даёт два эффекта:
- Переходит из текущего каталога в домашний каталог нового пользователя (например, в каталог
/root
в случае пользователя root) путём входа от имени этого пользователя. - Изменяет переменные окружения на переменные окружения нового пользователя, как это прописано в настройках его оболочки. Например, считывается его
~/.bashrc
и, возможно, другие dot-файлы оболочки bash. То есть, текущий каталог и окружение будут изменены на те, которые ожидались бы, если бы новый пользователь действительно вошёл в новый сеанс (а не просто взял на себя управление существующим сеансом).
Таким образом, администраторам обычно следует использовать su следующим образом:
$ su -l
Такой же результат получается при добавлении имени пользователя root:
$ su -l root
Аналогично, то же самое можно сделать для любого другого пользователя (например, для пользователя с именем archie):
# su -l archie
Можно прописать псевдоним в ~/.bashrc
:
alias su="su -l"
su и wheel
По умолчанию BSD su позволяет стать root только пользователям из группы wheel
. Это не является поведением по умолчанию в GNU su, но может быть имитировано с помощью PAM. Раскомментируйте соответствующую строку в /etc/pam.d/su
и /etc/pam.d/su-l
:
auth required pam_wheel.so use_uid