回答:
この場合、でファイルに書き込みます:w /tmp/tmpfile
。次に、外に出て、/tmp/tmpfile
sudo権限で古いファイルに移動します。
vi
/tmp
ディレクトリを監視している可能性がある他のユーザーにファイルの内容が公開されます。(2)システムに本当に悪意のあるユーザーがいる場合、/tmp/tmpfile
それを(からvi
)作成したときと、編集していたシステム構成ファイルにコピーしたときに、ユーザーが入れ替わることがあります。一時ファイルを、自分だけがアクセスできるディレクトリに置く方が安全です。
SOから:
:w !sudo tee %
私は実際、この方法を使用してより頻繁にそれを実行していることに気づきました:
:%!sudo tee %
私は何をするか知っているので、もう少し直感的だと思います:%!
が、私は内臓を理解していません:w !
。また、それは間の非常に重要なスペース欠場するのは簡単だw
と!
。
vi
コマンドが複数の文字になる可能性があるため、理論的には「wfoo
」コマンドが存在する可能性があるため、「」というファイルに書き込む場合foo
は「:w foo
」と言う必要があります。つまり、「:w
」の後にスペースが必要です。「:w !
」に関する限り、「」が何であるか知っていますよ:!
ね?「:!date
」は「date
」コマンドを実行します。したがって、「:w !xyz
」はバッファを書き込みますが、ファイルではなくコマンドに書き込みます。
%
ですか?
%
難しいかもしれません。)(3)わかりました、少しお手伝いします。 tee
複数の場所に情報を書き込むことができるプログラムです。たとえばdate | tee cody
、現在の日付と時刻をcody
…(続き)というファイルに書き込みます
date | tee cody > bugstein
は、現在の日付と時刻をと呼ばれるファイルとcody
と呼ばれるファイルに書き込みますbugstein
。—分かりsudo
ますか?別のユーザー(通常はroot)の特権でコマンドを実行できます。たとえば、にls /root
アクセスできないため、通常はが失敗し /root
ます。しかし、sudo ls /root
動作します。— Unixが機能する方法の不幸な副作用は、にsudo ls /root > /root/cody
アクセス/root
できないため、に書き込めないために失敗することです /root/cody
。…(続き)