Предисловие
Это довольно сложный вопрос, связанный с файлом 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', потому что они находились ниже в файл конфигурации?
Ответы:
Добавленная вами строка была переопределена. От
man sudoers
:В вашем случае
nicholsonjf
был членом группы,sudo
поэтому для него эта строка применяется:Если вы хотите переопределить записи,
/etc/sudoers
просто поместите новые записи после них.Новая запись должна выглядеть
myuser ALL=(ALL) NOPASSWD: ALL
для одного пользователя, или%sudo ALL=(ALL) NOPASSWD: ALL
для группы.источник
NOPASSWD
этом ответе ...%sudo ALL=(ALL) NOPASSWD:ALL
nicholsonjf ALL=NOPASSWD: ALL
верна. Это было просто в неправильном месте, как я объяснил в ответе. ------Runas
Спецификация - в вашем случае(ALL)
- не является обязательной. Если вы пропустите спецификацию, вы можете запускать команды какroot
и вы не можете использовать-u
и-g
параметрыsudo
.Для одного пользователя добавьте эту строку в конец вашего
sudoers
файла, используяsudo visudo
Для группы
источник
%sudo ALL=NOPASSWD: ALL
и это работает. Я единственный, кто находит расширенную форму Бэкуса-Наура действительно трудной для понимания?sudo
без пароля как пользователь без привилегий sudo. Например,sudo -u root -i
работает, ноsudo -u git -i
не работает.Никогда не запрашивать у текущего пользователя пароль, когда он использует команду
sudo
doэто создаст файл с именем
/etc/sudoers.d/dont-prompt-<YOUR USERNAME>-for-sudo-password
и будет означать, что пользователь, который запустил эту команду, не будет запрашивать свой пароль при выполненииsudo
команды. Вам по-прежнему будет предложено ввести пароль в других контекстах, например при установке содержимого из графического приложения Ubuntu Software .Преимущества такого подхода по сравнению с добавлением строки в
echo
команде к/etc/sudoers
использованиюsudo visudo
(как показано в других ответах)/etc/sudoers
иногда модифицирована обновлений системы, в то время как файлы в/etc/sudoers.d
неsudo visudo
метод подвержен ошибкам ( о чем свидетельствует этот самый вопрос), в то время как копировать / вставить команду гораздо сложнее испортитьСогласно
sudo cat /etc/sudoers.d/README
этой возможности (добавление дополнительных файлов sudoer/etc/sudoers.d
) было включено по умолчанию начиная с Debian 1.7.2p1-1, который вышел в конце 1990-х годов (Ubuntu основан на Debian ).источник
Как Винс уже упоминалось в комментариях , вы можете использовать эту строку:
(Это отличается от строк, показанных в этих ответах , и это решило проблему для меня.)
источник
supergroup
в ответе Федираsudo
. Что дальше, еще один пользователь для группыwheel
? Или какая-то другая группа, которой пользуется пользователь?supergroup
в ответеsudo
Федира ." Какая? Заменаsupergroup
сsudo
в линии%supergroup ALL=(ALL) NOPASSWD:ALL
доходности%sudo ALL=(ALL) NOPASSWD:ALL
, а не%sudo ALL=NOPASSWD: ALL
.supergroup
сsudo
. Это собственный ответ, а не сообщение с благодарностью или копия другого ответа. Но да, я согласен: если они не намерены этого делать, это не будет так хорошо для большинства пользователей, как методы из других ответов. (Но, особенно учитывая, что в вопросе говорится «все команды», а не «все целевые пользователи», я не думаю, что это даже не попытка ответить на заданный вопрос.)