web-dev-qa-db-ja.com

Vimはsudoと組み合わせて使用​​しても安全ですか?

このリンクで で説明されているように、Sudoのようなグラフィカルアプリケーションでgeditを使用することはお勧めできません。したがって、vimSudoとともに使用する傾向があります。

最近、~/.viminfobuntu 16.04 (Xenial Xerus)のかなり新しいインストールでrootによって所有されていることに気付きました。 Sudo vimの呼び出しに関するその他の問題。所有権を自分に変更した後:

Sudo find $HOME -not -user $USER -exec chown $USER:$(id -g) {} +

その後、Sudo vimを実行しました~/.viminfoをルートで所有することができませんでした。しかし、私はそれが最近rootによって所有されていたと確信しています。

Sudo vimを呼び出すことはお勧めできませんか?

24
H2ONaCl

はい、安全です。

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ファイルを自分自身に戻すだけです。

こちらもご覧ください:

22

sudoeditを使用してこれを達成することもできます。それはあなたのエディターがあなたのように実行されている状態で、エディターでファイルの一時的なコピーを開きます。 manページ から:

  1. 所有者を呼び出し側ユーザーに設定して、編集するファイルの一時コピーが作成されます。

  2. ポリシーで指定されたエディターが実行され、一時ファイルが編集されます。 sudoersポリシーは、Sudo_EDITORVISUAL、およびEDITOR環境変数を(この順序で)使用します。 Sudo_EDITORVISUAL、またはEDITORのいずれも設定されていない場合、エディターにリストされている最初のプログラム sudoers(5) オプションが使用されます。

  3. 変更されている場合、一時ファイルは元の場所にコピーされ、一時バージョンは削除されます。

これはvimでうまく機能します(私は通常これを行います)。geditも使用できると思います。 セキュリティ制限 があります。

14
GKFX

リンクは非常に古い(2013)。グラフィカルアプリケーションにはgksudoまたはgksuを使用することをお勧めしますが、どちらも廃止されています。後で受け入れられた答えは、Sudo -Hも提案しています。

Ubuntuコミュニティでの一般的なコンセンサスは最近使用することです:

Sudo -H gedit /path/to/filename

唯一の問題は、Sudoにタブ設定、拡張機能、ワードラップ、フォント名、フォントサイズなどのプロファイルがないことです。次のようなラッパースクリプトを使用して、ユーザープロファイルからこれらを継承できます。 ルートgeditをユーザーgeditの設定と同期するにはどうすればよいですか?

2

はい、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
}
2
jeremysprofile

Rootとしてviを使用しても構いません。ネットワークインターフェイスファイルを変更したり、sshd構成ファイルを編集したりするなど、Sudoまたはルート権限を必要とするファイルを編集する必要がある場合があります。グラフィカルなものにルートを使用するのは、人々がIRCに接続したり、ルートとしてWebを閲覧したりするため、不適切です。その間にウイルスに感染した場合、完全なルートアクセスが許可されます。

1
The Letter M

他の回答で言及されていないことは、rootでvimを実行すると、インストールしたプラグインにroot権限が付与されるということです。そのため、rootとして実行しても安全かどうかの問題は、それらのプラグイン開発者(またはプロジェクトの貢献者)がシステムをコアに所有していないと信じるかどうかによって異なります。

Vimは通常、すべてのLinuxディストリビューションのパッケージメンテナーによって検証されているため、信頼するのは簡単です。ただし、vimプラグインは通常、GitHubリポジトリから直接インストールされ、通常、監査するユーザーがはるかに少なくなります(nilの可能性があります)。言い換えれば、彼らとの審査プロセスはありません。

Rootでプラグインをロードしない場合、rootとして実行するかどうかは、vim開発者を信頼するかどうかに依存すると思います。ただし、とにかくルートアクセスで既に信頼しているSudoの同じ開発者によって作成されたsudoeditを使用することで、それらを信頼する必要をスキップできます。 GKFXとNieDzejkobは、sudoeditが理想的な理由をすでに述べています。 Sudoの開発者以外の誰にもrootアクセスを信頼する必要がないという点に加えて、すでに信頼しているすべてのプラグインを通常のユーザーアカウントで読み込むことができます。

0
JoL