su
Section: Пользовательские команды (1)
Updated: 04/29/2018
Page Index
НАЗВАНИЕ
su - изменяет ID пользователя или делает его суперпользователем
СИНТАКСИС
-
su [параметры] [-] [имя_пользователя [ args ]]
ОПИСАНИЕ
The
su
command is used to become another user during a login session. Invoked without a
username,
su
defaults to becoming the superuser. The
-
option may be used to provide an environment similar to what the user would expect had the user logged in directly. The
-c
option may be used to treat the next argument as a command by most shells.
Options are recognized everywhere in the argument list. You can use the
--
argument to stop option parsing. The
-
option is special: it is also recognized after
--, but has to be placed before
username.
Пользователю предложат ввести пароль, если он задан. При неверном пароле возникает сообщение об ошибке. Все попытки, удачные и неудачные, протоколируются системой с целью обнаружения злоупотреблений.
Текущее окружение передаётся новой оболочке. Значение
$PATH
сбрасывается в значение
/bin:/usr/bin
для обычных пользователей или в
/sbin:/bin:/usr/sbin:/usr/bin
для суперпользователя. Эти значения можно изменить в переменных
ENV_PATH
и
ENV_SUPATH
в файле
/etc/login.defs.
Субсистемный вход в систему можно распознать по наличию символа «*» в начале регистрационной оболочки. Заданный домашний каталог будет использован как корень новой файловой системы, в которой регистрируется пользователь.
ПАРАМЕТРЫ
Параметры команды
su:
-c, --command КОМАНДА
-
Указать команду, которая будет запущена оболочкой в виде параметра для
-c.
The executed command will have no controlling terminal. This option cannot be used to execute interactive programs which need a controlling TTY.
-, -l, --login
-
Предоставляет окружение, как если бы пользователь непосредственно регистрировался в системе.
When
-
is used, it must be specified before any
username. For portability it is recommended to use it as last option, before any
username. The other forms (-l
and
--login) do not have this restriction.
-s, --shell ОБОЛОЧКА
-
Оболочка, которая будет запущена.
Запущенная оболочка выбирается из (в порядке убывания приоритета):
-
Оболочка указанная в параметре --shell.
-
Если используется
--preserve-environment, то оболочка задаётся переменной окружения
$SHELL.
-
Оболочка, указанная в записи файла
/etc/passwd
для заданного пользователя.
-
/bin/sh, если ни одной оболочке не было найдено с помощью методов, указанных выше.
Если заданный пользователь имеет ограниченную оболочку (то есть оболочка в поле пользовательской записи в файле
/etc/passwd
отсутствует в файле
/etc/shells), то параметр
--shell
или переменная окружения
$SHELL
не будут учтены, если
su
не была запущена суперпользователем.
-m, -p, --preserve-environment
-
Сохранить текущее окружение за исключением:
$PATH
-
сбрасывается в значение
ENV_PATH
или
ENV_SUPATH
(смотрите далее) из
/etc/login.defs;
$IFS
-
сбрасывается в значение
«<space><tab><newline>», если она установлена.
Если заданный пользователь имеет ограниченную оболочку, то этот параметр не сработает (если
su
не запускается суперпользователем).
Заметим, что поведение окружения по умолчанию таково:
-
Переменные окружение
$HOME,
$SHELL,
$USER,
$LOGNAME,
$PATH
и
$IFS
сбрасываются.
-
Если параметр
--login
не указан, то окружение копируется, за исключением переменных, перечисленных выше.
-
Если параметр
--login
указан, то переменные окружения
$TERM,
$COLORTERM,
$DISPLAY
и
$XAUTHORITY
копируются (если они установлены).
-
Если параметр
--login
указан, то переменные окружения
$TZ,
$HZ
и
$MAIL
устанавливаются согласно переменным файла
/etc/login.defs:
ENV_TZ,
ENV_HZ,
MAIL_DIR
и
MAIL_FILE
(смотрите далее).
-
Если параметр
--login
указан, то дополнительные переменные окружения могут быть установлены из файла
ENVIRON_FILE
(смотрите далее).
ПРЕДОСТЕРЕЖЕНИЯ
Данная версия программы
su
может быть собрана с разными параметрами и только некоторые из них смогут быть использованы на любой машине.
НАСТРОЙКА
На работу этого инструмента влияют следующие переменные настройки из
/etc/login.defs:
CONSOLE (строка)
-
Если определена, то значение равно или полному пути к файлу с именами устройств (одно на строку), или списку имён устройств, перечисленных через «:». Вход суперпользователя будет разрешён только с этих устройств.
Если не определена, то суперпользователь может входить в систему с любого устройства.
Устройства должны указываться без начального префикса /dev/.
CONSOLE_GROUPS (строка)
-
Список групп для добавления к набору пользовательских дополнительных групп при входе с консоли (определяемой переменной CONSOLE). По умолчанию не указана.
Используйте осторожно --- может дать пользователям постоянный доступ к этим группам, даже если они не входили с консоли.
DEFAULT_HOME (логический)
-
Определяет, можно ли войти в систему, если нельзя выполнить cd в домашний каталог. По умолчанию «no».
Если равно
yes, то пользователь будет попадать в корневой каталог (/), если невозможно выполнить cd в его домашний каталог.
ENV_HZ (строка)
-
Если установлена, то будет использоваться для определения переменной окружения HZ при входе пользователя в систему. Значение должно начинаться с
HZ=. Обычное значение для Linux ---
HZ=100.
ENVIRON_FILE (строка)
-
Если этот файл существует и доступ для чтения, то из него читает регистрационное окружение. Каждая строка должна иметь формат: имя=значение.
Строки, начинающиеся с #, считаются комментарием и игнорируются.
ENV_PATH (строка)
-
If set, it will be used to define the PATH environment variable when a regular user login. The value is a colon separated list of paths (for example
/bin:/usr/bin) and can be preceded by
PATH=. The default value is
PATH=/bin:/usr/bin.
ENV_SUPATH (строка)
-
If set, it will be used to define the PATH environment variable when the superuser login. The value is a colon separated list of paths (for example
/sbin:/bin:/usr/sbin:/usr/bin) and can be preceded by
PATH=. The default value is
PATH=/sbin:/bin:/usr/sbin:/usr/bin.
ENV_TZ (строка)
-
Если установлена, то будет использоваться для определения переменной окружения TZ при входе пользователя. Значение может быть равно имени часового пояса, начинающегося
TZ=
(например,
TZ=CST6CDT), или полному пути к файлу с параметрами часового пояса (например,
/etc/tzname).
Если указан полный путь, но файл не существует или недоступен для чтения, то используется значение по умолчанию:
TZ=CST6CDT.
LOGIN_STRING (строка)
-
Строка-приглашение к вводу пароля. Значение по умолчанию: «Password:» или перевод этой строки на разные языки. Если вы измените эту переменную, то перевод будет отсутствовать.
Если в строке содержится подстрока
%s, то она будет заменена на имя пользователя.
MAIL_CHECK_ENAB (логический)
-
Включает проверку и показ состояния почтового ящика при входе.
Вы должны выключить это, если почтовый ящик проверяется из файлов автозапуска оболочки («mailx -e» или похожей командой).
MAIL_DIR (строка)
-
Почтовый каталог. Данный параметр нужен для управления почтовым ящиком при изменении или удалении учётной записи пользователя. Если параметр не задан, то используется значение указанное при сборке.
MAIL_FILE (строка)
-
Определяет расположение почтовых файлов пользователя относительно домашнего каталога.
Переменные
MAIL_DIR
и
MAIL_FILE
используются командами
useradd,
usermod
и
userdel
для создания, перемещения или удаления почты пользователя.
Если значение
MAIL_CHECK_ENAB
равно
yes, то они также используются для определения переменной окружения
MAIL.
QUOTAS_ENAB (логический)
-
Включает установку ограничений ресурсов из
/etc/limits
и ulimit, umask и niceness из поля gecos файла passwd.
SULOG_FILE (строка)
-
Если определена, то любая активность su будет протоколироваться в этот файл.
SU_NAME (строка)
-
Если определена, то выводится имя команды когда работает «su -». Например, если значение равно «su», то «ps» покажет команду как «-su». Если не определена, то «ps» покажет имя запускаемой оболочки например как «-sh».
SU_WHEEL_ONLY (логический)
-
Если равна
yes, то пользователь должен быть членом первой группы с gid 0 в файле
/etc/group
(в большинстве систем Linux называется
root), чтобы иметь возможность запускать
su
для получения uid 0. Если группа не существует, или пуста, то никто не сможет получить uid 0 с помощью
su.
SYSLOG_SU_ENAB (логический)
-
Включить протоколирование «syslog» действий
su
--- дополнительно к протоколированию в файле sulog.
USERGROUPS_ENAB (логический)
-
Включает установку группы битов umask равной битам владельца (пример: 022 -> 002, 077 -> 007) для не суперпользователей, если uid равен gid и имя пользователя совпадает с именем первичной группы.
Если значение равно
yes, то
userdel
удаляет пользовательскую группу, если в ней нет больше членов, а
useradd
по умолчанию создаёт группу с именем пользователя.
ФАЙЛЫ
/etc/passwd
-
содержит информацию о пользователях
/etc/shadow
-
содержит защищаемую информацию о пользователях
/etc/login.defs
-
содержит конфигурацию подсистемы теневых паролей
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
При успешном выполнении
su
возвращает код выхода команды, которая была выполнена.
Если выполнение команды завершилось по сигналу, то
su
возвращает номер этого сигнала плюс 128.
Если su завершила команду (так как был запрос сделать это и команда не завершилась в положенное время), то
su
завершается с кодом 255.
Некоторые коды выхода
su
не зависят от запускаемой команды:
0
-
Успешно (только для
--help)
1
-
Сбой аутентификации или системы
126
-
Запрошенная команда не найдена
127
-
Запрошенная команда не может быть выполнена
СМОТРИТЕ ТАКЖЕ
login(1),
login.defs(5),
sg(1),
sh(1).