4 redhat svn rhel5 svnserve mod-webdav
目的是使用 svnserve 和 apache/webdav 访问来设置 subversion。
当用户通过 http/apache 提交时,文件被写入文件系统并属于 apache 用户。
当用户通过 svn/svnserve 提交时,文件被写入文件系统并属于 root 用户。
我尝试将 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
Run Code Online (Sandbox Code Playgroud)
确实,root 是目录的所有者,我想要 apache。
ls -ld /pathto/repo/db/revs/1/
drwxr-s--- 2 root svn 4096 Jul 17 15:25 /pathto/repo/db/revs/1/
Run Code Online (Sandbox Code Playgroud)
现在我使用以下解决方法:
chown -R apache /pathto/repo/db/
Run Code Online (Sandbox Code Playgroud)
有没有人有一个干净的解决方案来运行 svnserve?
更新 1: svnserve 作为独立服务运行
更新 2:这里是 /etc/sysconfig/svnserve 内容:
OPTIONS="--threads --root /pathto "
Run Code Online (Sandbox Code Playgroud)
更新 3:我同意 JvO:使用 http/apache/webdav 作为唯一的访问系统会简单得多。不幸的是,第三方软件只有 svn:// 绑定而没有 http:// 绑定。
更新 4:修改 svnserve init 脚本应该可以工作,但是有人有其他想法吗?
更新 5:增加赏金:寻找优雅的解决方法
显然,您的 svnserve 进程以 root 身份运行。因此,更改配置以作为某个非特权用户运行该进程(从您的描述中不清楚 svnserve 是如何启动的;可能是 xinetd 或其他东西)。
安全方面,IMO 的最佳方法是将 apache 和 snvserve 用户添加到一个公共组(如“svn”)并将存储库的权限更改为 drwxrws ---(即,组权限是“粘性的” )
归档时间: |
|
查看次数: |
3031 次 |
最近记录: |