it-swarm.com.de

Linux: Wie kann man einem Benutzer die Erlaubnis geben, Apache neu zu starten?

Ich habe ein Skript, das unter einem Nicht-Root-Benutzer ausgeführt wird und unter bestimmten Bedingungen Apache httpd neu starten sollte.

Was wäre für mich der einfachste Weg, dem Benutzer dies zu ermöglichen?

Ich verwende Ubuntu Server 8.04 LTS.

35
itsadok

Kurze Antwort:

Fügen Sie mit visudo Folgendes zu Ihrer sudoers-Datei hinzu und ersetzen Sie den Benutzernamen durch den richtigen Benutzernamen:

username ALL = /etc/init.d/Apache2 

Wenn Sie zuvor kein Kennwort eingeben müssen, verwenden Sie Folgendes:

username ALL = NOPASSWD: /etc/init.d/Apache2 

Danach kann der Benutzer 'Benutzername' Sudo /etc/init.d/Apache2 start Ausführen (oder anhalten, neu starten usw.)

Lange Antwort: Wenn Sie dies noch nicht getan haben, möchten Sie wahrscheinlich einen separaten Benutzer dafür einrichten und dann die Datei/etc/sudoers so konfigurieren, dass ein Benutzer oder eine Gruppe den gewünschten Befehl ausführen kann.

Um dem Benutzer 'ben' beispielsweise zu ermöglichen, alle Befehle als Root-Eingabeaufforderung für ein Kennwort auszuführen, gehen Sie wie folgt vor:

ben ALL= ALL

Damit 'ben' nur einen Befehl ausführen kann (z. B. rm), gehen Sie wie folgt vor:

ben ALL= /bin/rm 

Wenn Sie als Benutzer ein Skript ausführen und nicht zur Eingabe eines Kennworts auffordern möchten, sollten Sie die Option 'NOPASSWD' wie folgt verwenden:

ben ALL=NOPASSWD: /bin/commandname options

Sie können dasselbe für Gruppen tun, indem Sie Gruppennamen ein Prozentzeichen voranstellen, wie folgt:

%supportstaff          ALL= NOPASSWD: /bin/commandname 
84
epic9x

Kurze Antwort: Sudo.

Der Aufruf würde ungefähr so ​​aussehen: Sudo /etc/init.d/Apache2 restart

Am einfachsten ist es, visudo zum Einrichten der Datei/etc/sudoers zu verwenden. Sehen man sudoers und man visudo für Details.

1
Zayne S Halsall

Sie können dies auch erreichen, indem Sie einen Wrapper in Apache2ctl schreiben, einer Webadministrationsgruppe Gruppenbesitz zuweisen und das suid-Bit setzen. Dies ist eine weniger allgemeine Lösung als visudo, ermöglicht jedoch benutzerdefinierte Einschränkungen der Benutzerfähigkeiten und der Fehlerprüfung.

Ich habe dieses Tool für meine eigenen Bedürfnisse geschrieben und es auf github geteilt: https://github.com/josiahjohnston/ltd_Apache2ctl

0
JosiahJohnston