Subversion和mod_dav_svn:为什么www-data是文件的所有者,而不是root?

我已经在Ubuntu 9.10服务器上设置了一个Apache和mod_dav_svn专用的Subversion服务器,而且我已经在这一切工作正常。 不过,我注意到,当将正确的文件权限分配给版本库目录时,大多数教程都会提示您执行如下操作:

 sudo chown -R www-data:www-data /svn/myrepo # make www-data the owner of the repo so Apache # can write to it sudo chmod -R g+ws /svn/myrepo # Give the www-data group write access as well, and enable # setgid so that new directories have that group 

现在,我做了一点不同。 我创build了一个新的subversion组,并且创build了存储库的所有者,然后将自己和www-data添加到该组中,理由是这样我可以编辑/svn/myrepo/conf的configuration文件和挂接脚本in /svn/myrepo/hooks ,它也使Apache和Subversion更加分离。 我见过其他教程推荐类似的东西,但是然后告诉你这样做:

 sudo chwown -R www-data:subversion /svn/myrepo sudo chmod -R g+ws /svn/myrepo 

这些相同的教程意味着你正在创buildsubversion组,专门让Subversion和Apache彼此分离,为什么他们转过来让www-data成为文件的所有者呢? 是否有充分的理由使www-data成为存储库文件的所有者? 为什么不能让所有者成为root ? 看起来像保持www-data作为存储库的所有者不必要地将Subversion“太多”绑定到Apache。 有没有什么好的理由让老板www-data而不是root ,只要这个小组还在subversion

你通常不希望root成为存储库的所有者,因为这意味着apache(httpd)必须以root身份运行才能访问svn存储库,这通常被认为是安全风险。

以我的经验,你主要通过apache与颠覆进行交互。 既然如此,让apache(www-data)成为subversion版本库的所有者似乎更容易也更自然。 如果您已经在您的网站的独立目录结构中创build了Subversion存储库,那么应该不会对使用哪些文件进行什么混淆。 例如,我有/ data / www用于我的网站,/ data / svn用于我的svn版本库。

然后,为了让自己能够修改存储库configuration文件和挂接脚本,只需使自己成为www-data组的成员并执行:

 sudo chmod -R g+ws /svn/myrepo 

正如你上面提到的,你很好走。

我没有看到将svn存储库所有者与apache用户分开的好处,但是如果你真的坚持这样做的话,除了subversion组之外,你可以创build一个subversion用户,并且让/ svn / myrepo的所有者成为subversion :颠覆。 然后,让自己和Apache成为Subversion组的成员,并像上面那样修改目录权限。

IIRC,Apache只需要对“dav”,“db”和“locks”目录的写入权限。 无论是通过用户还是群组所有权都无关紧要。 在大多数情况下,Apache没有理由对“conf”和“hook”有写权限。