来自Python服务器的“权限被拒绝”

时间:2012-08-27 22:06:37

标签: python io hosting

基本上,我对Python有点新意。我创建了一个服务器,让它运行得很好,文件和所有内容都显示出来。

但问题是,每当我尝试在Python中打开文件进行读/写时,我的终端都会抛出“拒绝访问”错误。

你知道,这是一个基本的服务器:

#!/usr/bin/env python
import BaseHTTPServer
import CGIHTTPServer
import cgitb

cgitb.enable();
server = BaseHTTPServer.HTTPServer;
handler = CGIHTTPServer.CGIHTTPRequestHandler;
address = ("",80);
handler.cgi_directories = ["/home"];

httpd = server(address,handler);
print("Working . . . ");
httpd.serve_forever();

没什么太花哨的。所以我启动服务器,然后当用户导航到页面时,“/ home / file.py”包含代码:

#!/usr/bin/env python
f = open("asdf.txt","w");

什么都没发生,当我检查正在运行服务器的终端时,它说,

 localhost - - [27/Aug/2012 17:58:18] "GET /home/file.py HTTP/1.1" 200 -
 Traceback (most recent call last):
   File "/home/SERVER/home/file.py", line 4, in <module>
     f = open("asdf.txt","w");
 IOError: [Errno 13] Permission denied: 'asdf.txt'

我现在已经看了一段时间,但我还没有找到解决方案。它可能是一个非常简单的解决方案,可以使专业的Python用户面对,但考虑到所有自学成才的程序员必须从某个地方开始。对我来说,我现在有点处于最底层,至少在Python方面。

我尝试了一些我从互联网上找到的解决方案(以及“可能已经有你答案的问题”),例如导入“os”并使用它来指定创建文件的确切位置。我尝试在SERVER文件夹和包含Python脚本的文件夹上使用“sudo chmod g + w”。但这些互联网解决方案都没有帮助我。

我也记得接受答案。

我尽力让问题尽可能准确。所以,如果您还需要知道其他任何内容,我可以更新它。

由于这是一个“权限被拒绝”错误,我怀疑它是Python的错,并且可能是某些权限我没有在某处设置。但我不知道他们会在哪个或哪里。

1 个答案:

答案 0 :(得分:2)

如果您阅读CGIHTTPServer上的python文档:

  

请注意,出于安全原因,CGI脚本将使用用户nobody的UID运行。 CGI脚本的问题将转换为错误403

所以这看起来有点棘手,除非你愿意抛弃所有最佳实践并让它们离开 任何人都在你的文件夹里做东西。