グループメンバーであるディレクトリにアクセスできない


9

私のWebサーバーには、Apacheがアクセスできるように、権限drwxrwxr--とuser:group を持つディレクトリ「www」root:www-dataがあります。

今私は私のグループをwww-dataというグループに追加しました

sudo usermod -g www-data myuser

そして私がしなければgroups、その後www-data、それらの間ですが、私はそれに単にCDにしようとしたとき、私は「拒否されたアクセス許可」を取得します。

ユーザーを「myuser」に変更するか、グループを自分がメンバーになっている他のグループに設定すると、参加できます。

何か不足していますか?

回答:


14

プロセスにはログイン時にグループリストが設定されているため、変更を有効にするには再度ログインする必要があります。

またwww-data、プライマリグループ(自分だけがメンバーであるグループに設定される)ではなく、補足グループとして追加することをお勧めします。これは、次のコマンドで実行できるはずです。

# Reset to your original primary group
sudo usermod -g myuser myuser
# Add an extra supplementary group
sudo usermod --append -G www-data group

作成したファイルをwww-dataグループの他のメンバーが読み取れるようにするには、それに応じてumaskを調整します。

umask 002

プライマリグループのメンバーシップは個人グループであるため、作成するファイルのセキュリティに影響を与えることはありません。

setgidファイルを作成するディレクトリにビットを設定することも価値があります。これにより、ファイルは親ディレクトリのグループ所有権を継承します。

chmod g+s www/

1
再度ログインするとうまくいきますので、愚かです。また、非常に便利なserverfault.com/questions/6895/...
DAZZ

そのダズに言及していただきありがとうございます。なぜxDで機能しないのか理解できませんでした。これで安心して休むことができます。
f4der 2014

0

私にとっては、このエラーを引き起こした別のことでした

2つの異なるUIDを持つ同じユーザー名

ユーザー "apache"をUID = 123でローカルに構成し、NISディレクトリに同じ名前( "apache")で異なるUID = 456を設定しています。開始順序とサービスの依存関係によっては、NISユーザーが利用可能になる前にローカルユーザーが使用される場合があります。つまり、ユーザー名を表示すると混乱を招き、どちらも「apache」と表示されます。数値のUIDを見る場合のみ(たとえば、実行ls -lnすると違いがわかります。例: [root@mymachine]# ls -l drwxr-x--- 4 apache ggg1 88 May 31 17:12 file1 drwxr-x--- 4 apache ppp2 88 May 31 17:12 file2 file2のUIDが異なる(123ではなく456)を参照してください): [root@mymachine]# ls -ln drwxr-x--- 4 123 48 88 May 31 17:12 file1 drwxr-x--- 4 456 48 88 May 31 17:12 file2

Apache設定で定義された別のグループ

ユーザーの不一致とその結果のアクセス許可エラーで発生した別の問題は、グループ "httpd"を使用してファイルへのアクセスを制限していたときでした。これはユーザー「apache」の主要なグループでした(idまたはを使用して表示されましたgetent)。Apacheはrootとして起動し、構成されたユーザーに切り替えて権限を削除します。切り替え先のユーザーは/etc/httpd/conf/httpd.confUserパラメーターで定義されます。ここに問題があります-プロセスが実行されるグループ(GID)は、そのユーザーのプライマリグループではありません。グループは、Groupパラメーターによって同じ構成ファイルで定義されます。

したがって、私の場合は(/etc/httpd/conf/httpd.confでした User apache Group apache

そして、ディレクトリには次のようなアクセスが許可されています。 drwxr-x--- 4 someuser httpd 88 May 31 17:12 mydir

httpd(GID = 444)がそのユーザーのプライマリグループだったため: [root@somemachine]# id apache uid=48(apache) gid=444(httpd) groups=444(httpd)

Group設定ファイルが「httpd」ではなく「apache」であることに気づくまで、デバッグにいくらか時間がかかりました。

/ var / log / httpd / error_logからのエラー: [Fri May 31 17:13:40.070343 2019] [authz_core:debug] [pid 2527] mod_authz_core.c(809): [client 11.22.32.21:53824] AH01626: authorization result of Require all granted: granted [Fri May 31 17:13:40.070367 2019] [authz_core:debug] [pid 2527] mod_authz_core.c(809): [client 11.22.32.21:53824] AH01626: authorization result of <RequireAny>: granted [Fri May 31 17:13:40.070396 2019] [core:error] [pid 2527] (13)Permission denied: [client 11.22.32.21:53824] AH00132: file permissions deny server access: /var/www/html/somedir/otherdir/css/file1.txt

これがお役に立てば幸いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.