「pkexecの権限昇格に注意」という記事を見て、自分のLinux環境は大丈夫だろうかと不安になっていませんか。2026年7月末から8月にかけては、IPAがLinuxカーネルのローカル権限昇格の脆弱性「Copy Fail」(CVE-2026-31431)に注意喚起を出すなど、権限昇格系のリスクが話題になり続けています。pkexecやpolkit(PolicyKit)の設定も、権限昇格の入り口になりうる仕組みの一つです。この記事では、専門知識がなくてもpkexec --versionpkactionといったコマンドだけで、自分のUbuntu/Debian環境の設定が危険な状態になっていないかを点検する方法を解説します。

pkexecとpolkitとは何か、なぜ今点検すべきか

pkexecは、あるユーザーが決められた条件のもとで別ユーザー(多くはroot)としてコマンドを実行できるようにする仕組みです。sudoと似た役割ですが、判断ロジックが別のプログラムpolkit(PolicyKit)に切り出されている点が違います。GUIアプリが「ディスクをマウントする」「ネットワーク設定を変える」といった管理者操作をパスワードなし、または一度の認証だけで行えるのはpolkitのおかげです。

裏を返せば、polkitの設定が緩んでいると、パスワード入力なしで管理者権限の操作が通ってしまう可能性があります。2026年は、IPAの「Copy Fail」注意喚起(CVE-2026-31431)や、GMOイエラエが発見したLinuxカーネルのbonding機能の脆弱性(CVE-2026-43456、8万米ドル以上の報奨金)、net/schedの権限昇格(CVE-2026-46331、2026年7月1日判明)など、「ローカルの一般ユーザーがroot権限を取る」タイプの脆弱性報告が立て続けに出た年です。pkexec・polkit自体の個別CVEの有無にかかわらず、同じ「権限昇格」というカテゴリの一部として、自分の環境の設定を一度確認しておく価値があります。

pkexecのバージョンとSUID権限を確認する

まず、pkexecの実体がどこにあり、どのバージョンか、権限設定がおかしくなっていないかを見ます。

which pkexec
pkexec --version
ls -l $(which pkexec)

何を見ているか:1行目・2行目でpkexecの場所とバージョンを、3行目でファイルの権限を確認しています。

出力例:

/usr/bin/pkexec
pkexec version 124
-rwsr-xr-x 1 root root 31240 Jun  3 09:12 /usr/bin/pkexec

判断基準:権限表示の先頭が -rwsr-xr-x のように、所有者の実行権限の位置が s になっているのが正常です(これをSUID=実行時に所有者権限で動く設定と呼びます。root所有のプログラムに付いているのは仕様通りで、それ自体は異常ではありません)。異常のサインは次の2つです。

  • 所有者が root 以外になっている
  • グループや他ユーザーに書き込み権限(w)が付いている(本来のUbuntu/Debianパッケージでは付きません)

異常が見つかったら:まずパッケージ管理経由で入れ直します。sudoが必要ですが、パッケージの再インストールなので設定ファイルは壊れません。

sudo apt update
sudo apt install --reinstall policykit-1

/etc/polkit-1/rules.d の内容を点検する

polkitの標準ポリシーは /usr/share/polkit-1/actions/ にありますが、管理者が独自ルールを追加できるのが /etc/polkit-1/rules.d/ です。ここに入っているJavaScript形式のルールが、標準の挙動を上書きします。

ls -la /etc/polkit-1/rules.d/
cat /etc/polkit-1/rules.d/*.rules 2>/dev/null

何を見ているか:カスタムルールの有無と中身です。sudoは不要で読むだけなら閲覧権限があれば実行できます(ディストリによっては要sudo)。

出力例(正常・初期状態のUbuntu/Debian):

total 8
drwxr-xr-x 2 root root 4096 Apr 23 10:00 .
drwxr-xr-x 4 root root 4096 Apr 23 10:00 ..

ファイルが1つもない、これが多くの環境での標準状態です。もしファイルがあれば中身を確認します。次のような記述があれば要注意です。

polkit.addRule(function(action, subject) {
    return polkit.Result.YES;
});

判断基準action.idによる条件分岐がなく、無条件に polkit.Result.YES(無条件許可)を返すルールは危険です。特に org.freedesktop.policykit.exec(pkexec自体の実行許可)や、ディスクのマウント・パッケージ管理系のアクションに対してこれがあると、認証なしで管理者操作が通ってしまいます。

次にやること:心当たりのないファイルが見つかったら、まず内容をコピーして退避してから削除し、polkitを再起動します(設定の再読み込みのみで、再起動やログアウトは不要です)。

sudo cp /etc/polkit-1/rules.d/不明なファイル.rules ~/polkit_backup.rules
sudo rm /etc/polkit-1/rules.d/不明なファイル.rules
sudo systemctl restart polkit

なお古いディストリ(polkitのバージョンが0.106より前。Ubuntu 16.04以前など)では、この形式ではなく /etc/polkit-1/localauthority/50-local.d/*.pkla という設定ファイルを使います。現行のUbuntu 26.04 LTSやDebian 13 "Trixie"であれば rules.d 形式で問題ありません。

pkactionで自分の環境のポリシー設定を確認する

pkactionは、polkitに登録されている「アクション」(許可・禁止の判断対象になる操作の単位)とその現在の設定を照会するコマンドです。sudoは不要な読み取り専用の確認です。

pkaction | wc -l

何を見ているか:登録されているアクションの総数です。数百件あるのが普通で、これ自体に異常・正常はありません。個別の設定を見るには、アクションIDを指定します。

pkaction --action-id org.freedesktop.policykit.exec --verbose

出力例:

org.freedesktop.policykit.exec:
  description:       Run a program as another user
  message:           Authentication is required to run a program as another user
  implicit any:      auth_admin_keep
  implicit inactive:  auth_admin_keep
  implicit active:    auth_admin_keep

判断基準implicitの3項目(誰でも/非アクティブなセッション/アクティブなセッションの3状況)が auth_admin_keepauth_admin(管理者パスワードによる認証が必要)、auth_self(本人のパスワードで足りる)になっているのが一般的です。ここがyes(無条件許可)になっていたら、認証なしでその操作が誰でも通る状態です。特に org.freedesktop.policykit.exec や、パッケージ管理・ディスク操作系のアクションIDでこれが出ていたら、前章のカスタムルールか、インストールしたアプリが独自ポリシーを追加していないかを疑ってください。

次にやることyesになっている設定を見つけたら、それを追加したアプリに心当たりがあるか確認します。心当たりがなければ前章の手順でカスタムルールを退避・削除し、それでも直らなければ該当パッケージを再インストールして標準ポリシーに戻します。

点検コマンドのまとめと元に戻す方法

コマンド

見ているもの

sudo

設定変更を伴うか

pkexec --version

導入バージョン

不要

なし

ls -l $(which pkexec)

SUID権限の状態

不要

なし

ls /etc/polkit-1/rules.d/

カスタムルールの有無

環境による

なし

pkaction --action-id ... --verbose

アクション個別の認証設定

不要

なし

sudo apt install --reinstall policykit-1

—(対処コマンド)

必要

あり(パッケージ再導入)

ここまでの確認はすべて読み取りだけなので、環境を壊す心配はありません。唯一の変更操作である「カスタムルールの削除」も、退避したファイルを元の場所に戻してsudo systemctl restart polkitすれば即座に元の状態に復元できます。再起動やログアウトは不要です。

こうした点検は一度やって終わりにせず、定期的に見直す仕組みにしておくと安心です。定期実行の管理方法はsystemctl list-timers点検2026年8月版で扱っています。また、ファイアウォールなど他の設定項目でも「意図した設定と実態が食い違っていないか」を突き合わせる考え方は共通しているので、UFWとiptables突き合わせで設定漏れ確認2026もあわせて確認しておくと点検の抜けを減らせます。

まとめ

pkexec/polkitの点検は、pkexec --versionでバージョンとSUID権限を、/etc/polkit-1/rules.dでカスタムルールの有無を、pkaction --verboseで個別アクションの認証設定を確認するだけで完結します。すべて読み取り中心の操作で、変更が必要になった場合も再インストールやファイル削除+polkit再起動で元に戻せます。2026年はLinuxカーネルの権限昇格関連の注意喚起が相次いだ年でもあるので、この機会に自分の環境の設定が「無条件許可」になっていないかを一度確かめておきましょう。