Ich melde mich über SSH bei einem System an und möchte einen Befehl erzwingen können, der beim Abmelden ausgeführt wird, unabhängig davon, ob es sich um eine absichtliche Abmeldung handelt (Verlassen der Shell) oder weil meine SSH-Verbindung unterbrochen / beendet wurde. Gibt es eine Möglichkeit, dies einzurichten? Ich rate momentan, die Login-Shell in ein Programm zu ändern, das das beim Schließen von SSH gesendete Signal abfängt (SIGHUP?) Und dann den Befehl ausführt, aber ich frage mich, ob es eine sauberere Lösung gibt.
13
Antworten:
Der beste Weg, dies zu tun, wäre die Verwendung von pam .
In werden
/etc/pam.d
Sie mehrere Dateien haben, von denen eine aufgerufen wirdsshd
. Wenn Sie nur ssh und keine anderen Anmeldungen (z. B. eine grafische Benutzeroberfläche oder echtes TTY) beeinflussen möchten, möchten Sie diese Datei.Wenn Sie alle Anmeldungen beeinflussen möchten, benötigen Sie eine "gemeinsame" Datei. Der Name dieser anderen "allgemeinen" Datei variiert je nach Distribution. Sie können ihn jedoch ermitteln, indem Sie den Anweisungen
include
undsubstack
in dersshd
Datei folgen, bis Sie zur Basisdatei gelangen.Wenn Sie die Datei identifiziert haben, die
/etc/pam.d
Sie verwenden möchten, fügen Sie demsession
Abschnitt eine Zeile wie die folgende hinzu :Dies führt dazu, dass
/etc/pam_session.sh
jedes Mal, wenn sich jemand anmeldet oder abmeldet, ein Anruf getätigt wird (ob ordnungsgemäß oder nicht ordnungsgemäß).Jetzt müssen Sie nur noch erstellen
/etc/pam_session.sh
. Im Folgenden finden Sie ein Beispiel, mit dem Sie bei jeder Abmeldung einen Befehl ausführen können:(vergiss nicht
chmod a+x
das Drehbuch)quelle