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

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

Вопрос:

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

24
задан 27 December 2011 в 11:35

1 ответ

Да.

Создайте новую группу, сеть (назовите ее, что вы пожелаете)

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

30
ответ дан 25 May 2018 в 15:39
  • 1
    @Ankit: таким образом, пользователи группы web могут запускать / останавливать любой сервис, и это не то, что вы хотите, я думаю. Решение должно заключаться в том, чтобы поставить точную команду (также с параметрами) в /etc/sudoers. – enzotib 27 December 2011 в 16:23
  • 2
    @enzotib, могу ли я сделать это, чтобы я имел в виду, что новая команда будет /usr/bin/service apache2? – Ankit 27 December 2011 в 18:08
  • 3
    @Ankit: /usr/bin/service apache2 * – enzotib 27 December 2011 в 19:10
  • 4
    Вероятно, это также будет /usr/sbin/service – Erfan 26 May 2016 в 16:19

Другие вопросы по тегам:

Похожие вопросы: