如何在Fedora 18上启动svnserve.service

我试图在Fedora 18上启动svnserve.service ,使用:

 systemctl enable svnserve.service systemctl start svnserve.service 

但是我得到以下错误:

 Feb 21 22:26:51 xycom svnserve[1606]: svnserve: E000013: Can't check path '/home/henrik/svn': Permission denied Feb 21 22:26:51 xycom systemd[1]: svnserve.service: control process exited, code=exited status=1 Feb 21 22:26:51 xycom systemd[1]: Failed to start Subversion protocol daemon. Feb 21 22:26:51 xycom systemd[1]: Unit svnserve.service entered failed state 

但是,当我尝试从命令提示符启动svnserve它工作得很好:

 svnserve -d -r /home/henrik/svn 

可能是什么问题呢?

我试图改变/home/henrik/svn目录中的权限,但没有运气…

来自ls -ld /home/henrik/svn:

 [root@speedball henrik]# ls -ld svn drwxr-xr-x. 7 henrik henrik 4096 Feb 21 21:41 svn 

audit.log:

 type=AVC msg=audit(1361531583.530:291): avc: denied { search } for pid=954 comm="svnserve" name="home" dev="dm-1" ino=2883585 scontext=system_u:system_r:svnserve_t:s0 tcontext=system_u:object_r:home_root_t:s0 tclass=dir type=SYSCALL msg=audit(1361531583.530:291): arch=c000003e syscall=4 success=no exit=-13 a0=7f2fdcd94438 a1=7fff01357bf0 a2=7fff01357bf0 a3=7fff01357980 items=0 ppid=1 pid=954 auid=4294967295 uid=1003 gid=1003 euid=1003 suid=1003 fsuid=1003 egid=1003 sgid=1003 fsgid=1003 ses=4294967295 tty=(none) comm="svnserve" exe="/usr/bin/svnserve" subj=system_u:system_r:svnserve_t:s0 key=(null) type=SERVICE_START msg=audit(1361531583.668:292): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg=' comm="svnserve" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=failed' 

编辑:

我遵循迈克尔斯的build议。 SELinux停止抱怨svnserve。 现在的问题是,svnserve不会启动,它不给我任何好的故障描述:

 [root@speedball ~]# systemctl status svnserve.service svnserve.service - Subversion protocol daemon Loaded: loaded (/usr/lib/systemd/system/svnserve.service; enabled) Active: failed (Result: exit-code) since Sun 2013-02-24 22:04:35 CET; 2s ago Process: 1600 ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid $OPTIONS (code=exited, status=0/SUCCESS) Main PID: 1601 (code=exited, status=1/FAILURE) CGroup: name=systemd:/system/svnserve.service Feb 24 22:04:35 speedball.x.com systemd[1]: Started Subversion protocol daemon. Feb 24 22:04:35 speedball.x.com systemd[1]: svnserve.service: main process exited, code=exited, status=1/FAILURE Feb 24 22:04:35 speedball.x.com systemd[1]: Unit svnserve.service entered failed state 

我们从审计日志中看到,SELinux拒绝svnserve访问来遍历/home目录,进入子目录。 据我所知, svnserve 应该有权限遍历/home ,所以你可能在看一个bug。 因此,您应该在红帽bugzilla上报告。

作为一种解决方法,在等待修复时,可以让svnserve运行在不受SELinux限制的位置(不禁止系统范围)。 这是暂时的,将会被relabel或软件包更新取消,所以如果将来的更新不能解决问题,您可能需要重新应用它。

 chcon -t unconfined_exec_t $(which svnserve) 

看看/ run / svnserve权限和所有者。 如果您更改了svnserve运行的用户,那么该用户需要能够将svnserve.pid写入/ run / svnserve目录。