Добавление NOPASSWD в / etc / sudoers не работает

14.04 здесь. Я вставил SSH в свою машину, добавил следующую строку в /etc/sudoers:

myuser   ALL=NOPASSWD: ALL

, а затем попытался запустить:

sudo mkdir /etc/blah

... , и меня просят для моего пароля. Почему?!?

Я не не хочу, чтобы у меня запрашивали пароль при выполнении этой операции. Обратите внимание, что когда я запускаю ls -ltr /, я получаю:

drwxr-xr-x 94 root root  4096 Jul 30 13:28 etc

Но я не думаю, что это имеет значение, потому что я настроил себя как «sudoer», верно?

Что еще более важно, что мне нужно сделать, чтобы я мог запустить sudo mkdir /etc/blah как мой текущий пользователь (myuser) без запроса пароля?

Вот весь мой файл /etc/sudoers:

#
# 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
fizzbuzz  ALL=NOPASSWD: ALL
chadmin   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
47
задан 30 July 2014 в 21:39

4 ответа

Это - последовательность/упорядочивание правил, которые вызвали это. Последнее правило берет предпочтение.

Для решения проблемы просто переместите строки,

fizzbuzz  ALL=NOPASSWD: ALL
chadmin   ALL=NOPASSWD: ALL

от sudoers файл к

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

Это - лучший подход, чем редактирование sudoers файл с редактором простого текста. При случайной вставке ошибок в файл Вы не можете дольше смочь работать sudo. Всегда используйте visudo, так, чтобы синтаксис был проверен, и Вы получаете предупреждения об ошибках!

Ваша директива не работает, потому что она переопределяется:

%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

Если Вы работаете groups команда необходимо видеть, что пользователь принадлежит этим группам.

69
ответ дан 30 July 2014 в 21:39

Если соответствие многократных въездов для пользователя последний каждый используется. Таким образом, если fizzbuzz и chadmin будут члены групп admin или sudo, то их все еще попросят пароля.

Помещенный эти две строки в конце sudoers файл после #includedir строка.

10
ответ дан 30 July 2014 в 21:39

Если myuser будет в группа sudo , то этот порядок строк не обеспечит доступ без пароля (как отмечено Florian Diesch), потому что 3-я строка переопределяет 1-й.

myuser    ALL=(www-data:www-data) NOPASSWD: ALL
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

Поэтому просто помещает строки в этот порядок:

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
myuser    ALL=(www-data:www-data) NOPASSWD: ALL

Под использование учетной записи myuser sudo -l для проверки то, что имеют полномочия myuser.

21
ответ дан 30 July 2014 в 21:39

Идеально, если Вы настраиваете, какие команды могут быть выполнены через sudo, необходимо вносить эти изменения в отдельном файле под /etc/sudoers.d/ вместо того, чтобы редактировать sudoers файл непосредственно. Необходимо также всегда использовать visudo для редактирования файла (файлов). Вы никогда не должны предоставлять NOPASSWD на ALL команды.

Пример: sudo visudo -f /etc/sudoers.d/mynotriskycommand

Вставляют Ваш разрешения предоставления строки: myuser ALL= NOPASSWD: /bin/mkdir

Затем сохраняют и выходят, и visudo предупредит Вас, если у Вас будут какие-либо синтаксические ошибки.

можно работать sudo -l для наблюдения полномочий, которые предоставили пользователя, если какой-либо пользователь, конкретный NOPASSWD, команды появятся то ПЕРЕД любым %groupyouarein ALL=(ALL) ALL команда в выводе Вам предложат Ваш пароль.

при нахождении большого количества этих sudoers.d файлов затем, возможно, Вы захотите создать их названный на пользователя, таким образом, их будет легче визуализировать. Следует иметь в виду, что упорядочивание ИМЕН ФАЙЛОВ и ПРАВИЛ в файле очень важно, ПОСЛЕДНИЙ загрузил победы, является ли это БОЛЕЕ ИЛИ МЕНЕЕ разрешающим, чем предыдущие записи.

можно управлять упорядочиванием имени файла при помощи префикса 00-99 или aa/bb/cc, хотя также имеют в виду, что, если у Вас есть КАКИЕ-ЛИБО файлы, которые не имеют числового префикса, они загрузятся после пронумерованных файлов, переопределяя настройки. Это вызвано тем, что в зависимости от Ваших настроек языка "лексическая сортировка" оболочки использует числа видов сначала и затем может чередоваться верхний и строчный при сортировке в "возрастающем" порядке.

Попытка, работающая printf '%s\n' {{0..99},{A-Z},{a-z}} | sort и printf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sort, чтобы видеть, печатает ли Ваш текущий язык AaBbCc и т.д. или ABC затем abc для определения, что лучший "последний" префикс буквы, который будет использовать, был бы.

0
ответ дан 30 July 2014 в 21:39

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

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