
だから、私は.ssh
ファイルにはssh_home_t
ファイルコンテキストが必要であることがわかった今度は、SELinux ルールをネストする方法を理解する必要があります。
最初の問題は、SELinux ファイル コンテキストの目的が何であるかを説明するリストが見つからないことです。したがって、ここでは私の考えが間違っている可能性があります。次の 3 つのことを順番に実行する必要があると思います。
/exports/home/$USER
一致するすべてのディレクトリを設定するnfs_t
それなしまた、 の下にあるサブディレクトリにも一致します$USER
。これにより、NFS サーバーにホーム ディレクトリを合法的にエクスポートできることが通知されます。- 一致するものをすべて
/exports/home/$USER/.*
何かに設定しますか? この場合、説明付きの包括的なリストが役立ちます。 SELinux には、通常、ユーザーのホーム ディレクトリ内のファイルを指定するファイル コンテキストがありますか? - すべてを一致させる
/exports/home/$USER/\.ssh(/.*)
のみにssh_home_t
、SSHD が の使用を許可できるようにしますauthorized_keys
。
NFSサーバーから3つのルールすべてを呼び出す必要があります。そして、2番目と3番目のルールを呼び出す必要があります。個人ユーザーとしてホーム ディレクトリをマウントしているどのホストからでも、その個々のユーザーのファイルに対して。当然ながら、これらのホーム ディレクトリのいずれかをマウントしているどのホストでも、root 権限を奪取したいと考えているからです。ユーザーは、NFS サーバーではないホストから、ssh ファイルを含むファイルを作成する可能性が最も高いです。
アップデート
適切なファイル コンテキストがわかったと思います。次に必要なのは、適切な正規表現を見つけることだけです。
# semanage fcontext -a nfs_t '<regexp 1>'
# semanage fcontext -a user_home_t '<regexp 2>'
# semanage fcontext -a ssh_home_t '<regexp 3>'
どこ
<regexp 1>
引っかかって/exports/home/$USER
それ以上進みません。<regexp 2>
キャッチ/exports/home/$USER\.*
を除いてexports/home/$USER/\.ssh(/.*)?
。<regexp 3>
キャッチしますexports/home/$USER/\.ssh(/.*)?
。
文字$USER
列に依存しない(つまり、どのユーザーでも)POSIX 拡張正規表現許可されていないようです。
答え1
簡単で、額をたたきながら答えるなら:
SELinux にはすでに `/export/home/* のデフォルト ルールがあります。"s" を削除するだけで修正されました。