1

基本的に、私は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 のせいではないかと疑っています。しかし、私は彼らがどこにいるのかわかりません。

4

1 に答える 1

2

CGIHTTPServerの python ドキュメントを読んだ場合:

セキュリティ上の理由から、CGI スクリプトはユーザー nobody の UID で実行されることに注意してください。CGI スクリプトの問題は、エラー 403 に変換されます。

したがって、すべてのベスト プラクティスを置き去りにして、誰でも自分のフォルダで何かを実行できるようにするつもりでない限り、これは少し難しいように思えます。

于 2012-08-27T22:47:04.283 に答える