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

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

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

Тем не менее, выход

gatoatigrado@coral:~> sudo -n /bin/set-slow-cpufreq
sudo: 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 machine
Defaults always_set_home
Defaults 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) ALL
gatoatigrado ALL=NOPASSWD: /bin/set-slow-cpufreq
%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

6 ответов

Решение

Вы должны поставить эту строку после строки с правилом для 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).

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

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

Установщик 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, то, возможно, вы захотите создать их по имени для каждого пользователя, чтобы их было проще визуализировать. Имейте в виду, что порядок ИМЕН ФАЙЛОВ и ПРАВИЛ в файле очень важен, выигрывает ПОСЛЕДНЯЯ загрузка, независимо от того, разрешено ли оно БОЛЕЕ или МЕНЬШЕ, чем предыдущие записи.

You can control the file name ordering by using a prefix of 00-99 or aa/bb/cc, though also keep in mind that if you have ANY files that don't have numeric prefix, they will load after the numbered files, overriding the settings. This is because depending on your language settings the "lexical sorting" the shell uses sorts numbers first and then may interleave upper and lowercase when sorting in "ascending" order.

Попробуйте запустить printf '%s\n' {{0..99},{A-Z},{a-z}} | sort а также printf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sort to see whether your current language prints AaBbCc и т. д. ABC затем abc to determine what the best "last" letter prefix to use would be.

Помимо ответа @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", и вы можете защитить файлы, которые должны быть защищены.
Другая удобная "группа" - это "Песочница" с каталогом входа в кеш браузера и может читать это свободно и ничего больше. Используйте верхний регистр первого символа.

Я столкнулся с этой проблемой при настройке пользователя для выполнения команд sudo без необходимости запроса пароля в Ubuntu.

Я создал файл с именем в каталоге, который содержал следующее:

      # User rules for my_user
my_user ALL=(ALL) NOPASSWD: ALL

Кроме того, я был частью группы после того, как я выполнил команду ниже:

      sudo usermod -aG sudo my_user

Но когда я запускаюsudoкоманда, чтобы проверить это, напримерsudo ls, появится запрос пароля.

Вот как я это решил :

Сначала я выполнил команду ниже, чтобы проверить разрешения моего пользователя:

      sudo -l -U my_user

И я получил результат ниже:

      (ALL : ALL) ALL
(ALL) NOPASSWD: ALL
(ALL) ALL

Последняя строка вывода(ALL) ALLпревосходил(ALL) NOPASSWD: ALLразрешение.

После долгих исследований я обнаружил, что в каталоге есть другое имя файла, содержащее:

      my_user ALL = (ALL) ALL

Все, что мне нужно было сделать, это либо закомментировать содержимоеwaagentфайл или полностью удалите файл. И это сделало содержимоеmy_userфайл в/etc/sudoers.dкаталог, чтобы иметь приоритет.

И на этот раз все работало нормально.

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