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

63

У меня есть строка 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
    
задан gatoatigrado 31.01.2012 в 02:05
источник

4 ответа

97

Вы должны поместить эту строку после в строку с правилом для группы sudo , потому что, как говорится в man-странице 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).
    
ответ дан enzotib 31.01.2012 в 07:36
источник
4

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

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

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

my_username ALL=(ALL:ALL) NOPASSWD:ALL

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

Мне все равно пришлось аутентифицировать пароль.

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

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

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

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

    
ответ дан jorfus 04.02.2016 в 20:05
2

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

Вы можете управлять упорядочением имени файла, используя префикс 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 , чтобы определить, какой лучший префикс для букв «last» будет использоваться.

    
ответ дан dragon788 22.05.2017 в 22:55
0

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

    
ответ дан Knut H 28.08.2018 в 13:32