![上传目录的所有者是“www-data”,但这会阻止通过 PHP 脚本进行 FTP 访问](https://linux22.com/image/514146/%E4%B8%8A%E4%BC%A0%E7%9B%AE%E5%BD%95%E7%9A%84%E6%89%80%E6%9C%89%E8%80%85%E6%98%AF%E2%80%9Cwww-data%E2%80%9D%EF%BC%8C%E4%BD%86%E8%BF%99%E4%BC%9A%E9%98%BB%E6%AD%A2%E9%80%9A%E8%BF%87%20PHP%20%E8%84%9A%E6%9C%AC%E8%BF%9B%E8%A1%8C%20FTP%20%E8%AE%BF%E9%97%AE.png)
为了允许 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
这就是为什么您需要“写入”权限才能删除文件。这里您有几个选择。
- 将 /var/www/mysite/uploads 更改为 www-data:mike 并将 chmod 更改为 775 (rwxrwxr-x)
- 创建一个 ftp-write 组并将 /var/www/mysite/uploads chown 为 www-data:ftp-write 并将 chmod 设置为 775
- 只需将 chmod 设置为 775 (rwxrwxr-x),并将 mike 保留为 www-data 组的一部分
- 使用以下命令为 Mike 设置文件夹的 ACL:
setfacl -m user:mike:rwx
- 创建一个 ftp-write 组,添加 mike 和该组(以及任何其他需要这些权限的用户)
setfacl -m group:<ftp_group>:rwx
答案2
文件系统权限应该足以解决您的问题。请仅在上传目录上尝试类似 chmod o+rw 的操作。chmod 命令实际上表示“授予不属于 www-data 组的任何人读写权限。”
但是,长期的解决方案是使用调用 FTP 的脚本的服务帐户,并将该特定服务帐户与 www-data 捆绑在一起。