文件/文件夹作为组所有者 www-data 和 SFTP 作为不同的用户

文件/文件夹作为组所有者 www-data 和 SFTP 作为不同的用户

这里有很多类似的问题,我按照几个答案尝试解决这个问题,但没有成功。

我在 AWS 的 EC2 实例上使用 Ubuntu 14.04.5 LTS。我在 /var/www/html/folder 中使用 WordPress。我在 SSH 和 SFTP 上都以用户 ubuntu 身份登录。

/var/www/html/folder 中的所有文件和文件夹都是组所有者 ubuntu,我需要将所有这些更改为 WordPress 的 apache 用户 www-data。

首先,我将 ubuntu 用户添加到 www-data:

sudo usermod -a -G www-data ubuntu

然后我退出并重新登录,然后使用

getent group节目www-data:x:33:ubuntu

然后,我将 /var/www/html/folder 中的所有文件/文件夹从默认的 ubuntu 更改为 www-data 组和所有者

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

sudo chgrp -R www-data /var/www/html/folder/

sudo chmod -R g+s /var/www/html/folder/

并启用所有新文件/fodlers 到 www-data 中

sudo chmod 2750 /var/www/html/folder/

WordPress 现在可以读取/写入,因此我可以从 WP 管理员添加插件和媒体。我可以使用 nano 在 SSH 上以 ubuntu 身份编辑文件。

问题是我仍然无法以 ubuntu 用户身份使用 SFTP 上传、删除或编辑文件/文件夹。

我需要做什么?

答案1

要删除或创建目录中的文件,您需要对该目录具有写权限,但是您没有该权限(chmod 2750 /var/www/html/folder/即您是该组的所有者,但不是目录的所有者)。

sudo chmod 2770 /var/www/html/folder/

将允许属于该组的用户www-data创建或删除文件。

编辑目录中现有文件的能力取决于文件权限本身,但需要所有父目录中的执行权限。这解释了为什么您能够编辑某些文件。

目录中现有的文件/var/www/html/folder/可能仍然具有错误的权限,并且您只能编辑您拥有的文件。这表明组权限不足,您可能需要运行

sudo chmod -R g+w /var/www/html/folder/

为 的所有成员用户授予写权限www-data

但是新创建的文件会发生什么情况呢?新创建的文件将带有错误的权限集(可能取决于 -valueumask或由绕过 -value 并设置其自身权限的应用程序控制umask。解决该问题的一种方法是使用 ACL(访问控制列表)

setfacl -mg:www-data:rwx /var/www/html/folder/

应该足够了。以下是一些如何使用 ACL 的链接:

https://linuxconfig.org/how-to-manage-acls-on-linux

https://bencane.com/2012/05/27/acl-using-access-control-lists-on-linux/

相关内容