Файл Sudoers, включите NOPASSWD для пользователя, все команды

93

Введение

Это довольно сложный вопрос, связанный с файлом 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», потому что они были дальше вниз в файле конфигурации?

    
задан James Nicholson 19.08.2013 в 00:45
источник

3 ответа

75

Ваша добавленная строка была переопределена. От man sudoers :

  

Когда несколько записей соответствуют пользователю, они применяются в порядке.   Если имеется несколько совпадений, используется последнее совпадение (что не является   обязательно самое конкретное совпадение).

В вашем случае nicholsonjf был членом группы sudo , поэтому для него применялась эта строка:

%sudo   ALL=(ALL:ALL) ALL

Если вы хотите переопределить записи в /etc/sudoers , просто поместите новые записи после них.

Новая запись должна выглядеть как

myuser ALL=(ALL) NOPASSWD:ALL для одного пользователя или

%sudo ALL=(ALL) NOPASSWD:ALL для группы.

    
ответ дан pabouk 03.09.2013 в 00:55
источник
105

Для одного пользователя:

superuser ALL=(ALL) NOPASSWD:ALL

Для группы:

%supergroup  ALL=(ALL) NOPASSWD:ALL
    
ответ дан Fedir RYKHTIK 16.01.2015 в 15:28
-1

Как Vince имеет , упомянутый в комментарии , вы можете использовать эту строку:

%sudo ALL=NOPASSWD: ALL

(Это отличается от строк, показанных в тех , и он решил проблему для меня.)

    
ответ дан E. Fortes 04.10.2017 в 09:53

Ознакомьтесь с другими вопросами по меткам