SELinux ユーザーを変更または削除できません。

SELinux ユーザーを変更または削除できません。

私はuser_uRHEL 6.5のターゲティング戦略を研究しています。私は無制限のコンテキストでrootとしてログインしているので、欲しいものは何でも変更できます。もしかしたら許容モードに切り替えました。最初はuser_uをMLS / MCS設定「s0:c0.c50」に設定しました。この状態は(私が知っている限り)問題なく実行されています。コマンドを使用してこの設定変更をテストするには、次のように入力しました。

semanage user -m -r s0:c0.c51 user_u

これは問題なく実行され、semanage user -lMLS user_u/ MCSは現在「s0:c0.c51」です。ただし、user_uまたはbobuser_uに関連付けられているユーザーの1つ(および名前)を変更しようとすると、次aliceのエラーが発生します。

libsemanage.validate_handler: Unix ユーザー bob の MLS 範囲 s0:c0.c50 が SELinux ユーザー user_u の許容範囲 s0:c0.c51 を超えています (該当するファイルまたはディレクトリなし)。
libsemanage.validate_handler: 間違ったsuserマッピング [bob -> (user_u, s0:c0-c50)] (該当するファイルやディレクトリはありません)
libsemanage.dbase_llist_iterate: レコードを繰り返すことはできません (該当するファイルもディレクトリもありません)。

混乱する部分は、s0:c0.c50がs0:c0.c51を「超過」するということです。 user_uを修正しようとすると、bobについて文句を言います。 bobを削除しようとすると、アリスについて文句を言います。 Aliceを削除しようとすると、Bobについて文句を言います。実際には(GUIツールやコマンドラインを介して)それらのどれも変更することはできません。

最初はsemanageで変更をキャンセルしてs0:c0.c50に戻ろうとしましたが、それはできませんuser_uでした。私はこれらのエラーがs0-s0:c0.c1023に言及していないので、user_uのMCS / MLSを実際に変更する前に失敗したようです。

私はオンラインでいくつかの同様の例しか見つけることができませんでしsemodule -Bsemodule -B。私はまた、Seuserが取り外した部品を交換し、semodule -B無駄にしようとしました。

この問題を解決する方法についてのアイデアはありますか?サンドボックス環境なので元のイメージに戻りやすいですが、配布された環境ではそんな余裕がないはずです。

ベストアンサー1

とにかく、インターネット検索に似たバージョンを見つけました。 MLS コンテキストを変更していませんが、ここでは元の質問など、間違った場所などの奇妙なエラーが発生します。

libsemanage.validate_handler: MLS range s0-s0:c0.c1023 for Unix user elflord exceeds allowed range s0 for SELinux user sysadm_u (No such file or directory).
libsemanage.validate_handler: seuser mapping [elflord -> (sysadm_u, s0-s0:c0.c1023)] is invalid (No such file or directory).
libsemanage.dbase_llist_iterate: could not iterate over records (No such file or directory).

これは実行中に発生し、モジュールが言及されていないとsemodule [-i|-B特に混乱します。-isysadm_u

その理由は、以前に(関連していない)試みによるものです。次へ追加このキャラクターのようにsysadmn_u

semanage user -m -R webadm_r sysadm_u

-Rマニュアルページはdoes with doesについてあいまいです-mが、明らかに意味を変更するわけではありません。次へ追加これを置き換える役割:

> seinfo -u sysadm_u -x

Users: 1
   user sysadm_u roles webadm_r level s0 range s0;

こんな、sysadm_r消えた。これは、elflord少なくともSSHを介さずにログインする方法がないことを意味します。つまり、Unable to get valid context for elflordネットワーク経由で送信します。

さらに、私が明示していないにもかかわらず-r最小値に設定されていましたがlevel s0 range 0、エラーフレーズが最も気になる部分のようです。

回避策は、元のロールとスコープを含むユーザー変更を再実行することです。

semanage user -m -R { sysadm_r webadm_r } sysadm_u -r s0-s0:c0.c1023

おすすめ記事