他のユーザーに読み取りアクセスを許可したくないので、ユーザーとapache
を追加しました apachme
というグループのユーザー 次に、そのグループを、apache
が必要なすべてのファイルとフォルダーに設定します。 Webページのルートを含むアクセス権を持つ。次に、グループと所有者にすべての権限を付与しました。この後も、すべてを許可する読み取り権限を設定しないと、apacheはファイルにアクセスできません(rwxrwxr--(0774)
。
apache
が所有するインデックスファイルを含むフォルダ グループapachme
および権限rwxrwxr-x(0775)
これで500エラーが発生し、0774
に変更します 正常に動作します
これらは、どのユーザーapacheが実行されているか、およびそれがグループに追加されたことを確認するためだけのものです。
承認された回答:
セキュリティの観点から、Apacheの同じユーザーでWebページを設定することは実際には良い考えではありません。 Apacheユーザーは、Webページを読み取ることはできますが、書き込むことはできません。
そのため、標準構成では、Web構造はすべての人が読み取り可能であり、書き込みが必要な場合は、通常、Apacheユーザーが書き込み可能であることがセキュリティ上の悪夢です。
これを回避するための戦略の1つは、mod_ruid2をインストール/使用することです。 https://github.com/mind04/mod-ruid2
Debianに関しては、次のことを行うだけで十分です:
apt-get install libapache2-mod-ruid2
Apacheのデフォルトユーザーはディストリビューションによって異なることに注意してください。 Debianではwww-data、RH / CentOSではapache、SuSEではwwwrunです。これからは、Apacheのデフォルトユーザーと呼びます。
vhostでディレクティブを定義しない場合、従来の方法で動作します。そうしないと、動作が変更されます。
その考え方は、vhostに対する権限を持つユーザーと一緒に、vhostでプロセスを実行することです。そのため、ファイルはその所有権を持ち、必要に応じて、他のユーザーはそれらを読み取ることができなくなります。通常、vhostごとにユーザーを定義します。
vhostのVirtualhostまたはDirectoryディレクティブで、そのディレクトリに対してアクティブになるユーザーとグループを定義します。 user:usergroupは、Apacheが仮想ホスト/ディレクトリにアクセスするときに使用する有効な権限であり、そのため、そのグループに属するすべてのユーザーがディレクトリに書き込み/表示できます。
<Directory "/vhostdir/">
RMode config
RUidGid user usergroup
....
そのため、ディレクトリを書き込むときに、ユーザーのグループによって管理されている場合、ファイルはuser:usergroupの所有権で660として作成できるようになりました。同様に、ファイルは、世界中で読み取る権限を持つ別のユーザーが作成することもできます。ただし、書き込みの場合は、Apacheのデフォルトユーザーではなく、この他のユーザーになります。
mod_ruid2の利点は次のとおりです。
- 仮想ホスティング住宅環境では、ユーザーは他のユーザーのファイルを読み取ることができません。
- 1人のユーザーでも、他のユーザーとしてファイルを作成でき、Apacheのデフォルトユーザーもruid2ユーザーもファイルを上書きできません
- さらに重要なことに、書き込まれるファイルはruid2ユーザーで作成され、Apacheのデフォルトユーザーではグローバルに作成されなくなります。
githubページから:
mod_ruid2については、apache 2.0、2.2、および2.4用のsuexecモジュールであり、
mod_ruidおよびmod_suid2に基づいています-Linuxカーネルのみが必要なプロセス機能を実装しているため、Linuxでのみ実行されます。
-1回のリクエスト後にhttpdの子を強制終了する必要がないため、mod_suid2よりもパフォーマンスが優れています。カーネルの機能を利用し、
新しいリクエストを受信した後、再びsuidを実行します。
-セキュリティ上の問題がいくつかあります。たとえば、攻撃者がhttpdプロセスを悪用した場合、効果的な機能を設定できます。
ルートへのsetuid。カーネルでセキュリティパッチを使用することをお勧めします
(grsec)など。-主な操作モードは、statとconfigの2つです。
1.configはデフォルトです。uidとgidを定義する必要があります。 [ug] idが定義されていない場合、デフォルトのユーザーとグループが使用されます。
- stat httpd setuid and setgid to uid and gid of requested filename(script)/ directoryこれは、仮想ホスティングにmod_vhost_alias
を使用する場合に適していますインストール
1.ここから最新のlibcapをダウンロードしてインストールします
2./ apachedir / bin/apxsを実行します-a-i-l cap -c mod_ruid2.c
3.httpd.confを構成します
4.Apacheを再起動しますオプションの構成:RMode config | stat(デフォルトはconfig)RUidGid
user | #uid group | #gid – RModeがconfigの場合、このuidとgidに設定しますRMinUidGid user | #uid group | #gid – uid/gidが
デフォルトのuid/gidに設定RDefaultUidGiduser| #uid group | #gid RGroups group1 group2 – setgroups @noneを介して設定された追加のグループ–
以前に定義されたすべてのグループをクリアします。RDocumentChrRoot –chrootディレクトリとドキュメントルートを内部に設定します
例:
<VirtualHost example.com> ServerAdmin [email protected] RDocumentChRoot /home /example.com/public_html ServerName example.com ServerAlias www.example.com RMode config # unnecessary since config is the default RUidGid user1 group1 RGroups apachetmp <Directory /home/example.com/public_html/dir> RMode stat </Directory> <Directory /home/example.com/public_html/dir/test> RMode config RUidGid user2 group2 RGroups groups1 </Directory> <Directory /home/example.com/public_html/dir/test/123> RUidGid user3 group3 </Directory> <Location /yustadir> RMode config RUidGid user4 user4 RGroups groups4 </Location>