儘管 samba_share_t SELinux 阻止 Samba 訪問已掛載的捲
我將在地下室收集灰塵的一台舊的基於 AMD A10 APU 的機器重新用作 NAS,並最終用於其他一些輕型技術工作。它執行 CentOS 8.1,啟動盤是我放置的 340GB 硬碟,我有一個 2TB 的 2 驅動器 RAID-1 陣列,
mdadm
主要用於 NAS。/dev/md0
RAID陣列(/media/raid0
_nas
_/etc/fstab
/dev/md0 /media/raid0 ext4 defaults 0 0
Samba 設置為共享
/media/raid0/nas
為名為“文件共享”的共享。按照Samba 的 SELinux 配方,我samba_share_t
遞歸地應用標籤/media/raid0/nas
並使用命令使其永久化semanage
。但是,當我嘗試
\\SERVER\fileshare
在 Windows 機器上瀏覽時,它說它無法連接。當我嘗試smbclient
在伺服器上訪問它時,我被NT_STATUS_BAD_NETWORK_NAME
. Samba 的日誌顯示重複的錯誤說canonicalize_connect_path failed for service fileshare, path /media/raid0/nas
.但是,如果我用 禁用 SELinux
setenforce 0
,共享會突然像撥動開關一樣工作。沒有錯誤,我連接沒有問題。回顧一下:
/media/raid0/nas
是共享的路徑fileshare
/media/raid0/nas
非常寬容(模式 777)- 我已將
samba_share_t
標籤應用於/media/raid0/nas
並設置為在 SELinux 中以遞歸方式完成setenforce 0
如果 SELinux 被禁用( ),我可以毫無問題地連接到共享。為什麼 SELinux 仍然阻止這個共享?我會注意到我也嘗試將掛載點移動到
/raid0
但得到了相同的結果。編輯:我在審核日誌中看到這樣的條目:
time->Mon Nov 2 22:41:39 2020 type=AVC msg=audit(1604374899.147:1102): avc: denied { read } for pid=8091 comm="smbd" name="/" dev="md0" ino=2 scontext=system_u:system_r:smbd_t:s0 tcontext=system_u:object_r:unlabeled_t:s0 tclass=dir permissive=1
審核日誌條目說您的掛載點
/media/raid0
沒有 SELinux 標籤。沒關係nas
目錄,它不能走那麼遠!您需要為
/media/raid0
. 恢復預設上下文mnt_t
就足夠了。restorecon -v /media/raid0
看起來它試圖從根開始下降,inode=2,dir name=/。意味著您要麼需要從頂部相應地調整權限,要麼將 samba 放入類似 chroot 的命名空間環境中,以放寬相同的限制。