用户访问 FTP,同时将 www-data 设置为所有者/组

用户访问 FTP,同时将 www-data 设置为所有者/组

为了让 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 组的成员才能使其正常工作。我没有尝试最后一个选项。

相关内容