Loguję się do systemu za pośrednictwem SSH i chciałbym móc wymusić uruchomienie komendy podczas wylogowywania, niezależnie od tego, czy jest to celowe wylogowanie (wyjście z powłoki), czy dlatego, że moje połączenie SSH zostało zerwane / przerwane. Czy jest jakiś sposób na skonfigurowanie tego? Moim najlepszym przypuszczeniem jest teraz zmiana powłoki logowania na program, który przechwytuje sygnał wysyłany przy zamykaniu SSH (SIGHUP?) I wykonuje wtedy polecenie, ale zastanawiam się, czy istnieje bardziej przejrzyste rozwiązanie.
13
Odpowiedzi:
Najlepszym sposobem na to byłoby użycie pam .
W
/etc/pam.d
będziesz mieć kilka plików, jedna z nich zostanie wywołanasshd
. Jeśli chcesz wpływać tylko na ssh, a nie na inne loginy (takie jak GUI lub prawdziwy TTY), potrzebujesz tego pliku.Jeśli chcesz wpłynąć na wszystkie loginy, będziesz potrzebować „wspólnego” pliku. Nazwa tego „wspólnego” pliku różni się w zależności od dystrybucji, ale można go wyśledzić, postępując zgodnie z instrukcjami
include
isubstack
wsshd
pliku, aż dojdziesz do pliku podstawowego.Po zidentyfikowaniu pliku
/etc/pam.d
, którego chcesz użyć, dodaj dosession
sekcji następujący wiersz :Spowoduje to wywoływanie za
/etc/pam_session.sh
każdym razem, gdy ktoś się zaloguje i wyloguje (z wdziękiem lub z wdziękiem).Teraz musisz tylko utworzyć
/etc/pam_session.sh
. Poniżej znajduje się przykład, za pomocą którego można uruchomić coś za każdym razem, gdy ktoś się wylogowuje:(nie zapomnij o
chmod a+x
skrypcie)źródło