其目的是使用svnserve和apache/webdav访问设置subversion。
当用户通过http/apache提交时,文件被写入文件系统并属于apache用户。
当用户通过svn/svnserve提交时,文件被写入文件系统并属于根用户。
我试图在没有改进的情况下将apache设置为svnserve用户:
cat /pathto/repo/conf/passwd
[users]
apache = XxXxXxX
cat /pathto/repo/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
[sasl]
use-sasl = false
svn: Commit failed (details follow):
svn: Can't move '/pathto/repo/db/txn-protorevs/1091-ux.rev'
to '/pathto/repo/db/revs/1/1092': Permission denied实际上,root是目录的所有者,我想要apache。
ls -ld /pathto/repo/db/revs/1/
drwxr-s--- 2 root svn 4096 Jul 17 15:25 /pathto/repo/db/revs/1/现在,我使用以下解决方法:
chown -R apache /pathto/repo/db/有人有一个干净的解决方案来运行svnserve吗?
更新1: svnserve作为独立服务运行。
更新2:这是/etc/sysconfig/svnserve内容:
OPTIONS="--threads --root /pathto "更新3:我同意JvO :使用http/apache/webdav作为唯一的访问系统要简单得多。不幸的是,第三方软件只有svn:// binding,而没有http:// binding。
更新4:修改svnserve init脚本应该有效,但是还有人有其他想法吗?
更新5:增加赏金:寻找一个优雅的解决方案
发布于 2013-07-17 15:11:11
很明显,svnserve进程作为root运行。因此,将配置更改为以某个非特权用户的身份运行该进程(尚不清楚svnserve是如何从您的描述中启动的;可能是xinetd或其他什么)。
就安全性而言,IMO最好的方法是将apache和snvserve用户同时添加到一个公共组中(如“svn”),并将存储库上的权限更改为drwxrws--(也就是说,组权限是“粘滞的”)。
https://serverfault.com/questions/524048
复制相似问题