このリンクで で説明されているように、Sudo
のようなグラフィカルアプリケーションでgedit
を使用することはお勧めできません。したがって、vim
をSudo
とともに使用する傾向があります。
最近、~/.viminfo
が buntu 16.04 (Xenial Xerus)のかなり新しいインストールでrootによって所有されていることに気付きました。 Sudo vim
の呼び出しに関するその他の問題。所有権を自分に変更した後:
Sudo find $HOME -not -user $USER -exec chown $USER:$(id -g) {} +
その後、Sudo vim
を実行しました~/.viminfo
をルートで所有することができませんでした。しかし、私はそれが最近rootによって所有されていたと確信しています。
Sudo vim
を呼び出すことはお勧めできませんか?
はい、安全です。
Sudo gedit
の問題は、GUIアプリケーションが~/.cache/dconf
などの特定のファイルを使用し、昇格gedit
の後にそのファイルがルート所有になるためです。まあ、その特定のファイルには、デスクトップを含むGUIアプリケーションのユーザー固有の設定が含まれているため、システムがそれらの設定を読み取れない場合、それは悪いことです。 IIRCユーザーは特定のデスクトップを起動できません。ユーザーの最近のファイルデータrecently-used.xbel
も影響を受けます。
一方、Vimにはその問題はありません。 GUI関連のデータベースを使用せず、recently-used.xbel
に何も入れません。コンソール専用の目的で作成されましたが、gVimも存在します。実際、一部のシステムではVimが唯一のエディターの選択です。したがって、同じ問題を引き起こさないため、 gedit より安全です。どちらの場合もまだルートとして編集しているため、不適切な編集で問題が発生する可能性があります。
このブログ投稿 :によると
初めてvimを使用するとき、ファイル
~/.viminfo
が作成されます。また、Sudo vim
を使用して新しいシステムにインストールした後に初めて使用する場合、~/.viminfo
の権限は所有者はデフォルトユーザーの代わりにルートに設定されます。
著者は問題につながる可能性があると指摘していますが、複雑なことは何もありません-chown
ファイルを自分自身に戻すだけです。
こちらもご覧ください:
sudoedit
を使用してこれを達成することもできます。それはあなたのエディターがあなたのように実行されている状態で、エディターでファイルの一時的なコピーを開きます。 manページ から:
所有者を呼び出し側ユーザーに設定して、編集するファイルの一時コピーが作成されます。
ポリシーで指定されたエディターが実行され、一時ファイルが編集されます。 sudoersポリシーは、
Sudo_EDITOR
、VISUAL
、およびEDITOR
環境変数を(この順序で)使用します。Sudo_EDITOR
、VISUAL
、またはEDITOR
のいずれも設定されていない場合、エディターにリストされている最初のプログラムsudoers(5)
オプションが使用されます。変更されている場合、一時ファイルは元の場所にコピーされ、一時バージョンは削除されます。
これはvimでうまく機能します(私は通常これを行います)。geditも使用できると思います。 セキュリティ制限 があります。
リンクは非常に古い(2013)。グラフィカルアプリケーションにはgksudo
またはgksu
を使用することをお勧めしますが、どちらも廃止されています。後で受け入れられた答えは、Sudo -H
も提案しています。
Ubuntuコミュニティでの一般的なコンセンサスは最近使用することです:
Sudo -H gedit /path/to/filename
唯一の問題は、Sudo
にタブ設定、拡張機能、ワードラップ、フォント名、フォントサイズなどのプロファイルがないことです。次のようなラッパースクリプトを使用して、ユーザープロファイルからこれらを継承できます。 ルートgeditをユーザーgeditの設定と同期するにはどうすればよいですか?
はい、Sudo vim
を使用しても安全です。私が遭遇した問題は
ファイルを終了し、Sudo vim
で再度開いて編集できるようにする必要があります。
ルートvimrc
がデフォルトのルートであり、カスタマイズされた便利なものではありません。
ファイルを正常に編集できない場合に、vimが自動的にSudoを許可できるようにするbashrc
に追加できる関数を次に示します。
vim() {
#only good for auto-Sudo. delete if no Sudo privileges.
#If you're not just opening a single file, let's not use this.
if [[ "$#" -ne 1 ]]; then
command vim "$@"
#cases: if we can write to the file, or the file doesn't exist and we can make new files in that directory
Elif [[ -w "$1" || ( -w $(dirname "$1") && ! -f "$1" ) ]]; then
# \vim or 'vim' only escape aliases, not functions
command vim "$1"
else
Sudo env HOME="$HOME" vim -u $HOME/.vimrc "$1"
fi
}
Rootとしてviを使用しても構いません。ネットワークインターフェイスファイルを変更したり、sshd構成ファイルを編集したりするなど、Sudoまたはルート権限を必要とするファイルを編集する必要がある場合があります。グラフィカルなものにルートを使用するのは、人々がIRCに接続したり、ルートとしてWebを閲覧したりするため、不適切です。その間にウイルスに感染した場合、完全なルートアクセスが許可されます。
他の回答で言及されていないことは、rootでvimを実行すると、インストールしたプラグインにroot権限が付与されるということです。そのため、rootとして実行しても安全かどうかの問題は、それらのプラグイン開発者(またはプロジェクトの貢献者)がシステムをコアに所有していないと信じるかどうかによって異なります。
Vimは通常、すべてのLinuxディストリビューションのパッケージメンテナーによって検証されているため、信頼するのは簡単です。ただし、vimプラグインは通常、GitHubリポジトリから直接インストールされ、通常、監査するユーザーがはるかに少なくなります(nilの可能性があります)。言い換えれば、彼らとの審査プロセスはありません。
Rootでプラグインをロードしない場合、rootとして実行するかどうかは、vim開発者を信頼するかどうかに依存すると思います。ただし、とにかくルートアクセスで既に信頼しているSudoの同じ開発者によって作成されたsudoeditを使用することで、それらを信頼する必要をスキップできます。 GKFXとNieDzejkobは、sudoeditが理想的な理由をすでに述べています。 Sudoの開発者以外の誰にもrootアクセスを信頼する必要がないという点に加えて、すでに信頼しているすべてのプラグインを通常のユーザーアカウントで読み込むことができます。