我們使用 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
這是為了確保原居住地的所有規則也適用於新居住地。