.png)
어리석은 질문일 수도 있다. 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/svn
semanage
chcon -Rv --user system_u /mnt/data/svn # fine
chcon -Rv --type svnserve_content_t /mnt/data/svn # fails
유효하지 않은 것 같습니다 . 또는 동시에 snvserve_content_t
할당할 수 없습니다 . 나는 좋은 아이디어의 종말이다. 매우 간단한 해결책이 있을 가능성이 높으며 저는 이미 어떤 아이디어에도 매우 만족하고 있습니다(selinux 적용을 비활성화하는 것은 옵션이 아닙니다).nfs_t
svnserve_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 };
... 확인, 컴파일, 설치, 작동합니다. 좀 더 제한적일 수 있지만 지금은 예상대로 작동해서 기쁩니다.