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

ujj*_*ain 4 redhat selinux rhel6

[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
Run Code Online (Sandbox Code Playgroud)

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 ~]# 
Run Code Online (Sandbox Code Playgroud)

使用错误的 Selinux 上下文创建了新的主目录。我可以使用 chcon 修复 selinux 上下文,但这会在多台服务器上产生问题。

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

Pyt*_*ice 8

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

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


daw*_*wud 6

在用户$HOME目录的情况下,通常在 中/home/$USER,您不需要使用chcon,这会更改文件和目录的安全上下文,从某种意义上说,将它们从策略中转移出来,并且,对于值得的,将无法生存系统重新标记。相反,您需要找出目录的预期安全上下文是什么:

# matchpathcon /home/ujjain
# matchpathcon /home/johndoe
Run Code Online (Sandbox Code Playgroud)

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

# restorecon -v /home/ujjain
# restorecon -v /home/johndoe
Run Code Online (Sandbox Code Playgroud)

注意restorecon可以递归使用-R

关于您的问题,此目录标签错误的原因取决于用于创建它们的过程(您未指定)和/home目录的位置(例如,本地文件系统与 NFS)