web-dev-qa-db-ja.com

pythonスクリプトがファイルとディレクトリを作成できるように、サーバー、ファイル許可、およびpythonスクリプトをセットアップする方法

選択ボックスを送信する簡単なフォームがあります。送信ボタンが押されたら、新しいディレクトリを作成してリポジトリからファイルを追加する必要があるpythonスクリプトを実行します。現在、ディレクトリを作成する機能を持つpythonスクリプトを取得できません。

追加:

import cgitb
cgitb.enable()

私のスクリプトに私に与えた

<type 'exceptions.OSError'>: [Errno 13] Permission denied: '../prPages/myNewFolderTest'

エラー。

サブフォルダを作成しているフォルダで、スクリプトのファイル許可に関して/何を探す必要がありますか? pythonスクリプトを使用してサーバー環境からファイルを操作する場合、何を見ますか?

1
NDEthos

Stephen Ostermillerの答えに同意しますが、問題を解決する簡単な方法を追加したいと思います。 Linuxを使用していると仮定しています。

pythonで呼び出して、実行中のスクリプトの現在のユーザー名を取得できる関数があるに違いありません。これ(または少なくともユーザーが属しているグループ)を知る必要があります。そうでなければ、サーバーで推測ゲームをプレイします。

ユーザー名を取得する別の方法は、ルートとしてシェルにログインし、ファイルを作成する同じフォルダーに変更するようサーバー管理者に依頼することです(ここからフォルダーxと呼びます)。次に、サーバー管理者実行できます:

ls -al

次に、上のエントリを見て、次のようなものを見つけます。

drwxr-xr-x 21 incoming 500 4096 2015-02-05 15:15 ./

フォルダーxの情報がわかるように、右端の項目が「./」であることを確認してください。

もっとも簡単な方法(ただし、最も安全な方法ではありません)は、アクセス許可を777に変更して、全員がフォルダーへの読み取りおよび書き込みアクセスできるようにすることです。

権限が変更され、リストを再度取得すると、次のように表示されます。

drwxrwxrwx 21 incoming 500 4096 2015-02-05 15:15 ./

また、作成する各ファイルまたはフォルダーに明示的に設定されていない場合は、デフォルトのumask(777からパーミッションを引いた値)を定義して、デフォルトのパーミッションを定義する必要があります。

1
Mike

ディレクトリは、ウェブサーバーを実行しているユーザーが書き込み可能である必要があります。これはオペレーティングシステムによって異なり、Linuxディストリビューションによっても異なります。

私のUbuntuサーバーでは、Webサーバーはユーザーwww-dataによって実行されます。アクセス許可を修正するには、次のコマンドを使用します。

Sudo chown -R www-data /var/www/example.com/prPages/
0