首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python CGIHTTPServer崩溃,并显示"OSError:[Errno 13] Permission denied“

Python CGIHTTPServer崩溃,并显示"OSError:[Errno 13] Permission denied“
EN

Stack Overflow用户
提问于 2012-06-14 02:45:56
回答 4查看 7.6K关注 0票数 8

我从我的主目录运行以下命令:

代码语言:javascript
复制
python -m CGIHTTPServer

这将运行服务器,但当我尝试访问cgi-bin目录中的脚本时,我得到:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/usr/lib/python2.7/CGIHTTPServer.py", line 251, in run_cgi
    os.execve(scriptfile, args, env)
OSError: [Errno 13] Permission denied

以root用户身份运行不会有什么不同。这些文件似乎具有所有正确的权限:

代码语言:javascript
复制
student@bandersnatch:~$ ls -lhR
.:
total 12K
drwxr-xr-x 2 student student 4.0K Jun 13 18:38 cgi-bin
drwxr--r-- 2 student student 4.0K Jun 10  2004 kalpy
-rwxrwxrwx 1 student student 2.0K Jun 13 12:37 test.html

./cgi-bin:
total 8.0K
-rwxr-xr-x 1 student student 31 Jun 13 18:38 test.py

编辑: test.py的内容为:

代码语言:javascript
复制
#!/usr/bin/python
print "test"

shebang是有效的:

代码语言:javascript
复制
~$ which python
/usr/bin/python
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-14 05:55:00

您是否碰巧以root身份运行该进程?

如果使用源代码,在调用execve之前,您将在CGIHTTPServer.py中看到

代码语言:javascript
复制
try:
    os.setuid(nobody)
except os.error:
    pass

也就是说,如果它能够更改UID,也就是说,如果它是root用户,那么它将以无人身份运行CGI脚本。如果不是root,则此调用很可能会失败,并继续执行。

因此,我猜测您是以root用户身份运行服务器的,因此该脚本是以任何人身份运行的,但该用户无权访问该脚本。这是意料之中的,正如您所说的,它在您的家庭目录中。

我能想到的两个解决方案:

  • 建议:不要以超级用户身份运行服务器!
  • 解决方法:将脚本复制到没有人可以读取的目录(例如/tmp)。
票数 10
EN

Stack Overflow用户

发布于 2012-06-14 03:46:46

就我个人而言,除非有什么我不知道的原因,否则我会推荐使用subprocess.Popen而不是os.execve。我以前遇到过Errno13,试图用open(‘.app execName.app')启动一个打开程序。我不得不使用Popen('execName.app/Contents/MacOS/execName','arg1','arg2'...)而不是。不知道这有没有帮助,但试一试。

票数 1
EN

Stack Overflow用户

发布于 2016-09-04 22:15:22

我在ubuntu Linux上遇到了同样的问题。在解决方案后面加上"Mike",并进行了修改。改为对具有多个文件夹的"/usr“执行chmod,更改包含被拒绝的可执行文件的文件夹的权限。(您可以检查在同一位置加载静态html文件时服务器是否运行正常,并且仅在脚本运行时显示错误)。

代码语言:javascript
复制
cd /pathto/folder/with/deniedscript
sudo chmod -R 755 ./

现在脚本有权限了,所以应该可以正常运行。请注意,-R将权限授予此文件夹(以及子文件夹,如果有的话)中的所有文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11021369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档