Я вхожу в систему через SSH, и я хотел бы иметь возможность принудительно запускать команду при выходе из системы, будь то преднамеренный выход из системы (выход из оболочки) или из-за того, что мое соединение SSH было разорвано / разорвано. Есть ли способ настроить это? Мое лучшее предположение сейчас состоит в том, чтобы изменить оболочку входа в систему на программу, которая перехватывает сигнал, посылаемый при закрытии SSH (SIGHUP?), И затем выполняет команду, но мне интересно, есть ли более чистое решение.
13
Ответы:
Лучший способ сделать это - использовать pam .
У
/etc/pam.d
вас будет несколько файлов, один из них будет называтьсяsshd
. Если вы хотите воздействовать только на ssh, а не на другие имена входа (например, GUI или реальный TTY), вам нужен этот файл.Если вы хотите повлиять на все логины, вам нужен «общий» файл. Название этого другого файла «общего» варьируется в зависимости от дистрибутива, но вы можете отслеживать его вниз, следуя
include
иsubstack
заявление вsshd
файле , пока вы не дойдете до базового файла.После того, как вы определили файл
/etc/pam.d
, который хотите использовать, добавьте вsession
раздел такую строку :Это приведет к вызову
/etc/pam_session.sh
каждый раз, когда кто-то входит в систему и выходит из системы (изящно или без изящества).Теперь вам просто нужно создать
/etc/pam_session.sh
. Ниже приведен пример, который вы можете использовать для запуска чего-либо каждый раз, когда кто-то выходит из системы:(не забудьте
chmod a+x
сценарий)источник