[root@tst-01 home]# ls -Z
drwxr-xr-x. ujjain users system_u:object_r:home_root_t:s0 ujjain
drwxr-xr-x. johndoe users system_u:object_r:home_root_t:s0 johndoe
selinux 上下文应该是 object_r:user_home_dir_t。
[root@tst-01 ~]# sesearch -T -t home_root_t
Found 10 semantic te rules:
type_transition oddjob_mkhomedir_t home_root_t : dir user_home_dir_t;
type_transition automount_t home_root_t : dir automount_tmp_t;
type_transition lsassd_t home_root_t : dir user_home_dir_t;
type_transition useradd_t home_root_t : dir user_home_dir_t;
type_transition firstboot_t home_root_t : dir user_home_dir_t;
type_transition smbd_t home_root_t : dir user_home_dir_t;
type_transition quota_t home_root_t : file quota_db_t;
type_transition sysadm_t home_root_t : dir user_home_dir_t;
type_transition cups_pdf_t home_root_t : dir user_home_dir_t;
type_transition postfix_virtual_t home_root_t : dir user_home_dir_t;
[root@tst-01 ~]#
使用错误的 Selinux 上下文创建新的主目录。我可以使用 chcon 修复 selinux 上下文,但这会在多台服务器上造成问题。
首先,上下文设置错误的原因是什么?
答案1
为将来可能遇到此问题的人补充此问题。如果您将主目录放在 NFS 共享上,则需要设置正确的 SELinux 上下文。假设您的 nfs 主目录是 /nfshome,请执行以下操作:
[root@host /]# semanage fcontext -a -e /home /nfshome [root@host /]# restorecon -vR /nfshome
答案2
对于用户$HOME
目录,通常在 中/home/$USER
,您不需要使用chcon
,因为它会更改文件和目录的安全上下文,即将它们从策略中转移,并且,就其价值而言,不会在系统重新标记后继续存在。相反,您需要找出目录的预期安全上下文:
# matchpathcon /home/ujjain
# matchpathcon /home/johndoe
如果上下文与 的输出不匹配ls -lrtZ
,则恢复上下文:
# restorecon -v /home/ujjain
# restorecon -v /home/johndoe
注意restorecon
可以递归使用-R
。
关于您的问题,这些目录有错误标签的原因取决于创建它们所使用的过程(您没有指定)和目录的位置/home
(例如,本地文件系统与 NFS)
答案3
问题似乎出在这里:
[root@tst-01 ~]# grep homedir /etc/pam.d/system-auth
session optional pam_mkhomedir.so skel=/etc/skel
由于 pam 堆栈不应该创建主目录,因此应该使用 odd job 模块来完成繁重的工作,而不是使用 pam_oddjob_mkhomedir 模块,因为它需要更少的权限并且可以很好地与 SELinux 配合使用。