无法访问目录我是其中的组成员

daz*_*azz 14 permissions directory groups

在我的 Web 服务器上,我有一个具有权限drwxrwxr--和 user:group的目录“www”,root:www-data以便 Apache 可以访问它。

现在我已将我的帐户添加到 www-data 组

sudo usermod -g www-data myuser
Run Code Online (Sandbox Code Playgroud)

如果我这样做,groups那么www-data就是其中之一,但是当我尝试简单地 cd 进入它时,我会得到“权限被拒绝”。

如果我将用户更改为“myuser”或将组设置为我所属的其他组,则可以进入。

我错过了什么吗?

Jam*_*dge 16

您的进程在登录时设置了其组列表,因此您需要再次登录以使更改生效。

我还建议您添加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
Run Code Online (Sandbox Code Playgroud)

如果您希望www-data组的其他成员可以读取您创建的文件,请相应地调整您的 umask:

umask 002
Run Code Online (Sandbox Code Playgroud)

由于您的主要组成员身份是个人组,因此这不会影响您创建的文件的安全性。

还值得setgid在您将在其中创建文件的目录上设置位:这将导致文件继承父目录的组所有权:

chmod g+s www/
Run Code Online (Sandbox Code Playgroud)