
所以,現在我已經發現.ssh
文件需要ssh_home_t
文件上下文,現在我需要弄清楚如何嵌套 SELinux 規則。
我的第一個問題是我找不到任何描述其預期用途的 SELinux 檔案上下文清單。所以,我可能要離開這裡了。我認為我需要按順序做三件事:
- 將每個目錄匹配設定
/exports/home/$USER
為nfs_t
沒有還匹配$USER
.這告訴我的 NFS 伺服器主目錄可以合法匯出。 - 將所有內容設定
/exports/home/$USER/.*
為...某事?這是一個有描述的綜合清單會很方便的地方。 SELinux 是否有一個檔案上下文,通常指定使用者主目錄中的檔案? - 設定一切匹配
/exports/home/$USER/\.ssh(/.*)
僅有的到ssh_home_t
,這樣SSHD就可以允許使用了authorized_keys
。
我需要從 NFS 伺服器呼叫所有三個規則。而且,我需要呼叫第二條和第三條規則作為個人用戶從安裝主目錄的任何主機存取該單一使用者的檔案。因為,顯然我希望,我會在安裝這些主目錄之一的任何主機上壓縮根目錄。使用者很可能從非 NFS 伺服器的主機建立文件,包括 ssh 文件。
更新
我想我已經找到了正確的文件上下文。現在,我只需要找出正確的正規表示式。
# semanage fcontext -a nfs_t '<regexp 1>'
# semanage fcontext -a user_home_t '<regexp 2>'
# semanage fcontext -a ssh_home_t '<regexp 3>'
在哪裡
<regexp 1>
抓住/exports/home/$USER
並且不再繼續。<regexp 2>
捕獲物/exports/home/$USER\.*
除了exports/home/$USER/\.ssh(/.*)?
。<regexp 3>
捕獲exports/home/$USER/\.ssh(/.*)?
。
並且$USER
與字串無關(即任何用戶),並且POSIX 擴充正規表示式似乎是不允許的。
答案1
一個簡單的、令人震驚的答案:
SELinux 已經有一個預設規則「/export/home/*」。只要去掉“s”,我就被修復了。