На одной конкретной машине мне часто приходится запускать sudo
команды время от времени. Я в порядке ввода пароля sudo
в большинстве случаев.
Однако есть три sudo
команды, которые я хочу выполнить без ввода пароля :
sudo reboot
sudo shutdown -r now
sudo shutdown -P now
Как я могу исключить эти команды из защиты паролем sudo
?
Ответы:
Используйте
NOPASSWD
директивуВы можете использовать
NOPASSWD
директиву в вашем/etc/sudoers
файле .Если ваш пользователь вызывается
user
и ваш хост называется,host
вы можете добавить эти строки в/etc/sudoers
:Это позволит пользователю
user
запускать нужные командыhost
без ввода пароля. Все остальныеsudo
команды ed по-прежнему требуют пароль.Команды, указанные в
sudoers
файле, должны быть полностью квалифицированы (т. Е. Использовать абсолютный путь к команде для выполнения), как описано наsudoers
странице руководства . Предоставление относительного пути считается синтаксической ошибкой.Если команда заканчивается завершающим
/
символом и указывает на каталог, пользователь сможет выполнить любую команду в этом каталоге (но не в каких-либо его подкаталогах). В следующем примере пользовательuser
может выполнить любую команду в каталоге/home/someuser/bin/
:Примечание. Всегда используйте команду
visudo
для редактированияsudoers
файла, чтобы убедиться, что вы не блокируете себя вне системы - на случай, если вы случайно напишите что-то неправильное вsudoers
файл.visudo
сохранит ваш измененный файл во временную папку и будет перезаписывать реальный файл только в томsudoers
случае, если измененный файл может быть проанализирован без ошибок.Использование
/etc/sudoers.d
вместо изменения/etc/sudoers
В качестве альтернативы редактированию
/etc/sudoers
файла вы можете добавить две строки в новый файл,/etc/sudoers.d
например/etc/sudoers.d/shutdown
. Это элегантный способ разделения различных измененийsudo
прав, а также оставление исходногоsudoers
файла нетронутым для более простых обновлений.Примечание. Опять же, вы должны использовать команду
visudo
для редактирования файла, чтобы убедиться, что вы не блокируете себя из системы:Это также автоматически гарантирует, что владелец и права доступа к новому файлу установлены правильно.
Если
sudoers
перепутаноЕсли вы не использовали
visudo
для редактирования своих файлов, а затем случайно испортили/etc/sudoers
или испортили файл,/etc/sudoers.d
то вы будете заблокированыsudo
.Решением может быть исправление файлов, использование
pkexec
которых является альтернативойsudo
.Чтобы исправить
/etc/sudoers
:Чтобы исправить
/etc/sudoers.d/shutdown
:Если владелец и / или разрешения неверны для какого-либо
sudoers
файла, файл будет проигнорирован,sudo
так что вы можете также оказаться заблокированным в этой ситуации. Опять же, вы можете использовать,pkexec
чтобы исправить это.Правильные разрешения должны быть такими:
Используйте
pkexec
как это, чтобы исправить владельца и разрешения :источник
user
другим способом не предоставленыsudo
права, этот пользователь не может использовать другие команды. Посмотрите наman sudo
иman sudoers
.mgd ALL=(root) NOPASSWD: /var/root/test
. Я пользовательmgd
и имею вALL
виду "со всех хостов" ./var/root/test
это просто «Hello World» сценарий оболочки с правами доступа:-rwx------ 1 root wheel 27 12 Jun 09:54 /var/root/test
. Я не сделал никаких других изменений в системе.host
в файле sudoers?Извините, но так много путаницы в этом и некоторых действительно сложных ответах, что я чувствую, что должен взвесить, прежде чем кто-то неправильно поймет и сделает что-то сумасшедшее.
Используя visudo !!
Добавьте следующие строки в конфигурацию:
Это позволяет командам, перезагрузке и выключению с любыми параметрами выполняться от любого пользователя.
Пожалуйста, используйте обмен, просто дайте простые краткие ответы.
источник