У меня 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
, тогда как сценарий имеет контекст unlimited_u: object_r: usr_t: s0
.
Вам нужно будет изменить тип скрипта, чтобы pam_exec мог его запускать; например через chcon -t xdm_t имя_сценария
(возможно, вам придется изменить другие атрибуты файла / владельца, чтобы разрешить pam_exec запускать сценарий).
Это должно позволить вам протестировать сценарий, хотя вам, возможно, придется изменить введите обратно, если вам нужно запустить скрипт самостоятельно. Однако изменение не сохранится после перезагрузки или изменения меток файловой системы; для этого вам нужно запустить / usr / sbin / semanage fcontext -a -t xdm_t / full / path / to / script
, чтобы записать изменение.