私はBtrfsサブボリューム(をmysubvol
使ってsnapper
)のスナップショットを撮り、.snapshots
sambaを使ってディレクトリを共有するのが好きです。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 を使用してラベルを再指定しても保持されます。