Как настроить беспарольный `sudo` в Linux?

157

Как можно sudoнастроить доступ без пароля в дистрибутивах RHEL (Fedora, CentOS и т. Д.) Или Ubuntu? (Если это так же в разных дистрибутивах, это даже лучше!)

Настройка: личное и / или лабораторное / учебное оборудование, не заботящееся о несанкционированном доступе (т. Е. Устройства находятся в закрытых сетях, и все / все пользователи полностью доверяют, а содержимое устройств «обычное») ,

кроличий садок
источник
1
Ответ @Richipal - это actullay, который работает лучше всего с наименьшими усилиями: кажется, правила sudoers применяются в обратном порядке.
января
2
Правила @ a1an применяются в том же порядке, который указан в файле sudoers, и по мере их применения они как бы переопределяют друг друга. Следовательно, если я не хочу, чтобы правило вообще менялось, я бы поместил его в конец файла, чтобы оно применялось в конце и не могло быть переопределено.
rsjethani

Ответы:

173

РЕДАКТИРОВАТЬ благодаря комментарию Медины: Согласно справочной странице, вы должны быть в состоянии написать

ALL            ALL = (ALL) NOPASSWD: ALL

разрешить всем пользователям запускать все команды без пароля.


Для справки оставляю свой предыдущий ответ:

Если вы добавите строку формы

%wheel         ALL = (ALL) NOPASSWD: ALL

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

Кроме того, вы можете определить псевдоним пользователя,

User_Alias     EVERYONE = user1, user2, user3, ...

и использовать это:

EVERYONE       ALL = (ALL) NOPASSWD: ALL

хотя вам придется обновлять /etc/sudoersкаждый раз, когда вы добавляете или удаляете пользователя.

Дэвид З
источник
2
Не ALLработает, а не *указывать всех пользователей? Смотрите пример в sudoers(5).
Медина
1
@medina: так оно и есть, я пропустил это, когда читал справочную страницу. Я отредактирую
Дэвид З
6
под Ubuntu создайте файл в /etc/sudoers.d и поместите в него эти записи, тогда вам не придется редактировать sudoers
Xetius
1
В CentOS7 эта запись есть по умолчанию, только что закомментирована.
killjoy
1
Только удалось использовать его в CentOS путем копирования / вставки, не удалось при каждой попытке набрать непосредственно конфигурации. Но результат кажется идентичным за исключением пробелов ...
MUY Бельгия
97

Я пробовал решения выше, но безрезультатно. Следующее решение помогло мне. Отредактируйте файл / etc / sudoers и добавьте следующую строку

username ALL=(ALL) NOPASSWD: ALL

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

#includedir /etc/sudoers.d
Richipal
источник
1
// Это выглядит как лучший способ сделать это, особенно когда некоторые приложения добавляют свои собственные правила для пользователей системы, Richipal. Более подробная информация о sudoers.d: sudo.ws/man/1.8.13/sudoers.man.html
Натан Басанезе
1
//, Хотели бы вы добавить некоторые диагностические данные из Gearoid Murphy к вашему ответу?
Натан Басанезе
1
Спасибо за это разъяснение. Добавление его после строки #includedir /etc/sudoers.d кажется важным в CentOS 7, в то время как кажется, что хорошо работать с тем, чтобы строка в файле ранее
находилась
3
Проблема с игнорированием NOPASSWD% wheel, кажется, возникает из-за /etc/sudoers.d/USERNAMEпереопределения разрешения NOPASSWD группы. Применение NOPASSWD в /etc/sudoers.d/USERNAMEразрешает проблему.
угорь ghEEz
1
Большие успехи после этого важны
Теодор Хауэлл
27

Я попробовал все ответы на этой странице, без каких-либо полезных результатов. В конце концов я понял, используйте эту команду, чтобы перечислить ваши права sudo:

sudo -l

Это должно дать вам такой вывод:

User gmurphy may run the following commands on this host:
    (root) NOPASSWD: ALL
    (ALL) ALL

Это показывает, что я настроен с привилегиями root, но я все еще являюсь частью группы (admin), соответствующей правилу sudo, которое ожидает пароль ("(ALL) ALL"). Это заставляло sudo подсказать мне. Правило, о котором идет речь, было для администраторов:

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

Как только я это закомментировал, я смог sudo без пароля. Я надеюсь, что это пригодится кому-то еще.

Гиероид Мерфи
источник
1
Аааа, спасибо! Это сводило меня с ума ... в моем случае мой пользователь был частью группы "sudo", а также "admin" (который я создал), и разрешения для каждого из них были несовпадающими, как и в вашем случае , Теперь этот материал работает! :)
neezer
14
Комментирование строки - тупой инструмент. Возможно, вам будет интересно услышать, что «sudo читает файл sudoers и применяет разрешения по порядку сверху вниз. Таким образом, последняя строка в файле перезапишет любой предыдущий конфликт», согласно ubuntuforums.org/showthread.php?t=1132821 - - и это сработало для меня.
Дэвид Дж.
10

Внутри /etc/sudoersесть пример этого в нижней части файла:

## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL
Игнасио Васкес-Абрамс
источник
2
этот образец не был в моем - но спасибо!
Уоррен
1
Как ваш краткий ответ
г-н Пей
6

Есть еще один способ сделать это, не трогая файл sudoers.

  • Отредактируйте /etc/pam.d/suи раскомментируйте строку ниже:

    auth           sufficient      pam_wheel.so trust use_uid
    
  • Добавьте пользователя в wheelгруппу.

победитель
источник
2

Есть еще один способ сделать это, не трогая файл sudoers.

  • Отредактируйте /etc/pam.d/sudoи добавьте строку ниже:

    достаточно аутентичный pam_wheel.so доверие use_uid
  • Добавьте пользователя в wheelгруппу.

Реквизиты "topdog" и "Daniel Serodio" для первоначального ответа относительно "su", а не "sudo". Я использовал это как ссылку и беззастенчиво скопировал и исправил свой пост.

noabody
источник
1
Я думаю, что вместо того, чтобы копировать дословно, было бы лучше, чтобы кредитовать их, но уяснить, насколько точно ваши ответы отличаются. Я предполагаю, что это позволяет без пароля su, вместо /, а также без пароля sudo? Кстати, добавление Даниэля - это просто форматирование.
mwfearnley