如果我希望 /var/www 中的文件归 www-data 所有,我应该如何 rsync 文件?

cwd*_*cwd 4 ubuntu permissions rsync chown

我已经设置了一个新的 ec2 ubuntu 框并安装了 apache 和 php5。默认情况下,您使用ubuntu具有sudo权限的用户登录到该框。

我相信 apache 运行为rootphp5 运行为www-data.

我想我希望所有文件/var/www都被 chown'ed www-data:www-data,文件夹设置为 755,文件设置为 644 - 除非有问题。

事情像这样运行良好,但我的问题是,当我rsync从笔记本电脑文件到服务器时,它会更改它们的所有权(并添加新文件)为ubuntu:admin

我已经阅读了rsync手册并搜索了谷歌,我看到了这样的语法:

rsync -avzcO (source) (destination) --owner=www-data --group=www-data
Run Code Online (Sandbox Code Playgroud)

但是,如果 rsync 以超级用户身份执行,则似乎--ownerand--group不接受参数,而是用于强制远程文件与本地文件系统具有相同的所有者。

因此,我还没有找到使用 rsync 的解决方案来在 rsync 期间设置远程用户和文件组。

我究竟做错了什么?

想法:

  • 也许我在 /var/www 中的文件应该归ubuntu:admin?
  • 也许我的 rsync 语法错误
  • 我想我可以作为www-data用户rsync但这似乎不是一个好主意
  • 我可以像在共享主机上一样使用 suPHP,但这似乎有点麻烦

bah*_*mat 7

您不希望 www-data 拥有它们。Apache 最初以 root 身份运行,然后将权限授予 www-data。您不希望拥有 apache 进程的用户可写您的 Web 内容。这会造成安全漏洞。

如果 Apache 被破解,理想情况下 www-data 用户将无法访问任何系统。这是最安全的配置。如果 web 内容归 www-data 所有,如果 Apache 被破解,那么攻击者可以覆盖您的任何 web 内容。

您的网页内容应归普通用户所有(不包括nobodywww-dataroot)。只有需要Apache 可写的东西才应该归 www-data 所有。