Почему опция sudoers NOPASSWD не работает?

У меня есть строка NOPASSWD в /etc /sudoers (отредактированная с помощью visudo)

gatoatigrado    ALL=(ALL) NOPASSWD: /bin/set-slow-cpufreq

Однако на выходе получается,

gatoatigrado@coral:~> sudo -n /bin/set-slow-cpufreqsudo: sorry, a password is required to run sudo

Такая команда работает на компьютере с openSUSE, но не на Ubuntu 11.10. Что я делаю не так?

Примечание: Я не могу найти никаких соответствующих сообщений системного журнала, например, через tail -f /var/log/syslog.

редактировать

Вот /etc/sudoers.

Defaults    env_reset# things I've tried copying from an opensuse machineDefaults always_set_homeDefaults env_keep = "LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE"root    ALL=(ALL:ALL) ALLgatoatigrado ALL=NOPASSWD: /bin/set-slow-cpufreq%admin ALL=(ALL) ALL%sudo   ALL=(ALL:ALL) ALL

Вы должны поставить эту строчку после в соответствии с правилом для sudo группы, потому что, поскольку sudoers состояния справочной страницы:

   When multiple entries match for a user, they are applied in order.   Where there are multiple matches, the last match is used (which is not   necessarily the most specific match).

Просто тоже столкнулся с этим.

Моя ситуация такова, что я настраиваю удаленную систему, которая будет работать без головы. Я включил полное шифрование диска (в противном случае злоумышленник с физическим доступом может делать все, что захочет). Я хочу авторизоваться только с помощью ключа pub (я сброшу пароль, чтобы схема "иметь что-то, знать что-то" была защищенной паролем ключевой парой - вход в систему root, конечно, полностью отключен)

Установщик Ubuntu запрашивает пользователя, не являющегося администратором root, который добавляется в группу sudo. Затем я вручную добавил себя в sudoers файл, использующий sudo visudo:

my_username ALL=(ALL:ALL) NOPASSWD:ALL

ПРИМЕЧАНИЕ если вы используете nopasswd на своем ноутбуке вы всегда должны блокировать свой компьютер когда уходите иначе случайный злоумышленник может многое скомпрометировать пока вы встаете чтобы положить сливки в кофе

Мне все еще приходилось проходить аутентификацию с помощью пароля.

Ответ энзотиба - ключ к пониманию того, что происходит.Группа sudo отображается в sudoers после ввода моего имени пользователя.

Вместо того, чтобы перемещать свою запись ниже строки sudo, я просто удалил ранее добавленную строку, а затем добавил NOPASSWD к записи для %sudo

Кажется, это работает.Опять же, используйте nopasswd только в том случае, если вам это действительно нужно (в моем случае это было именно то, что мне было нужно, для большинства пользователей лучше всего использовать пароль для действий sudo)

Дополнительное ПРЕДУПРЕЖДЕНИЕ: Всегда редактируйте sudoers с помощью visudo. (sudo visudo)Кроме того, открытие другого окна, переключенного на пользователя root, позволяет вам восстановить любые ошибки, которые вы могли бы допустить при изменении файла sudoers.

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

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

Вставьте свою строку, дающую разрешение:gatoatigrado ALL=NOPASSWD: /bin/set-slow-cpufreq

Затем сохраните и выйдите и 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 чтобы определить, какой префикс "последней" буквы лучше всего использовать.

Кроме того, ответ из @enzotib (добавьте строку в конце из /etc/sudoers) также обязательно посмотрите /etc/sudoers.d. После установки Debian Buster у меня был этот файл

$ sudo cat /etc/sudoers.d/10-installer%sudo ALL=(ALL) ALL

который переписал мое правило в конце файла sudoers. Как ни странно, у меня тоже была линия

# Allow members of group sudo to execute any command%sudo   ALL=(ALL:ALL) ALL

в файле /etc/sudoers. Поэтому я предполагаю, что /etc/sudoers.d/10-installer является артефактом установки. Я удалил его, и теперь это работает.

В удаленной системе отбросьте шифрование, но пусть все принадлежит корню, как в группе "Администраторы" - это не 0!
Вы можете внести изменения #sudo -g Administrators для тех, кому нужен полный доступ - не в sudo файл, но .login профиль. Любой стандартный скрипт теперь может иметь доступ к удаленному компьютеру как "root", и вы можете защитить файлы, которые должны быть защищены.
Еще одна удобная "группа" - это "Песочница" с каталогом входа в систему в кэше браузера, и вы можете свободно читать это и ничего больше. Используйте первый символ в верхнем регистре.

Можете ли вы показать полные “sudoers”, порядок правил не имеет значения.

Тот же вопрос и потрясающий ответ: sudo - Sudoers file, enable NOPASSWD for user, all commands - Ask Ubuntu