Кажется, у вас может возникнуть путаница между тем, для чего используются sudo и su. Оба позволяют пользователю выполнять команды, как если бы они были другим пользователем с различными привилегиями, но есть определенные различия.
Чрезмерное обобщение будет:
- su - получить оболочку с помощью uid/gid другого пользователя, аутентифицируясь с помощью пароля этого пользователя.
- sudo - запустить команду с помощью uid/gid другого пользователя, аутентифицируясь с вашим паролем.
SU
В общем, большинство людей используют su для запуска оболочки с (s)ubstitue (u)ser id и / или id группы. Это чаще всего делается для получения привилегий root, но также может использоваться для любого системного пользователя.
Если пользователь, выполняющий su, не является пользователем root, он запросит пароль пользователя, которого вы пытаетесь использовать в качестве su.
su -
войдите в систему как пользователь root с оболочкой входа в систему, которая будет иметь среду, аналогичную реальной регистрации. Нужен пароль root.
su - alice
login as alice с оболочкой входа, которая будет иметь среду, аналогичную реальной регистрации. Нужен пароль Алисы.
Например, приведенные выше примеры su
или su alice
с той разницей, что исходная пользовательская среда поддерживается, за исключением переменных среды USER, SHELL и HOME. Это может иметь неожиданные последствия. Например, поскольку PATH не изменяется, при попытке изменить пароль вы, возможно, запускаете не команду /usr /bin /passwd, а /usr /local /bin /passwd или даже /home /{$ ORIGUSER} /bin /passwd.
su -c command -
выполнить команду от имени пользователя root с оболочкой входа и выйти в исходную оболочку пользователя.
su -c command - alice
выполняет команду как Алиса с оболочкой входа и выходит в исходную пользовательскую оболочку.
Рекомендации
SUDO
Судо позволяет больше гибкости, чем Су. Наиболее очевидным для конечного пользователя является то, что они аутентифицируются с использованием своего собственного пароля или даже без пароля, если настроены таким образом.
Используя конфигурационный файл visudo, привилегиями, разрешенными пользователем, можно управлять с гораздо большим контролем.
Например, вы можете позволить пользователю выполнять некоторые команды без пароля, а другие команды могут требовать пароль.
Пожалуйста, посмотрите соответствующие страницы руководства, чтобы получить представление обо всех возможных вариантах.
Рекомендации
Два наиболее заметных преимущества sudo против su
- Способность дать определенным группам пользователей привилегии root только для подмножества команд без необходимости давать им пароль root. Это позволяет иметь ограниченный уровень пользователей уровня администратора с правами доступа root только к командам, которые им необходимы для выполнения своей работы.
- Поскольку вы выполняете только одну команду от имени пользователя root, снижается риск случайного вреда. Например, вы думаете, что находитесь в своем каталоге пользователя /home /user /myjunkdocs и запускаете
rm -rf
но на самом деле вы находитесь в корневом каталоге и удаляете системное программное обеспечение.