Назад | Перейти на главную страницу

pam_exec: разрешение отклонено из-за selinux

У меня есть 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 чтобы записать изменение.