这里有很多类似的问题,我已经按照几个答案尝试解决这个问题,但没有运气。
我在 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/
并启用所有新文件/文件夹在 www-data 中
sudo chmod 2750 /var/www/html/folder/
WordPress 现在可以读/写,所以我可以从 WP 管理员添加插件和媒体。我可以使用 nano 将 SSH 上的文件编辑为 ubuntu。
问题是我仍然无法以 ubuntu 用户身份使用 SFTP 上传、删除或编辑文件/文件夹。
我需要做什么?
要在目录中删除或创建文件,您需要对您没有的目录具有写权限(
chmod 2750 /var/www/html/folder/
,您在组中但不是目录的所有者)。将使属于该组的用户
www-data
能够创建或删除文件。编辑目录中现有文件的能力取决于文件权限本身,但需要所有父目录中的执行权限。这解释了为什么您能够编辑某些文件。
您目录中已经存在的文件
/var/www/html/folder/
可能仍然具有错误的权限,您只能编辑您拥有的文件。这表明组权限不够,您可能要运行授予所有属于
www-data
.但是新创建的文件会发生什么?新创建的文件将带有错误的权限集(可能取决于
umask
-value 或由绕过umask
-value 并设置其自己的权限的应用程序控制。解决此问题的一种方法是使用 ACL(访问控制列表)应该足够了。以下是一些如何使用 ACL 的链接: