ウェブサイト検索

Ubuntu 24.04 でパスワード認証ポップアップを無効にする


一部のアプリ (GParted、Synaptic、Grub Customizer など) を起動したり、App Center または Software Updater でパッケージをインストール/アンインストールしたりすると、認証のための管理者パスワードを求めるダイアログが常にポップアップ表示されます。

これはセキュリティーに優れています!しかし、怠け者の場合は、ログイン後(または画面のロック解除後に)ユーザー パスワードを何度も入力したくないため、自宅やその他の安全な場所でコンピュータを使用する場合は、認証ウィンドウを無効にしても問題ない場合があります。

Ubuntuのパスワード認証ポップアップ

注 1: セキュリティ上の理由から、認証を無効にすることはお勧めできません。自分が何をしようとしているのかを理解し、自己責任で行う必要があります。

注 2: このチュートリアルはテストされており、Ubuntu 24.04 および Debian 12 で動作します。Linux Mint 22 でも動作するはずですが、Ubuntu 22.04 以前では動作しません。

ポルキットについて:

Ubuntu および他の多くの Linux は、システム全体の権限を制御するために polkit を使用します。これは、グラフィカル デスクトップ環境のアクセス権をより細かく制御できる認証フレームワークです。

グラフィカル アプリケーションが、管理者/root 権限を必要とする登録済みのアクションを実行する必要がある場合、polkit は、アプリを実行するどのユーザー (またはどのグループのユーザー) がパスワード認証の有無にかかわらず許可されるかを制御できます。

コマンドラインの sudo とは異なり、polkit はプロセス全体に root 権限を付与しませんが、必要に応じてユーザーまたはグループに特定の権限を許可します。

そして、ここでは、特定のユーザーまたはグループで実行するときに、グローバルまたは特定のアクションのパスワード認証を無効にするように polkit を構成する方法を説明します。

オプション 1: 特定のユーザーに対してパスワード認証をグローバルに無効にする

注: オプション 1 とオプション 2 では、ターミナルで sudo コマンドを実行するときにシステムがパスワードを要求するのを停止することはできません。グラフィカル認証ポップアップでのみ機能します。 sudo コマンドが必要な場合は、オプション 3 を参照してください。

1. まず、キーボードの Ctrl+Alt+T を押してターミナル ウィンドウを開きます。開いたら、コマンドを実行して、/etc/polkit-1/rules.d/ ディレクトリの下に構成ファイルを作成および編集します。

sudo gnome-text-editor /etc/polkit-1/rules.d/49-nopasswd_global.rules

GNOME 以外のデスクトップの場合は、コマンド内の gnome-text-editor をお気に入りのテキスト エディターに置き換えるか、ほとんどのデスクトップで動作する nano を使用します。

2. ファイルが開いたら、以下の行を追加し、ユーザー「ji」を自分のものに置き換えます

/* Allow members in "ji" group to execute any actions
 * without password authentication.
 */
polkit.addRule(function(action, subject) {
    if (subject.isInGroup("ji")) {
        return polkit.Result.YES;
    }
});

上記のコードでは、登録されているすべてのアクションにルールを追加します。

  • subject.isInGroup("ji") は、グループ「ji」内のすべてのユーザーを意味します (ユーザー「ji」はもちろんグループ「ji」に属します)。このルールのグループにさらにユーザーを追加できます。または、これを subject.user == "ji" に置き換えて、このユーザーに対してのみ機能するようにします。
  • return polkit.Result.YES; は、認証なしで承認することを意味します。 YES を次のように置き換えることができます。

    • NO – 決して許可されません。
    • AUTH_ADMIN – 認証するには管理者ユーザーのパスワードを入力する必要があります。
    • AUTH_SELF – 認証するにはユーザー自身のパスワードを入力する必要があります。
    • AUTH_ADMIN_KEEPAUTH_ADMIN と似ていますが、同じアプリで同じアクションを実行するときに、一定期間 (通常は 5 分) はパスワードを再入力する必要がありません。
    • AUTH_SELF_KEEP – ユーザー自身のパスワードを要求しますが、AUTH_ADMIN_KEEP を参照してください。

ファイルを保存した後 (nano の場合は、Ctrl+S を押して保存し、Ctrl+X を押して終了します)、ルールはすぐに適用されます。

オプション 2: 特定のアクションに対するパスワード認証を無効にする

セキュリティ上の理由から、認証ポップアップをグローバルに無効にするのは安全ではありません。ただし、「Software Updater」を介してアップデートをインストールするなど、一部の操作ではこれを無効にした方が危険は少ないと思われます。

1.登録されているすべてのアクションを確認します

この場合、まず登録されているすべてのアクションを見つける必要があります。これらはデスクトップとインストールされているアプリによって異なります。

polkit アクションのほとんどは、「/usr/share/polkit-1/actions」ディレクトリ内の .policy ファイルによって定義されます。それらを一覧表示するには、ターミナルを開き (Ctrl+Alt+T)、次のコマンドを実行します。

pkaction

または、pkaction --verbose を実行して、登録されたアクションに関する詳細情報を一覧表示します。これにより、次のステップで使用するアクションを簡単に見つけることができます。

2. polkit 構成ファイルを作成/ 編集します

オプション 1 と同様に、以下のコマンドを実行して構成ファイルを作成します (それに応じて gnome-text-editor も置き換えます)。

sudo gnome-text-editor /etc/polkit-1/rules.d/49-nopasswd_limit.rules

ファイルが開いたら、以下に同様の行を追加します。

/* Allow members in "ji" group to execute the defined actions
 * without password authentication.
 */
polkit.addRule(function(action, subject) {
    if ((action.id == "org.debian.apt.upgrade-packages" ||
         action.id == "org.debian.apt.install-or-remove-packages" ||
         action.id == "example.action.remove.if_no_need" ||
         action.id == "example.action.remove.if_no_need") &&
        subject.isInGroup("ji")) 
    
    {
        return polkit.Result.YES;
    }
});

ここの「if」文では、設定するアクションに action.id == "xxx.xxx.xxx.xxx" を使用します。アクションは必要に応じて追加できます。|| (論理和) を使用してアクションを区切って、すべてを丸括弧で囲みます。

最後に、&& subject.isInGroup("ji") または && subject.user == "ji" を追加して、ユーザーで実行する上で追加したすべてのアクションにルールを適用します。 「ji」またはグループ「ji」内のユーザー。

注: action.id の値とユーザー「ji」を適宜置き換える必要があります。

また、ファイルを保存するとルールがすぐに適用されます。

オプション 3: sudo コマンドのパスワード認証を無効にする

これはオプションのステップであり、polkit とは関係ありません。 また、コマンド プロセス全体に root 権限を付与するため、安全ではありません。これを使うと、 リモートSSHログインでもパスワードなしでsudo コマンドを実行できるようになります!

1. まず、ターミナル (Ctrl+Alt+T) を開き、以下のコマンドを実行して sudoers ファイルのバックアップを作成し、それをユーザーのホーム ディレクトリにコピーします。

sudo cp /etc/sudoers ~/sudoers.bak

2. 次に、コマンドを実行して sudoers ファイルを編集します。

sudo visudo

ターミナル ウィンドウでファイルが開いたら、下にスクロールして以下の行を追加します。

ji ALL=(ALL) NOPASSWD:ALL

ここで、ji をユーザー名に置き換えます。最後に、Ctrl+S を押して保存し、Ctrl+X を押して終了します。

関連記事