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