
Ich melde mich über SSH bei einem System an und möchte die Ausführung eines Befehls beim Abmelden erzwingen können, unabhängig davon, ob es sich um ein absichtliches Abmelden (Beenden der Shell) handelt oder ob meine SSH-Verbindung unterbrochen/beendet wurde. Gibt es eine Möglichkeit, dies einzurichten? Meine beste Vermutung besteht derzeit darin, die Anmeldeshell in ein Programm zu ändern, das das beim Schließen von SSH gesendete Signal (SIGHUP?) abfängt und den Befehl dann ausführt, aber ich frage mich, ob es eine sauberere Lösung gibt.
Antwort1
Der beste Weg hierfür wäre die Verwendung vonpam.
In /etc/pam.d
haben Sie mehrere Dateien, eine davon heißt sshd
. Wenn Sie nur SSH und keine anderen Anmeldungen (wie eine GUI oder ein echtes TTY) beeinflussen möchten, benötigen Sie diese Datei. Wenn Sie alle Anmeldungen beeinflussen möchten, benötigen Sie eine „gemeinsame“ Datei. Der Name dieser anderen „gemeinsamen“ Datei variiert je nach Distribution, aber Sie können sie finden, indem Sie den und Anweisungen in der Datei
folgen, bis Sie zur Basisdatei gelangen.include
substack
sshd
Wenn Sie die Datei identifiziert haben, die Sie verwenden möchten, fügen Sie dem Abschnitt /etc/pam.d
eine Zeile wie die folgende hinzu :session
session optional pam_exec.so quiet /etc/pam_session.sh
Dies führt dazu, dass /etc/pam_session.sh
bei jeder Anmeldung und Abmeldung (ob ordnungsgemäß oder nicht) ein Anruf erfolgt.
Jetzt müssen Sie nur noch erstellen /etc/pam_session.sh
. Unten sehen Sie ein Beispiel, mit dem Sie jedes Mal, wenn sich jemand abmeldet, etwas ausführen können:
#!/bin/sh
if [ "$PAM_TYPE" = "close_session" ]; then
something
fi
chmod a+x
( Skript nicht vergessen )