一度sudoedit
ファイルを作成しました。
$ sudoedit /etc/systemd/system/apache2.service
ただし、ファイルを保存しようとすると、一時ディレクトリ(/var/temp/blahblah)にファイルが書き込まれます。どうしたの?なぜシステムディレクトリに保存しないのですか?
答え1
その目的sudoedit
は、権限のないエディタを実行するときに許可されていないファイルをユーザーが編集できるようにすることです。これを行うには、sudoedit
編集するファイルを一時的な場所にコピーし、要求したユーザーが書き込むことができるようにし、構成されたエディタで開きます。これがエディタが一時ディレクトリに関係のないファイル名を表示する理由です。エディタが終了したら、sudoedit
実際に変更があったことを確認し、必要に応じて変更された一時ファイルを元の場所にコピーし直します。
答え2
これはでよく説明されています。sudo
マンページ。説明-e
(sudoedit
同等)は次のように言います。
-e
(編集)オプションは、
-e
ユーザーがコマンドを実行するのではなく、1つ以上のファイルを編集したいことを示します。sudoedit
セキュリティポリシーを照会するときは、コマンドの代わりに ""文字列を使用してください。ユーザーがポリシーによって承認されている場合は、次の手順を実行します。
- 一時コピーは編集するファイルで構成され、所有者は呼び出し元ユーザーに設定されます。
- ポリシーで指定されたエディタを実行して一時ファイルを編集します。この
sudoers
戦略ではSUDO_EDITOR
、VISUAL
およびEDITOR
環境変数を順番に使用します。SUDO_EDITOR
、VISUAL
または両方が設定されていない場合、EDITOR
エディタオプションにリストされている最初のプログラムが使用されます。sudoers(5)
- 変更すると、一時ファイルは元の場所にコピーされ、一時バージョンは削除されます。
指定したファイルがない場合は作成されます。実行されるほとんどのコマンドとは異なり、エディタは、呼び出す
sudo
ユーザーの環境が変更されていない状態で実行されます。何らかの理由でsudo
ファイルを編集バージョンに更新できない場合、ユーザーは警告を受け、編集されたコピーは一時ファイルに残ります。
第三段階に特別な注意を払ってください。編集が完了すると、変更されたファイルのみが元の変更です。したがって、ファイルを監視するプログラムがある場合、これは(a)中間書き込みが選択されるのを防ぎ、(b)最終的に変更しないことを決定した場合に不要な作業を回避するのに役立ちます。