Kann sudo nur auf einen bestimmten Befehl zugreifen?

24

Hintergrund: Ich habe eine Entwicklungsmaschine mit LAMP-Setup. Von Zeit zu Zeit haben mehrere Entwickler auf die Maschine zugegriffen. Jedes Mal, wenn sie Änderungen an einer Konfigurationsdatei vornehmen, müssen sie den Apache-Server mit sudo service apache restartoder neu startensudo /etc/init.d/apache2 restart

Die Frage:

Was ich jetzt möchte, ist, dass jeder Entwickler, der auf die Maschine zugreift, keinen sudo-Zugriff auf alles hat. Vielmehr sollte er / sie den serviceBefehl nur mit sudo und sonst nichts ausführen können. Ist das möglich?

Ankit
quelle

Antworten:

35

Ja.

Erstelle eine neue Gruppe, web (nenn es wie du willst)

sudo addgroup web

Fügen Sie Ihre Entwickler der Webgruppe hinzu (verwenden Sie ihren Anmeldenamen).

sudo adduser your_developer_user web

Führen Sie dann aus sudo visudo -f /etc/sudoers.d/somefile(verwenden Sie stattdessen einen aussagekräftigen Namen somefile).

Fügen Sie in einer Zeile hinzu (verwenden Sie den vollständigen Pfad des Befehls):

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

Die Entwickler können dann ausgeführt werden

sudo service apache

mit ihrem Login-Passwort.

Fügen Sie Ihren Administrator NICHT zur Webgruppe hinzu.

Weitere Informationen finden Sie unter man sudoers

Panther
quelle
1
@Ankit: Auf diese Weise können die Benutzer einer webGruppe jeden Dienst starten / stoppen, und ich denke, das ist nicht das, was Sie wollen. Die Lösung sollte darin bestehen, den genauen Befehl (auch mit Parametern) einzugeben /etc/sudoers.
Enzotib
@enzotib kann ich das tun, damit ich meine, der neue Befehl wäre, /usr/bin/service apache2oder?
Ankit
3
@ Ankit:/usr/bin/service apache2 *
Enzotib
Das dürfte wohl auch sein/usr/sbin/service
Erfan