为了让 wordpress 读取/写入文件/文件夹的所有者需要是 www-data。
现在的问题是,如果所有者是组 filetransfer (www-data:filetransfer) 的 www-data,那么 FTP 用户 ftpclient1 可以登录,但没有对设置为 www-data:filetransfer 的文件夹的写权限,因为他不是所有者。
我怎样才能让它工作?
答案1
这家伙汤姆值得一枚奖章这篇关于 ServerFault 的文章
按照他解释的方式设置组 ID 使其起作用!
尝试扩展@Zoredache 的回答,我自己也尝试了一下:
创建一个新组(www-pub)并将用户添加到该组
groupadd www-pub usermod -a -G www-pub usera # must use -a to append to existing groups usermod -a -G www-pub userb groups usera ## display groups for user
将 /var/www 下所有内容的所有权更改为 root:www-pub
chown -R root:www-pub /var/www # -R for recursive
将所有文件夹的权限改为2775
chmod 2775 /var/www
2
= 设置组 ID,7
=rwx
代表所有者 (root),7
=rwx
代表组 (www-pub),5
=rx
代表所有人 (包括 apache www-data 用户)设置组 ID (设置组标识) 位 (2) 导致组 (www-pub) 被复制到该文件夹中创建的所有新文件/文件夹。其他选项包括 SETUID (4) 以复制用户 ID,以及 STICKY (1),我认为它只允许所有者删除文件。
有一个
-R
递归选项,但它不会区分文件和文件夹,所以你必须使用查找,像这样:find /var/www -type d -exec chmod 2775 {} +
将所有文件改为0664
find /var/www -type f -exec chmod 0664 {} +
将用户的 umask 更改为 0002
umask 控制默认的文件创建权限,0002 表示文件有 664 而目录有 775。设置此项(在我的情况下是通过编辑
umask
底部的行/etc/profile
)意味着一个用户创建的文件将可由 www 组中的其他用户写入,而无需chmod
他们。通过创建文件和目录并使用验证所有者、组和权限来测试所有这些
ls -l
。注意:您需要注销/登录才能使您的群组更改生效!
答案2
使用上述步骤后,Wordpress 无法创建 wp-config.php 文件。我执行了:chown -R root:www-data /var/www 然后它就成功了。也许应该将用户 www-data(不是同名的组)设为 www-pub 组的成员才能使其正常工作。我没有尝试最后一个选项。