pam_exec hat Sie in die richtige Richtung gezeigt, aber setuid ist ein schlechter Ratschlag. Die meisten (alle?) modernen Linuxes ignorieren es in Shell-Skripten und respektieren es nur in binären ausführbaren Dateien.
Wäre es ein Problem, wenn das Skript zu anderen Zeitpunkten als login (als root) ausgeführt wurde? Wenn es in Ordnung ist, öfter als unbedingt erforderlich auszuführen, können Sie ein Wrapper-Skript erstellen, das bei jedem ssh-Login mit Benutzerberechtigungen ausgeführt wird, das sudo (ohne Kennwort) verwendet, um Ihr Skript als root auszuführen. Dies bedeutet jedoch, dass die Benutzer es auch manuell (als root) ausführen können, so oft sie möchten.
Um dies einzurichten, fügen Sie diese Zeile zu /etc/pam.d/sshd hinzu
account optional pam_exec.so /etc/pam.d/LoginWrapper.sh
Dann erstellen Sie die Datei /etc/pam.d/LoginWrapper.sh mit Inhalt:
#!/bin/bash if [[ $EUID -ne 0 ]]; then # Execute only when a user other than root logs in /usr/bin/sudo /path/to/your/root_script.sh fi
Wenn sich Ihr Sudo in einem anderen Pfad befindet, sollten Sie ihn oben aktualisieren.
Fügen Sie nun in / etc / sudoers die Zeile hinzu:
ALL ALL=(root) NOPASSWD: /path/to/your/root_script.sh