web-dev-qa-db-ja.com

非管理者ユーザーセッションから管理者としてGUIを使用してアプリケーションを実行するにはどうすればよいですか?

2つのユーザーアカウントを定義しました。

  • 管理者権限を持つもの(Sudoの権利)=>それを呼び出すことができますadminuser
  • 特権のない2番目のもの=>それを呼び出すことができますnormaluser
    この2番目のユーザーに自動ログインを設定しますnormaluser

normaluserセッションを開き、管理者権限でアプリケーションを実行したい場合、
端末を開きます Ctrl+Alt+T そして:

su adminuser
Sudo anyapplication ...

normaluserセッションを終了することなく正常に動作します(adminuserセッションを開く必要はありません)。


しかし、アプリケーションをGUI(グラフィックユーザーインターフェイス)で実行する必要がある場合はどうすればよいですか?
それについて私は:

su adminuser
gksu anyapplication ...

しかし、私は得る

** (gksu:9122): WARNING **: the connexion is closed
No protocol specified
No protocol specified
(gksu:9122): Gtk-WARNING **: cannot open display: :0.0
32
Boris

PAMがそれを処理できます

これはUbuntu 16.04で動作します(編集:18.04 LTSでも動作します):

行を入れます:

session optional pam_xauth.so

どこかに:

/etc/pam.d/su

および/または

/etc/pam.d/Sudo

そして、「su-」または「Sudo su-」を実行すると、グラフィカルアプリをルートとして使用できます。

4
Gerben

おそらく動作する1つの方法は、最初にadminユーザーに切り替えるときに「su」ではなく「sux」を使用することです。 suxは、スプーフィングされたユーザーからxアプリケーションを実行する問題を修正します。これは標準のリポジトリにあり、コマンドラインでSudo apt-get install suxを入力することでインストールできます。

次に、「su」の代わりに「sux」を使用するだけで、期待どおりに機能するはずです。

アプリケーションの例を再利用してくださいxclock

sux admin
gksu xclock
11
Marty Fried

pkexec

Kdesudoとgksuに代わる代替手段があります-policykit-1パッケージからのpkexecは、多くのパッケージで必要です。

2
int_ua

の代わりに

su admin 
 gksu anyapplication ...

gksuコマンド自体を使用してすべてを行うgksu -u admin anyapplicationを試すことをお勧めします。また、コマンドに記載されているユーザーのパスワードを入力する必要があることに注意してください。つまり、この場合はadminのパスワードを入力する必要があります。

0
l0n3sh4rk