我已经在 Apache 和 Ubuntu 9.10 服务器上设置了一个专用的 Subversion 服务器mod_dav_svn
,此时我已经一切正常。但是,我注意到在为存储库目录分配正确的文件权限时,大多数教程都会告诉您执行以下操作:
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
现在,我做了一些不同的事情。我创建了一个新subversion
组,并将其设为存储库的所有者,然后将我自己和该组添加www-data
到该组,原因是这样我可以在 中编辑配置文件/svn/myrepo/conf
和钩子脚本/svn/myrepo/hooks
,并且它还使 Apache 和 Subversion彼此分开一点。我看过其他教程推荐了类似的东西,但后来告诉你这样做:
sudo chwown -R www-data:subversion /svn/myrepo
sudo chmod -R g+ws /svn/myrepo
这些相同的教程暗示您正在创建subversion
组专门用于保持 Subversion 和 Apache 彼此分离,那么他们为什么要转而让www-data
文件的所有者呢?是否有充分的理由让www-data
存储库文件成为所有者?为什么不直接做root
主人?保留作为存储库的所有者似乎www-data
不必要地将 Subversion “太多”与 Apache 联系在一起。有什么好的理由让主人www-data
代替root
,只要团还在subversion
?
您通常不希望 root 成为存储库的所有者,因为这意味着 apache (httpd) 必须以 root 身份运行才能访问 svn 存储库,这通常被认为存在安全风险。
根据我的经验,您主要通过 apache 与 subversion 交互。既然如此,让 apache (www-data) 成为 subversion 存储库的所有者似乎更容易、更自然。如果您在与您的网站不同的目录结构中创建了您的 subversion 存储库,则应该不会混淆哪些文件用于什么。例如,我的网站有 /data/www,我的 svn 存储库有 /data/svn。
然后让自己能够修改存储库配置文件和挂钩脚本,只需让自己成为 www-data 组的成员并执行:
正如你上面提到的,你很高兴。
我认为将 svn 存储库所有者与 apache 用户分开没有什么好处,但如果你真的坚持这样做,你可以在 subversion 组之外创建一个 subversion 用户,并使 /svn/myrepo 的所有者成为 subversion :颠覆。然后只要让自己和apache成为subversion组的成员,如上修改目录权限即可。
IIRC,Apache 只需要对“dav”、“db”和“locks”目录的写入权限。不管是通过用户所有权还是组所有权。在大多数情况下,Apache 没有理由对“conf”和“hooks”拥有写访问权。