Это довольно сложный вопрос, связанный с файлом 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
, поэтому для него была применена эта строка:
%sudo ALL=(ALL:ALL) ALL
Если вы хотите отменить записи в /etc/sudoers
, просто поместите новые записи после них.
Новая запись должна выглядеть следующим образом
myuser ALL=(ALL) NOPASSWD: ALL
для одного пользователя, или
%sudo ALL=(ALL) NOPASSWD: ALL
для группы.
Для одного пользователя добавьте эту строку в конец файла sudoers
, используя sudo visudo
.
superuser ALL=(ALL) NOPASSWD: ALL
Для группы
%supergroup ALL=(ALL) NOPASSWD: ALL
Не подскажешь текущего пользователя пароль, когда пользователь использует судо
делать
echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/dont-prompt-$USER-for-password
это создаст файл с именем файла /etc/пользователям использовать sudo?.Д/не-подскажу-в<имя пользователя> для судо-пароль и будет означать, что пользователь, который вы запустили эту команду, а не будет запрашивать пароль при выполнении команды sudo
. Вы'll по-прежнему будет предложено ввести пароль, в других контекстах, таких как установка материалов из программного обеспечения в Ubuntu графическое приложение.
Преимущества такого способа по сравнению с добавлением линии в команде эхо
в в/etc/пользователям использовать sudo?
, используя команду sudo visudo
(как предполагают другие ответы учеников)
/и т. д./пользователям использовать sudo? иногда модифицированная системные обновления, в то время как файлы в
/etc/пользователям использовать sudo?.д-а'ткоманду sudo visudo
склонен к ошибке (о чем свидетельствует очень этот вопрос), а копировать/вставить команду гораздо труднее испортитьПо данным судо кошка /и т. д./пользователям использовать sudo?.эта функция д/ридми
(поставить дополнительную sudoer файлы в /etc/пользователям использовать sudo?.Д
) была включена по умолчанию, поскольку Debian 1.7.2p1-1, который вышел в конце 1990'С]2 (Убунту на основе Debian).
Как Винс уже упоминал в комментарии, вы можете использовать эту строку:
%sudo ALL=NOPASSWD: ALL
(Это отличается от строк, показанных в техответах, и это решило проблему для меня).