ある日 su でログインしたときに出たエラー

「su」コマンドでルートにログインすると、次の様なエラーが出た。

$ su
パスワード:
Regex version mismatch, expected: 10.39 2021-10-29 actual: 10.37 2021-05-26
Regex version mismatch, expected: 10.39 2021-10-29 actual: 10.37 2021-05-26
Regex version mismatch, expected: 10.39 2021-10-29 actual: 10.37 2021-05-26

何だコレ!?

色々調べてみると、次の事が原因らしい。

9.6.3.2. 静かな拒否の起こりうる原因
特定の状況において、SELinux がアクセスを拒否したときに、AVC 拒否が記録されないことがあります。アプリケーションやシステムライブラリが、ときどきそのタスクを実行するために必要となる以上のアクセス権を調査します。アプリケーションによる害のない調査のために、監査ログを AVC 拒否で埋め尽くすことなく、最小権限を維持するために、ポリシーが dontaudit ルールを使用することにより、パーミッションを許可することなく AVC拒否を表示しなくできます。これらのルールは標準的なポリシーにおいて共通です。dontaudit の良くない面は、SELinux がアクセスを拒否したにもかかわらず、拒否メッセージが記録されず、トラブルシューティングが難しくなることです。
すべての拒否を記録することを許可する、dontaudit ルールを一時的に無効化するには、Linux root ユーザーとして以下のコマンドを実行します:
/usr/sbin/semodule -DB
-D オプションが dontaudit ルールを無効化します。-B オプションがポリシーを再構築します。semodule -DB を実行した後、パーミッション問題に遭遇した問題を実行してみて、SELinux 拒否 — アプリケーションにとって適切なもの — が記録されるかどうかを確認します。いくつかは dontaudit ルール経由で無視および処理されるべきであるので、拒否を許可すべきかどうかを判断するには注意してください。疑わしければ、また基準を探していれば、fedora-selinux-list のような SELinux 一覧にある、他の SELinux ユーザーや開発者に連絡を取ってみます。
ポリシーを再構築し、dontaudit ルールを有効化するには、Linux root ユーザーとして以下のコマンドを実行します:
/usr/sbin/semodule -B

ふむふむ、つまりルートアカウントで「semodule -B」を実行すれば良い?

$ su
パスワード:
Regex version mismatch, expected: 10.39 2021-10-29 actual: 10.37 2021-05-26
Regex version mismatch, expected: 10.39 2021-10-29 actual: 10.37 2021-05-26
Regex version mismatch, expected: 10.39 2021-10-29 actual: 10.37 2021-05-26
# semodule -B
# exit
$ su
パスワード:
#

なんだかよくわからないけど直ったみたいです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です