首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >svnserve似乎把文件写成根文件。如何通过svnserve和apache访问同一个存储库?

svnserve似乎把文件写成根文件。如何通过svnserve和apache访问同一个存储库?
EN

Server Fault用户
提问于 2013-07-17 14:41:31
回答 1查看 3.3K关注 0票数 4

其目的是使用svnserve和apache/webdav访问设置subversion。

当用户通过http/apache提交时,文件被写入文件系统并属于apache用户。

当用户通过svn/svnserve提交时,文件被写入文件系统并属于根用户。

我试图在没有改进的情况下将apache设置为svnserve用户:

代码语言:javascript
复制
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。

代码语言:javascript
复制
ls -ld /pathto/repo/db/revs/1/
drwxr-s--- 2 root svn 4096 Jul 17 15:25 /pathto/repo/db/revs/1/

现在,我使用以下解决方法:

代码语言:javascript
复制
chown -R apache /pathto/repo/db/

有人有一个干净的解决方案来运行svnserve吗?

更新1: svnserve作为独立服务运行。

更新2:这是/etc/sysconfig/svnserve内容:

代码语言:javascript
复制
OPTIONS="--threads --root /pathto "

更新3:我同意JvO :使用http/apache/webdav作为唯一的访问系统要简单得多。不幸的是,第三方软件只有svn:// binding,而没有http:// binding。

更新4:修改svnserve init脚本应该有效,但是还有人有其他想法吗?

更新5:增加赏金:寻找一个优雅的解决方案

EN

回答 1

Server Fault用户

发布于 2013-07-17 15:11:11

很明显,svnserve进程作为root运行。因此,将配置更改为以某个非特权用户的身份运行该进程(尚不清楚svnserve是如何从您的描述中启动的;可能是xinetd或其他什么)。

就安全性而言,IMO最好的方法是将apache和snvserve用户同时添加到一个公共组中(如“svn”),并将存储库上的权限更改为drwxrws--(也就是说,组权限是“粘滞的”)。

票数 5
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/524048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档