Используйте NOPASSWD
директиву
Вы можете использовать NOPASSWD
директиву в вашем /etc/sudoers
файле .
Если ваш пользователь вызывается user
и ваш хост называется, host
вы можете добавить эти строки в /etc/sudoers
:
user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot
Это позволит пользователю user
запускать нужные команды host
без ввода пароля. Все остальные sudo
команды ed по-прежнему требуют пароль.
Команды, указанные в sudoers
файле, должны быть полностью квалифицированы (т. Е. Использовать абсолютный путь к команде для выполнения), как описано на sudoers
странице руководства . Предоставление относительного пути считается синтаксической ошибкой.
Если команда заканчивается завершающим /
символом и указывает на каталог, пользователь сможет выполнить любую команду в этом каталоге (но не в каких-либо его подкаталогах). В следующем примере пользователь user
может выполнить любую команду в каталоге /home/someuser/bin/
:
user host = (root) NOPASSWD: /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
для редактирования файла, чтобы убедиться, что вы не блокируете себя из системы:
sudo visudo -f /etc/sudoers.d/shutdown
Это также автоматически гарантирует, что владелец и права доступа к новому файлу установлены правильно.
Если sudoers
перепутано
Если вы не использовали visudo
для редактирования своих файлов, а затем случайно испортили /etc/sudoers
или испортили файл, /etc/sudoers.d
то вы будете заблокированы sudo
.
Решением может быть исправление файлов, использование pkexec
которых является альтернативой sudo
.
Чтобы исправить /etc/sudoers
:
pkexec visudo
Чтобы исправить /etc/sudoers.d/shutdown
:
pkexec visudo -f /etc/sudoers.d/shutdown
Если владелец и / или разрешения неверны для какого-либо sudoers
файла, файл будет проигнорирован, sudo
так что вы можете также оказаться заблокированным в этой ситуации. Опять же, вы можете использовать, pkexec
чтобы исправить это.
Правильные разрешения должны быть такими:
$ ls -l /etc/sudoers.d/shutdown
-r--r----- 1 root root 86 Jul 16 15:37 /etc/sudoers.d/shutdown
Используйте pkexec
как это, чтобы исправить владельца и разрешения :
pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown