SELinuxのトラブルシューティングに必要なフルパス:net:[4026532292]

SELinuxのトラブルシューティングに必要なフルパス:net:[4026532292]

次のコマンドを使用して、ディレクトリにSambaコンテキストを設定しようとしています。このエラーが何であるかはわかりませんが、ディレクトリにコンテキストを設定することはできません。

semanage fcontext -a -t samba_share_t "/common(/.*)?"

発生したエラーは次のとおりです。

必要なフルパス(net:[4026532292])を除外してください。

答え1

この質問は1年以上経っており、オンラインで回答が見つかりませんでした。次の人のためにこの問題を解決しましょう。 :)

このエラーは、コンピュータにネットワーク名前空間が作成されたために発生します。出力を見ると、mountprocファイルシステムの種類がどこか(おそらく/ runまたは/ var / runの下)にマウントされており、その番号があることがわかります。ただし、Restorecon(およびsemanage)のように見える場合は、/proc/mountsマウントポイントとして「net:[xxx]」を持つ同じファイルシステムが表示されます。残念ながら、Restorecon / semanageはこれを処理する方法を知りません。単にaで始まらないパスを見て/エラーを発生させるだけです。

なぜこのようなことをするのですか?見たら復元ソースをクリックすると、Restorecon が seclabel マウントオプションが設定されていないマウントポイントの除外項目を自動的に追加することを確認できます。セマンティックマネジメントの場合も同様です。私はseclabelオプションがSELinuxによって管理されるべきだと思います。その目的は、ファイルシステムがxattrsを使用してSELinux属性を保存することを示すことです。これがこれらのファイルシステムが除外される理由です。ファイルシステムがSELinuxコンテキストをサポートしていない場合、ファイルにコンテキストを設定しようとする必要はありません。

途方もない。どうやって解決しますか?システムselinux_restorecon()コールには、そのチェックを実行しないように指示するフラグ(SELINUX_RESTORECON_IGNORE_MOUNTS)が含まれていますが、Restoreconまたはsemanageプログラムに同じ操作を実行するように指示する方法はないようです。したがって、1つのオプションは、インストールタグを無視するフラグを使用してシステムコールを実行する独自のRestoreconプログラムを作成することです。それは痛みです。 :)私のお気に入りのより簡単なオプションは、マウントコンテキストを使用してナビゲーションに興味がない可能性があるマウントポイントを隠すことです。コンテキストが問題を引き起こした場合、コンテキストを使用して問題を解決するのはどうでしょうか?

sudo unshare -m sh
umount $( mount | awk '$3~/netns/{print $3}' )
restorecon -rv /some/file
exit

新しいマウントネームスペースを作成し、そのネームスペースでshを実行するために使用されますunshare -m(ここで必要なシェルを選択してください)。次に、問題のファイルシステムをアンマウントします。 Dockerを使用してこれを行う場合は、ファイルシステムがすべて含まれているため、対応する文字列を持つファイルシステムがnetnsないため、一致するマウントポイントを取得してumountに渡すだけです。他の人は別の方法で見つけて削除する必要がありますが、アイデアは同じです。マウントネームスペースはデフォルトでプライベートなので、unshare -mマウント解除はシステムの他のものには影響しません。デフォルトでは、このプロセスではマウントを非表示にします。当時、これらのファイルシステムが表示されないシェルがありました。したがって、Restoreconがシェルから継承した名前空間を調べると/proc/self/mounts(技術的にはopenですが、/proc/mounts以前のバージョンとの互換性のためにマウント名前空間をサポートするシステムへのリンクです/proc/self/mounts)、問題なく地上で実行されます。

これを頻繁に実行する場合は、umountとRestoreconをシェルスクリプトに入れ、シェルを起動する代わりにRestoreconを使用して実行するのが合理的かもしれません。

答え2

表示されるエラーは、/commonディレクトリに samba_share_t コンテキストを適用して発生したものではありません。それでも試してみて、restorecon -R /commonselinuxコンテキストが実際に変更されたことを確認できます。私はエラーが前の設定から来たと思います。

関連情報