Предисловие
Это довольно сложный вопрос, связанный с файлом Sudoers и командой sudo в целом.
ПРИМЕЧАНИЕ. Я внес эти изменения на выделенной машине с Ubuntu Desktop 13.04, которую я использую исключительно в учебных целях. Я понимаю, что включить NOPASSWD sudo - огромный риск для безопасности.
Вопрос
Первоначально мое единственное изменение в файле sudoers (/ etc / sudoers) было одной строкой, пользовательской спецификацией, которая должна была позволить nicholsonjf запускать все команды с помощью sudo без необходимости ввода пароля (см. Строку, начинающуюся с nicholsonjf). «):
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
nicholsonjf ALL=NOPASSWD: ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
Однако это не сработало, и мне все равно предлагали ввести пароль каждый раз, когда я запускал команду nicholsonjf. Я смог запустить команды sudo только как nicholsonjf, как только удалил nicholsonjf из групп sudo и admin.
Кто-нибудь может объяснить, почему это сработало?
Это потому, что пользователь 'nicholsonjf' наследовал права sudo от двух групповых спецификаций 'admin' и 'sudo' (как показано ниже в файле sudoers), которые переопределяли пользовательскую спецификацию 'nicholsonjf', потому что они находились ниже в файл конфигурации?