使用 rsync 将内容部署到 Web 服务器:权限

使用 rsync 将内容部署到 Web 服务器:权限

我有一台运行 nginx 的 Ubuntu 10.04 服务器,其中 nginx 以用户 身份运行nginx。我正在尝试部署一个奥托普莱斯-使用 rsync 的站点,却遇到了看似安全困境的问题。

显然,整个/srv/www/目录应该是用户可读的nginx,并且几个上传目录应该是用户可写的nginx

Octopress 喜欢通过 ssh 连接到服务器,这很好。由于我对授予nginx远程 shell 访问权限有一种不祥的预感,因此我deployer为此创建了一个特殊用户 ( ),该用户配置为具有 shell 访问权限并允许通过 ssh 连接。Rsync 工作正常,但所有 Web 文件都以 的所有者身份复制deployer,用户nginx无法读取它们。

我可能会将用户添加nginx到组中deployer,并使用 rsync--chmod-p选项来允许 nginx/php 写入上传目录,但我不确定这以后不会给我带来麻烦。理想情况下,我认为我需要一种 rsync-then-chown&chmod,但我怀疑这要求有点过分。

最佳做法是什么?如何去做吧?

提前致谢。

答案1

这是一个基本的访问问题。您希望有两个具有有限访问权限的用户,并希望他们以某种方式共享文件。

“传统”解决方案是创建新组,将两个用户都放在那里,并以某种方式强制文件归该组所有。如果您没有正确设置权限和新创建的文件,您将遇到写访问问题。两者都可以解决(umask 和 setuid 目录)。

更好的方法是深入研究结构,查看哪些目录需要由谁写入,然后修改方案,这样以后就不会麻烦了。例如,如果您有 nginx 用户需要写入的缓存目录 - 请不要通过 rsync 同步它,并设置权限以便 nginx 可以在那里写入。

最后的手段是使用 root 脚本(可能来自 cron 或 icron)来“修复”权限。

相关内容