我正在尝试在CentOS 5.5服务器上启用SELinux,Squid 3.1.12通过ncsa_auth来处理身份validation。
当我closuresSElinux时一切正常,但是当我启用它时,Squid在authentication插件ncsa_auth上崩溃。
这是错误信息:
May 29 19:12:21 us squid[1458]: Squid Parent: child process 1493 started May 29 19:12:21 us kernel: printk: 27 messages suppressed. May 29 19:12:21 us kernel: type=1400 audit(1306696341.922:74): avc: denied { execute } for pid=1494 comm="squid" name="ncsa_auth" dev=xvda1 ino=610563 scontext=root:system_r:squid_t:s0 tcontext=user_u:object_r:usr_t:s0 tclass=file May 29 19:12:22 us (squid): The basicauthenticator helpers are crashing too rapidly, need help! May 29 19:12:22 us squid[1458]: Squid Parent: child process 1493 exited with status 1 May 29 19:12:22 us squid[1458]: Exiting due to repeated, frequent failures
当SELinux是宽容的,这些是我得到的警告:
May 29 19:25:27 us kernel: type=1400 audit(1306697127.741:81): avc: denied { execute } for pid=1524 comm="squid" name="ncsa_auth" dev=xvda1 ino=610563 scontext=root:system_r:squid_t:s0 tcontext=user_u:object_r:usr_t:s0 tclass=file May 29 19:25:27 us kernel: type=1400 audit(1306697127.741:82): avc: denied { execute_no_trans } for pid=1524 comm="squid" path="/opt/squid-3.1.12/helpers/basic_auth/NCSA/ncsa_auth" dev=xvda1 ino=610563 scontext=root:system_r:squid_t:s0 tcontext=user_u:object_r:usr_t:s0 tclass=file
ncsa-auth:
[bart@us NCSA]# ls -alZ ncsa_auth -rwxrwxrwx root root user_u:object_r:usr_t ncsa_auth
我想他希望标签是unconfined_u:system_r:squid_t:s0 ,但我不知道如何正确设置它。 我尝试设置后:
chcon unconfined_u:system_r:squid_t:s0 ncsa_auth
我得到了以下错误: chcon: failed to change context of ncsa_auth to unconfined_u:system_r:squid_t:s0: Invalid argument
我刚刚检查了一个CentOS 5.6系统,其中有鱿鱼+ ncsa_auth工作。 我的/usr/lib64/squid/ncsa_auth是
ls -lZ /usr/lib64/squid/ncsa_auth -rwsr-x--- root squid system_u:object_r:lib_t /usr/lib64/squid/ncsa_auth
如果我将/usr/lib64/squid/ncsa_auth上的权限设置为与您的权限相同,那么我将得到与您一样的错误消息。
chown root:squid /usr/lib64/squid/ncsa_auth chmod 4750 /usr/lib64/squid/ncsa_auth chcon system_u:object_r:lib_t /usr/lib64/squid/ncsa_auth
修复了我的系统上的问题。
那将是chcon -t squid_t ncsa_auth那里,但是在我的RHEL5.5机器上,有一个规则允许squid在标签为bin_t文件上执行权限,这可能是它应该是的,而不是squid_t :
allow squid_t bin_t : file { ioctl read getattr lock execute execute_no_trans open } ;
你可以用sesearch -s squid_t --allow来检查。 lib_t存在相同的规则,请参阅Iains的答案。
squid_ttypes是为域而不是文件。 一个文件可以被标记为squid_exec_t ,但这是守护进程的二进制文件,而不是帮助文件。 长话短说,文件应该被标记为bin_t并放在/usr/local/bin 。
我怀疑你的ncsa_auth插件安装在一个奇怪的位置。 如果你把它放在/usr/local/bin ,然后运行restorecon -Fv ,squid会尝试把它作为一个bin_t文件来执行,这很有可能成功。