Для основной операции - запуска команд с правами root - наиболее заметная разница между sudo и su в том, что sudo требует пароль вызывающего пользователя (т.е. ваш пароль), тогда как su требует пароль целевого пользователя (то есть пароль root). Последствия для безопасности подробно обсуждались в предыдущем вопросе: Какой самый безопасный способ получения привилегий root: sudo, su или login? ,
У Sudo есть дополнительные функции помимо su. В частности, когда у вас есть пароль пользователя, вы можете запустить любую команду от имени этого пользователя. С другой стороны, sudo можно настроить так, чтобы вызывающий его пользователь мог запускать только определенные команды, как некоторые другие пользователи. Это возможно, потому что sudo не требует какой-либо аутентификации (кроме, возможно, подтверждения того, что вы являетесь, введя свой пароль - но это немного отличается от аутентификации вашего пользователя для задачи).
Вы можете изменить конфигурацию sudo, выполнив visudo
команду от имени пользователя root (никогда не редактируйте конфигурацию напрямую). Убедитесь , что переменная окружения EDITOR
или VISUAL
установлен в вашем любимом редакторе или вы можете получить незнакомого редактора. Страница sudoers
man немного краткая, но содержит примеры. Чтобы разрешить пользователю bob
запускаться /bin/foo
(с любым количеством аргументов) и /bin/bar --safe
(но не с любым другим аргументом) как root
, используйте следующие строки:
bob ALL = (root) /bin/foo
bob ALL = (root) /bin/bar --safe
Жиль "ТАК - перестань быть злым"
источник
sudo
это потрясающее изобретениеapache2ctl graceful
я думаю, я бы предпочел разрезать мои запястья и покончить с этим.Самым большим отличием является то, что
sudo
вам не нужен пароль root для запуска команды от имени root, как это было бы для васsu
. Вам нужен пароль root, чтобы добавить кого-то вsudoers
файл, но после этого он может запустить все или некоторые (если вы его ограничили) как root, не требуя дополнительного пароля.Другое отличие состоит в том, что, как вы заметили,
sudo
гораздо более точный контроль над тем, какие команды можно запускать.Для получения подробной информации о формате
sudoers
файла запуститеman sudoers
. Там вы найдете примеры, позволяющие запускать только определенные команды от имени пользователя root. Базовая структура каждой строки:cmd_list может включать сведения о том, на какого пользователя разрешено переключаться реальному пользователю. Например, вы можете позволить веб-мастеру переключиться на wwwroot, чтобы перезапустить apache, но не на root. Он также может включать другие параметры, например, требуется ли пароль пользователя перед переключением (это значение по умолчанию).
Пример строки может быть:
что означает: пусть joe запускает любую команду на любом хосте как любой пользователь. Более жесткая линия может быть:
что означает: пусть joe выполнит любую команду в каталоге / usr / local / ops от имени пользователя «operator».
В конце справочной страницы sudoers приведено множество примеров.
Вы должны редактировать
/etc/sudoers
с помощью командыvisudo
. Это проверяет, является ли файл легальным, и помогает предотвратить его случайный взлом.источник
sudoers
настроен файл. Он может быть настроен на запрос пароля или настроен так, чтобы не требовать пароль.В дополнение к другим ответам, sudo предоставляет средства ведения журналов, чтобы вы могли отслеживать, какие команды были запущены и кем. Это не в целях безопасности, поскольку злоумышленник, получивший доступ sudo, может стереть журнал. Тем не менее, очень полезно выяснить, что именно вы или какой-либо другой админ смотрели в тупик в 2 часа ночи на прошлой неделе.
источник