Не удалось удалить sudo-доступ у пользователя ubuntu [dубликат]

На одной конкретной машине мне часто нужно запускать команды sudo время от времени.

Однако есть три команды sudo, которые я хочу запустить без ввода пароля:

sudo reboot sudo shutdown -r now sudo shutdown -P now

Как я могу исключить эти команды из защиты паролем в sudo?

189
задан 5 September 2015 в 04:35

2 ответа

Используйте директиву NOPASSWD

Вы можете использовать директиву 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.d вместо изменения /etc/sudoers

. В качестве альтернативы редактированию файла /etc/sudoers вы можете добавить две строки в новый файл в /etc/sudoers.d, например [F31]. Это элегантный способ разделения различных изменений на права sudo, а также отсутствие первоначального файла sudoers для упрощения обновления.

Примечание: Опять же, вы должны использовать команду visudo, чтобы отредактировать файл, чтобы убедиться, что вы не блокируете себя из системы:

sudo visudo -f /etc/sudoers.d/shutdown

Это также автоматически гарантирует правильность установки владельца и разрешений нового файла. [ ! d19]

Если sudoers испорчен

Если вы не использовали 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

249
ответ дан 18 July 2018 в 13:35

Используйте директиву NOPASSWD

Вы можете использовать директиву 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.d вместо изменения /etc/sudoers

. В качестве альтернативы редактированию файла /etc/sudoers вы можете добавить две строки в новый файл в /etc/sudoers.d, например [F31]. Это элегантный способ разделения различных изменений на права sudo, а также отсутствие первоначального файла sudoers для упрощения обновления.

Примечание: Опять же, вы должны использовать команду visudo, чтобы отредактировать файл, чтобы убедиться, что вы не блокируете себя из системы:

sudo visudo -f /etc/sudoers.d/shutdown

Это также автоматически гарантирует правильность установки владельца и разрешений нового файла. [ ! d19]

Если sudoers испорчен

Если вы не использовали 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

249
ответ дан 24 July 2018 в 20:13

Другие вопросы по тегам:

Похожие вопросы: