ナノを使用しています。
時々、ファイルを変更して保存しようとした後、sudo権限が必要であることに気づくことがあります。その後、ファイルを閉じてsudoで再度開き、もう一度変更する必要があります。
保存する方法はありますか?同僚が保存せずにファイルを閉じてから「sudo!!」同じことを行い、変更を保存したことを覚えておいてください。
どのように動作しますか?
答え1
sudo !!
zsh
cshスタイルの履歴拡張を実装するか、などのシェルのコマンドは、最新のbash
コマンドを再実行しますが、その前にsudo
。その後、変更を続けて保存できます。ただし、最初に導入した変更は失われます。
nano
root以外のユーザーとしてエディタを使用しており、現在のファイルをrootとして保存する必要があるとします。その後、現在のバッファの内容をフィルタリングしてこれを実行できますsudo tee some/file/path
。このコマンドはtee
rootとして実行され、上のファイルを上書きまたは生成します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 nano
sudoedit
man sudoedit
sudoedit
このroot
機能を使用して、編集中のファイルの一時コピーを作成して$USER
コピーを編集できます()。編集が完了して一時ファイルが変更されたら、編集したいsudoedit
ファイルに一時ファイルをコピーします。