Чому варіант sudoers NOPASSWD не працює?


75

У мене є рядок 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

2
Чи можете ви показати повне sudoers, порядок правил не має значення.
enzotib

Відповіді:


117

Ви повинні поставити цей рядок після рядка з правилом для sudoгрупи, оскільки, як зазначено на sudoersсторінці man:

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

5
як додаткова примітка, це стосується також користувачів у кількох групах: наприклад, користувач знаходиться у адміністраторах групи та груповому судо, якщо правило для судо є після адміністратора, то правило для судо замінює правило для адміністратора для обох груп.
Populus

2
Дякую! Я додав свій рядок до кінця, /etc/sudoersі він зараз працює. Повне пояснення тут людям, які цікавляться: techglimpse.com/ubuntu-sudoers-nopasswd-option-not-working
elimisteve

4

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

Ви можете керувати впорядкуванням імен файлів, використовуючи префікс 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визначити, який найкращий "останній" буквений лист буде використаний.


Я згоден з цим. Деяка логіка редагування файлу / etc / sudoers здавалася протилежною інтуїтивно зрозумілою - я не міг змусити% колесо ALL = (ALL) NOPASSWD: ВСІ працювати так, як це було написано в sudoers, поки я не прочитав пост, де хтось сказав #includedir /etc/sudoers.d рядок повинен був бути перед іншими рядками, як% SUDO та% WHEEL. Коли я поставив #include dir над іншими дозволами групи, вони почали працювати. Тоді я створив файли для кожної групи в /etc/sudoers.d/, пронумеровані в тому самому порядку, як вони були у файлі sudoers, але корінь ALL = (ALL) ВСІ мали бути судорами нижче рядка #includedir. Дивно.
AveryFreeman

Насправді я думаю, що включенийir повинен залишатися в кінці sudoers. Те, що ви, ймовірно, бачили, - це один з інших файлів у вашому sudoers.d, це скасовує зміни. Можливо, у вашому головному файлі також був рядок, який обмежував групу коліс. Майте на увазі, що sudoers обробляється там, коли останнє правило, яке застосовується до команди або групи, виграє, тому більш конкретна допомога, але якщо загальна команда БУДЬ будь-яка наприкінці і не має NOPASSWD, вона замінить ваші попередні винятки. Ось чому ви повинні мати свої правила в окремих файлах, щоб вони потім були оброблені.
dragon788

Я не думаю, що це була абсолютно нова установка арки. Все, що я робив, було спробувати і відменшити цей рядок. Але це, безумовно, добре перевірити, дякую.
AveryFreeman

Деякі системи насправді не використовують колесо і замість цього використовують групу під назвою sudo або adm або admin. Я не можу згадати поведінку Arch, але ви можете запустити idі побачити, до яких груп ви належите.
dragon788

Арка використовує колесо.
AveryFreeman

4

Просто натрапив на це теж.

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

Програма встановлення Ubuntu запропонує користувачеві не-кореневого адміністратора, який додається до групи sudo. Потім я вручну додав себе до sudoersфайлу, використовуючи sudo visudo:

my_username ALL=(ALL:ALL) NOPASSWD:ALL

ПРИМІТКА. Якщо ви використовуєте nopasswd на своєму ноутбуку, ви завжди повинні заблокувати комп’ютер, коли ви йдете геть, інакше випадковий зловмисник може дуже сильно піти на компроміс, поки ви встаєте, щоб покласти вершки в каву

Мені ще довелося підтвердити автентифікацію пароля.

Відповідь enzotib - це ключ до того, що відбувається. Групове судо з'являється в судорі після запису мого імені користувача.

Замість того, щоб переміщувати запис нижче рядка sudo, я просто видалив рядок, який я раніше додав, а потім додав NOPASSWDдо запису%sudo

Це, здається, працює. Знову використовуйте nopasswd лише тоді, коли він вам справді потрібен (в моєму випадку це саме те, що мені потрібно, для більшості користувачів, які потребують пароля для активності sudo)

Додаткове ПОПЕРЕДЖЕННЯ: Завжди редагуйте судори візуально. (sudo visudo) Також відкрите інше вікно, переключене на користувача root, дозволяє вам відновити будь-які помилки, які ви можете допустити під час зміни файлу sudoers.


Ніколи не є доброю ідеєю вмикати NOPASSWD проти будь-яких / всіх команд, це означає, що будь-хто, хто потрапить у вашу систему і встигне ввести користувача в групу sudo, зможе зробити ВСІЙ БАД до вашої системи ДУЖЕ швидко. Я легко можу це зробити за допомогою лише декількох хвилин доступу за допомогою LiveCD або обманувши вашого користувача на виконання cmd, який називається, sudoякий використовує ваші власні дозволи для додавання іншого користувача до групи sudo на додаток до запуску запитуваної команди.
dragon788

2
Не робіть таких бланкетних заяв. У безголовій системі взагалі не бажано встановлювати пароль для входу (покладаючись на клавіатури), я ввімкнув повне шифрування диска, тож удача з цим живим компакт-диском. (що, до речі, дозволить вам робити всілякі забави в незашифрованій системі незалежно від файлу sudoers) Також ви не можете писати в будь-яке місце в моєму PATH, і я не даю вам почати з оболонки якщо я не довіряю вам не намагатися підривати систему. Ваша турбота про безпеку не є недійсною, вона просто застаріла і не є такою універсальною, як ви маєте на увазі.
jorfus

Для тих, хто не має глибокого розуміння безпеки, як ви, така рекомендація, мабуть, краща за альтернативу, але я згоден, що це не ідеально.
dragon788

@ dragon788 Щоправда, можливо, ми можемо обидва редагувати свої відповіді, щоб допомогти користувачам усіх рівнів зробити крок до кращої безпеки. Я додам попередження, щоб увімкнути повне шифрування диска для запобігання компромісу, коли зловмисник має фізичний доступ, і зауважимо, що якщо користувач ноутбука забуде заблокувати публічний комп'ютер, sudo nopasswd може призвести до швидкого компромісу. (Хоча я б запропонував встановити п'ятихвилинну швидку клавішу блокування та блокування екрана, що фактично може призвести до кращої безпеки.)
jorfus

Відмінне оновлення, моя відповідь не має жодних чітких рекомендацій, окрім цих коментарів, і, як не дивно, на роботі, де я використовую повне шифрування диска, я в кінцевому підсумку дозволив NOPASSWD, тому що у мене дуже безпечний пароль, який стає больовим для введення кілька разів, і я використовую xautolock для блокування машини після короткого простою.
dragon788

0

У віддаленій системі киньте шифрування, але нехай все належить корінь, як у групі "Адміністратори" - це не 0!
Ви можете внести зміни #sudo -g Administrators до тих, хто потребує повного доступу - не у sudo файл, а у .loginпрофіль. Будь-який стандартний сценарій тепер може мати доступ до віддаленого як "root", і ви можете захистити файли, які повинні бути захищені.
Ще одна зручна "група" - "Пісочниця" з каталогом входу в кеш браузера, і вона може вільно читати це і нічого іншого. Використовуйте верхній регістр першого символу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.