gksudoとgksuの違いは何ですか?


58

との動作に違いはgksu fooありgksudo fooますか?
それらは同じ意味で使用できますか?

回答:


39

両方のファイルは同じ場所を指します:

$ ls -l /usr/bin/gksudo 
lrwxrwxrwx 1 root root 4 2010-09-27 18:23 /usr/bin/gksudo -> gksu

... gksudoはにシンボリックリンクされていgksuます。しかし、だからといって、彼ら同じことをするわけではありません。

アプリケーションは、実行に使用されるコマンドを検出できます。これは通常argv[0]、Cスタイル言語または$0Bourneスタイルのシェルスクリプトです。アプリケーションはそれを見ることができ、この場合、実際には動作方法が変わります。これの最初の兆候はman gksuページにあります:

gksu  is  a  frontend  to  su  and gksudo is a frontend to sudo.

のソース(apt-get source gksu)をrun_mode見ると、これを検出する方法がわかります。

  { /* support gksu_sudo_run */
    gchar *myname = g_path_get_basename (argv[0]);
    if (!strcmp(myname, "gksudo"))
      run_mode = SUDO_MODE;
    g_free (myname);
  }

これを--su-mode/ -wおよび--sudo-mode/ -S引数でオーバーライドできます(したがって、gksudoシンボリックリンクを必要とせずに同等のコマンドを実行できます...しかし、それはあなた次第です。

これらの「モード」が実際にどのように異なるかを知りたい場合は、で少しだけエスケープしgksuます。それに従う必要がありますlibgksu。これは、システムに渡す前に実際に権限をチェックするライブラリです。

gksu到達するまでlibgksuにモードが指定されていない場合(引数なしで呼び出すなど)、 Gconfをチェックし(Stefanoが指摘しているように)、まだ決定できない場合は、デフォルトでsuモードになります。


1
オリのコメントに追加するには; gksudoはgksuにシンボリックリンクされていますが、Ubuntuでは、/ apps / gksu / sudo-modeが有効になっているため、デフォルトではgksudo のみを使用します。そのため、誰かが--su-modeオプションを強制しない限り、gksuは使用されません。
ビッシュ

5
@Oli:それがシンボリックリンクだからといって違いはないとすぐに結論付けません。busyboxを見て、シンボリックリンクの名前に応じて、さまざまなアクションが実行されます。この場合、それが真実であるかどうかはわかりませんが、事実は事実です。
-Lekensteyn

1
-1、非常に誤解を招く:ソフトウェアは、呼び出しに使用された名前に依存して異なる動作をする場合があります。たとえば、としてbash呼び出されshたときにPOSIX strictモードをオンにします。そして、gksu あるにも呼び出し名を認識。
メストレリオン

携帯電話で小さすぎる画面と大きすぎる指でインターネットを使用すると、意図せずに投票権を失ったに違いありません。私は補償することに賛成しました:)
ジェイコブヴリム14

37

Ubuntu(!)では、違いはありません。

  • gksu通常、rootユーザーでログインし、このセッションでアプリを実行します。ただし、Ubuntuでは、デフォルトで「sudoモード」が使用されますgksudo。これは、の実行と同等です。これは、ubuntuでは、デフォルトでrootとしてログインできないためです。

  • gksudoはグラフィカルなものですsudo(Oliが指摘しているように、gksuへの単なるシンボリックリンク)

gksuのgconfエントリから:

代替テキスト

さらに、sudoとgksudoの違いについて:

通常のsudoを使用してグラフィカルアプリケーションをルートとして起動しないでください。このようなプログラムを実行するには、gksudo(Kubuntuのkdesudo)を使用する必要があります。gksudoはHOME =〜rootを設定し、.Xauthorityをtmpディレクトリにコピーします。これにより、ホームディレクトリ内のファイルがルートによって所有されるのを防ぎます。(AFAICT、これはgksudoとsudoで開始されたプロセスの環境について特別なことです)。
 — Chris Wilsonを介したコミュニティドキュメントから)


14

私は、これは古いスレッドであることを知っているが、私はしてきたあなたに話すように頼ま間の微妙だが本質的な違いについてgksugksudo

私は長くて一生懸命に見てきましたが、文書化された違いはどこにも見当たりませんが、それでも存在しています。また、なぜ違いがあるのか​​はわかりません。私は誤って(で議論こそ、この違いのいくつかのシステムファイルを削除したとき、私はこれに苦労して見つけUbuntuのフォーラム内のスレッド) -私が使っていたgksuが、それ以来、私は使用することが常に必ず行っていますgksudo

要約するには、これを試してください。

  1. いくつかのフォルダーに3つのファイルを作成します。
    touch abc
    touch abc.tmp
    touch abctmp
  2. 次の6つのコマンドを実行します。最初の5つは同じ(予想される)結果(つまり単にabc.tmp)を返しますが、6つ目は追加abctmpすべきでないファイル()を含みます。

    find . -regextype posix-egrep -regex '.*\.tmp' -print
    sudo find . -regextype posix-egrep -regex '.*\.tmp' -print
    gksudo -- find . -regextype posix-egrep -regex '.*\.tmp' -print
    gksudo --su-mode -- find . -regextype posix-egrep -regex '.*\.tmp' -print
    gksu --sudo-mode -- find . -regextype posix-egrep -regex '.*\.tmp' -print
    gksu -- find . -regextype posix-egrep -regex '.*\.tmp' -print
    

あなたが交換するときに問題を想像し-print-deleteしてfindコマンド(一部のシステムファイルが削除される原因と、私に起こった、まさにです)。

そのため、のgksudo代わりに使用してくださいgksu


これを12.04LTSで試しました。理由をまだ完全には理解していないが、違いがある。gksuのソースコードgksudoは、タイピングと同等であることを示していますgksu --sudo-mode
ウォーレンヒル

@WarrenHill —はい、理論的には!しかし、実際にはそうではありません。何故かはわからない。
水田ランダウ

2
興味深い、13.04に検証されました。間違いなく引用処理のバグのように見えます。
-l0b0

4
バグを報告しました。
l0b0

1
@ l0b0-ありがとう、バグに投票を追加しました。
水田ランダウ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.