Das Ausführen eines Bash-Skripts als nrpe-Benutzer schlägt fehl

475
Sina

Ich habe ein Bash-Skript erstellt, das alle Protokollordner auf mehreren Servern durchsuchen und alle Protokolldateien auf rpm-basierten Computern (RHEL- und Centos 6 & 7-Server) komprimieren soll. Das Skript soll eine Sperrdatei erstellen, um zu verhindern, dass mehrere Instanzen ausgeführt werden, und das gesamte Skript, das find und tar sowie die rm-Befehle ausgiebig verwendet, sollte vom nrpe-Benutzer mit sudo-Fähigkeiten ausgeführt werden Ein Nagios-Eventhandler wird ausgelöst.

Ich habe nrpe die Sudo-Berechtigungen erteilt, um diesen Befehl auszuführen. Ich habe jedoch festgestellt, dass beim Ausführen des Skripts Berechtigungen verweigert werden:

sudo -u nrpe /share/username/run/fixstorage.sh touch: cannot touch `/var/run/fixstorage.lockfile': Permission denied find: `/var/log/sssd': Permission denied find: `/var/log/salt': Permission denied find: `/var/log/httpd': Permission denied find: `/var/log/audit': Permission denied 

Dann scheint das Skript jedoch ohne Ausgabe weiterzulaufen. Und die Lagerung ist nicht festgelegt. Wie kann ich nrpe dazu bringen, das gesamte Skript ordnungsgemäß auszuführen? Die Berechtigungen für das Skript sind:

-rwxrwxr-x. 1 username username 5516 Jan 3 23:36 /share/username/run/fixstorage.sh 

Es befindet sich im Basisordner eines Benutzers, der über NFS bereitgestellt wird.

0
Hat der nrpe-Benutzer Schreibberechtigungen für die erste Datei und Leseberechtigungen für die Verzeichnisse? Ich bezweifle, dass er es getan hat. Im Grunde haben Sie das Skript einfach als Benutzer nrpe ausgeführt, ohne ihm zusätzliche Privilegien zu gewähren. ojs vor 7 Jahren 0
Der Benutzer nrpe hat die Berechtigung, das Skript als root auszuführen. Ist das nicht ausreichend? Sina vor 7 Jahren 0
Das sollte ja ausreichen, nur um zu überprüfen, ob Sie bitte die Ausgabe von 'ls -l / share / username / run / fixstorage.sh' hinzufügen möchten. ojs vor 7 Jahren 0
Erledigt. Ich frage mich, warum die Leute Punkte von meiner Frage streichen. Ist es zu blöd oder so? Das ist ein sehr geringes Verhalten. Wenn ich wüsste, was ich tat, würde ich nicht fragen. Sina vor 7 Jahren 0
Von dem, was ich hier sehe, wird das Skript nicht mit Root-Privilegien ausgeführt. Wenn Sie es wirklich mit Root-Privilegien ausführen möchten, verwenden Sie das suid-Bit in der Skriptdatei. ojs vor 7 Jahren 0
Suid könnte ein Sicherheitsproblem sein. Warum führen Sie das Skript nicht direkt als root aus? Verwenden Sie einfach `sudo / share / username / run / fixstorage.sh`? ojs vor 7 Jahren 0
Genau so führe ich das Skript in nrpe aus: `command [fix_storage] = / usr / bin / sudo / share / username / run / fixstorage.sh`, aber ich sehe jetzt einen Fehler: sudo ist in / bin nicht / usr / bin auf rhel7. Ich könnte nur versuchen, das Suid-Bit einzustellen. Vielen Dank! Sina vor 7 Jahren 0

0 Antworten auf die Frage