На одной конкретной машине мне часто нужно запускать команды sudo время от времени.
Однако есть три команды sudo, которые я хочу запустить без ввода пароля:
sudo reboot sudo shutdown -r now sudo shutdown -P nowКак я могу исключить эти команды из защиты паролем в sudo?
Вы можете использовать директиву NOPASSWD в файле /etc/sudoers.
Если ваш пользователь вызван user, а ваш хост host вы можете добавить эти строки в /etc/sudoers:
user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot
Это позволит пользователю user запускать нужные команды на host без ввода пароля. Все остальные команды /etc/sudoers file ed по-прежнему требуют пароля.
Команды, указанные в файле sudoers, должны быть полностью определены (т. Е. Используя абсолютный путь к команде для запуска), как описано в man-странице sudoers. Предоставление относительного пути считается синтаксической ошибкой.
Если команда заканчивается символом trailing / и указывает на каталог, пользователь сможет выполнить любую команду в этом каталоге (но не в любые подкаталоги в нем). В следующем примере пользователь user может выполнять любую команду в каталоге /home/someuser/bin/:
user host = (root) NOPASSWD: /home/someuser/bin/
Примечание: Всегда используйте команду sudoers man page для отредактируйте файл sudoers, чтобы убедиться, что вы не блокируете себя из системы - на случай, если вы случайно напишите что-то неправильное в файле sudoers. visudo сохранит измененный файл во временном местоположении и должен перезаписать реальный файл sudoers, если модифицированный файл можно проанализировать без ошибок.
. В качестве альтернативы редактированию файла /etc/sudoers вы можете добавить две строки в новый файл в /etc/sudoers.d, например [F31]. Это элегантный способ разделения различных изменений на права sudo, а также отсутствие первоначального файла sudoers для упрощения обновления.
Примечание: Опять же, вы должны использовать команду visudo, чтобы отредактировать файл, чтобы убедиться, что вы не блокируете себя из системы:
sudo visudo -f /etc/sudoers.d/shutdown
Это также автоматически гарантирует правильность установки владельца и разрешений нового файла. [ ! d19]
Если вы не использовали visudo для редактирования ваших файлов, а затем случайно перепутали /etc/sudoers или перепутали файл в /etc/sudoers.d, тогда вы будете заблокированы из sudo.
Решение может заключаться в исправлении файлов с помощью visudo , который является альтернативой 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, как это, чтобы исправить право собственности и разрешения: [ ! d28] pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown
Вы можете использовать директиву NOPASSWD в файле /etc/sudoers.
Если ваш пользователь вызван user, а ваш хост host вы можете добавить эти строки в /etc/sudoers:
user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot
Это позволит пользователю user запускать нужные команды на host без ввода пароля. Все остальные команды /etc/sudoers file ed по-прежнему требуют пароля.
Команды, указанные в файле sudoers, должны быть полностью определены (т. Е. Используя абсолютный путь к команде для запуска), как описано в man-странице sudoers. Предоставление относительного пути считается синтаксической ошибкой.
Если команда заканчивается символом trailing / и указывает на каталог, пользователь сможет выполнить любую команду в этом каталоге (но не в любые подкаталоги в нем). В следующем примере пользователь user может выполнять любую команду в каталоге /home/someuser/bin/:
user host = (root) NOPASSWD: /home/someuser/bin/
Примечание: Всегда используйте команду sudoers man page для отредактируйте файл sudoers, чтобы убедиться, что вы не блокируете себя из системы - на случай, если вы случайно напишите что-то неправильное в файле sudoers. visudo сохранит измененный файл во временном местоположении и должен перезаписать реальный файл sudoers, если модифицированный файл можно проанализировать без ошибок.
. В качестве альтернативы редактированию файла /etc/sudoers вы можете добавить две строки в новый файл в /etc/sudoers.d, например [F31]. Это элегантный способ разделения различных изменений на права sudo, а также отсутствие первоначального файла sudoers для упрощения обновления.
Примечание: Опять же, вы должны использовать команду visudo, чтобы отредактировать файл, чтобы убедиться, что вы не блокируете себя из системы:
sudo visudo -f /etc/sudoers.d/shutdown
Это также автоматически гарантирует правильность установки владельца и разрешений нового файла. [ ! d19]
Если вы не использовали visudo для редактирования ваших файлов, а затем случайно перепутали /etc/sudoers или перепутали файл в /etc/sudoers.d, тогда вы будете заблокированы из sudo.
Решение может заключаться в исправлении файлов с помощью visudo , который является альтернативой 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, как это, чтобы исправить право собственности и разрешения: [ ! d28] pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown