![如何让 Puppet 修复主目录的 SELinux 类型?](https://linux22.com/image/617700/%E5%A6%82%E4%BD%95%E8%AE%A9%20Puppet%20%E4%BF%AE%E5%A4%8D%E4%B8%BB%E7%9B%AE%E5%BD%95%E7%9A%84%20SELinux%20%E7%B1%BB%E5%9E%8B%EF%BC%9F.png)
我们使用 pam_mkhomedir.so 自动创建使用 SSH 登录的用户的主目录。pam_mkhomedir 中有一个错误,它会将 SELinux 上下文设置为 home_root_t 而不是 user_home_dir_t。解决方案是使用我们已经实现的 pam_oddjob_mkhomedir。
然而,我们仍然有许多主目录具有无效的 SELinux 上下文。
drwxr-xr-x. jdoe users unconfined_u:object_r:home_root_t:s0 jdoe
我们如何设计一个 Puppet 模块来纠正所有用户主目录上的 SELinux 上下文?
我正在考虑这样的解决方案:
file { '/home/*':
ensure => "directory",
seltype => "user_home_dir_t"
}
不幸的是通配符不起作用。
答案1
也许这会有帮助?http://projects.puppetlabs.com/issues/2856
Recurselimit 似乎适用于 /home/user1,但也将 /home 设置为 user_home_dir_t。
file { '/home/':
ensure => "directory",
recurse => true,
recurselimit => 1,
seltype => "user_home_dir_t"
}
您可以设置一个自定义事实,返回数组中的所有主目录(这里太多用户可能会成为问题):
$fact_home_dirs = ['/home/user1', '/home/user2']
file { $fact_home_dirs:
ensure => "directory",
seltype => "user_home_dir_t"
}
在这种情况下,最好的选择可能是运行 restorecon,因为您似乎已经为新创建的目录实现了解决方案。