У меня есть RHEL 6.0, и я настроил pam_exec для запуска пользовательского метода аутентификации с помощью сценария bash. Если SE Linux отключен, все работает, как ожидалось, но когда я включаю SELinux, я получаю сообщение об отказе в разрешении, когда pam_exec пытается выполнить сценарий. Как я могу сказать SELinux разрешить выполнение этого скрипта, когда пользователь пытается войти в систему?
/etc/pam.d/password-auth
auth sufficient pam_exec.so expose_authtok seteuid /opt/myscript.sh
audit.log
type=AVC msg=audit(1496962765.610:24707): avc: denied { execute } for pid=7476 comm="gdm-session-wor" name="myscript.sh" dev=dm-0 ino=21416 scontext=system_u:system_r:xdm_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:usr_t:s0 tclass=file
У сценария другой контекст безопасности, который не позволяет pam_exec запускать его. Процесс pam_exec выполняется с контекстом system_u:system_r:xdm_t:s0-s0:c0.c1023
тогда как сценарий имеет контекст unconfined_u:object_r:usr_t:s0
.
Вам нужно будет изменить тип скрипта, чтобы pam_exec мог его запускать; например через chcon -t xdm_t script_name
(возможно, вам придется изменить другие атрибуты файла / владельца, чтобы pam_exec мог запускать скрипт).
Это должно позволить вам протестировать скрипт, хотя вам, возможно, придется снова изменить тип, если вам нужно запустить скрипт самостоятельно. Однако это изменение не сохранится после перезагрузки или изменения меток файловой системы; для этого вам нужно запустить /usr/sbin/semanage fcontext -a -t xdm_t /full/path/to/script
чтобы записать изменение.