Ваша проблема заключается в том, что вы не настроили стек 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
в данном случае ). Добавление строк требует корректировки количества.
Два пути:
Если вы хотите сделать разовую -вещь, вы можете установить EXIT
ловушку:
trap 'rm /etc/foo' EXIT
Это запустит данный код при выходе из текущей оболочки. Ловушку можно установить в интерактивной подсказке или в $HOME/.bash_profile
, если вы хотите, чтобы это происходило каждый раз, (обратите внимание, что повторная установка ловушки удалит ранее установленную ловушку ). Вы можете удалить ловушку перед ее выполнением с помощью trap - EXIT
.
Другой способ: если вы хотите всегда запускать определенный набор команд при выходе из интерактивной оболочки входа в систему, вы можете поместить эти команды в $HOME/.bash_logout
.
Этот файл выполняется при выходе из интерактивной оболочки входа в систему или при выполнении не -интерактивной оболочки входа в систему exit
.