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
Это - последовательность/упорядочивание правил, которые вызвали это. Последнее правило берет предпочтение.
Для решения проблемы просто переместите строки,
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
команда необходимо видеть, что пользователь принадлежит этим группам.
Если соответствие многократных въездов для пользователя последний каждый используется. Таким образом, если fizzbuzz
и chadmin
будут члены групп admin
или sudo
, то их все еще попросят пароля.
Помещенный эти две строки в конце sudoers
файл после #includedir
строка.
Если 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.
Идеально, если Вы настраиваете, какие команды могут быть выполнены через 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
для определения, что лучший "последний" префикс буквы, который будет использовать, был бы.