Самым большим отличием является то, что sudoвам не нужен пароль root для запуска команды от имени root, как это было бы для вас su. Вам нужен пароль root, чтобы добавить кого-то в sudoersфайл, но после этого он может запустить все или некоторые (если вы его ограничили) как root, не требуя дополнительного пароля.
Другое отличие состоит в том, что, как вы заметили, sudoгораздо более точный контроль над тем, какие команды можно запускать.
Для получения подробной информации о формате sudoersфайла запустите man sudoers. Там вы найдете примеры, позволяющие запускать только определенные команды от имени пользователя root. Базовая структура каждой строки:
user_list host_list = cmd_list
cmd_list может включать сведения о том, на какого пользователя разрешено переключаться реальному пользователю. Например, вы можете позволить веб-мастеру переключиться на wwwroot, чтобы перезапустить apache, но не на root. Он также может включать другие параметры, например, требуется ли пароль пользователя перед переключением (это значение по умолчанию).
Пример строки может быть:
joe ALL=(ALL) ALL
что означает: пусть joe запускает любую команду на любом хосте как любой пользователь. Более жесткая линия может быть:
joe ALL=(operator) /usr/local/ops/
что означает: пусть joe выполнит любую команду в каталоге / usr / local / ops от имени пользователя «operator».
В конце справочной страницы sudoers приведено множество примеров.
Вы должны редактировать /etc/sudoersс помощью команды visudo. Это проверяет, является ли файл легальным, и помогает предотвратить его случайный взлом.
sudoэто потрясающее изобретение