pam_exec:由于 selinux 而导致权限被拒绝

pam_exec:由于 selinux 而导致权限被拒绝

我有一台 RHEL 6.0,我配置了 pam_exec 通过 bash 脚本运行自定义身份验证方法。如果禁用 SE Linux,一切都会按预期运行,但是当我启用 SELinux 时,pam_exec 尝试执行脚本时会出现权限被拒绝错误。我如何告诉 SELinux 允许在用户尝试登录时执行此脚本?

/etc/pam.d/密码验证

auth        sufficient    pam_exec.so expose_authtok seteuid /opt/myscript.sh

审计日志

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

答案1

该脚本具有不同的安全上下文,不允许 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以记录更改。

相关内容