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