Основное различие между этими командами заключается в том, как они ограничивают доступ к своим функциям.
su
(что означает «заменить пользователя» или «переключить пользователя») - делает именно это, запускает другой экземпляр оболочки с привилегиями целевого пользователя. Чтобы убедиться, что у вас есть права для этого, он запрашивает пароль целевого пользователя . Итак, чтобы стать пользователем root, вам нужно знать пароль root. Если на вашем компьютере есть несколько пользователей, которым нужно запускать команды от имени пользователя root, все они должны знать пароль root - учтите, что это будет тот же пароль. Если вам необходимо отозвать права администратора у одного из пользователей, вам нужно изменить пароль пользователя root и сообщить его только тем людям, которым необходимо сохранить доступ - беспорядочно.
sudo
(хм ... что за мнемоника? Super-User-DO?) совершенно другая. Он использует файл конфигурации (/ etc / sudoers), в котором указывается, какие пользователи имеют права на определенные действия (запускать команды от имени пользователя root и т. Д.). При вызове запрашивает пароль пользователя, который его запустил, - чтобы убедиться, что пользователь терминал действительно тот же "Джо", который указан в /etc/sudoers
. Чтобы отозвать права администратора у человека, вам просто нужно отредактировать файл конфигурации (или удалить пользователя из группы, которая указана в этой конфигурации). Это приводит к намного более чистому управлению привилегиями.
В результате этого во многих системах на основе Debian root
пользователь не имеет установленного пароля - то есть невозможно напрямую войти в систему как root.
Кроме того, /etc/sudoers
позволяет указать некоторые дополнительные параметры - т.е. пользователь X может запускать только программу Y и т. Д.
Часто используемая sudo su
комбинация работает следующим образом: сначала sudo
запрашивает ваш пароль, и, если вам это разрешено, вызывает следующую команду ( su
) в качестве суперпользователя. Поскольку su
вызывается root
, это не требует ввода пароля целевого пользователя. Таким образом, sudo su
позволяет открывать оболочку от имени другого пользователя (включая пользователя root), если /etc/sudoers
файл разрешен для доступа суперпользователя .
su user
для входа из ненадежных оболочек, ноsu - user
. См. Unix.stackexchange.com/q/7013/8250