두 프로세스(snapper 및 samba)에 권한을 부여하기 위해 폴더/파일에 두 컨텍스트를 할당하는 방법은 무엇입니까?

두 프로세스(snapper 및 samba)에 권한을 부여하기 위해 폴더/파일에 두 컨텍스트를 할당하는 방법은 무엇입니까?

나는 Btrfs 하위 볼륨( 을 mysubvol사용하여 snapper) 의 스냅샷을 찍고 .snapshotssamba를 사용하여 디렉터리를 공유하는 것을 좋아합니다. samba_share_t컨텍스트를 할당 한 다음 삼바를 사용하여 찾아볼 수 있지만 .snapshots스냅샷을 찍을 수는 없습니다. 또는 snapperd_data_t컨텍스트를 할당하고 스냅샷을 찍을 수 있지만 Samba는 디렉터리를 공유할 수 없습니다.

.snapshots두 가지 컨텍스트를 할당하거나 두 가지를 모두 허용하는 공통 컨텍스트를 생성하려면 어떻게 해야 합니까 ? 가능한 해결책은 무엇입니까? 솔루션은 레이블 재지정을 사용해도 유지되어야 합니다 restorecon -R -v .snapshots.

chcon -t snapperd_data_t .snapshots
la -Z
# drwxr-xr-x. 1 root  root  system_u:object_r:snapperd_data_t:s0      38 Nov 25 20:00 .snapshots
# drwx------. 1 someuser someuser unconfined_u:object_r:samba_share_t:s0   298 Nov 24 15:33 mydata
snapper -c samba_share create # works
# new snapshot is created, but .snapshots is not browsable with samba...

chcon -t samba_share_t /home/samba/.snapshots/
la -Z 
# drwxr-xr-x. 1 root  root  system_u:object_r:samba_share_t:s0        42 Nov 25 20:45 .snapshots
# drwx------. 1 someuser someuser unconfined_u:object_r:samba_share_t:s0   298 Nov 24 15:33 mydata
snapper -c samba-timeline create 
# IO Error (mkdir failed errno:13 (Permission denied)).
# but .snapshots is browsable with samba
sudo ausearch -m avc -ts recent
# time->Fri Nov 25 20:47:57 2022
# type=AVC msg=audit(1669409277.513:2728): avc:  denied  { create } for  pid=9114 comm="snapperd" name="16" scontext=system_u:system_r:snapperd_t:s0 tcontext=system_u:object_r:samba_share_t:s0 tclass=dir permissive=0

SELinux가 활성화된 상태에서 Samba를 사용하여 스냅샷을 찍고 액세스할 수 있으려면 어떻게 해야 합니까?

답변1

가능한 해결책 중 하나는 samba_share_t 및 snapperd_data_t 컨텍스트를 결합하는 samba_snapperd_data_t와 같은 사용자 정의 유형을 생성하는 것입니다. 그런 다음 .snapshots 디렉토리에 사용자 정의 유형을 할당하면 Samba와 Snapper 모두에 액세스할 수 있습니다. 이 솔루션은 Restorecon -R -v .snapshots를 사용하여 레이블을 다시 지정해도 유지됩니다.

관련 정보