Erlauben Sie die Berechtigung für benutzerdefinierte Bash-Befehle, ohne die Berechtigung für zugrunde liegende Befehle zu erteilen.

Erlauben Sie die Berechtigung für benutzerdefinierte Bash-Befehle, ohne die Berechtigung für zugrunde liegende Befehle zu erteilen.

Auf einem unserer Server befindet sich ein automatisches Skript, das vom beobachtenden Benutzer ausgeführt wird. Es muss einem anderen Skript, das vom primären Benutzer ausgeführt wird, mitteilen, dass es eine Protokolldatei aktualisieren soll.

Der Code hierfür lautetsudo kill -UPDATE_LOG pid

Offensichtlich muss der Beobachtungsbenutzer über die Berechtigung verfügen, diesen Befehl auszuführen. Aus offensichtlichen Gründen möchte ich diesem automatischen Skript jedoch nicht die Berechtigung erteilen, Prozesse zu beenden.

Ich würde gerne so etwas machen wiealias update_log='kill -UPDATE_LOG; grant update_log on observing_user

Antwort1

wahrscheinlich mit

sudo pkill -UPDATE_LOG <process-name>

anstelle von „kill“ wäre die restriktive Option ausreichend, um Ihren Bedarf zu decken?

Eine andere Möglichkeit, dies zu beheben, besteht darin, den Befehl, den Sie mit sudo anbieten möchten, in ein benutzerdefiniertes Skript oder eine Exec-Anweisung einzubetten, um diese Aktion auszuführen.

Antwort2

Okay, ich habe also eine Antwort gefunden, nachdem ich meine Schlüsselwörter geändert habe.

Siehe auch: Wie kann verhindert werden, dass Sudo-Benutzer bestimmte Befehle ausführen?

Schritt 1:

sudo visudo

Die Syntax lautet wie folgt:

user host=command

Dies gewährt Sudo-Zugriff auf einen bestimmten Befehl. Sie können auch Gruppen wie

%group host=command

Sie können ALL in jeder der drei „Spalten“ verwenden, um dies auf jeden Host, jeden Befehl oder jeden Benutzer anzuwenden.

Meine Lösung war

observing_user ALL=kill -USR1 *

verwandte Informationen