无法访问我所属的目录。

在我的网页服务器上,我有一个名为“www”的目录,其权限为drwxrwxr--,用户:组为root:www-data,以便Apache可以访问它。
现在我已将我的账户添加到了www-data组中。
sudo usermod -g www-data myuser

如果我执行groups命令,那么www-data会在其中,但是当我尝试简单地进入它时,却显示“权限被拒绝”。
如果我将用户更改为‘myuser’或将组设置为我所属的其他组,我就可以进入。
我是不是漏掉了什么?
3个回答

您的进程在登录时设置了其组列表,因此您需要重新登录以使更改生效。
我还建议您将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登录回来就解决了,太蠢了。还有一个非常有用的链接:http://serverfault.com/questions/6895/whats-the-best-way-of-handling-permissions-for-apache2s-user-www-data-in-var-w - dazz
谢谢提醒,Dazz。我以前一直不明白为什么它对我不起作用 xD。现在我可以安心了。 - f4der

对我来说,这是一个导致错误的不同问题。

相同用户名但有两个不同的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不同(为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

在Apache配置中定义了不同的组

我遇到的另一个问题是用户不匹配和由此导致的权限错误,当我通过使用组“httpd”来限制对文件的访问时。这是用户“apache”的主要组(可以使用idgetent显示)。 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”。
来自/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: 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

希望这能帮到您。


要将您的用户名添加到组中:
sudo usermod --append -G 组名 用户名
要在不注销/登录的情况下刷新登录权限:
su - $USER