su (Русский)
Состояние перевода: На этой странице представлен перевод статьи su. Дата последней синхронизации: 21 февраля 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
- Пользователи и группы
- sudo (Русский)
- Список приложений/Безопасность#Повышение привилегий
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
Retrieved from «https://wiki.archlinux.org/index.php?title=Su_(Русский)&oldid=729291»
- Security (Русский)
- Commands (Русский)
Команда Su в Linux (переключение пользователя)
Утилита su (сокращение от замены или переключения пользователя) позволяет запускать команды с привилегиями другого пользователя, по умолчанию пользователя root.
Использование su — самый простой способ переключиться на административную учетную запись в текущем сеансе входа в систему. Это особенно удобно, когда пользователю root не разрешено входить в систему через ssh или с помощью диспетчера отображения графического интерфейса.
В этом руководстве мы объясним, как использовать команду su .
Как использовать команду su
Общий синтаксис команды su следующий:
su [OPTIONS] [USER [ARGUMENT. ]]
При вызове без каких-либо параметров по умолчанию su запускает интерактивную оболочку от имени пользователя root:
Вам будет предложено ввести пароль root, и в случае аутентификации пользователь, выполняющий команду, временно станет пользователем root.
Переменные среды сеанса ( SHELL ) и home ( HOME ) устанавливаются из замещающей записи пользователя /etc/passwd , и текущий каталог не изменяется.
Чтобы подтвердить изменение пользователя, используйте команду whoami :
whoami
Команда выведет имя пользователя, запустившего текущий сеанс оболочки:
root
Наиболее часто используемый параметр при вызове su — это — ( -l , —login ). Это делает оболочку оболочкой входа в систему со средой, очень похожей на реальный вход в систему, и меняет текущий каталог :
Если вы хотите запустить другую оболочку вместо той, которая определена в файле passwd , используйте параметр -s , —shell . Например, чтобы переключиться на root и запустить оболочку zsh , вы должны ввести:
su -s /usr/bin/zsh
Чтобы сохранить всю среду ( HOME , SHELL , USER и LOGNAME ) вызывающего пользователя, вызовите команду с параметром -p , —preserve-environment .
su -p
Когда — опция используется, -p игнорируется.
Если вы хотите запустить команду от имени замещающего пользователя без запуска интерактивной оболочки, используйте параметр -c , —command . Например, чтобы вызвать команду ps от имени пользователя root, вы должны ввести:
su -c ps
Чтобы переключиться на другую учетную запись пользователя, передайте имя пользователя в качестве аргумента su . Например, чтобы переключиться на пользователя tyrion вы должны ввести:
su tyrion
Судо против Су
В некоторых дистрибутивах Linux, таких как Ubuntu, учетная запись пользователя root по умолчанию отключена по соображениям безопасности. Это означает, что пароль для root не установлен, и вы не можете использовать su для переключения на root.
Один из вариантов изменения на root — это добавить к команде su sudo и ввести пароль текущего пользователя:
sudo su -
Команда sudo позволяет запускать программы от имени другого пользователя, по умолчанию root.
Если пользователю предоставлена sudo Assessment, команда su вызывается от имени пользователя root. Запуск sudo su — и последующий ввод пароля пользователя имеет тот же эффект, что и запуск su — и ввод пароля root.
При использовании с параметром -i sudo запускает интерактивную оболочку входа в систему со средой пользователя root:
sudo -i
sudo -i в основном аналогичен запуску su — .
Преимущество использования sudo перед su заключается в том, что пароль root не должен использоваться несколькими учетными записями административных пользователей.
С помощью sudo вы также можете разрешить пользователям запускать только определенные программы с привилегиями root.
Выводы
su — это утилита командной строки, которая позволяет вам временно стать другим пользователем и выполнять команды от имени замещающего пользователя.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Как использовать команду Su в Linux. Сравнение команда Su и Su — с примерами.
В этой статье рассказано, что такое команда su (замена пользователя) в Unix/Linux и в чем разница между командами su и su —. Linux — это многопользовательское ядро операционной системы, это означает, что несколько пользователей могут одновременно входить в систему Linux.
Вы можете переключаться между разными пользователями в командной строке с помощью команды su. Команда su означает «заменить пользователя». Данная команда изменяет учетные данные пользователя на пользователя root.

Что делает команда su
Команда su, как показано ниже, изменит учетные данные пользователя на учетные данные другого пользователя. Давайте посмотрим это на примере:
[raghu@redhat-server ~]$ su jack
Password:
[jack@redhat-server raghu]$ id
uid=501(jack) gid=501(jack) groups=501(jack),504(javaproject) context=root:system_r:unconfined_t:SystemLow-SystemHigh
Команда id выводит информацию о текущем пользователе. В приведенных выше выходных данных вы можете увидеть измененного пользователя. Если команда su не имеет аргументов, то по умолчанию она изменяется на пользователя root. Справочные информация Ubuntu объясняет это более подробно.
[jack@redhat-server raghu]$ su
Password:
[root@redhat-server raghu]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=root:system_r:unconfined_t:SystemLow-SystemHigh
Имитация входа с помощью команды su —
С помощью команды «su-login» или «su-l» или просто «su -« вы можете переключать пользователя, как если бы это был вход с терминала.
[raghu@redhat-server ~]$ su — jack
Password:
[jack@redhat-server ~]$ id
uid=501(jack) gid=501(jack) groups=501(jack),504(javaproject) context=root:system_r:unconfined_t:SystemLow-SystemHigh
Различие между su и su-
Разница между » su » и «su —» заключается в том, что переменная PATH, не изменяет значения с помощью команды su. Некоторые команды могут не выполняться, если PATH задан неправильно. Например, рассмотрим следующий сценарий:
[jack@redhat-server ~]$ su root
Password:
[root@redhat-server jack]# fdisk -l
bash: fdisk: command not found
[root@redhat-server jack]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/jack/bin
Вы можете видеть, что каталоги sbin не включены в PATH пользователя root. Таким образом, он не выполняет команду fdisk. Теперь мы попытаемся войти в систему с помощью команды su —:
[jack@redhat-server ~]$ su —
Password:
[root@redhat-server ~]# fdisk -lDisk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 1044 8281507+ 8e Linux LVM
[root@redhat-server ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
Еще одно различие между этими двумя командами — сценарии входа в систему. Во-первых, давайте посмотрим на сценарии входа в систему:
Возможно вам будет интересно: Установка и запуск Ubuntu с помощью Live-CD
Когда пользователь входит в систему, выполняются следующие 4 файла, если учетные данные пользователя являются законными:
Когда вы входите в систему с помощью команды » su —«, все эти сценарии выполняются. А с командой su выполняются только сценарии bashrc. Т. е. выполняются сценарии /etc/bashrc и ~./bashrc.
Команда su — выдаёт Authentication failure в Ubuntu
В ubuntu при запуске команды su может произойти сбой аутентификации. Вы получаете эту ошибку, потому что учетная запись root в ubuntu по умолчанию отключена.
user@host:~$ su
Password:
su: Authentication failure
Вместо того, чтобы использовать su используйте sudo -i или sudo . Либо поставьте пароль на учетную запись root. Так как она по умолчанию без пароля будет заблокированной.
Заключение
В этой статье мы показали разницу между командами “su” и “su -” в Linux. Надеюсь, вам понравилась наша статья и она вам помогла.
Инструкция по команде su
Команда su используется для запуска команд от имени другого пользователя, например, для запуска утилит с повышенными привилегиями от имени root.
Чтобы выполнить КОМАНДУ с правами root используйте конструкцию:
su -c КОМАНДА
su -c whoami
Чтобы открыть оболочку для пользователя root с инициализацией его переменных среды (например, $HOME):
Чтобы выполнить команду ‘Get-Help Get-Alias -Full’ с правами root в оболочке /usr/bin/pwsh-preview:
su -c 'Get-Help Get-Alias -Full' -s /usr/bin/pwsh-preview
Для чего нужна команда su
su позволяет запускать команды с замещающим идентификатором пользователя и группы.
При вызове без указания пользователя su по умолчанию запускает интерактивную оболочку от имени пользователя root. Когда указан пользователь, могут быть предоставлены дополнительные аргументы, и в этом случае они передаются оболочке.
Для обратной совместимости su по умолчанию не изменяет текущий каталог и устанавливает только переменные среды $HOME и $SHELL (плюс $USER и $LOGNAME, если целевой пользователь не является пользователем root). Рекомендуется всегда использовать опцию «—login» (вместо её псевдонима «—»), чтобы избежать побочных эффектов, вызванных смешиванием сред.
su в основном предназначен для непривилегированных пользователей, рекомендуемое решение для привилегированных пользователей (например, сценарии, выполняемые пользователем root) — использовать команду runuser без идентификатора пользователя, которая не требует аутентификации и предоставляет отдельную конфигурацию PAM. Если сеанс PAM вообще не требуется, рекомендуется использовать команду setpriv.
Обратите внимание, что su во всех случаях использует PAM (pam_getenvlist) для окончательной модификации среды. Параметры командной строки, такие как —login и —preserve-environment, влияют на среду до того, как она будет изменена PAM.
Что использовать sudo или su?
У программы su похожее назначение: запустить команду с подстановкой ID другого пользователя и группы. То есть одинакового результата можно добиться используя как sudo, так и su.
Различия между этими программами вы найдёте в разделе «Что использовать sudo или su?».
Смотрите также:
- Что такое sudo
- Как пользоваться sudo
Как использовать команду su
Синтаксис команды следующий:
su [ОПЦИИ] [-] [ПОЛЬЗОВАТЕЛИ [АРГУМЕНТ. ]]
Опции команды su:
-c, —command=КОМАНДА
Передаёт команду оболочке с параметром -c.
-f, —fast
Передаёт значение -f оболочке, что может оказаться полезным, а может и не оказаться полезным, в зависимости от оболочки.
-g, —group=ГРУППА
Указывает основную группу. Эта опция доступна только пользователю root.
-G, —supp-group=ГРУППА
Укажите дополнительную группу. Эта опция доступна только пользователю root. Первая указанная дополнительная группа также используется как основная группа, если не указан параметр —group.
-, -l, —login
Запуск оболочки как оболочки с входом в систему со средой, похожей на реальный вход в систему. Эта опция делает следующее:
- • очищает все переменные среды, кроме $TERM и переменных, указанных в —whitelist-environment
- • инициализирует переменные среды $HOME, $SHELL, $USER, $LOGNAME и $PATH
- • изменяет домашнюю папку на папку целевого пользователя
- • устанавливает argv[0] оболочки на «—», чтобы сделать оболочку оболочкой с входом в систему
-m, -p, —preserve-environment
Сохраните всю среду, т.е. не устанавливайте $HOME, $SHELL, $USER или $LOGNAME. Этот параметр игнорируется, если указан параметр —login.
-P, —pty
Создайте псевдотерминал для сеанса. Независимый терминал обеспечивает лучшую безопасность, поскольку пользователь не использует терминал совместно с исходным сеансом. Это можно использовать, чтобы избежать внедрения терминала TIOCSTI ioctl и других атак на безопасность дескрипторов файлов терминала. Весь сеанс также можно переместить в фоновый режим (например, «su —pty — username -c application &»). Если псевдотерминал включён, su работает как прокси-сервер между сеансами (копирует stdin и stdout).
Эта функция в основном предназначена для интерактивных сеансов. Если стандартный ввод — это не терминал, а, например, канал (например, echo «date» | su —pty), то флаг ECHO для псевдотерминала отключён, чтобы избежать беспорядочного вывода.
-s, —shell=ОБОЛОЧКА
Запускает указанную оболочку вместо оболочки по умолчанию. Оболочка для запуска выбирается в соответствии со следующими правилами в следующем порядке:
- оболочка, указанная с помощью —shell
- оболочка, указанная в переменной окружения $SHELL, если используется опция —preserve-environment
- оболочка, указанная в записи passwd целевого пользователя
- /bin/sh
Список доступных в операционной системе оболочек можно вывести командой:
chsh -l
Смотрите также:
- Как в Linux изменить login shell (оболочку входа в систему). Инструкция по команде chsh
- Как узнать, какая оболочка используется в Linux
Если у целевого пользователя ограниченная оболочка (то есть не указана в /etc/shells), параметр —shell и переменные среды SHELL игнорируются, если вызывающий пользователь не является пользователем root.
—session-command=КОМАНДА
То же, что и -c, но не создаёт новый сеанс.
-w, —whitelist-environment=СПИСОК
Не сбрасывать переменные среды, указанные в списке, разделённом запятыми, при очистке среды для —login. Белый список игнорируется для переменных среды $HOME, $SHELL, $USER, $LOGNAME и $PATH.
-V, —version
Отобразите информацию о версии и выйдите.
-h, —help
Показать текст справки и выйти.
Типичными примерами использования su является выполнение КОМАНДЫ от имени root:
su -c КОМАНДА
Также su может использоваться для открытия интерактивной оболочки с правами root: