selinux的context

来源:互联网 发布:程序员发展方向 编辑:程序博客网 时间:2024/05/23 11:57

由于无法再忍受chm格式的javadoc在fedora上的“无框架模式”,今天去网上下了一套html形式的javadoc。为了方便局域网里的朋友使用,特意在我的电脑上搭建起了apache服务器。

我最开始的想法是把整个javadoc目录放在~/Documents下,然后在apache的httpd.conf中增加一个新的Directory。我这样配置好之后,用firefox去访问,结果却是403-forbidden,说我没有权限访问。我估计是httpd.conf中的Directory权限配置出错了,于是去网上查了一下,又改了好几次,结果却始终是无法访问。

既然放在用户的路径下不行,那就干脆放到/var/www/html下算了,毕竟在这个目录下用info.php等文件试验过,访问正常。于是用了一条mv命令把整个javadoc目录从~/Documents下移动到了/var/www/html下。然后再用firefox访问,结果出乎意料--还是403-forbidden。为了确认问题所在,我接着就在/var/www/html下新建了一个html文件,用firefox访问,访问正常。

这样的结果让我无所适从。然而这时,SELinux实然在屏幕下方出现了提示:SELinux is preventing the httpd from using potentially mislabeled files ()。“potentially mislabeled files”这个东西以前没见到过,反正SELinux有解决问题的提示,于是照做了:restorecon -v。但结果是一点效果都没有,不知道为什么。

于是又去google了一下(注:自从百度竞价排名被爆光后,再也不用百度),发现在网上知道并谈论这个的人很少。好大会儿工夫,终于找到一个页面,讲了一下SELinux中的Context。原来,SELinux引入了文件的Context概念,每个文件的属性中都包含着一个Context,而这个Context又包括了User,Role,Range,Type四种类型。传统的Linux访问控制只会通过user/group/other来实现访问控制,而SELinux却是通过文件的Context来控制访问的。这样无疑给系统增加了安全性。(据说,未安装SELinux的Linux系统的安全级别只有C2,是跟Windows同级别的;安装SELinux后则变成了B1,比Windows牛多了。。。)

用ls -Z可以查看文件的Context。果然,新建的那个html文件的Context是“unconfined_u:object_r:httpd_sys_content_t:s0”,而javadoc的Context就是“unconfined_u:object_r:unconfined_home_t:s0”。单看这两种类型,就足以说明Context类型的复杂程度了,我也就没有再去SELinux的官网上详细查了。但解决问题的办法已经清楚了,用chcon命令改变一下javadoc的Context类型就行了。

事情的经过就是这样子的。在详细地研究Linux之前还不适合去研究SELinux,故先记下来,备忘。

原创粉丝点击