我目前正在运行 Ubuntu 14 Linux 服务器。该服务器充当我网站的房地产图像的 CDN。我使用 upstart 创建了一个重新生成 PHP 图像批处理脚本的脚本。图像批处理脚本和一切都运行良好。它连接到数据库,选择新属性,为图像创建目录,然后按预期下载图像。
我遇到的问题是,由于 PHP 文件本质上是由 root 调用的(因为它作为服务运行),所以创建的所有新图像目录均由 root 而不是我的 ApachedUser:ApacheGroup 所有。
主要问题是,如果由于某种原因图像下载在中间停止并且没有获取其所有图像,它不会让我返回并下载剩余的图像,因为该文件夹归 root 所有,而不是 root阿帕奇用户。
我已经做过的事情:
chown -R $user:www-data /var/www/images.domain.com/
chmod g+s /var/www/images.domain.com
setfacl -Rdm d:www-data:rx /var/www/images.domain.com/
从我已经准备好的一切来看,这应该会导致脚本创建的任何新文件/文件夹都归我的 apache 用户和组所有。
但据我所知,情况并非如此。如果我将任何类型的文件上传到 /var/www/images.domain.com 下的任何文件夹,则该文件由 FTP 用户拥有,并且该组也被设置为 FTP 用户。我的 FTP 用户和组默认与 apache 相同。
本质上,我只需要 /var/www/images.domain.com 目录下的任何文件/文件夹默认由 $user:www-data 拥有,即使对于可能由 root 运行的脚本也是如此。
答案1
好的。所以我想我已经解决了我的问题。
对于使用 Upstart 脚本来触发和重新生成 PHP 脚本的用户,您可以将以下内容添加到 Upstart 脚本中以作为特定用户/组运行。
setuid $用户 setgid $组
其中 $user 和 $group 是您要运行脚本的特定用户和组的名称。
我的图像目录现在正在使用适当的所有权创建。