安装testlink时,出现”testlink/gui/templates_c、testlink/logs、testlink/upload_area不可写‘解决办法
在Testlink安装到最后,'...目录是否可写(由于用户运行webserver进程)’过程出错,如下图所示
1.首先想到/var/www/html/testlink/gui/templates_c、/var/www/html/testlink/logs、/var/www/html/testlink/upload_area这些目录没有写权限
所以先去给赋了些权限
chmod -R 777 /var/www/html/testlink/gui/templates_c chmod -R 777 /var/www/html/testlink/logs chmod -R 777 /var/www/html/testlink/upload_area
然鹅!!!所有目录都有了写权限,仍然没有解决这个问题,又陷入了深深的思考中.....
2. 最终,经过探索,原来是SELinux阻止/usr/sbin/httpd 对/var/www/html/testlink/gui/templates_c进行写操作,以前只知道有SELlinx,最多也是接触过SELinx的关闭.所以最简单的方法就是关闭SELinux。
那如果不关闭SELinux又该怎样做呢?
SELinux极大的增强了Linux系统的安全性,能将用户权限关在笼子里,如httpd服务,因此能有效的防范0-day类的攻击。
a)用如下命令获取默认/var/www目录的SELinux上下文
semanage fcontext -l |grep '/var/www'
从中可以看到Apache只能访问包含 httpd_sys_rw_content_t标签的文件,如果希望Apchae使用某个目录作为网站文件目录,就需要给这个目录下的文件增加httpd_sys_content_t标签。
b)那么,首先在这个目录下的文件添加默认标签类型
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/testlink/gui/templates_c'
c)然后用新的标签类型标注已有文件,Apache就可以使用改目录下的文件构建网站了
restorecon -v '/var/www/html/testlink/gui/templates_c'
d)按同样的方法,修改/var/www/html/testlink/logs和/var/www/html/testlink/upload_area。