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

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

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

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

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

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

我已经阅读了rsync手册并搜索了 Google,我看到了如下语法:

rsync -avzcO (source) (destination) --owner=www-data --group=www-data

--owner然而,和似乎--group不带参数,而是用于强制远程文件具有与本地文件系统相同的所有者(如果以超级用户身份执行 rsync)。

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

我究竟做错了什么?

想法:

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

答案1

您不希望它们归 www-data 所有。 Apache 最初以 root 身份运行,然后放弃 www-data 的权限。您不希望拥有 apache 进程的用户可以写入您的 Web 内容。这会产生安全漏洞。

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

您的网络内容应归普通用户所有(不包括nobodywww-dataroot)。只有那些需要可由 Apache 写入的内容应归 www-data 所有。

相关内容