現在0777
、すべてのディレクトリとファイルに設定しています。
しかし、他人からアクセスされるのが怖い。
ログ ファイルとすべてのコントローラー、モデル、ビュー、および config 内のファイルが次のように設定されます。0777
一般的に、それらはどのように設定されるべきですか?
- ログ ファイル ディレクトリとそのファイル
- コントローラーファイル
- モデルファイル
- ファイルを見る
- config ディレクトリ内のファイル
現在0777
、すべてのディレクトリとファイルに設定しています。
しかし、他人からアクセスされるのが怖い。
ログ ファイルとすべてのコントローラー、モデル、ビュー、および config 内のファイルが次のように設定されます。0777
一般的に、それらはどのように設定されるべきですか?
0777
ファイルのアクセス許可には絶対に使用しないでください。これにより、脆弱性にさらされやすくなります。
一般に、次の原則に従います。
フォルダの場合、 を使用します。0755
これは と同等rwxr-xr-x
です。実行権限により、フォルダの内容を表示できます。
find /your/rails/dir -type d -exec chmod 755 {} +
実行されたスクリプトについては、 も使用します0755
。これにより、誰でもスクリプトを実行できますが、スクリプトを変更 (書き込み) することはできません。
他のすべてのファイルについては、0644
which equals to を使用しrw-r--r--
ます。これにより、誰もがファイルを読み取ることができ、所有者はファイルに書き込むことができ、誰もファイルを実行することはできません。これにより、特に悪意のあるスクリプトがアップロードされて実行されるのを防ぎます。
find /your/rails/dir -type f -exec chmod 644 {} +
config/database.yml
必要に応じて、特にメール サービス (mandrill、sendgrid、postmark)、Amazon S3 バケット、または Redis 接続などのパスワードを含むファイルに対して、より制限的なアクセス許可を考慮することができるパスワードを含むファイル。これらのファイルには、0600
.
本番環境では、Rails アプリは、これらすべてのファイルを所有する同じユーザー (root ではない) として実行する必要があります。これは、 passengerやunicornを使用するか、mongrel や webrick などの Web サーバーを などのポートでリッスンしているローカル ユーザーとして実行し、localhost:3000
Apache または Nginx のリバース プロキシを に設定することによって、最も簡単に実現できますlocalhost:3000
。