Czy można przyznać sudo dostęp tylko do określonego polecenia?

24

Tło: Mam maszynę programistyczną z konfiguracją LAMP. Kilku programistów od czasu do czasu uzyskiwało dostęp do komputera. Za każdym razem, gdy wprowadzą jakieś zmiany w pliku konfiguracyjnym, będą musieli zrestartować serwer apache za pomocą sudo service apache restartlubsudo /etc/init.d/apache2 restart

Pytanie:

Chcę teraz, aby każdy programista, który uzyskuje dostęp do komputera, nie miał dostępu sudo do wszystkiego. Zamiast tego powinien on / ona być w stanie uruchomić servicepolecenie tylko za pomocą sudo i niczego więcej. czy jest to możliwe do zrobienia?

Ankit
źródło

Odpowiedzi:

35

Tak.

Utwórz nową grupę, internetową (nazwij ją jak chcesz)

sudo addgroup web

Dodaj programistów do grupy internetowej (użyj nazwy logowania).

sudo adduser your_developer_user web

Następnie uruchom sudo visudo -f /etc/sudoers.d/somefile(użyj sensownej nazwy zamiast somefile).

Dodaj w wierszu (użyj pełnej ścieżki polecenia):

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

Programiści mogą wtedy uruchomić

sudo service apache

za pomocą hasła logowania.

NIE dodawaj administratora do grupy internetowej.

Aby uzyskać dodatkowe informacje, zobacz sudoers

Pantera
źródło
1
@Ankit: w ten sposób użytkownicy webgrupy mogą uruchamiać / zatrzymywać dowolne usługi, i myślę, że nie tego chcesz. Rozwiązaniem powinno być wprowadzenie dokładnej komendy (także z parametrami) /etc/sudoers.
enzotib
@enzotib, czy mogę to zrobić, to znaczy nowe polecenie byłoby /usr/bin/service apache2?
Ankit,
3
@Ankit:/usr/bin/service apache2 *
enzotib
Powinno to również być/usr/sbin/service
Erfan