su (Русский)

From ArchWiki

Состояние перевода: На этой странице представлен перевод статьи su. Дата последней синхронизации: 21 февраля 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

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