私はコミュニティの「RootSudo」ドキュメントを読みましたが、この行に興味があります。
通常のsudoを使用してグラフィカルアプリケーションをルートとして起動しないでください。
どうして?違いはなんですか?私は普通のデスクトップユーザーなので、簡単な説明を入力してください。
私はコミュニティの「RootSudo」ドキュメントを読みましたが、この行に興味があります。
通常のsudoを使用してグラフィカルアプリケーションをルートとして起動しないでください。
どうして?違いはなんですか?私は普通のデスクトップユーザーなので、簡単な説明を入力してください。
回答:
グラフィカルアプリケーションは、多くの場合、ユーザーのホームフォルダー内に書き込まれた構成ファイルに設定やユーザー固有のデータを保存します。ユーザーのホームフォルダーがHOME
環境変数であるため、アプリケーションが使用するものを決定するためにアプリケーションが使用する主なメカニズム。(を使用して自分で検査できますecho $HOME
)。
gedit
として実行しているとします(グラフィカルテキストエディター)root
。を実行するsudo gedit
と、プログラムがとして実行されている場合でも、ホームディレクトリHOME
を指し続けます。そのため、設定ファイルを書きますと自分のホームディレクトリにコピーします。これにより、構成ファイルが所有され、アクセスできなくなります(後でプログラムをとしてではなく、自分で実行する場合)。これは主に、アプリケーションが新しい構成ファイルを作成する必要がある場合に発生します。新しく作成されたファイルは、デフォルトでは、それらを作成したユーザー(この場合はあなたではなく)が所有します。root
gedit
root
root
root
root
それsudo
が、ストレートではなくグラフィカルなフロントエンドでグラフィカルなアプリケーションを実行する主な理由ですsudo
。Ubuntuおよびその派生物のほとんど(XubuntuおよびLubuntuを含む)では、標準のグラフィカルフロントエンドはgksu
/gksudo
です。Kubuntuではそうですkdesudo
。(使用されているデスクトップ環境によって異なります。)
あなたがいる場合したい使用するsudo
グラフィカルアプリケーションなどを実行するために、直接gedit
、次のコマンドを実行します。
sudo -H gedit
この-H
フラグは、のホームフォルダー()を指すようにsudo
設定HOME
しroot
ます/root
。
それでも.Xauthority
、一時フォルダにコピーして所有権を自動的に処理することはできません(これは、グラフィカルsudo
フロントエンドが面倒を見るもう1つのことです)。しかし、.Xauthority
アクセスできないまれなイベントでは、エラーがあることを示すエラーが表示されます。その後sudo rm ~/.Xauthority
、自動的に再生成されるため、問題を削除()することで修正できます。したがって、.Xauthority
の所有権と許可を保護することは、構成ファイルの所有権と許可を保護することほど重要ではありません。
root
-owned とは対照的に、.Xauthority
構成ファイルがとして所有されるようになるとroot
、問題が何であるかが必ずしも明確ではありません(グラフィカルプログラムが頻繁に実行されますが、うまく機能せず、有用なエラーをコンソールに出力するため)。また、特にホームディレクトリ内の1つ以上のファイルを自分以外の誰かが所有する状況にある場合は、修正するのがさらに面倒です(chown
すべてのファイルを再帰的に実行するだけでは修正できないため)自分に戻ります)。
したがって、アプリの内部動作に精通しており、設定ファイルを書き込もうとしないことが確実である場合を除き、グラフィカルアプリケーションの実行にsudo
(少なくともなしで-H
)使用しないでください。
sudo chmod -R $USER:$USER ~
sudo chmod -R $USER ~
chmod
実際にそれをしますか?私はいつもそれがchown
それだと思っていました。chmod
私のためにやったことはありません。
chown
でchmod
はなく、間違いなく書くべきでした。ごめんなさい-これを指摘してくれてありがとう!
sudo -H echo $HOME
、あなたのシェルが-ないルートとして、あなたのように実行している-実行パラメータ展開上を$HOME
、のパス取得あなたのホームディレクトリを、そして通過するにsudo
順番に既に展開された値に渡され、echo
それを印刷し、。sudo -H printenv HOME
、sudo -H bash -c 'echo $HOME'
、およびsudo -H sh -c 'echo $HOME'
すべての印刷/root
。これは概念的には似ていますが、メカニズムは異なりますが、どのようにx=a echo "$x"
印刷しないかa
(x
既に値が設定されていない場合a
)です。
簡単に言えば:
これにより、ホームディレクトリ内のファイルがルートによって所有されるのを防ぎます。
代替gksu nautilus
とは、gksu gedit
使用することですnautilus-admin
アドオン。Nautilusを使用してファイルとディレクトリを参照し、それらをルート(管理者)として開くことができます。
インストールは簡単です。
sudo apt install nautilus-admin
これで、nautilusを使用しているときに、管理者として編集するための追加オプションがあります。
gedit
rootが設定を許可しないためgedit
rootとして実行する場合、タブストップの通常ユーザーとして設定した設定を使用したり、タブをスペース、フォント名、フォントサイズ、行の折り返しなどに変換することはできません。
これを解決するために、sgedit
ユーザー設定を継承してルートに適用するスクリプトを作成しました。ルートgeditをユーザーgeditの設定と同期するにはどうすればよいですか?
sgedit filename1 filename2 ...
sudo -H
ルート権限を取得しながら、ファイルの所有権を保持するために昇格します。sudo
がタイムアウトした場合にパスワードを要求します。gedit
端末プロンプトがすぐに再表示されるように、バックグラウンドタスクとして呼び出します。