2つのプロセス(snapperとsamba)に権限を付与するためにフォルダ/ファイルに2つのコンテキストを割り当てる方法は?

2つのプロセス(snapperとsamba)に権限を付与するためにフォルダ/ファイルに2つのコンテキストを割り当てる方法は?

私はBtrfsサブボリューム(をmysubvol使ってsnapper)のスナップショットを撮り、.snapshotssambaを使ってディレクトリを共有するのが好きです。samba_share_tコンテキストを割り当ててからSambaを使用して参照できますが、.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

考えられる解決策の 1 つは、samba_share_t と snapperd_data_t コンテキストを結合する samba_snapperd_data_t などのユーザー定義型を生成することです。その後、.snapshotsディレクトリにカスタムタイプを割り当てると、SambaとSnapperの両方にアクセスできます。このソリューションは、Restorecon -R -v .snapshots を使用してラベルを再指定しても保持されます。

関連情報