コミュニティ「RootSudo」ドキュメント を読んで、この行に興味があります:
グラフィカルアプリケーションをルートとして起動するには、通常のSudoをnever使用する必要があります。
どうして?違いはなんですか?私は普通のデスクトップユーザーなので、簡単な説明を入力してください。
グラフィカルアプリケーションは、多くの場合、ユーザーの ホームフォルダー 内に記述された構成ファイルに設定やその他のユーザー固有のデータを保存します。ユーザーのホームフォルダーとして使用するものを決定するためにアプリケーションが使用する主なメカニズムは、HOME
環境変数 です。 (echo $HOME
で自分で調べることができます)。
gedit
(グラフィカルテキストエディター)を root
として実行しているとします。 Sudo gedit
を実行すると、プログラムがas HOME
を実行している場合でも、root
はyourホームディレクトリを指し続けます。その結果、gedit
は、構成ファイルas root
をホームディレクトリに書き込みます。これは 場合によっては結果として 設定ファイル内でowned by root
であり、したがって アクセスできない (後でroot
としてではなく自分でプログラムを実行するとき)。これは主に、アプリケーションが新しい構成ファイルを作成する必要がある場合に発生します。新しく作成されたファイルは、デフォルトでは、それらを作成したユーザー(この場合、あなたではなくroot
)が所有します。
それが、まっすぐなSudo
ではなくグラフィカルなSudo
フロントエンドでグラフィカルアプリケーションを実行する必要がある主な理由です。 Ubuntuおよびその派生物のほとんど(XubuntuおよびLubuntuを含む)では、標準のグラフィカルフロントエンドは gksu
/gksudo
です。 Kubuntuでは、 kdesudo
です。 (使用されている デスクトップ環境 に依存します。)
wantを使用してSudo
を直接使用し、gedit
などのグラフィカルアプリケーションを実行する場合、次を実行できます。
Sudo -H gedit
-H
フラグは、Sudo
がHOME
のホームフォルダー( /root
)を指すようにroot
を設定します。
.Xauthority
をtempフォルダーにコピーしても、所有権は自動的に処理されません(これはグラフィカルなSudo
フロントエンドが面倒を見てくれることです)。しかし、.Xauthority
にアクセスできないというまれなイベントでは、エラーがあることを示すエラーが表示されます。その後、自動的に再生成されるため、問題を削除して修正できます(Sudo rm ~/.Xauthority
)。したがって、.Xauthority
の所有権と許可を保護することは、構成ファイルの所有権と許可を保護することほど重要ではありません。
root
が所有する.Xauthority
とは対照的に、構成ファイルがroot
として所有されるようになると、問題が何であるかが必ずしも明確ではありません(グラフィカルプログラムが頻繁に実行されますが、非常にうまく機能せず、コンソールに有用なエラーを出力するため)。そして、それは修正するのに大きな手間がかかる場合があります。特にホームディレクトリ内の1つ以上のファイルを自分以外の誰かが所有したい場合(修正できないためです)すべてのファイルを再帰的にchown
ingして、自分自身に戻します)。
したがって、Sudo
(少なくとも-H
なし)を使用してグラフィカルアプリケーションを実行しないでくださいnlessアプリの内部動作に精通しており、設定ファイルを書き込もうとしないことを確認してください。
簡単に言えば:
これにより、ホームディレクトリ内のファイルがルートによって所有されるのを防ぎます。
読んでください こちら 。また、おそらく 「gksudo nautilus」と「Sudo nautilus」の違いは何ですか?
gksu nautilus
およびgksu gedit
の代わりに、nautilus-admin
アドオンを使用することもできます。 Nautilusでファイルとディレクトリを参照し、それらをルート(管理者)として開くことができます。
インストールは簡単です。
Sudo apt install nautilus-admin
これで、nautilusを使用しているときに、管理者として編集するための追加オプションがあります。
gedit
は設定を許可しませんgedit
をrootとして実行すると、タブストップの通常ユーザーとして設定した設定を使用したり、タブをスペース、フォント名、フォントサイズ、行の折り返しなどに変換することはできません。
これを解決するために、ユーザー設定を継承してルートに適用するスクリプトsgedit
を作成しました: ルートgeditをユーザーgeditの設定と同期するにはどうすればよいですか?
sgedit filename1 filename2 ...
を使用して呼び出しますSudo -H
に昇格して、ルート権限を取得しながらファイルの所有権を保持します。Sudo
がタイムアウトした場合にパスワードを要求します。gedit
を呼び出します。