这里有很多类似的问题,我按照几个答案尝试解决这个问题,但没有成功。
我在 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/