Samba
SELinux 創建自定義角色
我有一個通過 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(我以前沒有做過,但願意嘗試)。
我在這裡錯過了什麼嗎?有沒有更簡單的方法來做到這一點?
我會去添加規則以允許 samba 寫入 svirt_sandbox_file_t 的路線。由於您希望允許 samba 將內容上傳到容器。samba 是否只需要讀取內容,然後只需添加允許規則即可。
您應該能夠設置適當的 SELinux 布爾值,
virt_sandbox_use_samba
.setsebool -P virt_sandbox_use_samba 1