в ударе можно также использовать круглые скобки получения и регулярное выражение
for repo in "${warpInLocations[@]}"; do
[[ $repo =~ /([^.]+)\. ]] && dir=${BASH_REMATCH[1]}
warpInDir=${warpToLocation}$dir
# ...
Порядок, в котором вызываются pam_exec
и pam_selinux
, важен. Справочная страница дляpam_selinux
примечаний:
Adding pam_selinux into the PAM stack might disrupt behavior of other PAM modules which execute applications. To avoid that, pam_selinux.so open should be placed after such modules in the PAM stack, and pam_selinux.so close should be placed before them. When such a placement is not feasible, pam_selinux.so restore could be used to temporary restore original security contexts.
Точно так же Дэн Уолш пишет по теме:
If you are going to add a pam_module that would exec commands that the user would not be allowed to execute, for example pam_mount, it should be added before the pam_selinux.so open command. If you are adding a pam_module that execs command a user could execute, then you probably want these after the pam_selinux.so open line.
Также обратите внимание, что ваш скрипт в настоящее время имеет контекст безопасности user_home_t
, который вряд ли совместим с политикой по умолчанию (контексты файлов сохраняются при перемещении файла; если вы создали файл в своем домашнем каталоге, перемещение файла сохранит исходный контекст ). Вероятно, вам следует использовать контекст bin_t
по умолчанию. Чтобы восстановить контекст по умолчанию:
restorecon /usr/local/bin/loginformer.py
Если ваш скрипт не делает ничего особенного, поместите pam_exec
перед pam_selinux
и перезагрузите контекст, чтобы решить вашу проблему.