更新された要約
/ var / wwwディレクトリの所有者root:root
は、だれも使用できないことを意味し、まったく役に立ちません。私たちは皆、実際に機能する(そして「root」としてログインするべきではない)Webサーバーが必要なので、これを修正する必要があります。
2つのエンティティのみがアクセスを必要とします。
PHP / Perl / Ruby / Pythonはすべて、フォルダーとファイルにアクセスする必要があります(多くの場合
/uploads/
)。これらのスクリプト言語は、nginxまたはapache(またはFastCGI for PHPなど)で実行する必要があります。開発者
彼らはどのようにアクセスしますか?どこかで誰かがこれをやったことがあることは知っています。ただし、数十億のWebサイトが存在する場合、このトピックに関する詳細情報があると思われます。
777が所有者/グループ/その他の完全な読み取り/書き込み/実行権限であることを知っています。したがって、これはランダムなユーザーに完全な許可を与えるため、正しい必要はないようです。
次のように使用する必要があるアクセス許可/var/www
:
- gitやsvnなどのソース管理
- 「websites」のようなグループのユーザー(または「www-data」に追加されることもあります)
- apacheやlighthttpdなどのサーバー
- PHP / Perl / Ruby
すべてのファイル(およびディレクトリ)を読み取って作成し、実行できますか?
私が正しい場合、RubyおよびPHPスクリプトは直接「実行」されませんが、インタープリターに渡されます。/var/www
...のファイルの実行許可は必要ありませんか?したがって、正しい許可はどのようにchmod -R 1660
なるでしょう
- これら4つのエンティティで共有可能なすべてのファイル
- 誤って実行できないすべてのファイル
- ディレクトリから他の全員を完全にブロックする
- 将来のすべてのファイルの許可モードを「スティッキー」に設定します
これは正しいです?
更新1:ファイルとディレクトリに異なるアクセス許可が必要な場合があることに気付きました-上記のファイルについて話していたので、ディレクトリアクセス許可が必要かどうかわかりません。
更新2:/var/www
上記の4つのエンティティの1つが常にフォルダーおよびサブフォルダーを多くのレベルの深さで常に追加(および削除)するため、フォルダーの構造が大幅に変更されます。また、他の3つのエンティティが読み取り/書き込みアクセスを必要とする可能性があるファイルを作成および削除します。したがって、アクセス許可は、ファイルとディレクトリの両方に対して上記の4つのことを行う必要があります。これらのどれも実行許可を必要としないので(上記のruby / phpに関する質問を参照)rw-rw-r--
、これら4つのエンティティは信頼できる人員(#2を参照)と他のすべてのユーザーによって実行されるため、許可はすべて必要で完全に安全であると想定しますシステムには読み取りアクセスのみがあります。
更新3:これは、個人用開発マシンおよび企業のプライベートサーバー用です。共有ホストのようなランダムな「ウェブ顧客」はありません。
更新4: slicehostによるこの記事は、wwwフォルダーのアクセス許可をセットアップするために必要なものを説明するのに最も適しているようです。ただし、PHPまたはsvn / gitを使用するapache / nginxのユーザーまたはグループの実行方法と変更方法はわかりません。
更新5:私は最終的に、これらすべてを機能させる方法を見つけました(以下の回答)。しかし、これが正しい安全な方法であるかどうかはわかりません。したがって、私は賞金を開始しました。wwwディレクトリを保護および管理する最良の方法を持っている人が勝ちます。