我已经设置了一个新的 ec2 ubuntu 盒子并安装了 apache 和 php5。默认情况下,您使用ubuntu
具有权限的用户登录该盒子sudo
。
我相信 apache 运行为root
php5 运行为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 内容。
您的网络内容应归普通用户所有(不包括nobody
、www-data
和root
)。只有那些需要可由 Apache 写入的内容应归 www-data 所有。