Можно ли дать sudo доступ только к определенной команде?

24

Справочная информация: у меня есть машина для разработки с настройкой LAMP. Несколько разработчиков время от времени получают доступ к машине. Каждый раз, когда они вносят какие-либо изменения в файл конфигурации, им нужно будет перезапустить сервер apache, используя sudo service apache restartилиsudo /etc/init.d/apache2 restart

Вопрос:

Теперь я хочу, чтобы у каждого разработчика, который обращается к машине, не было доступа sudo ко всему. Скорее, он / она должен иметь возможность выполнять serviceкоманду только с использованием sudo и ничего другого. Возможно ли это сделать?

Анкит
источник

Ответы:

35

Да.

Создайте новую группу, сеть (называйте это как хотите)

sudo addgroup web

Добавьте ваших разработчиков в веб-группу (используйте их логин).

sudo adduser your_developer_user web

Затем запустите sudo visudo -f /etc/sudoers.d/somefile(используйте значимое имя вместо somefile).

Добавьте в строке (используйте полный путь к команде):

%web ALL=(ALL) /usr/bin/service apache2 *

Разработчики могут запустить

sudo service apache

используя свой пароль для входа.

НЕ добавляйте своего администратора в веб-группу.

Смотрите man sudoers для получения дополнительной информации

пантера
источник
1
@ Ankit: таким образом пользователи webгруппы могут запускать / останавливать любой сервис, и я думаю, это не то, что вы хотите. Решение должно состоять в том, чтобы поместить точную команду (также с параметрами) в /etc/sudoers.
энзотиб
@enzotib Могу ли я сделать это, чтобы я имел в виду новую команду, не так ли /usr/bin/service apache2?
Анкит
3
@Ankit:/usr/bin/service apache2 *
энзотиб
Это также, вероятно, должно быть/usr/sbin/service
Эрфан