私のWebサーバーには、Apacheがアクセスできるように、許可drwxrwxr--
およびuser:group root:www-data
を持つディレクトリ「www」があります。
これで、www-dataグループにアカウントを追加しました。
Sudo usermod -g www-data myuser
groups
を実行するとwww-data
も含まれますが、単純にcdしようとすると「Permission denied」と表示されます。
ユーザーを「myuser」に変更するか、グループを自分がメンバーになっている他のグループに設定すると、参加できます。
何か不足していますか?
プロセスのグループリストはログイン時に設定されるため、変更を有効にするには再度ログインする必要があります。
また、プライマリグループではなく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/
私にとっては、このエラーを引き起こす別のものでした
UID = 123でローカルに設定されたユーザー "Apache"と、同じ名前( "Apache")で異なるUID = 456を持つNISディレクトリに設定されています。開始順序とサービスの依存関係によっては、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
UIDはfile2(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
ユーザーの不一致とその結果発生する許可エラーで発生した別の問題は、「httpd」グループを使用してファイルへのアクセスを制限していたときです。これはユーザー「Apache」(id
またはgetent
を使用して表示された)のプライマリグループでした。Apacheはrootとして起動し、設定されたユーザーに切り替えて権限を削除します。切り替え先のユーザーは、/etc/httpd/conf/httpd.conf
by User
パラメーターで定義されます。問題はここにあります-プロセスがそのまま実行されるグループ(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
からのエラー
これがお役に立てば幸いです。