18.04でgksuと同等のものが必要です


23

Ubuntu 18.04を含む多くのLinuxフレーバーからgksuが削除されることについて、多くのスレッドを読みました。多くの場合、gksuは憎悪であり、ユーザーはそのようなものを使用する必要はありません。私が知っている限りでは、(ファイルの編集だけでなく)rootとして実行できるものが必要な2つの例があります。

まず、暗号化されたフォルダーが(GUI)コマンドで開かれた後にのみmysqlを起動する必要があります。これは、mysqlサービスを開始する暗号化システムによって実行されるスクリプトを持つことを意味します。これはルートとして実行する必要があるため、パスワードを要求するスタートアップスクリプトでgksuを使用します。GUIシステムからサービスを開始するにはどうすればよいですか?

また、Ubuntuシステムバックアップをルートとして実行します。そうしないと、多くのシステムファイルをバックアップできません。そのため、デスクトップファイルはgksuを使用してバックアップを開始します。

pkexecは複雑に見えますが、ポリシーファイルが必要です。それが唯一の選択肢であり、もしそうなら、なぜそれがより安全なのですか?

同様の質問に対する他の回答は、gksuがもはやない(または見つけるのが難しい...)人々が今持っている個々の問題に対処していないようです。専門家ではないユーザーからのそのような質問は、より詳細な回答から恩恵を受けると思います。私は今いくつかを持っているので、自分の質問に答えたいと思います。


pkexecあなたのための作業を代わりにgksu
トーマスウォード

@karelは同意しましたが、その投稿は「置換」がであると明確に述べていませんpkexec。(あなたはそれを狩る必要があります)
トーマスウォード

2
また、使用しようとすることができますsudo -H GUI-program。Waylandにこのリンクがある場合、それは便利かもしれません... GUIツールを使用している場合、回避策があります。
sudodus

3
これは議論の余地のあるトピックですが、ナットシェルでは、グラフィカルアプリケーションをルートとして実行することはセキュリティリスクです。あなたや他の多くの人はこれに同意しないかもしれませんが、Ubuntuや多くのディストリビューションでは、ルートとしてグラフィカルアプリを実行することは推奨されていません。Ubuntuは、代替ソリューション、pkexecおよびその他のポリシーを作成中です。あなたはバグレポートを提出することができ、開発者はパッケージマネージャーなど、そうすべきだと思うプログラムの解決に取り組みます。XとWaylandが関係するため、これは複雑です。または、非グラフィカルアプリを使用するか、独自のアプリを作成します。暗号化にはGUIは必要ありません
Panther

暗号化されたフォルダーをマウントするためのGUIを提供するgnome-encfs-managerを使用します。ドライブがマウントされたときに実行されるスクリプトを提供します。そのスクリプトでは、mysqlを起動する必要があります。他にどのようにこれを行うことができますか?ウェイランドに関しては、シナプスまたはgparted GUIを許可しないことは、普通のホームデスクトップユーザーの観点からはばかげています。彼らは非常に貴重です。システムは非常に安全であるため、誰も使用したくない-バランスがあり、この特定のケース(ウェイランド)ではユーザーが正しい必要があります。
-pastim

回答:



8

他の場所でこれに対する答えがあると言われていることは知っていますが、この問題を解決するのに十分明確でシンプルなものは見つかりませんでした。だから私は多くの場所を掘り下げてこれを思いついた。Linuxコミュニティが単純なデスクトップユーザーの人生をこれほどまでに難しくすることを決めた理由はまだわかりません(多くの説明を理解しようとしました)が、それは人生です。必要な場合にのみターミナルウィンドウを使用して、ほぼすべてにGUIを使用します。私ができる限り、sudoオプションを使用したソリューションはこれを助けません。そのため、私が.desktop定期的に使用するすべてのジョブを実行するファイルとスクリプトがあります。

2つの基本的なソリューションがあります。

1.再インストール gksu

この解決策は、持続する場合としない場合があります。アンチgksu技術者はそれを止める方法を見つけるかもしれません。しかし、その間に、libgksu(x64)gksu(x64).debから2つのファイルをダウンロードしてください。libgksu2をインストールしてから、gdebiまたは使用するインストールツールを使用してgksuをインストールします。これは私のために働いた。

2.使用する pkexec

(できれば)長期的なソリューションとして、私はpkexecを必要なツールで動作させることができました。

  1. スクリプトからサービスを開始します。gksuもpkexecも必要ないことがわかりました。ちょうどstart service xyzそれはあなたのパスワードを求めます。

  2. ルートファイルを編集する、またはnautilusをルートとして開くには、gksu-Web Upd8の代わりにpkexecを使用してGeditおよびNautilusをルートとして実行する方法を参照してください。これにより、pkexec用の2つの「polkit」ファイルが提供されます。これにより、スクリプトを使用しpkexec geditてルートファイルを編集できます。同様にnautilusでも使用できます。手順はすべてそのWebページにあります。現在、「filemanager-actions」を使用して、geditまたはnautilusをルートとして実行する右クリックアクションを提供しています。

  3. コアシステムのバックアップのルートとしてdeja-dupを実行します。/home/homeルートアクセスを必要としない頻繁なバックアップを行うため)を除き、これを頻繁に行いません。これを機能させるために、ステップ2でgeditに使用したファイルのコピーを取得し、deja-dup用に編集しました。内容はよくわかりませんがpkexec backup、.desktopファイルから開始されたスクリプトを使用して、バックアップとファイルの復元の両方で機能します。この新しいファイルを次のものに追加しました/usr/share/polkit-1/actions

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD polkit Policy Configuration 1.0//EN" "http://www.freedesktop.org/software/polkit/policyconfig-1.dtd">
    
    <policyconfig>
      <icon_name>deja-dup</icon_name>
    
      <action id="org.gnome.DejaDup">
        <description gettext-domain="deja-dup">Backup</description>
        <message gettext-domain="deja-dup">Privileges are required to backup system files</message>
        <defaults>
        <allow_any>no</allow_any>
        <allow_inactive>auth_admin</allow_inactive>
        <allow_active>auth_admin</allow_active>
         </defaults>
        <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/deja-dup</annotate>
        <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
      </action>
    
    </policyconfig>
    

    このディレクトリには別のdeja-dupファイルがあり、ファイルの復元に役立つと主張していますが、機能させることができませんでした。この新しいファイルには、などの一意の名前を付ける必要がありますorg.gnome.DejaDupNew.policy

今のところ、gksuなしで実行しています。私は続けようとします…


pkexec deja-dupあなたが説明したようにファイルを追加した後、バックアップを開始するコマンドは私のためでした。このダイアログでは、最初に設定を選択できますが、これは素晴らしいことです。
wbloos

/usr/share/polkit-1/actions実際、ポリシーファイルを配置することは、pkexec権限を高めたデスクトップランチャーを作成する方法でした。ここにあるもう一つの例
サージストローバンド

4

Nautilus Admin(nautilus-admin)は、右クリックメニューにいくつかの管理アクションを追加するNautilusファイルマネージャー用のシンプルなPython拡張です。

  • 管理者として開く:管理者(ルート)特権で実行されている新しいNautilusウィンドウでフォルダーを開きます。
  • 管理者として編集:管理者(root)特権で実行されているGeditウィンドウでファイルを開きます。

現在サポートされているすべてのバージョンのUbuntuにNautilus Adminをインストールするには、ターミナルを開いて次のように入力します。

sudo apt install nautilus-admin

18.04で、FilesとGedit以外の他のアプリケーションについてgksuのすべての代替をテストしましたが、最も一貫して機能すると思われるものは次のとおりです。

sudo -H appname&> / dev / null

pkexecgksuは、より高いセキュリティを提供するため、gksuの最適な代替品ですが、さまざまなアプリ間で非常に一貫性がなく(たとえば、Geditでは機能しません)、一部のアプリでクラッシュを引き起こす可能性があります。sudo -i単一のコマンドを実行するためだけにrootである必要がある場合、特権を長期間rootに昇格させるため、管理は不必要に困難です。


3

sgeditフォント、タブ、および拡張機能のユーザー設定を継承するというスクリプトを使用します。GUI環境の安定性のsudo -H gedit代わりに使用しgksu geditます。パスワードの入力を求められます。

sudoユーザーアカウントgedit設定を継承している

sgedit 80列右slider.gif

この例では、フォント名、フォントサイズ、タブストップ、タブのスペースへの変換、80列の強調表示、右側のサムネイルスライダーバーのユーザー設定が継承されていsudoます。

通常でsudo -H geditは、これらの構成設定を作成したり保存したりすることはできません。以下のスクリプトを使用するとsgedit、設定はユーザーアカウントから継承されます。

このスクリプトは、「gksu不良でデフォルトではインストールされていない」および「pkexecセットアップが難しい」問題にも対処します。


バックグラウンド

私は何年も同じ問題に悩まされてきました。今週のプロジェクトは、sgeditスクリプトを書くことでした。

  • を使用して呼び出します sgedit filename1 filename2...
  • タブストップ、フォント、改行などのユーザーのgedit設定を取得します。
  • sudo -Hルート権限を取得しながら、ファイルの所有権を保持するために昇格します。
  • 最後のsudoがタイムアウトした場合にパスワードを要求します。
  • sudoのgedit設定を取得します
  • ユーザー設定とsudo gedit設定の違いを比較します
  • gsettings set差分のみで実行しsetます(174個のコマンドを1ダース以下に減らします。次回はおそらく1つまたは2つの変更のみを実行しますが、多くの場合は何も変更しません。
  • ターミナルプロンプトがすぐに再表示されるように、geditをバックグラウンドタスクとして呼び出します。

Bashスクリプト sgedit

#!/bin/bash

# NAME: sgedit
# PATH: /mnt/e/bin
# DESC: Run gedit as sudo using $USER preferences
# DATE: June 17, 2018.

# Must not prefix with sudo when calling script
if [[ $(id -u) == 0 ]]; then
    zenity --error --text "You cannot call this script using sudo. Aborting."
    exit 99
fi

# Get user preferences before elevating to sudo
gsettings list-recursively | grep -i gedit | grep -v history |
    grep -v docinfo |
    grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings

sudoFunc () {
    # Must be running as sudo
    if [[ $(id -u) != 0 ]]; then
        zenity --error --text "Sudo password authentication failed. Aborting."
        exit 99
    fi

    # Get sudo's gedit preferences
    gsettings list-recursively | grep -i gedit | grep -v history |
        grep -v docinfo |
        grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings.root
    diff /tmp/gedit.gsettings.root /tmp/gedit.gsettings | grep '>' > /tmp/gedit.gsettings.diff
    sed -i 's/>/gsettings set/g; s/uint32 //g' /tmp/gedit.gsettings.diff
    chmod +x /tmp/gedit.gsettings.diff
    bash -x /tmp/gedit.gsettings.diff  # Display override setting to terminal
    nohup gedit $@ &>/dev/null &
}

FUNC=$(declare -f sudoFunc)
sudo -H bash -c "$FUNC; sudoFunc $*;"

ハウスキーピング

上記のbashスクリプトをという新しいファイルにコピーしますsgedit$HOME/binディレクトリに配置することをお勧めします/home/YOURNAME/bin。最初にディレクトリを作成する必要がある場合があります。

次を使用して、ファイルを実行可能としてマークします。

chmod a+x ~/sgedit

~はのショートカットです/home/YOURNAME


0

Ubuntu 18.04:一部のインストールプログラムと他のプログラムでは、gksudoまたはgksuを同じ名前で使用可能にする必要があります。これらを機能させるには:

のgnomeバージョンをインストールしますssh-askpass。これがないと、パスワードダイアログが別のウィンドウの後ろに隠れてしまう可能性があります。

sudo apt-get install ssh-askpass-gnome

新しいファイルを作成my-gksudo.sh

sudo -H gedit /etc/profile.d/my-gksudo.sh

ファイルの内容:

export SUDO_ASKPASS=/usr/bin/ssh-askpass

同じ内容の新しいファイルgksudoとgksuを作成します。

sudo -H gedit /usr/bin/gksudo

そして

sudo -H gedit /usr/bin/gksu

両方のファイルコンテンツ:

sudo -A $@

gksudoおよびgksuを実行可能にします。

sudo chmod +x /usr/bin/gksudo

そして

sudo chmod +x /usr/bin/gksu

コンピューターを再起動します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.