通过以下链接,我可以将SELinux完全从Fedora 14中closures。但是我不知道如何才能禁用SELinux,仅用于httpd守护进程? 我没有安装system-config-selinux,并且由于公司防火墙策略,我必须从pkgs.orgsearchRPM才能安装任何软件包。 那么有没有办法把这个问题搞清楚?
编辑:
Summary: SELinux is preventing /opt/ibm/cognos/c10/cgi-bin/cognos.cgi "execute" access to /opt/ibm/cognos/c10/cgi-bin/libIBJStreamsDLL.so. Detailed Description: SELinux denied access requested by /opt/ibm/cognos/c10/cgi-bin/cognos.cgi. /opt/ibm/cognos/c10/cgi-bin/cognos.cgi is mislabeled. /opt/ibm/cognos/c10/cgi-bin/cognos.cgi default SELinux type is bin_t, but its current type is bin_t. Changing this file back to the default type, may fix your problem. If you believe this is a bug, please file a bug report against this package. Allowing Access: You can restore the default system context to this file by executing the restorecon command. restorecon '/opt/ibm/cognos/c10/cgi-bin/cognos.cgi'. Fix Command: /sbin/restorecon '/opt/ibm/cognos/c10/cgi-bin/cognos.cgi' Additional Information: Source Context unconfined_u:system_r:httpd_t:s0 Target Context unconfined_u:object_r:usr_t:s0 Target Objects /opt/ibm/cognos/c10/cgi-bin/libIBJStreamsDLL.so [ file ] Source cognos.cgi Source Path /opt/ibm/cognos/c10/cgi-bin/cognos.cgi Port <Unknown> Host mm2fedora.syd.cog Source RPM Packages Target RPM Packages Policy RPM selinux-policy-3.9.7-3.fc14 Selinux Enabled True Policy Type targeted Enforcing Mode Enforcing Plugin Name restore_source_context Host Name mm2fedora.syd.cog Platform Linux mm2fedora.syd.cog 2.6.35.6-45.fc14.i686 #1 SMP Mon Oct 18 23:56:17 UTC 2010 i686 i686 Alert Count 18 First Seen Fri 15 Apr 2011 02:12:44 PM EST Last Seen Fri 15 Apr 2011 02:33:11 PM EST Local ID 409e250f-049f-49c0-89f6-7155e4643868 Line Numbers Raw Audit Messages node=mm2fedora.syd.cog type=AVC msg=audit(1302841991.999:22392): avc: denied { execute } for pid=28242 comm="cognos.cgi" path="/opt/ibm/cognos/c10/cgi-bin/libIBJStreamsDLL.so" dev=dm-0 ino=138263 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:usr_t:s0 tclass=file node=mm2fedora.syd.cog type=SYSCALL msg=audit(1302841991.999:22392): arch=40000003 syscall=192 success=no exit=-13 a0=0 a1=1bc08 a2=5 a3=802 items=0 ppid=27923 pid=28242 auid=500 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=1 comm="cognos.cgi" exe="/opt/ibm/cognos/c10/cgi-bin/cognos.cgi" subj=unconfined_u:system_r:httpd_t:s0 key=(null)
build议我运行build议的修复命令: /sbin/restorecon '/opt/ibm/cognos/c10/cgi-bin/cognos.cgi'
很多次,但不幸的是。 通过完全禁用SELinux我可以看到这个networking应用程序的作品。 我现在正在自己研究这个话题,就像如何全局启用SELinux,而只是禁用httpd一样。 不可能是最好的方法,但是因为这只是一个testing用例,对我和我的团队来说都不错。
我从Fedora 13的SELinux常见问题得到的提示是在这里,所以我个人认为有一个与system-config-selinux的方式,我只是不知道细节…
对于Fedora 14,和el6一样,我想你可以通过运行来卸载http SELinux模块
semodule -r httpd
这可能会使httpd运行为initrc_t
或unconfined_t
。
如果这不适用于F14,那么可以closuresSELinux布尔(el5中的“旧”方法),如下所示:
setsebool httpd_disable_trans 1
并使用
setsebool -P httpd_disable_trans 1
使其永久
把我以前的评论转换成一个答案,以满足大众的需求;)
从你学习东西的日常事务部门:我看到Dan Walsh昨天做了一个演讲,他解释了在Fedora和EL6的新版本中禁用应用程序的新方法。 你不再设置一个布尔值来禁止转换(这有时会导致需要设置所有的布尔值级联才能工作),但是你将一个特定的types放在允许模式下。 你通过运行'semanage permissive -a TYPE'命令来做到这一点(在你的情况'semanage permissive -a httpd_t')。 这将SELinux留在httpd_t上,但处于宽容模式。 – wzzrd 5月20日在8:45
我不确定你如何closuresSELinux的单一服务 – 我怀疑你不能。
但是你可以做的是使用runcon来设置apache进程在无约束的环境下运行。
你可以把runcon想成selinux的sudoer。 它允许您指定在哪个上下文中运行进程。
你需要修改你的apache启动脚本,添加如下内容:
runcon unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
到实际调用apache的httpd启动脚本部分。
在我的Fedora FC14主机上,我会改变这一行:
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
阅读这样的东西:
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} runcon unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 $httpd $OPTIONS
PS我没有实际testing过这个在我的apache启动脚本,所以上面是一个猜测,我到底需要把它放在哪里,但我肯定已经使用runcon来允许进程无约束运行之前,所以它会工作,你只需要find正确的地方。
没有布尔值来全局禁用httpd的SELinux。 话虽如此,您应该阅读httpd_selinux(8)
手册页以了解您应使用的相关文件上下文; 在你的情况下,你想要httpd_sys_script_exec_t
或httpd_unconfined_script_exec_t
,并可以使用chcon
来设置它暂时testing,并semanage
设置它永久。
问题并不完全清楚 – 你的意图是什么?
我假设你不是试图打开HTTP端口,而是用防火墙代替Selinux本身。
所以,也许你正在寻求允许httpd守护进程写入一些不在通常的文档根目录下的目录?
如果是这样,那么你需要读取Selinux的权限,并将其设置为你想访问的目录。
这是一个阅读的地方:
http://wiki.centos.org/HowTos/SELinux
这是相关的,因为Fedora和Centos都与红帽有关,所以这可能会有所帮助。
[编辑]
请试试这个:
chcon -t textrel_shlib_t ThePathToTheFile
PabloTwo在这篇文章中提出了这个build议:
http://www.fedoraforum.org/forum/showthread.php?t=252552
IBM在这篇文章中也提出了这个build议:
https://www-304.ibm.com/support/docview.wss?uid=swg21454550
当我使用GBrowse2时,也遇到同样的问题。 GBrowse2将临时文件保存在非webroot位置,并在webroot之外的会话上设置locking。 由于GBrowse2在Apache上运行,因此SELinux dint允许httpd访问/修改webroot之外的目录。 我遵循上一篇文章中提供的链接:
“这是一个阅读的地方: http : //wiki.centos.org/HowTos/SELinux ”
虽然它没有提供如何解决问题的完整说明,但它对我有很大帮助(第4节:SELinux访问控制)。 它给了我一个关于SELinux如何区分webroot和非webroot文件的想法。 您需要将非webroot文件夹/文件的types更改为与httpd进程types兼容的文件夹/文件的types。 可以使用SELinux错误细节(semanage和restorecon命令)中给出的命令设置此types。 修复非webroot文件夹的types后,GBrowse2可以在types发生更改的非webroot文件夹中顺利创build新文件。