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


25

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

最近~/.viminfoUbuntu 16.04(Xenial Xerus)のかなり新しいインストールで自分がrootによって所有されていることに気づいたので、Vimでさえもグラフィカルであると考えられているのか、呼び出しに他の問題があるのか​​疑問に思いましたsudo vim。所有権を自分に変更した後:

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

その後実行 すると、root sudo vim~/.viminfo所有できませんでした。ただし、最近はルートが所有していたことは確かです。

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



1
sudoを使用せずにvimを使用することもできます。ファイルの保存に関しては、次のように使用できます:w !sudo tee %
ChatterOne

回答:


22

はい、安全です。

問題sudo geditは、GUIアプリケーションがなどの特定のファイルを使用し~/.cache/dconf、昇格後にgeditそのファイルがルート所有になるためです。まあ、その特定のファイルには、デスクトップを含むGUIアプリケーションのユーザー固有の設定が含まれているため、システムがそれらの設定を読み取れない場合、それは悪いことです。IIRCユーザーは特定のデスクトップを起動できません。ユーザーの最近のファイルデータrecently-used.xbelも影響を受けます。

一方、Vimにはその問題はありません。GUI関連のデータベースは使用せず、には何も入れませんrecently-used.xbel。コンソール専用の目的で作成されましたが、gVimも存在します。実際、一部のシステムではVimが唯一のエディターの選択です。したがって、同じ問題を引き起こさないため、geditよりも安全です。どちらの場合もまだルートとして編集しているため、不適切な編集で問題が発生する可能性があります。

このブログ投稿によると:

初めてvimを使用すると、ファイル~/.viminfoが作成されます。sudo vim新しいシステムにインストールした後に初めてvimを使用~/.viminfoすると、所有者はデフォルトユーザーではなくrootに設定されます。

著者は問題につながる可能性があると指摘していますが、複雑なことは何もありません- chownファイルを自分自身に戻すだけです。

こちらもご覧ください:


6
vimは、他のユーザーの管理権限を制限しようとしているマルチユーザーシステムで安全ではないことに注意してください。ユーザーはsudo vim、rootとして実行されているvimのコピーを取得し、次に:!/bin/shルートシェルを取得するために使用できます。
マーク

3
@Markと、ユーザーがただやることを妨げるものは何sudo /bin/shですか?実際には、ユーザーが既にルートアクセス権を持っている場合、手の込んだトリックを使用する必要はありません。
セルギーKolodyazhnyy

7
/etc/sudoersファイル。あなたがする必要ありません%wheel ALL=(ALL) ALL- sudo設定はそれよりもはるかにニュアンスを可能にします。
マーク

1
@Mark OK、良い点-すべてのシステムが同じ設定を持つわけではありません。
セルギーKolodyazhnyy

ええと...ファイルが存在していても許可は変わりますか?管理者以外のユーザーアカウントにハッキングしたが、そのパスワードがわからないとします(シェルを開いたのかもしれません)。これは、にコピー/bin/bash~/.viminfoてsetuidを設定し、ユーザーが実行sudo vimしてルートにchownされるのを待つことができるということですか?
ChatterOne

15

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

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

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

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

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


4
これは、rootの代わりに独自のvim設定を使用する場合にはるかに優れています。
-NieDzejkob

2
これは、ルートとしてランダムなプラグインコードを実行したくない場合にも安全です(ただし、実行中のプラグインは悪意のある場合は多くの損害を与える可能性があるため、信頼できないプラグインを使用しないでください最初の場所)。
ケビン

2

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

Ask Ubuntuコミュニティの最近の一般的なコンセンサスは、以下を使用することです。

sudo -H gedit /path/to/filename

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


2

はい、使用しても安全sudo vimです。私が遭遇した問題は

  • sudo vim編集するには、ファイルを終了して再度開く必要があります。

  • ルートvimrcがデフォルトのルートであり、カスタマイズされた便利なものではありません。

bashrcファイルを正常に編集できない場合にvimが自動的にsudoを許可できるようにする関数を次に示します。

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
}

Ubuntuではsudo、デフォルトで$HOME環境変数が保持されます。つまり、カスタマイズされた.vimrc sudo vim 使用されます。またsudo vim、所有権が~/.viminforoot:rootに変更され、不便になります。
マリウスゲドミナス

受け入れられた答えはについてあなたに同意しませんviminfo
jeremysprofile

1

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


2
viをルートとして使用する場合、少なくとも1つの特定の例外があります。sudoパスを制御するファイル(/ etc / sudoers)は、viで編集しないでください。そのファイルには、コマンドvisudoを使用する必要があります。編集中のファイルを指定することさえしません。これは特別な場合です。
user628388

1

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

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

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


さまざまな開発者を信頼しないというこの議論は、少し不完全なようです。sudoedit /etc/apt/sources.list侵害されたプラグインがインストールされている場合、悪意のあるリポジトリを挿入し、次回アップデートを実行するときにルートアクセスを取得する可能性があります。同様のことが当てはまるルート保護されたファイルの長いリストがあると確信しています。そしてもちろん、すべてのウイルスがルートを必要とするわけではありません。ブラウザの拡張機能だけで銀行の詳細を取得できます。
GKFX
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.