web-dev-qa-db-ja.com

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

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

58
Sid

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

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

... gksudogksuにシンボリックリンクされています。しかし、これは彼らがdo同じことを意味するのではなく、それから遠い。

アプリケーションは、実行に使用されるコマンドを検出できます。これは通常、Cスタイル言語ではargv[0]、Bourneスタイルのシェルスクリプトでは$0です。アプリケーションはそれを見ることができ、この場合、実際には動作方法が変わります。これの最初の兆候は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モードになります。

39
Oli

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

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

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

Gksuのgconfエントリから:

alt text

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

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

37
Stefano Palazzo

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

私は長くて一生懸命に見えましたが、文書化された違いはどこにも見当たりませんが、それでも存在します。また、なぜ違いがあるのか​​はわかりません。この違いのためにいくつかのシステムファイルを誤って削除したときに、これは難しい方法でした( buntu Forumsのスレッド で説明)—私は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
    

findコマンドで-print-deleteに置き換えたときの問題を想像してください(これはまさに私に起こったことで、一部のシステムファイルが削除されます)。

したがって、gksudoの代わりにgksuを使用してください。

14
Paddy Landau