SELinux 不允許 oddjobd-mkhomedir 在非標準位置建立使用者主目錄

SELinux 不允許 oddjobd-mkhomedir 在非標準位置建立使用者主目錄

我們使用 SSSD 對 CentOS 伺服器上的使用者進行身份驗證。當預設主目錄為 /home 時, oddjobd-mkhomedir 運作得很好,但在特定伺服器上,我們必須將預設主目錄變更為 /data,該目錄位於 SAN 掛載上。

現在,每次使用者嘗試登入時,他們都會進入 bash shell,並顯示以下訊息。

Creating home directory for first.last.

Could not chdir to home directory /data/X.Y.local/first.last: No such file or directory

-bash-4.1$

我每次嘗試都會看到以下 AVC 拒絕訊息:

type=AVC msg=audit(1492004159.114:1428): avc:  denied  { create } for  pid=2832 
comm="mkhomedir" name="x.y.local"
scontext=system_u:system_r:oddjob_mkhomedir_t:s0-s0:c0.c1023
tcontext=system_u:object_r:default_t:s0 tclass=dir

確保更改 /data 的上下文。

 drwxr-xr-x. root root system_u:object_r:home_root_t:s0 data

如果 /data 與 /home 具有相同的上下文,為什麼 SELinux 限制 oddjobd 建立 /data/XYlocal/first.last ?

# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

[更新]

不確定這是否是解決此問題的正確方法,但在添加以下三個條目後,用戶現在可以登入並訪問其主目錄。對於新使用者的目錄是根據下面定義的上下文建立的。

semanage fcontext -a -t home_root_t /data
semanage fcontext -a -t user_home_dir_t /data/x.y.local
semanage fcontext -a -t user_home_t "/data/x.y.local(/.*)?"

這是解決這個問題的正確方法嗎?

答案1

最後一部分semanage fcontext是永久將上下文設為 yes 的正確方法。不過,您需要運行restorecon才能使其生效。

restorecon -Rv /data

restorecon將考慮 中的任何內容/etc/selinux/targeted/contexts/files/file_contexts.local,其中應該包含您剛剛使用新增的自訂 fcontextssemanage

若要暫時設定這些上下文,請參考chcon指令:

chcon -Rv -t home_root_t /data 

答案2

重新定位主目錄時,最好的解決方案可能是使用 EQUAL 機制,semanage fcontext如中所述這個關於伺服器故障的答案

semanage fcontext -a -e /home /data

這是為了確保原居住地的所有規則也適用於新居住地。

相關內容