質問: sudoedit:なぜsudo viで使用するのですか? man page によると:sudoedit /etc/file ファイルのコピーを作成して現在のユーザーとして開き、保存時に既存のファイルをコピーで上書きします。一方sudo vi /etc/file ルートとしてファイルを開きますmanページには、sudoeditはsudoとは異なると記載されています。 エディターは、呼び出し元のユーザーの環境を変更せずに実行されます もしそうなら、最初の方法はより安全ですか?なぜですか? sudo viの代わりにsudoeditを使用する他の理由はありますか?
回答: まったく関係のないものを探しているときにこの質問に出くわしましたが、これまでに言及されていない次の重要な違いを付け加えようと思いました:sudoeditはエディターをrootとして実行しません。 $ sudo vim /etc/farts.conf rootとしてvimを実行するだけで、ファイルを読み取ることができます。欠点は、エディターもrootとして実行され、何でもできることです。ユーザーが設定ファイルを編集できるようにしたいだけの場合は、システム全体にrootを付与するだけです。 :shまたは:!commandを使用してvimからシェルを生成することを妨げるものは何もありません。それらはサブプロセスであるため、ルートとしても実行されます。一方:$ sudoedit /etc/farts.conf 実際には動作が異なります。/tmpに一意の名前でコピーを作成し、ユーザーのみにアクセス権を制限し、そのコピーに対してroot権限なしで通常どおりエディターを起動します。エディターを終了すると、一時ファイルと元のファイルが比較され、元のファイルが変更された場合は安全に元のファイルに置き換えられます。このシナリオでは、ユーザーがシステムファイルを編集できるようにすることが可能になりますが、ファイルシステムのあらゆる場所でrootまたはpokeとしてランダムバイナリを実行することはできません。それは主に実際の違いであり、言及されている残りは単なるきちんとした副作用です。