sudo -eとsudo vimの違いは何ですか?

sudo -eとsudo vimの違いは何ですか?

sudo -e間に大きな違いはありますかsudo vimsudoersvimがデフォルトエディタになるようにファイルを設定しました。 2つの間に主な違いがありますか?またvim、から切り替える必要がありますかrvim?試しましたが、設定ファイルにいくつかの問題があります。

答え1

最大の違いはWHO編集文書。

sudo vim認証が成功したと仮定)、rootユーザーはvimを呼び出し、その場所でファイルを編集します(root環境とvimスワップファイルは編集中のファイルと並列です)。

sudoを呼び出すユーザーsudo -eまたはsudoedit自分の環境にいるユーザーが自分が所有するファイルの一時コピーを編集します(例:~/.vimrc)。ユーザーが出力を保存すると、一時ファイルの内容はユーザーに編集権限を持たない元のファイルにコピーされます。この方法には、特定の状況で編集を防ぐためのいくつかのチェックも含まれています。

  1. ユーザーがシンボリックリンクを編集しようとしています。
  2. ユーザーはシンボリックリンクを含むパスを使用してファイルを編集しようとします。
  3. ユーザーには、ファイルを含むディレクトリに対する書き込み権限があります。

なぜこれらの特定の規則が厳しく適用されるのかわかりません(セキュリティの問題のようなものです)。

PSユーザーは、sudoの編集モードを使用してデバイス特殊ファイル(ブロックデバイス、シリアルデバイスなど)を編集することもできません。

編集:vimをrootとして実行しないもう1つの結果は、ユーザーがrootで任意のコマンドを実行するためにこの方法でvimのシェル機能を使用できないことです。これにより、ユーザーは王国にキーを渡すことなく、sudoersルールを使用して特定のファイルを編集できます。

答え2

1つの主な違いがあります。を使用すると、sudo -eエディタはrootではなくユーザーとして実行されます。を使用するsudo vimと、エディタがrootとして実行されます。これはいくつかの結果をもたらします。 1つは、を使用するとsudo -e独自のエディタ設定を取得できること、もう1つはを使用するとルート所有sudo -eファイルを変更するリスクがないことです。sudo -eまた、ユーザーがrootとして他のものを実行するのを防ぎます(ほとんどのエディタはシェルを起動できるからです)。

デフォルトでは、を使用するとsudo -eルート(複数の検査によるルートエスケープの防止)、ユーザーが実際にファイルを編集するために対話するすべては、ユーザーとして実行されます。を使用すると、sudo vimすべてがrootとして発生し、ユーザーはrootとして必要なすべての操作を効果的に実行できます。

また、見ることができますGnu / LinuxのGUI(およびCLI)でシステムファイルをrootとして正しく編集するには?

関連情報