nfs 마운트에서 selinux를 사용하는 svnserve를 시작할 수 없습니다(Centos8)

nfs 마운트에서 selinux를 사용하는 svnserve를 시작할 수 없습니다(Centos8)

어리석은 질문일 수도 있다. selinux가 적용된 Centos8에서 내 전복 서버로 어려움을 겪고 있습니다. 데이터를 저장하기 위한 NFS 마운트가 있습니다( /mnt/data/svn).

문제(selinux가 시행 모드에 있을 때)는 액세스 권한이 없기 때문에 서비스가 시작되지 않는다는 것입니다 /mnt/data/svn.

> service svnserve start # error
> journalctl -xe

systemd[1]: Starting Subversion protocol daemon...
-- Subject: Unit svnserve.service has begun start-up
-- Defined-By: systemd
-- Support: https://access.redhat.com/support
-- 
-- Unit svnserve.service has begun starting up.
... svnserve[2445049]: svnserve: E000013: Can't check path '/mnt/data/svn': Permission denied
... systemd[1]: svnserve.service: Control process exited, code=exited status=1
... systemd[1]: svnserve.service: Failed with result 'exit-code'.
... systemd[1]: Failed to start Subversion protocol daemon.

SVN 환경: /etc/sysconfig/svnserve:

OPTIONS="-r /mnt/data/svn"

디렉토리 권한: 재귀 ...

drwxr-xr-x. 36 svn svn 4096 Nov 17 16:40 /mnt/data/svn

SE 구성: semanage를 통해

> semanage fcontext -l | egrep "/mnt/data/svn"
/mnt/data/svn           all files          system_u:object_r:svnserve_content_t:s0 
/mnt/data/svn(/.*)?    all files          system_u:object_r:svnserve_content_t:s0 

SE 컨텍스트 유형

> ls -ldaZ /mnt/data/svn
drwxr-xr-x. 36 svn svn system_u:object_r:nfs_t:s0 4096 Nov 17 16:40 /mnt/data/svn

selinux가 없으면 enforced모든 것이 예상대로 작동합니다. 문제: via svnserve_content_t에 유형을 추가할 수 없습니다 ./mnt/data/svnsemanage

chcon -Rv --user system_u /mnt/data/svn             # fine
chcon -Rv --type svnserve_content_t /mnt/data/svn   # fails

유효하지 않은 것 같습니다 . 또는 동시에 snvserve_content_t할당할 수 없습니다 . 나는 좋은 아이디어의 종말이다. 매우 간단한 해결책이 있을 가능성이 높으며 저는 이미 어떤 아이디어에도 매우 만족하고 있습니다(selinux 적용을 비활성화하는 것은 옵션이 아닙니다).nfs_tsvnserve_content_t

미리 감사드립니다.

아르 자형

답변1

내 솔루션

감사 로그는 실제로 무엇이 잘못되었는지 보여줍니다.

type=AVC msg=audit(1606892987.322:161301): avc:  denied  { search } for  pid=2570843 comm="svnserve" name="/" dev="0:46" ino=2131353823 scontext=system_u:system_r:svnserve_t:s0 tcontext=system_u:object_r:nfs_t:s0 tclass=dir permissive=0

search디렉토리 에 대한 권한이 없습니다 . 내 해결책은 사용자 정의 selinux 정책 모듈/규칙을 작성하는 것이었습니다.

module svnserve_nfs 1.0;

require {
        type svnserve_t;
        type nfs_t;
        class dir { getattr search read write };
        class file { getattr unlink append open read setattr write lock create rename };
}

#============= svnserve_t ==============
allow svnserve_t nfs_t:dir { getattr search read write };
allow svnserve_t nfs_t:file { getattr unlink append open read setattr write lock create rename };

... 확인, 컴파일, 설치, 작동합니다. 좀 더 제한적일 수 있지만 지금은 예상대로 작동해서 기쁩니다.

관련 정보