Ausführung des Befehls beim Abmelden oder Trennen erzwingen?

Ausführung des Befehls beim Abmelden oder Trennen erzwingen?

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.dhaben 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.includesubstacksshd

Wenn Sie die Datei identifiziert haben, die Sie verwenden möchten, fügen Sie dem Abschnitt /etc/pam.deine Zeile wie die folgende hinzu :session

session     optional    pam_exec.so quiet /etc/pam_session.sh

Dies führt dazu, dass /etc/pam_session.shbei 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 )

verwandte Informationen