viにログインし、変更を加え、最初にsudoを忘れた-今何を


11

viエディターを使用して、Ubuntu Linuxコンピューターの構成ファイルに長い変更を加えました。残念ながら、私は最初にsudoを忘れていたので、今はエディタにいますが、権限がないために変更を保存できません。その端末でユーザーを遡ってsudoできますか、それとも何をするのが最善の行動でしょうか?


回答:


11

この場合、でファイルに書き込みます:w /tmp/tmpfile。次に、外に出て、/tmp/tmpfilesudo権限で古いファイルに移動します。


これは私がやろうとしていることですが、wfaulkの答えが好きです..次回それを覚えたときにしか覚えていない場合!:)
quack quixote 2010

ファイルを移動するのではなく、コピーしてください。移動すると、ファイルのモード(権限)がデフォルト(おそらく666であり、「umask」の逆とのANDがとられます)に置き換えられ、ファイルの所有者がUIDに置き換えられます(「ルート」でしたね)。そしてハードリンクを壊します。vi
スコット

いくつかの問題:(1)ファイルが機密であると想定されており、「umask」が(66ではなく)22である場合、この手順により、/tmpディレクトリを監視している可能性がある他のユーザーにファイルの内容が公開されます。(2)システムに本当に悪意のあるユーザーがいる場合、/tmp/tmpfileそれを(からvi)作成したときと、編集していたシステム構成ファイルにコピーしたときに、ユーザーが入れ替わることがあります。一時ファイルを、自分だけがアクセスできるディレクトリに置く方が安全です。
スコット

40

SOから:

:w !sudo tee %

私は実際、この方法を使用してより頻繁にそれを実行していることに気づきました:

:%!sudo tee %

私は何をするか知っているので、もう少し直感的だと思います:%!が、私は内臓を理解していません:w !。また、それは間の非常に重要なスペース欠場するのは簡単だw!


3
直感に役立つ場合は、viコマンドが複数の文字になる可能性があるため、理論的には「wfoo」コマンドが存在する可能性があるため、「」というファイルに書き込む場合fooは「:w foo」と言う必要があります。つまり、「:w」の後にスペースが必要です。「:w !」に関する限り、「」が何であるか知っていますよ:!ね?「:!date」は「date」コマンドを実行します。したがって、「:w !xyz」はバッファを書き込みますが、ファイルではなくコマンドに書き込みます。
スコット

現在の既存の回答はかなり長い回避策であるので、これは受け入れられた回答にする必要があります。OP?
bschlueter 2015年

@スコットは説明をありがとう!Tシャツとは何%ですか?
CodyBugstein

@CodyBugstein:こんにちは。(1)6年前のコメントの著者に連絡をとると、人が立ち去って戻ってこないことがあるので、どこにも行かないことがよくあります。しかし、私は自分のコンピューターにつながっています。私はおそらく永遠にここにいるでしょう。(またはそうでないかもしれません。)(2)研究を試みましたか?「ティー」に関する情報を簡単に見つけられるはずです。(% 難しいかもしれません。)(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。…(続き)
スコット

-2

別のターミナルを開いて一時的にファイルのアクセス権を変更できませんか?


1
これは悪い考えです。おそらく大きなセキュリティの問題になることは決してないでしょうが、それは問題である可能性があり、より適切で単純な解決策があります(一時ファイルへの書き込みなど、:w !sudo tee % solutionwfaulkが投稿した
dbr
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.