su (сокр. от англ. Substitute User) — команда Unix-подобных операционных систем, позволяющая пользователю войти в систему под другим именем, не завершая текущий сеанс. Обычно используется для временного входа суперпользователем для выполнения административных работ.

СинтаксисПравить

Синтаксис команды:

su [-] [имя_пользователя [аргумент ... ]] 

Команда su позволяет пользователю выполнять команды от имени другого пользователя, не завершая текущий сеанс, или получить роль. По умолчанию предполагается работа от имени пользователя root (суперпользователя).

Для использования su необходимо ввести соответствующий пароль (если только команду не вызывает пользователь root). Если введен правильный пароль, su создает новый процесс командного интерпретатора, с такими же реальными и эффективными идентификаторами пользователя и группы, а также списком дополнительных групп, что и у указанного пользователя. В качестве нового командного интерпретатора используется указанный в поле начальной программы записи файла passwd для соответствующего пользователя (см. passwd(4)). Если командный интерпретатор там не указан, используется /usr/bin/sh (см. sh(1)). Чтобы вернуться в прежний сеанс, введите символ конца файла, EOF (Ctrl-D) для завершения работы нового командного интерпретатора.

Любые дополнительные аргументы, заданные в командной строке, передаются новому командному интерпретатору. При использовании программ типа sh, если аргумент имеет вид -c строка, то строка выполняется интерпретатором как команда, а аргумент -r приводит к запуску ограниченного командного интерпретатора.

Следующие утверждения верны, если в качестве начальной программы в учетной записи пользователя задана /usr/bin/sh или пустая строка (что означает стандартный командный интерпретатор /usr/bin/sh). Если первый аргумент su — дефис (-), среда будет установлена такой же, как при регистрации заданного пользователя. Иначе передается текущая среда, за исключением значения $PATH, которое задается переменными PATH и SUPATH в файле /etc/default/su. Кроме того, если задан аргумент дефис устанавливается идентификатор проекта пользователя. См. settaskid(2).

Все попытки стать другим пользователем с помощью команды su регистрируются в журнальном файле /var/adm/sulog (см sulog(4)). ЗАЩИТА

Команда su используется механизм pam(3PAM) для аутентификации, управления учетной записью и управления сеансом. Конфигурация модулей PAM, задаваемая в файле /etc/pam.conf, перечисляет модули, которые должны использоваться для команды su. Вот часть файла pam.conf с записями для su, задающими использование стандартного (UNIX) модуля аутентификации, управления учетной записью и сеансом.

su auth required /usr/lib/security/pam_unix.so.1 su account required /usr/lib/security/pam_unix.so.1 su session required /usr/lib/security/pam_unix.so.1

Если записей для службы su в этом файле нет, будут применяться записи для службы «other». Если перечислено несколько модулей аутентификации, у пользователя могут запрашивать несколько паролей. ПРИМЕРЫ Пример 1: Работа от имени пользователя bin в прежней среде

Чтобы стать пользователем bin, сохранив прежнюю среду, выполните команду:

   example% su bin 

Пример 2: Работа от имени пользователя bin в его начальной среде

Чтобы стать пользователем bin, изменив среду так, как если бы он действительно зарегистрировался в системе, выполните команду:

   example% su - bin 

Пример 3: Выполнение одной команды с правами и в среде пользователя bin

Чтобы выполнить команду во временной среде и с правами пользователя bin, введите:

   example% su - bin -c "command args" 

ПЕРЕМЕННЫЕ СРЕДЫ

Переменные с префиксом LD_ убраны из соображений защиты. Поэтому при выполнении su bin в среде не останутся ранее экспортированные переменные с префиксом LD_ при работе от имени bin.

Если в среде не установлены какие-то из переменных LC_* (LC_CTYPE, LC_MESSAGES, LC_TIME, LC_COLLATE, LC_NUMERIC и LC_MONETARY) (см. environ(5)), поведение команды su для соответствующих категорий локали определяется значением переменной среды LANG. Если установлена переменная LC_ALL, ее значение имеет приоритет и над значением LANG, и над значениями других переменных LC_*. Если ни одна из перечисленных переменных в среде не установлена, поведение su задает локаль «C» (американского стиля).

LC_CTYPE

   Определяет, как su обрабатывает символы. Если переменная LC_CTYPE имеет допустимое значение, su может выдавать и обрабатывать текст и имена файлов, содержащие допустимые для этой локали символы. Команда su может выдавать и обрабатывать символы Extended Unix Code (EUC), каждый из которых может быть представлен как 1, 2 или 3 байта. su также может обрабатывать символы EUC, занимающие 1, 2 или более символьных позиций. В локали "C" допустимы только символы кодовой страницы ISO 8859-1.

LC_MESSAGES

   Определяет, как выдаются выдаются диагностические и информационные сообщения. В частноти, язык и стиль сообщений, а такде допустимые формы утвердительного и отрицательного ответа. В локали "C" сообщения выдаются в стандартном виде, как представлены в самой программе (в большинстве случаев, на американском диалекте английского языка). 

ФАЙЛЫ

$HOME/.profile

   команды для sh и ksh, выполняемые при регистрации пользователя

/etc/passwd

   файл паролей (учетных записей) системы

/etc/profile

   общесистемные команды для sh и ksh, выполняемые при регистрации всех пользователей, использующих эти командные интерпретаторы в качестве начальных

/var/adm/sulog

   файл журнала

/etc/default/su

   файл стандартных параметров su со следующими параметрами:
   SULOG
       Если задан, все попытки выполнить команды от имени другого пользователя с помощью su регистрируются в указанном файле.
   CONSOLE
       Если задан, все попытки выполнить с помощью su команды от имени пользователя root регистрируются на консоли.
   PATH
       Стандартный путь поиска выполняемых программ. (/usr/bin:)
   SUPATH
       Стандартный путь поиска выполняемых программ для пользователя, пытающегося с помощью su выполнить команды от имени пользователя root. (/usr/sbin:/usr/bin)
   SYSLOG
       Определяет, должны ли все попытки вызова su регистрироваться с помощью средств syslog(3C) LOG_AUTH. При попытке выполнения команд от имени root с помощью su генерируются сообщения LOG_NOTICE, при попытке выполнения команд от имени других пользователей генерируются сообщения LOG_INFO, а для нгеудавшихся попыток вызова su генерируются сообщения LOG_CRIT.
   SLEEPTIME
       Если задан, определяет количество секунд ожидания, прежде чем на экран выдается сообщение о неудачной попытке регистрации (login failure) и разрешается новая попытка. Стандартное значение - 4 секунды. Минимальное - 0 секунд, максимальное - 5 секунд.