Puppet でホームディレクトリの SELinux タイプを修正するにはどうすればよいですか?

Puppet でホームディレクトリの SELinux タイプを修正するにはどうすればよいですか?

SSH でログインするユーザーのホーム ディレクトリを自動的に作成するために、pam_mkhomedir.so を使用しています。pam_mkhomedir には、SELinux コンテキストを user_home_dir_t ではなく home_root_t に設定するバグがあります。解決策は、私たちが実装した pam_oddjob_mkhomedir を使用することです。

ただし、無効な SELinux コンテキストを持つホーム ディレクトリがまだ多数存在します。

drwxr-xr-x. jdoe users unconfined_u:object_r:home_root_t:s0 jdoe

すべてのユーザーのホームディレクトリの SELinux コンテキストを修正する Puppet モジュールをどのように設計すればよいでしょうか?

私は次のような解決策を考えていました:

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 を実行することです。

関連情報