Samba

儘管 samba_share_t SELinux 阻止 Samba 訪問已掛載的捲

  • November 3, 2020

我將在地下室收集灰塵的一台舊的基於 AMD A10 APU 的機器重新用作 NAS,並最終用於其他一些輕型技術工作。它執行 CentOS 8.1,啟動盤是我放置的 340GB 硬碟,我有一個 2TB 的 2 驅動器 RAID-1 陣列,mdadm主要用於 NAS。/dev/md0RAID陣列(/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 的命名空間環境中,以放寬相同的限制。

引用自:https://serverfault.com/questions/1041000