4

django のインストールを可能な限り安全に保つためのファイル アクセス許可のベースライン セットを探しています。

Django サイトでも Google でも、明らかな参照が見つからないようです。

リンクや手がかりはありますか?

私は Apache + mod_wsgi + django を使用しています。許可するアップロードディレクトリがありません。これは本当に基本的な設定です。

私は現在、コードを正常に実行しています:

/var/www/djangodir 
                  /django
                  /3rdpartyapp
                  /myapp
                        /serverfiles/my.wsgi

all directorys:   755 owned by root.root
all files:        644 owned by root.root

exceptions to all files
-----------------------
settings.py file: 400  owned by apache.apache
my.wsgi:          400  owned by apache.apache

私はすべてのファイルで 644 が好きではなく、それを引き締めたいと思っていますが、400 または 500 ではうまくいかないようです。そうすると、wsgi アプリは django から何もインポートできません。

ヘルプ!

4

2 に答える 2

6

素晴らしい返事をありがとう!私があなたの指紋を何年にもわたって見てきたすべての質問にあなたがどのように答える時間を見つけているのかわかりませんが、あなたは python/django/wsgi コミュニティ全体に多大な貢献をしています。私はあなたのブログ エントリを気に入りました: http://blog.dscpl.com.au 12/5/2012 これらのフォーラムでの良いアドバイスと善意の希薄化について。そこにあるすべてのナンセンスをグーグルで検索するのは間違いなく挑戦です。

とにかく、このスレッドを見ている人にとっては、これは機能します。

root.root:              755 /var/saas                   <- topdir
apache.apache:          755 /var/saas/wsgi              <- apache folder
vsn.vsn:                400 /var/saas/wsgi/vsn.wsgi     <- wsgi file
vsn.vsn:                700 /var/saas/vsn               <- django code
root.root:              700 /var/saas/scripts           <- operations scripts
root.root:              700 /var/saas/config            <- temp config folder
apache.apache           444 /var/www/html/static        <- destination of django's: python ./manage.py collectstatic

これを apache パーミッション 700 で動作させることはできませんでしたが、755 で満足しています。私が推測している apache の大きな未解決の謎の 1 つです。

于 2013-05-10T18:45:48.973 に答える
6

mod_wsgi デーモン モードを使用し、Django アプリケーションをその中で実行します。そのデーモン プロセス グループのユーザー/グループを、Apache ユーザーとは異なる特別な専用の Django アプリケーション ユーザーに設定します。使用する WSGI スクリプト ファイルは、Django プロジェクト領域の外に配置してください。

Apache ユーザーが所有する場合、WSGI スクリプト ファイルを含むディレクトリは 700 になります。その中の WSGI スクリプト ファイルは 400 である必要があり、Apache ユーザーが所有する必要さえありませんが、root または専用の Django アプリケーション ユーザーが所有することができます。Apache ユーザーが必要とするのは、ディレクトリ内の WSGI スクリプト ファイルを表示する機能だけです。WSGI スクリプト ファイルを開く機能は必要ありません。

すべてのプロジェクト コードと仮想環境は、専用の Django ユーザーが所有するディレクトリ構造に配置できます。すべてのディレクトリは 0700 で、ファイルは必要に応じて読み書き可能です。すべてのアクセスは、そのユーザーとして実行されているデーモン プロセス グループから行われるため、専用の Django アプリケーション ユーザーだけがアクセスする必要があります。

このようにすると、アクセスが制限され、Apache ユーザーはプロジェクト コードを見ることさえできなくなります。そうすれば、PHP など、同じ Apache で他のものをホストしている場合、PHP コードへの侵入によってファイルにアクセスできるリスクはありません。

于 2013-05-07T00:08:34.697 に答える