Sudo
とgksudo
の違いは何ですか?
Sudo
はコマンドラインでパスワードを要求し、gksudo
はそのためのダイアログボックスをポップアップします。
gksudo
はGTKベースのSudo
(BTW、kdesudo
はQtベースのフロントエンド)のフロントエンドですが、(デフォルトで)より多くの環境変数を扱います(HOME
、XAUTHORITY
など)をSudo
よりも実行することで、実行中のコマンドをrootとして安全にします。
私が見る限り、@ Logicsの答えだけで十分です(@Ignacio Vazquez-Abramsの答えは完全ではありません)。 @Davros @knitti answer/commentsへの試行錯誤の説明を以下に示します(不要な場合は、削除/編集してください)。
Sudo
を表していますが、2つのコマンドの違いは使用されているUIだけではありません。HOME
にファイルを作成/書き込みするかどうかを判断できない場合は常にgk/kdesudoを使用する必要があります環境変数は、一部のシステムおよび状況ではSudo
コマンドでポイントします)。 すべてのGUIアプリがホームディレクトリに書き込むわけではなく、すべてのCLIアプリがそうするわけではありませんなので、コマンドのタイプは重要ではありません。Sudo
コマンドを使用して、ルートとしてGUIアプリを起動します(アプリのコンソール出力を例)ただし、HOME
(およびXAUTHORITY
、DISPLAY
、input-method-related-stuffなどのその他)環境変数を正しく処理して、起動したアプリが失敗したり、機能を失ったり、本当に悪いことをしたりすることはありません。以下は、Sudo
を使用するための現在の推奨事項です。Sudo -H <rest of the command>
_ Sudo
セクション8のマニュアルページから)-H ( HOME )
オプションは、セキュリティポリシーがHOME
環境変数をターゲットユーザーのホームディレクトリ(デフォルトではroot)に設定することを要求しますパスワードデータベースで指定されているとおり。ポリシーによっては、これがデフォルトの動作になる場合があります。Sudo
の呼び出し元のホームディレクトリにファイルが作成されなくなります。Sudo -H DISPLAY=<a working X display name, usually :0> <rest of a GUI program command>
_ Sudo
コマンドの動作すべてのシステムで同一ではありませんであり、visudo
コマンドで構成できます。sudoers(5)
のマンページを確認してください。より詳しい情報。通常のSudoを使用してグラフィカルプログラムを実行すると、まれに一部のファイルの権限が台無しになります。安全のために、GUIでプログラムを実行するにはgksudo(または必要に応じてkdesudo)を使用する必要があります。これは本当にバグだと思いますが、gksudoがXサーバー変数を理解し、Sudoが問題を引き起こす可能性はないという説明を聞きました。ちょうどヒントとして;ルートとしてグラフィカルプログラムを実行している場合は、実行するプログラムごとに1つのターミナルを開くのではなく、ALT-F2(Altとファンクションキー2を同時に)を入力し、ポップアップするダイアログボックスに「gksudo」と入力します。プログラム」は、引用符とプログラムを実行したいアプリケーションで置き換えないでください。
Sudoは、昇格された特権を持つ現在のユーザーとして実行されます。これにより、グラフィカルアプリの実行時に、特定のユーザー構成ファイル(グラフィカル環境に関連する)のファイル権限が変更される可能性があります。 Sudoなしでこれらのアプリを再度実行すると、エラーが発生する場合があります。
gksudo(KDEではkdesudo)はrootユーザーとしてアプリを実行するため、変更されたファイル権限はユーザーのファイルではなく、ルートのファイルに対して行われます。 gksudo/kdesudoなしでこれらのアプリを再度実行すると、常に期待どおりの動作が得られます。
現在の答えは正しくありません。 buntu RootSudo wiki によると:
「通常のSudoを使用して、グラフィカルアプリケーションをrootとして起動しないでください。そのようなプログラムを実行するには、gksudo(Kubuntuではkdesudo)を使用する必要があります。gksudoはHOME =〜rootを設定し、.Xauthorityをtmpディレクトリにコピーします。これにより、ホーム内のファイルが防止されますルートが所有するディレクトリになります(AFAICT、これは、gksudoとSudoで開始されたプロセスの環境について特別なことです)。