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


33

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

  • 管理者権限(権限ありsudo)=>で呼び出しますadminuser
  • 特権なしの2番目のもの=>を呼び出して 、この2番目のユーザーの自動ログインを構成します。 normaluser
    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

質問は次のとおりです。なぜシステムをこのように構成したのですか?セキュリティが向上すると思いますか?そうではありません:)代わりに、「admin」アカウントで自動ログインを設定して、ログイン時にパスワードを要求しないようにすることができます。管理タスクを実行するときにパスワードが必要です。
セルゲイ

5
@Sergeyをnormaluserとしてコマンドを実行できないはずの人が使用する場合はrootnormaluser管理者以外のユーザーを作成するとセキュリティが確実に向上します。誰かにユーザーアカウントを与えるが、自分のパスワードを知らせないという危険は、面倒で複雑なボリスの状況をはるかに超えています。それが問題になる理由の完全な説明が必要な場合は、新しい質問を投稿することをお勧めしますが、理由の3つは、ユーザーが画面をロックおよびロック解除し、ログアウトしてから別のセッションタイプで再度ログインできることです。ecryptfsデータを復号化します。
エリアケイガン

2
まさに、私にとっては、家族のPCを使用して、画面のロックを解除するための管理者パスワードを全員に知らせることは意味がありません。これnormaluseradminuser設定が黄金律です。
ボリス

1
結構、OPがnormaluser日常業務admin用のアカウントと管理タスクを実行するためのアカウントを使用しているという印象を受けましたが、実際には何も改善されません。マルチユーザーマシンでは、これはまったく理にかなっています。
セルゲイ

回答:


5

PAMがそれを処理できます

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

行を入れます:

session optional pam_xauth.so

どこかに:

/etc/pam.d/su

および/または

/etc/pam.d/sudo

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


これがKubuntu 16.04でも機能することを確認します。ありがとう!
akhmed

おかげで、18.04でも動作します!それは最良の代替手段であるようでsuxありgksu、もはや利用できません。
ボリス

29

用語

この答えでは:

  • normaluser管理者ではなく、としてコマンドを実行することはできません通常のユーザーであるrootとはsudo
  • adminコマンドを実行することができ、管理者であるrootsudo。(もちろん、グラフィカルコマンドgksugksudosudo直接ではなく、/のようなグラフィカルフロントエンドを使用する必要があります。)
  • anyapplicationは、normaluserとして実行するグラフィカルアプリケーションの名前ですroot。のパスワードをnormaluser知っadminており、(おそらく)この目的で使用する可能性があると言われています。

問題

問題の原因と、これまでの他のほとんどの回答が機能しない理由(Marty Fried優れた回答を除く)は、次のとおりです。

  • gksuいずれかsudo または suそのバックエンドとして使用するように構成できます。gksuUbuntu のデフォルトの動作は、のでsudoなくのフロントエンドとして動作することですsu。つまり、デフォルトではgksuまったく同じgksudoように動作します。マンページを参照してください。
  • normaluser管理者ではありませんので、としてコマンドを実行することはできませんrootsudoなりたいユーザーのパスワードでなく、それを実行しているユーザーsudoのパスワードの入力を求めます。あなた以外の人としてパスワードを使用してアクションを実行できないことは、管理者でないことの意味です。
  • normaluserゲストアカウントではない 場合、他のユーザーのパスワードを入力して、別のユーザーとしてコマンドを実行できます。しかし、ではなく、フロントエンドとして機能します。sugksusudosu
  • normaluserは使用できないためにコマンドを直接実行できず、パスワードがないので誰も一緒になれませんrootnormalusersudorootsuroot

ソリューション

このソリューションでは、2つの認証手順を実行するコマンドを作成する必要があります。

  • normaluseradminグラフィカルコマンドを実行するようになる必要があります。これを行うには、normaluser実行する必要がありますgksu-w、それはで実行させるためのフラグSU-モードデフォルトの代わりにsudoのモード、および-uなどのコマンドを実行するためのフラグadminの代わりにroot
  • などのコマンドの実行admin必見の呼び出しgksu なしで-w使用するためのフラグsudoになるためにroot

コマンドは次のとおりです(はい、テストしました;-)):

gksu -w -u admin gksu anyapplication

パスワードの入力を2回求められます。

  1. 最初に、バックエンドと同様にコマンドを実行adminできるnormaluserように、パスワードを入力する必要があります。adminsu
  2. 次に、バックエンドと同様にコマンドを実行できるadminようにadminするには、のパスワードを入力する必要があります。rootsudo

そのとおり。あなたは入りadmin二回のパスワードを。

雑記:

  • 必要に応じて、2番目gksuをで置き換えて、gksudo混乱を少なくすることができます。Ubuntuでは、これらは同等です。(最初のものgksugksudoに置き換えることもできますが、これは非常に直感的でわかりにくいものです。)
  • -wはの短縮形です--su-mode
  • -Sはの短い形式です--sudo-modeが、sudoモードがデフォルトであるため、どちらも使用する必要はありません。
  • あなたが望んでいることを確かめるために、最初にかなり無害なコマンドでこれをテストしたいかもしれません。(それはありますが、それについてあなたが私を信頼する必要はありません。)例えば:
    gksu -w -u admin gksu xclock
    xclock 素敵なシンプルな時計ウィンドウアプリケーションです。

1
完璧です。この賢いヒントを忘れないように、すぐに.bashrcにエイリアスを追加します
ボリス

理由はわかりませんが、今(ubuntu 14.04で)sudo動作させるために始めなければなりません。例:sudo gksu -w -u thedude gksu xclock
ボリス

FYI:kdesudo少なくともKubuntuの上、作業クリーナーに見えます。
MDTech.us_MAN

残念ながら、gksuもう利用できないようです
ボリス

11

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

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

アプリケーションの例を再利用してみましょうxclock

sux admin
gksu xclock

3
suxUbuntu 14.04 64ビットには、これ以上のバージョンはありません;(
ボリス14年


これは、シェルスクリプトだ@Boris、あなただけの歴史的なレポからそれをダウンロードすることができますから、たとえば、あなたのパスに入れpackages.debian.org/source/wheezy/sux
誰も

2

pkexec

kdesudoとgksuに代わるものがあります- pkexecこれは、policykit-1多くのパッケージで必要とされるパッケージからのものです。


私は(管理者ではないとしてrootになることができない通常のユーザー方法を説明するために、この答えを拡大するお勧めしますsudo管理者(つまり、誰かのパスワードを知っているかpolkit)は、可能でrootになるsudoかpolkit)、使用することができますpkexecにrootとしてグラフィカルプログラムを実行します。それが、ここでの質問です。それは、私には明らかではないpkexec、特に以来、少なくとも広範囲に設定ファイルを編集せずに、これを行いますpkexec一般(polkitプロファイルなし)、任意のグラフィカルなプログラムを実行するために使用することはできませんすべてのを。方法はありますか?
エリアケイガン14

@EliahKaganこれはデフォルト設定のUbuntuで動作します-実行するだけpkexec commandで動作します。構成は/usr/share/polkit-1/actions/org.freedesktop.policykit.policy、指定されたパッケージによってインストールされるファイルにあります。そして実際には、管理者パスワードを一度だけ書く必要があります
-pqnet

0

の代わりに

su admin
gksu anyapplication ...

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


1
デフォルト設定のUbuntuシステムでは、場合normaluser実行gksu -u admin anyapplicationそれがために要求されます normaluser「になるためのパスワードをadmin使用してsudo同じように、バックエンドのgksu anyapplicationために促すnormaluserなるためのパスワード」root使用してsudoバックエンドを。同じ理由で両方とも失敗します。-でnormaluserコマンドを実行する権限がありませんsudo
エリアケイガン

-1

これを実現するコマンドを次に示します。

gksu app-name

最初に実行せずに実行しsuます。通常のユーザーセッションから上記のコマンドを実行するだけで、アプリケーションはルートとして実行されます。


1
それは機能しません-特権のないユーザーセッションから試みていることに注意してください
ボリス

エラーメッセージとは何ですか?
サーチャーロ

私の入るnormalユーザーのパスワードを-私は「rootユーザーとして起動することは不可能」というメッセージを取得
ボリス

私の入力superuser/adminパスワードを-私は「不正なパスワード再試行してください」というメッセージが表示されます
ボリス

-1

以下を使用する必要があります。

gksudo AppName

。私が試した:これは、最初に(ユーザーのパスワード)グラフィカルなパスワード要求をもたらし、その後、私は試してみました(rootでGUIアプリを起動し、それは本当に面白いのことを行いgksu AppName、その直後、それは同様に働いていた-それがあるとして「gk」プレフィックスが示唆するように、おそらく想定されていたので、問題がどこにあるのか完全にはわかりません)。


1
sudo権限を持つ管理者ユーザーセッションから試行したため、あなたのケースで機能します。sudo権限のない非管理者ユーザーセッションからはどうですか?
ボリス

非管理者ユーザー(自分のユーザー)で通常のターミナルウィンドウからgksudoを使用しました。ただし、2回目の試行では、sudo permsがまだ残っているので、正しいです。しかし、Borisの問題は別の問題です。彼のアプリはXに接続できません。これは私の場合は両方とも機能しました。あなたが元の質問からわかるようにsudo、テキストモードで彼のために働いています。
イジー

-1

スーパーユーザーは1人だけで、それがルートです。

ユーザー1は管理者であり、sudo権限を持っています。
ユーザー2は管理者ではなく、sudo権限がありません。

ユーザー1としてログインしてから、コマンドを使用してみてください

gksudo app-name  

(app-nameをapp nameに置き換え
ます)役に立てば幸いです-お知らせください。:o)

編集:要求に応じて詳細情報

コンピューター上で自分だけの場合、
ユーザー1(sudoを使用する許可を持つ)を使用すること
は、ユーザー2(sudoを使用する許可を持たない)を使用することと同じです。
ユーザー1は、ユーザー2と同じ権限を持ちます。
ユーザー1がsudoのプレフィックスが付いたコマンドを発行したり、アプリケーションがルート特権で実行できるようにパスワードを提供したりしない限り。
唯一の違いは、ユーザー2がルートとしてアプリを実行できないことです。

それがあなたのために少し説明するのに役立つことを願っています。:o)


スーパーユーザーと管理者の明確化のおかげで、質問を編集します。「ユーザー1としてログイン」=>ユーザー1とのセッションを開くとはどういう意味ですか?まあそれは私が避けたいものです。
ボリス

要求に応じて回答する情報を追加しました:o)
Fernhill Linuxプロジェクト

私の妻と私の子供たちはautologinでuser2を使用しているので、私はむしろそのユーザーにsudo権限がないことが好きです。
ボリス

良いアイデアのように聞こえます-私にも子供がいます; o)。まだuser1としてログインしてコマンドを実行しようとしましたか?
Fernhill Linuxプロジェクト

1
はい、できますが、ユーザーセッションを変更するのは苦痛です。私は通常それを数回しなければなりません:設定を定義するために管理者セッションに行き、テストするために通常のユーザーセッションに切り替え、そして何度も何度も、通常のセッションにとどまることができてとてもうれしいです。私はそれを扱うほとんどの時間su admin+ sudo ...例はsudo vi file、GUIを使用してアプリケーションを除いて
ボリス・
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.