web-dev-qa-db-ja.com

Fedora18でsvnserve.serviceを開始する方法

以下を使用して、Fedora18でsvnserve.serviceを開始しようとしています。

systemctl enable svnserve.service
systemctl start svnserve.service

しかし、次のエラーが発生します。

Feb 21 22:26:51 x.y.com svnserve[1606]: svnserve: E000013: Can't check path '/home/henrik/svn': Permission denied
Feb 21 22:26:51 x.y.com systemd[1]: svnserve.service: control process exited, code=exited status=1
Feb 21 22:26:51 x.y.com systemd[1]: Failed to start Subversion protocol daemon.
Feb 21 22:26:51 x.y.com 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'

編集:

私はマイケルズのアドバイスに従った。 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
3
Henrik

監査ログから、SELinuxがsvnserveアクセスを拒否して/homeディレクトリをトラバースして子ディレクトリに移動したことがわかります。私の知る限り、 svnserveshould/home をトラバースする権限を持っている必要があります。あなたはおそらくバグを見ているでしょう。そのため、RedHatのbugzillaで報告する必要があります。

回避策として、修正を待つ間、SELinuxによって制限なしでsvnserveを実行することができます(システム全体で無効にすることはありません)。これは一時的なものであり、ラベルの変更またはパッケージの更新によって元に戻されるため、将来の更新で問題が解決しない場合は、再適用する必要がある場合があります。

chcon -t unconfined_exec_t $(which svnserve)
2
Michael Hampton

/ run/svnserveの権限と所有者を確認してください。 svnserveを実行するユーザーを変更した場合、そのユーザーはsvnserve.pidを/ run/svnserveディレクトリに書き込むことができる必要があります。

0
user163121