Який належний синтаксис sudoers додати користувача?


50

Відповідно до коментарів у /etc/sudoers(Fedora 13):

## Syntax:
##
##    user  MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.

Мої два пов'язані питання:

  1. Що ALL=(ALL) ALLозначає в наступному рядку:

    root  ALL=(ALL)   ALL
    
  2. Я перевірив ці два рядки, але не можу зрозуміти, наскільки вони функціонально відрізняються:

    superadm    ALL=(ALL)    ALL
    superadm    ALL=ALL
    

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

Відповіді:


91

Примітка: я відповідаю 1. , оскільки Ігнасіо вже відповів 2 .

У наступному sudoзаписі:

superadm  ALL=(ALL)   ALL

є чотири поля:

  • Перший вказує користувача, якому будуть надані привілеї для деяких команд.
  • Другий використовується рідко. Це список імен хостів, щодо яких ця запис судо буде ефективною. У стандартних налаштуваннях відповідний лише один хост (localhost), тому це поле зазвичай залишається як ALL.
  • Четвертому полі список команд superadmматиме можливість працювати з підвищеними привілеями. ALLозначає всі команди. В іншому випадку використовуйте розділений комами список команд.
  • Третє поле (написане, (…)що є необов'язковим) вказує, яким користувачам (і групам) superadmкористувач зможе виконувати такі команди як. ALLозначає, що вони можуть вибрати що завгодно (необмежено). Якщо це поле опущено, воно означає те саме, що і (root).

Приклад:

alan   ALL = (root, bin : operator, system) /bin/ls, /bin/kill

Тут alanдозволено запускати дві команди /bin/lsі /bin/killяк root(або bin), можливо, з додатковими operatorабо systemгруповими привілеями.

Тому ви alanможете запустити lsяк binкористувач і з такими operatorгруповими привілеями:

sudo -u bin -g operator /bin/ls /whatever/directory

Якщо -uпропущено, це те саме, що -u root. Якщо -gпропущено, додаткові групові привілеї не надаються.


1
Ну, це, мабуть, найкраща відповідь коли-небудь ...
Девід Бетц

1
Я помітив, що символ нового рядка \nє обов'язковим наприкінці запису в sudoers або /etc/sudoers.d/your_file_name
ramonrails

Також ви можете використовувати підстановку в іменах хостів, іменах шляхів та аргументах командного рядка. Подобається /bin/cat /var/log/messages.?або /bin/ls /var/log/*більше інформації тут
Алекс

9

На головнійsudoers(5) сторінці, розділ ОПИС , підрозділ Runas_Spec :

Перший Runas_List вказує, яким користувачам команда може виконуватися як за допомогою параметра sudos -u.

...

Якщо Runas_Spec не вказано, команда може бути виконана як, rootі не може бути вказана група.

Так що немає ніякого функціонального різниці при спробі запуску команди , як root, наприклад, коли не використовується -uз sudo. Різниця має значення при спробі запуску команд як інші користувачі; останній заважатиме цьому, але перший дозволить це.

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