Запуск скриптов при выходе из системы

Ваша проблема заключается в том, что вы не настроили стек PAM соответствующим образом, в частности, количество пропусков в строках, использующих скобки. Если вы не знакомы с этим обозначением,RTFM pam.conf (5 ), в котором также перечислены скобочные эквиваленты слов «требуется», «достаточно» и т. д.

Раздел аутентификации по умолчанию для RHEL 7 с настроенным sssd выглядит следующим образом:

auth        required      pam_env.so
auth        [default=1 success=ok] pam_localuser.so
auth        [success=done ignore=ignore default=die] pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        sufficient    pam_sss.so forward_pass
auth        required      pam_deny.so

В строке pam_localuserуказано, что действие по умолчанию — пропустить один модуль (pam_unix, в данном случае ), но в случае успеха (, т. е. пользователь является локальным ), продолжайте работу в обычном режиме. Это сделано для того, чтобы доменные (не -локальные )пользователи не генерировали неудачную попытку входа в систему с pam_unix, а вместо этого сразу переходили к sssd(pam_sssс предварительной проверкой uid >= 1000 ).

Также обратите внимание на настройку default=die в pam_unix, что означает, что неудачный локальный вход прервет стек аутентификации прямо здесь (и даже не попытаетсяpam_sss). Точно так же success=done делает то же самое для успешных входов в систему.

Как уже упоминалось, pam_faillockне применяется к пользователям домена, но если вы используете его для локальных учетных записей и вставляете три вызова вокруг pam_unix, вам нужно будет изменить pam_localuserстроку на default=4 , так что вход в домен продолжит работать. (При default=1 он пропустит pam_faillock, но перейдет к pam_unix, что, очевидно, не удастся для учетных записей домена, и из-за default=die немедленно прервется. Установка по умолчанию = 4 приведет к переходу к pam_succeed_if, как это было раньше.)

Я не знаком с pam_faillock, поэтому не могу сказать, правильно ли вызывать его снова после pam_unix, но если это так, вам также нужно что-то сделать с success=done и default=die on pam_unix, иначе он никогда не дойдет до pam_faillockдля блокировки/разблокировки учетных записей.

Это сложный стек PAM; вы можете ознакомиться с примерами конфигураций в pam _faillock (8). Убедитесь, что вы случайно не впустили всех в (, надеюсь, pam_denyв конце позаботится об этом ),и не забудьте настроить все default=N счетчики при добавлении или удалении последующих строк.

TL;DR:[default=1]означает пропуск одной строки после(pam_unixв данном случае ). Добавление строк требует корректировки количества.

0
17.07.2019, 18:22
1 ответ

Два пути:

Если вы хотите сделать разовую -вещь, вы можете установить EXITловушку:

trap 'rm /etc/foo' EXIT

Это запустит данный код при выходе из текущей оболочки. Ловушку можно установить в интерактивной подсказке или в $HOME/.bash_profile, если вы хотите, чтобы это происходило каждый раз, (обратите внимание, что повторная установка ловушки удалит ранее установленную ловушку ). Вы можете удалить ловушку перед ее выполнением с помощью trap - EXIT.

Другой способ: если вы хотите всегда запускать определенный набор команд при выходе из интерактивной оболочки входа в систему, вы можете поместить эти команды в $HOME/.bash_logout.

Этот файл выполняется при выходе из интерактивной оболочки входа в систему или при выполнении не -интерактивной оболочки входа в систему exit.

3
28.01.2020, 02:22

Теги

Похожие вопросы