私はVimでスクリプトを作成していて、sudoedit
を使い始めたところです。
問題は、私が:w
一時ファイルに書き込むため、エディターを終了しない限り、スクリプトのテストは実行できません。
オリジナルの更新を強制するにはどうすればよいですか、またはsudoedit
のポイントが欠落していますか?
sudoedit
を使用すると、独自のユーザーIDで実行されているエディターを使用してファイルを編集できます。ファイルを一時ファイルにコピーし、エディターが書き込めるようにします。エディタを閉じるとすぐに、編集したファイルがコピーされます。
エディターの実行中に変更を自動的に書き戻す組み込みの可能性はありません。
だからあなたはどちらかが必要です
Sudo vi /file/to/edit
)Sudo cp /tmp/... /file/to/edit
)にコピーするか、vim :!Sudo cp % /file/to/edit
内からコピーします。 vimから、:sh
でシェルを開始するか、Ctrl + Zでvimをバックグラウンドに置いてfg
で復元することもできます。sudoedit
を作成します。これは、いくつかのスクリプトで簡単に実行できるはずです。 Inotifyは、変更を検出するのに役立ちます(たとえば、 bashスクリプトをファイルにフックできますか? を参照してください)あなたはsudoeditのポイントを逃していますが、マニュアルはそれを説明していないので心配しないでください。
ほとんどのエディターには、シェルエスケープがあります(例::Shell
in vimを使用すると、Sudoでそのような権限がない場合でも、ルートシェルを取得できます。これは「特権昇格」と呼ばれ、悪いことです。
sudoedit
コマンドは、次と同等の機能を実行します。
# cp source-file /tmp/some-temporary-name
$ ${EDITOR} /tmp/some-temporary-name
# cp /tmp/some-temporary-name source-file
# rm /tmp/some-temporary-name
エディターはrootではなくユーザーとして実行されるため、特権の昇格にエディターを使用できないことに注意してください。
非常に寛容なSudo権限を持っている場合(ディストリビューションによってはシングルユーザーマシンでよくあることですが)、次のことができます。
$ Sudo vim source-file
必要な動作を取得します。