Frage Linux: Wie gebe ich einem Benutzer die Erlaubnis, Apache neu zu starten?


Ich habe ein Skript unter einem Nicht-Root-Benutzer, der unter bestimmten Bedingungen Apache httpd neu starten sollte.

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

Ich benutze Ubuntu Server 8.04 LTS.


33
2017-09-30 06:21


Ursprung




Antworten:


Kurze Antwort:

Verwenden visudoFügen Sie Ihrer sudoers-Datei Folgendes hinzu und ersetzen Sie den Benutzernamen durch den richtigen Benutzernamen:

username ALL = /etc/init.d/apache2 

Wenn Sie kein Passwort eingeben müssen, bevor Sie dies tun, verwenden Sie Folgendes:

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

Danach kann der Benutzer 'username' ausgeführt werden sudo /etc/init.d/apache2 start (oder stopp, neustart usw.)

Lange Antwort: Wahrscheinlich werden Sie dafür einen separaten Benutzer einrichten und dann die Datei / etc / sudoers so konfigurieren, dass ein Benutzer oder eine Gruppe den gewünschten Befehl ausführen kann.

Um beispielsweise dem Benutzer zu ermöglichen, alle Befehle als Root-Eingabeaufforderung für ein Kennwort auszuführen, gehen Sie folgendermaßen vor:

ben ALL= ALL

Damit 'ben' nur einen Befehl ausführen kann (wie rm), würden Sie folgendes tun:

ben ALL= /bin/rm 

Wenn Sie ein Skript als Benutzer ausführen und nicht nach einem Kennwort fragen möchten, sollten Sie die Option 'NOPASSWD' wie folgt verwenden:

ben ALL=NOPASSWD: /bin/commandname options

Sie können das gleiche für Gruppen tun, indem Sie Gruppennamen mit einem Prozentzeichen voranstellen, etwa so:

%supportstaff          ALL= NOPASSWD: /bin/commandname 

78
2017-09-30 06:54



Können username auf eine Teilmenge von Parametern beschränkt sein? Sagen start  restart aber nicht stop? - ThorSummoner
das visudo Befehl überprüft Ihre Änderungen, so dass Sie die sudo/su Befehl aus Versehen: unix.stackexchange.com/a/27595/61349 - ThorSummoner


Kurze Antwort: Sudo.

Der Anruf würde ähnlich wie folgt aussehen: sudo /etc/init.d/apache2 restart

Am einfachsten ist es zu verwenden visudo um die Datei / etc / sudoers einzurichten. Sehen man sudoers und man visudo für Details.


1
2017-09-30 06:47



OP hat gesagt, es über ein Skript zu tun - das Skript wird kein Passwort eingeben können, daher wird diese Antwort keinen Sinn ergeben. - Matt Fletcher
@MattFletcher, wenn Sie nicht verwenden NOPASSWD - Robin Kanters


Sie können dies auch erreichen, indem Sie einen Wrapper in apache2ctl schreiben, Gruppenbesitz einer Webadministrationsgruppe zuweisen und das suid-Bit setzen. Dies ist eine weniger allgemeine Lösung als visudo, erlaubt jedoch benutzerdefinierte Einschränkungen der Benutzerfähigkeiten und 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
2017-09-30 20:14