CentOSサーバー上のユーザーを認証するためにSSSDを使用しています。oddjobd-mkhomedirは、デフォルトのホームディレクトリが/ homeの場合に完全に正常に機能しますが、特定のサーバーでは、デフォルトのホームディレクトリをSANマウント上の/ dataに変更する必要がありました。
これで、ユーザーがログインしようとするたびに、次のメッセージとともにbashシェルにドロップされます。
Creating home directory for first.last.
Could not chdir to home directory /data/X.Y.local/first.last: No such file or directory
-bash-4.1$
試行ごとに次のAVC拒否メッセージが表示されます。
type=AVC msg=audit(1492004159.114:1428): avc: denied { create } for pid=2832
comm="mkhomedir" name="x.y.local"
scontext=system_u:system_r:oddjob_mkhomedir_t:s0-s0:c0.c1023
tcontext=system_u:object_r:default_t:s0 tclass=dir
/ dataのコンテキストを必ず変更してください。
drwxr-xr-x. root root system_u:object_r:home_root_t:s0 data
/ dataが/ homeと同じコンテキストを持っている場合、SELinuxはoddjobdに/data/XYlocal/first.lastの作成を制限しているのはなぜですか?
# sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
[更新]
これがこれを解決する正しい方法かどうかはわかりませんが、次の3つのエントリを追加すると、ユーザーはログインしてホームディレクトリにアクセスできるようになります。新しいユーザーのディレクトリは、以下で定義されているコンテキストに基づいて作成されます。
semanage fcontext -a -t home_root_t /data
semanage fcontext -a -t user_home_dir_t /data/x.y.local
semanage fcontext -a -t user_home_t "/data/x.y.local(/.*)?"
これはこの問題を回避する正しい方法ですか?