Як налаштувати парольний `sudo` на Linux?


156

Як можна sudoналаштувати безпаровий доступ у дистрибутивах RHEL (Fedora, CentOS тощо) або Ubuntu? (Якщо це так само в дистрибутиві, це ще краще!)

Налаштування: персональний та / або лабораторний / навчальний інвентар, який не турбується про несанкціонований доступ (тобто пристрої перебувають у непублічних мережах, і будь-який / всі користувачі отримують повну довіру, а вміст пристроїв "просто-ванільний") .


1
Відповідь від @Richipal полягає в тому, що найкраще працює з найменшими зусиллями: схоже, правила судерів застосовуються у зворотному порядку.
a1an

2
Правила @ a1an застосовуються в тому ж порядку, що вказаний у файлі sudoers, і при застосуванні вони наче перекривають один одного. Отже, якщо я не хочу, щоб правило взагалі змінювалося, я б поставив його в кінці файлу, щоб воно було застосовано в останню чергу і не могло бути відмінено.
rsjethani

Відповіді:


173

EDIT завдяки коментарю Medina: Відповідно до сторінки чоловіка, ви повинні мати можливість писати

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).
medina

1
@medina: так це, я пропустив це, коли читав сторінку чоловіка. Я відредагую.
David Z

6
під Ubuntu, створивши файл під /etc/sudoers.d і вставте в нього ці записи, то це перестане вам редагувати
судери

1
У CentOS7 цей запис за замовчуванням присутній, щойно прокоментований.
killjoy

1
Тільки вдалося використовувати його в centOS шляхом копіювання / вставки, не вдалося здійснити всі спроби ввести конфігурацію безпосередньо. Але результат здається однаковим, за винятком пробілів ...
МУЛЮЙ Бельгію

95

Я спробував рішення вище безрезультатно. Наступне рішення працювало для мене Відредагуйте файл / etc / sudoers і додайте наступний рядок

username ALL=(ALL) NOPASSWD: ALL

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

#includedir /etc/sudoers.d

1
//, Це виглядає як кращий спосіб зробити це, особливо коли певні додатки додадуть свої власні правила для користувачів системи, Річіпал. Більше інформації про sudoers.d: sudo.ws/man/1.8.13/sudoers.man.html
Натан Басанес

1
//, Чи готові ви додати деякі відповіді діагностики від Gearoid Murphy до своєї відповіді?
Натан Басанес

1
Дякую за це роз’яснення. Додавання його після рядка #includedir /etc/sudoers.d здається важливим у CentOS 7, тоді як, здається, буде добре працювати рядок раніше у файлі в CentOS 6.
dmohr

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, але що я все ще є частиною групи (адміністратора), відповідного правилу sudo, який очікує пароля ("(ВСЕ) ВСЕ"). Це змусило судо підказати мені. Правилом, про яке йдеться, були користувачі адміністратора:

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

Після того, як я прокоментував це, я зміг отримати судо без пароля. Я сподіваюся, що це корисно комусь іншому.


1
А-а-а, дякую! Це призвело до гайки ... у моєму випадку мій користувач входив до групи "sudo", а також "адмін" (який я створив), і дозволи для кожного з них були невідповідними, як це було у вашому випадку . Тепер цей матеріал працює! :)
neezer

14
Коментування рядка - це тупий інструмент. Вам може бути цікаво почути, що "sudo читає файл sudoers і застосовує дозволи в порядку зверху вниз. Отже, останній рядок у файлі замінить будь-який попередній конфлікт" відповідно до ubuntuforums.org/showthread.php?t=1132821 - - і це працювало на мене.
Девід Дж.


6

Є ще один спосіб зробити це, не торкаючись файлу sudoers.

  • Відредагуйте /etc/pam.d/suта скаментуйте рядок нижче:

    auth           sufficient      pam_wheel.so trust use_uid
    
  • Додайте користувача до wheelгрупи.


2

Є ще один спосіб зробити це, не торкаючись файлу sudoers.

  • Відредагуйте /etc/pam.d/sudoта додайте рядок нижче:

    auth достатньо pam_wheel.so довіряти use_uid
  • Додайте користувача до wheelгрупи.

Реквізити до "топдог" та "Даніель Серодіо" за оригінальну відповідь щодо "су", а не "судо". Я використав це як посилання і безсоромно скопіював і доповнив свою посаду.


1
Я думаю, що замість того, щоб копіювати дословно, краще було б їх зарахувати, але бути зрозумілим, як саме відрізняються ваші відповіді. Я припускаю, що це дозволяє без паролів suзамість / а також без паролів sudo? Додаток Даніеля, до речі, просто форматування.
mwfearnley
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.