まったく関係のないものを探しているときにこの質問に出くわしましたが、これまでまったく言及されていなかった次の重要な違いを追加すると思いました:sudoedit はエディターをルートとして実行しません。
$ sudo vim /etc/farts.conf
vim をルートとして実行するだけで、ファイルを読み取れるようになります。欠点は、エディターが root としても実行され、何でもできるようになったことです。ユーザーに構成ファイルの編集だけを許可したい場合は、残念ながら root を与えただけです。 システム全体で。 :sh
を使用してvimからシェルを生成することを妨げるものは何もありません または :!command
、これらはサブプロセスであるため、root としても実行されます。
一方、
$ sudoedit /etc/farts.conf
実際には動作が異なります。 /tmp に一意の名前のコピーを作成し、パーミッションを自分のユーザーのみにロックダウンし、そのコピーに対して root 権限なしでエディターを通常どおり起動します。
エディターを終了すると、一時ファイルと元のファイルが比較され、元のファイルが変更されていれば、元のファイルが編集内容に安全に置き換えられます。
このシナリオでは、ユーザーがシステム ファイルを編集できるようにすることはできますが、ルートとしてランダム バイナリを実行したり、ファイル システムのどこにでもアクセスしたりすることはできません。
それは主に実際の違いであり、言及されている残りは単なる副作用です.
まず、sudo vim
$EDITOR
で定義されている場合は必要ありません。 . sudoedit
何かを編集するたびにエディターを定義する必要がなくなります。また、マルチユーザー システムでは、誰もが個人的に好きなエディターを使用できます。
どうして?通常のユーザーが sudo
しか得られないシステムを考えてみましょう 特定のファイルを編集するための特権。 sudo
の実行が制限されています しかし、他のものと。 sudo vi
を許可する必要があります と sudo vim
そして sudo nano
および sudo emacs
と sudo pico
(など)。そうする代わりに、単純に sudoedit
を許可することができます。 $EDITOR
の設定を選択したファイル 彼らが好きなものに。 (Emacs 愛好家に Vim の使用を強制すると想像してみてください…)
別の問題は、あなたの $EDITOR
vim
に設定されています 、ユーザーの .vimrc
にカスタマイズ設定があります sudo vim
を使用すると、これらの設定は使用されません または sudo $EDITOR
. sudoedit
ただし、呼び出し元のユーザーの環境、つまり設定は保持されます。
関連項目:sudoedit の優れている点は何ですか?