用错误的Selinux上下文创build的主目录

[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上下文创build的。 我可以用chcon修复selinux上下文,但这会在多个服务器上产生问题。

上下文被设置错误的原因是什么?

对于用户的$HOME目录,通常在/home/$USER ,您不需要使用chcon ,这会改变文件和目录的安全上下文,从而将它们从策略中分离出来,是值得的,将无法生存系统relabel。 相反,您需要找出目录的预期安全上下文是什么:

 # matchpathcon /home/ujjain # matchpathcon /home/johndoe 

如果上下文与ls -lrtZ的输出不匹配,则恢复上下文:

 # restorecon -v /home/ujjain # restorecon -v /home/johndoe 

请注意, restorecon可以recursion使用-R

关于你的问题,为什么这个目录有一个错误的标签取决于用来创build它们的过程(你没有指定)和/home目录的位置(例如本地文件系统与NFS)

这个问题似乎在这里:

 [root@tst-01 ~]# grep homedir /etc/pam.d/system-auth session optional pam_mkhomedir.so skel=/etc/skel 

由于pam栈不应该作为homedirs,所以应该使用奇怪的工作模块来完成繁重的工作,而不是使用pam_oddjob_mkhomedir模块,因为它需要较less的权限,并且与SELinux一起工作良好。

为将来碰到的人添加这个问题。 如果您将主目录放在NFS共享上,则需要设置正确的SELinux环境。 假设您的nfs主目录是/ nfshome,请执行以下操作:

 [root @ host /]#semanage fcontext -a -e / home / nfshome
 [root @ host /]#restorecon -vR / nfshome