Как предоставить nopasswd доступ к нескольким командам через sudoers?

45

Ниже то, что я знаю:

Я должен добавить эту строку ниже в sudoersфайл, чтобы дать права пользователю для конкретной задачи.

user_name ALL=NOPASSWD: /usr/bin/apt-get install

В этом случае я хочу дать этому пользователю возможность перезапустить 2 службы (т.е. Apacheи MySQL) со всеми правами установки.

Используя приведенную выше строку, я дал ему все права на установку, теперь мне нужно добавить одну и ту же строку еще два раза, чтобы предоставить права на службы? Или я могу просто добавить эти команды в одну строку, разделенные запятой или что-то?

Hrish
источник

Ответы:

48

Я решил проблему, создав новую группу с ограниченными правами администратора ... имя этой группы LimitedAdminsпосле этого я обновил sudoersфайл, как показано ниже.

Добавленная мной строка:

%LimitedAdmins ALL=NOPASSWD: /usr/bin/apt-get*, /etc/init.d/apache2 restart

Это полный /etc/sudoersфайл:

# This file MUST be edited with the 'visudo' command as root.    
#   
# Please consider adding local content in /etc/sudoers.d/ instead of directly modifying   his file.   
#   
# See the man page for details on how to write a sudoers file.  
# 
Defaults    env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

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

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL  

#includedir /etc/sudoers.d
%domain_name\\administrators ALL=(ALL) ALL
%LimitedAdmins ALL=NOPASSWD: /usr/bin/apt-get*, /etc/init.d/apache2 restart

Это прекрасно работает в случае, если ваша система является доменной или нет.

Rishee
источник
Вы не должны ставить вещи после #includedirстроки, не так ли?
Hamstar
@ Hamstar Эй, привет! Да, вы правы, вы использовали этот файл конфигурации в своей компании уже более 2 лет, и он прекрасно работает. Даже я бы порекомендовал поставить последние две строки раньше #includedir.
Хриш
3
Или лучше поместить эти две строки в новый файл в /etc/sudoers.d вместо редактирования / etc / sudoers.
Тгарольд
@tgharold Да, приятель! Вы правы ... это действительно лучший вариант, чем я предлагал ... :) Цените вашу идею и постараюсь реализовать у меня дома.
Крис
Является ли #includedir комментарием? Или включение происходит автоматически, и комментарий просто напоминает нам об этом?
HeatfanJohn
12

Похоже, вам нужна запятая.

Cmnd_Alias ​​PRINTING = / usr / sbin / lpc, / usr / bin / lprm
...
user3 ALL = ПЕЧАТЬ

Источник

Картик Т
источник
Я дал права, как вы упомянули об этом, однако я получил сообщение об ошибке, как показано ниже. <br/> E: не удалось открыть файл блокировки / var / lib / dpkg / lock - открыть (13: разрешение запрещено) <br/> E: не удалось заблокировать каталог администратора (/ var / lib / dpkg /), ты рут? ... кто-нибудь может помочь в этом?
Хриш
@ Риши Я попробую, как только вернусь домой
Картик T
мой файл sudores содержит ниже упомянутые вещи.
Хриш
# Спецификация привилегий пользователя root ALL = (ALL: ALL) ALL # Члены группы администраторов могут получить привилегии root% admin ALL = (ALL) ALL # Разрешить членам группы sudo выполнять любую команду% sudo ALL = (ALL: ALL) ALL #includedir /etc/sudoers.d $ sudo nano / etc / sudoers% Domain_Name \\ администраторы ALL = (ALL) ALL% Domain_Name \\ user.name ALL = NOPASSWD: / usr / bin / apt-get install, / etc /init.d/apache2 перезагрузка
Хриш
2

То, что я закончил, было (похоже на то, что вы ищете):

## PRTG monitoring
Cmnd_Alias PRTG = /bin/cat /proc/loadavg, /bin/df, /var/prtg/scripts/check_proc.sh
prtg ALL = NOPASSWD: PRTG

Внутри: /etc/sudoers.d/666-prtg

(666, потому что ... хорошо ... prtg - это инструмент мониторинга на основе Windows, вы знаете)

Марк Маас
источник