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が奇妙な操作が/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(/.*)?"
これがこの問題を解決する正しい方法ですか?
答え1
最後の部分は、semanage fcontext
コンテキストを永久にyesに設定する正しい方法です。ただし、restorecon
適用するには実行する必要があります。
restorecon -Rv /data
restorecon
/etc/selinux/targeted/contexts/files/file_contexts.local
を使用して追加したカスタムfcontextを含める必要があるすべての項目が考慮されます。semanage
これらのコンテキストを一時的に設定するには、次のコマンドを参照してくださいchcon
。
chcon -Rv -t home_root_t /data
答え2
ホームディレクトリを再配置する際の最善の解決策は、おそらくEQUALメカニズムを使用することですsemanage fcontext
。サーバーエラーに対する答えです。:
semanage fcontext -a -e /home /data
これは、元の住居のすべての規則が新しい住居にも適用されるようにするためです。