drwxrwxr--
,用户:组为root:www-data
,以便Apache可以访问它。现在我已将我的账户添加到了www-data组中。
sudo usermod -g www-data myuser
如果我执行
groups
命令,那么www-data
会在其中,但是当我尝试简单地进入它时,却显示“权限被拒绝”。如果我将用户更改为‘myuser’或将组设置为我所属的其他组,我就可以进入。
我是不是漏掉了什么?
drwxrwxr--
,用户:组为root:www-data
,以便Apache可以访问它。sudo usermod -g www-data myuser
groups
命令,那么www-data
会在其中,但是当我尝试简单地进入它时,却显示“权限被拒绝”。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
chmod g+s www/
对我来说,这是一个导致错误的不同问题。
我在本地配置了用户“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不同(为456而不是123):
[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
中通过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
是“apache”而不是“httpd”。
[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: Require all 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: <RequireAny>的授权结果:被授予
[Fri May 31 17:13:40.070396 2019] [core:error] [pid 2527] (13)权限被拒绝:[client 11.22.32.21:53824] AH00132: 文件权限拒绝服务器访问:/var/www/html/somedir/otherdir/css/file1.txt
希望这能帮到您。