Unix chown/授予 www-data 和用户的权限

Unix chown/授予 www-data 和用户的权限

我有一个用户“joe”,我想授予他权限/var/www/html/以便我可以使用 ftp(使用 vsftpd)

因此我运行这个命令:

sudo chown -R joe /var/www/html/

一切顺利,我现在可以通过 ftp 读取、写入、删除等文件。
但是,现在我网站上的任何页面都会返回 403 Forbidden 错误。

这是因为我已将这些目录的所有权授予“joe”,因此,为了使我的网站再次可访问,我运行:

sudo chown -R www-data /var/www/html/

但这意味着“joe”无法通过 ftp 访问这些文件。

有什么方法可以让 joe 读取和写入文件,同时允许 www-data 访问这些文件,以便我的网页不会被 403 禁止?


我曾尝试创建一个群组:

sudo addgroup users
sudo add user joe users
sudo add user www-data users

但我不知道如何向整个组发送 chown,我只知道例如:

sudo chown -R joe:users /var/www/html

但这又存在同样的问题。


我正在使用带有 apache2 的 Ubuntu 14.04 x64,并且 joe 具有 root 权限(ALL=(ALL:ALL) ALL

答案1

如果您查看目录和文件的权限,您将看到拥有它们的帐户以及它们所属的组。例如:

$ ls -ld /var/www/html
drwxr-xr-x. 2 joe joe 23 Mar 12 11:08 /var/www/html

在上面的例子中,帐户 joe 拥有目录,并且目录属于组 joe;组是行中的第二个“joe”。组可能只包含一个帐户 joe,但我可以将其他帐户添加到该组。我可以users像您一样创建一个名为的组并将目录与该组关联。您正在使用命令chown,但还有一个chgrp命令可以更改组。您可以使用该命令将文件和目录分配给组,也可以像使用一样更改组chown user:group。例如,如果系统上有 www-data 组,则可以使用以下命令(您可以通过发出命令来查看组及其成员cat /etc/group):

sudo chgrp www-data /var/www/html

然后我可能会看到类似下面的内容:

# ls -ld /var/www/html
drwxr-xr-x. 2 joe www-data 23 Mar 12 11:08 /var/www/html

或者,如果您愿意,您可以将目录的组设为users您使用chown -R joe:users命令创建的新组。

当我发出ls -ld命令检查目录的权限时,我看到了以下内容:

drwxr-xr-x

“d” 告诉我这是一个目录。接下来的 3 个字符告诉我所有者的权限是读取、写入和执行。接下来的 3 个字符显示组的权限,在上面的示例中是读取和执行。我可以使用以下命令授予组写入权限:

chmod g+w /var/www/html

-R您还可以使用或选项以递归方式更改上述目录的权限 --recursive

如果你调整组权限正确来说,您可以实现您想要做的事情,这样如果 Apache 以 www-data 的身份运行,并且 www-data 对目录及其中的文件和子目录具有适当的组权限,Apache 将能够根据需要读取和写入文件。看来您已经将所有者和组设置为可以工作的设置,因此您现在可能只需要使用命令为组设置users权限chmod

答案2

我认为你可以尝试:

setfacl -R -m u:joe:rw /var/www/html

您可以通过执行以下操作来测试结果:

getfacl /var/www/html

您应该会看到类似以下内容的内容:

# file: var/www/html
# owner: root
# group: root
user::rwx
user:joe:rw-
group::r-x
mask::rwx
other::r-x

相关内容