我有一个通过Samba共享的文件夹,以及一个Docker容器,我希望通过将它作为卷添加到Docker容器来访问所述文件夹(是的,我知道这不是可移植的).
SELinux阻止容器访问该文件夹,因为该文件夹及其内容标记为samba_share_t,而不是svirt_sandBox_file_t
我知道smbd_t域可以访问许多SELinux标签(例如httpd_sys_content_t,虽然sesearch -s smbd_t –allow提供了完整列表),但是svirt_sandBox_file_t不是其中之一.
>通过网络从容器访问samba共享(不可取,因为这需要在容器中安装samba,并且存在网络开销)
>将文件夹及其内容重新标记为svirt_sandBox_file_t(这会阻止Samba访问该文件夹)
>将文件夹及其内容重新标记为public_content_rw_t(但也可以访问许多其他我不想访问此文件夹的服务)
>创建一个策略,让svirt_lxc_net_t访问samba_share_t标签(由audit2allow生成,但这使得任何容器都可以访问标记为samba_share_t的任何文件/文件夹)
我能想到的另一个选择是创建我自己的SELinux角色,它有自己的标签,只能访问Samba和svirt(我之前没有做过,但我愿意尝试).