现在的位置: 首页 > 综合 > 正文

cgi写权限的限制问题

2014年11月18日 ⁄ 综合 ⁄ 共 1156字 ⁄ 字号 评论关闭

前段时间用python写了个cgi程序,今天换了台机器就不能用了,调试发现没有权限写文件了
提取其中的问题代码,做了个测试
/var/www/cgi-bin/c.py

  1. #!/usr/bin/env python
  2. import cgitb
  3. cgitb.enable()
  4. import cgi, os
  5. import sys
  6. # cgi header
  7. print "Content-type: text/plain"
  8. print
  9. print os.getcwd()
  10. fw=open('/tmp/1','w');
  11. fw.write("test");
  12. fw.close()

访问http://192.168.1.2/cgi-bin/c.py之后,在/tmp目录下出现了文件1,
然后复制一下,修改权限
cd /tmp
cp 1 2
chown apache.apache 2
chmod a+w 2
ll
结果如下:2甚至比1的权限还多,任何人都可以修改2
-rw-r--r--  1 apache apache     4 Oct 27 17:18 1
-rw-rw-rw-  1 apache apache     4 Oct 29 09:48 2

但使用cgi结果却不一样

/var/www/cgi-bin/t.py

  1. #!/usr/bin/env python
  2. import cgitb
  3. cgitb.enable()
  4. import cgi, os
  5. import sys
  6. # cgi header
  7. print "Content-type: text/plain"
  8. print
  9. print os.getcwd()
  10. print os.access('/tmp/1', os.R_OK);
  11. print os.access('/tmp/2', os.R_OK); 
  12. print os.access('/tmp/1', os.W_OK);
  13. print os.access('/tmp/2', os.W_OK);

访问http://192.168.1.2/cgi-bin/t.py,测试两个文件的权限,结果输出:
/var/www/cgi-bin
True
True
True
False

按道理2比1的权限还多,但是使用cgi却没有写权限,只有使用cgi创建的文件才有写权限!!!
开始我以为是apache的配置问题,看了下配置文件,没有发现问题,网上也没找到相关的文档,
后来请教高人,说是关掉selinux就好了

我看了一下/etc/selinux/config
SELINUX=enforcing
改成disabled后,重启httpd,无效!要重启机器?不干!
查了一下用这个命令可以关闭
setenforce 0
检查一下
getenforce
返回Permissive

再次测试,读写权限全有了。

SELINUX具体做什么用的,怎么配置,我暂时没有时间搞,先把这个解决办法记下。

 

抱歉!评论已关闭.