我有一个运行nginx的Ubuntu 10.04服务器,nginx以用户nginx
运行。 我试图部署一个基于Octopress的网站rsync,并偶然发现了什么看起来像一个安全困境。
显然,整个/srv/www/
目录应该可以被用户nginx
读取,并且一些上传目录应该可以由用户nginx
写入。
Octopress喜欢通过ssh连接到服务器,这很好。 由于我对于给予nginx
远程shell访问感到nginx
,为此我创build了一个特殊的用户( deployer
),他被configuration为具有shell访问权限,并被允许通过ssh连接。 rsync工作正常,但所有的网页文件被复制为deployer
拥有,用户nginx
无法读取它们。
我可能会将用户nginx
添加到组deployer
并使用rsync的--chmod
和-p
选项进行操作,以允许nginx / php写入上传目录,但是我不确定以后不会再咬我。 理想情况下,我想我需要一种rsync-then-chown&chmod,但是我怀疑这有点太过于要求了。
什么是最佳实践? 你如何去做?
提前致谢。
这是一个基本的访问问题。 您希望有两个访问受限的用户,并且希望他们以某种方式共享文件。
“传统”解决scheme是创build新的组,将两个用户放在那里,强制某些文件归属该组。 如果您没有正确设置权限和新创build的文件,您仍然会遇到写访问问题。 两者都是可以解决的(umask和setuid目录)。
稍后不要咬你的更好的方法是在结构中挖掘一点,看看哪些目录需要由谁写,并修改场景。 也就是说,如果你有caching目录,nginx用户需要写入 – 不要通过rsync同步,并设置权限,所以nginx可以写在那里。
最后的手段是根脚本(可能来自cron或icron)来“修复”权限。