上传目录的所有者是“www-data”,但这会阻止通过 PHP 脚本进行 FTP 访问

上传目录的所有者是“www-data”,但这会阻止通过 PHP 脚本进行 FTP 访问

为了允许 Apache 具有写入权限,我需要访问我网站的上传文件夹。这样我就可以通过PHP 脚本chown www-data:www-data /var/www/mysite/uploads从文件夹中删除文件。unlink()

不幸的是,这导致另一个使用 FTP 函数的 PHP 脚本无法运行。我认为这是因为 FTP 用户是 ,mike而现在 uploads 目录归www-data,因此mike无法访问它。

我已添加mike到该组www-data,但这并不能解决问题。

除了使用 PHP 函数删除文件之外,有人可以告诉我如何让 PHP FTP 函数正常工作吗unlink()

答案1

这就是为什么您需要“写入”权限才能删除文件。这里您有几个选择。

  1. 将 /var/www/mysite/uploads 更改为 www-data:mike 并将 chmod 更改为 775 (rwxrwxr-x)
  2. 创建一个 ftp-write 组并将 /var/www/mysite/uploads chown 为 www-data:ftp-write 并将 chmod 设置为 775
  3. 只需将 chmod 设置为 775 (rwxrwxr-x),并将 mike 保留为 www-data 组的一部分
  4. 使用以下命令为 Mike 设置文件夹的 ACL:setfacl -m user:mike:rwx
  5. 创建一个 ftp-write 组,添加 mike 和该组(以及任何其他需要这些权限的用户)setfacl -m group:<ftp_group>:rwx

答案2

文件系统权限应该足以解决您的问题。请仅在上传目录上尝试类似 chmod o+rw 的操作。chmod 命令实际上表示“授予不属于 www-data 组的任何人读写权限。”

但是,长期的解决方案是使用调用 FTP 的脚本的服务帐户,并将该特定服务帐户与 www-data 捆绑在一起。

相关内容