sudo [duplicate]の使用を忘れた場合は、ファイルの変更を保存してください。

sudo [duplicate]の使用を忘れた場合は、ファイルの変更を保存してください。

ナノを使用しています。

時々、ファイルを変更して保存しようとした後、sudo権限が必要であることに気づくことがあります。その後、ファイルを閉じてsudoで再度開き、もう一度変更する必要があります。

保存する方法はありますか?同僚が保存せずにファイルを閉じてから「sudo!!」同じことを行い、変更を保存したことを覚えておいてください。

どのように動作しますか?

答え1

sudo !!zshcshスタイルの履歴拡張を実装するか、などのシェルのコマンドは、最新のbashコマンドを再実行しますが、その前にsudo。その後、変更を続けて保存できます。ただし、最初に導入した変更は失われます。

nanoroot以外のユーザーとしてエディタを使用しており、現在のファイルをrootとして保存する必要があるとします。その後、現在のバッファの内容をフィルタリングしてこれを実行できますsudo tee some/file/path。このコマンドはteerootとして実行され、上のファイルを上書きまたは生成しますsome/file/path

nanoエディタで+^R^Xを押してから、次のように入力してCtrl+Rこのフィルタを呼び出すことができます。Ctrl+X

|sudo tee some/file/path

(初期シグナルは現在の文書をコマンドに渡す|ことです。)nano

パスワードを求めるメッセージが表示されなければならない場合はsudoそうなります。これによりディスプレイが少し複雑になりますが、^L()を押してCtrl+L画面を再描画できます。

気づく注意する必要があります次のように書き込むファイルの正しいパス名を指定します。ファイルを元に戻せないように上書きされます。エディタバッファの内容として。ルートとして作成しているので、許可があなたを止めることはできませんデータの破損を防ぐために。したがって、これは知っておく価値がある「ハッキング」ですが、それに依存したくありません。

nanoバージョン2.9.8(2018)には、外部コマンドでテキストをフィルタリングする機能が追加されました。

答え2

この試み...

:w !sudo tee %

説明する...

  • :w- バッファの内容を書き込みます。
  • !sudo- sudoの標準入力にパイプします。
  • tee %– "%"ファイルを書き込むためのsudo実行ティー
  • %- Vimは「%」を現在のファイル名に展開します。

答え3

sudo !!最後のコマンド(!!)が呼び出されますsudo。それにもかかわらず、もう一度変更する必要があります(最後のコマンドが編集であると仮定)。

ファイルのサイズと機密性(機密情報、プレーンテキストパスワードなど)に応じて、ファイルを一時的な場所に保存してから検索できますsudo

セッションのサンプルコードvi:

:w /tmp/file.txt 
sudo vi /some/path/file.txt
:%d (this will delete all content of file.txt under sudo)
:r /tmp/file.txt (this will include from /tmp/file.txt )
:x (exit vi)
rm -f /tmp/file.txt (delete file)

注意/tmp/file.txtが公開されます。

答え4

一般的な解決策は、「変更されたファイルを許可された場所に書き込み、エディタを終了し、ファイルを正しい場所にコピー/移動」することです。

VISUALこのコマンドは、環境変数をEDITORお気に入りのエディタのフルパスに設定した場合に使用できます。type -p nanosudoeditman sudoedit

sudoeditこのroot機能を使用して、編集中のファイルの一時コピーを作成して$USERコピーを編集できます()。編集が完了して一時ファイルが変更されたら、編集したいsudoeditファイルに一時ファイルをコピーします。

関連情報