Почему опция 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
каталог, чтобы иметь приоритет.
И на этот раз все работало нормально.