GNU/Linux >> Linux の 問題 >  >> Linux

権限がある間、Apacheはファイルにアクセスできませんか?

他のユーザーに読み取りアクセスを許可したくないので、ユーザーと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のデフォルトユーザーではグローバルに作成されなくなります。
関連:Centos – livecdを起動せずにルートファイルシステムを縮小する方法は?

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が定義されていない場合、デフォルトのユーザーとグループが使用されます。

  1. 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>


Linux
  1. [CentOS 7 Apache]:アクセス許可が拒否されました:ファイルのアクセス許可がサーバーアクセスを拒否します

  2. 通常のユーザーがファイルを「chown」できないのはなぜですか?

  3. Linuxファイルアクセスモニタリング?

  1. 「猫」:ファイルを開くことができません:アクセスが拒否されましたか?

  2. DebianおよびUbuntuオペレーティングシステムでsudoアクセスを許可する

  3. Ubuntu18.04でApache静的ファイルキャッシングを最適化する方法

  1. RHELおよびCentOSでsudoアクセスを許可する

  2. Linuxファイルパーミッションの概念

  3. Linux でファイル アクセスを監査する方法