SELinux は oddjobd-mkhomedir が標準以外の場所にユーザーのホーム ディレクトリを作成することを許可しません

SELinux は oddjobd-mkhomedir が標準以外の場所にユーザーのホーム ディレクトリを作成することを許可しません

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(/.*)?"

これはこの問題を回避する正しい方法でしょうか?

答え1

最後のセクションは、semanage fcontextコンテキストを永続的に設定するための正しい方法です。ただし、restoreconこれを有効にするには実行する必要があります。

restorecon -Rv /data

restorecon/etc/selinux/targeted/contexts/files/file_contexts.localは、あなたが追加したカスタムfcontextsを含む、内のあらゆるものを考慮します。semanage

これらのコンテキストを一時的に設定するには、次のchconコマンドを参照してください。

chcon -Rv -t home_root_t /data 

答え2

semanage fcontextホームディレクトリを再配置する場合、最善の解決策は、おそらく、で説明されているEQUALメカニズムを使用することです。サーバー障害に関するこの回答:

semanage fcontext -a -e /home /data

これは、元のホーム ロケーションのすべてのルールが新しいホーム ロケーションにも適用されるようにするためです。

関連情報