web-dev-qa-db-ja.com

ルート以外のディレクトリにあるルート所有ファイルをsudoedit

Rootが所有しているファイルを編集できないのはなぜですか。私の個人的なディレクトリのどこかに、それは言う:

sudoedit: existingFile: editing files in a writable directory is not permitted

次の関数を定義していますが:

function sunano {
    export Sudo_EDITOR='/usr/local/bin/nano'
    sudoedit "$@"
}

そして、私はこのように編集します:

sunano existingFile

ファイルが本当にrootによって所有されている場合:

ls -l existingFile

証明:

-rwxr-xr-x 1 root root 40 Jun 15  2015 existingFile
5

manpage は言う

呼び出し元のユーザーが書き込み可能なディレクトリにあるファイルは、そのユーザーがroot(バージョン1.8.16以降)でない限り編集できません。

ファイルを含むディレクトリに書き込むことができる場合は、sudoeditを必要とせずに実際に編集できます(ただし、現在の内容を読み取ることができない場合があります)。ファイルを移動して作成できます。同じ名前の新しいファイル。特定のケースでは、ファイルを読み取ることができます。少なくとも一部のエディターで編集できることを確認してください(少なくとも一時ファイルを作成してファイル名を変更してファイルを保存するエディター)。

この機能の背後にある理由は Sudoバグ707 にあります。基本的に、ユーザーがsudoeditで書き込み可能なディレクトリ内のファイルを編集できるようにすると、 sudoeditの構成で設定された制限(およびシステム上のファイルを効果的に編集)。

6
Stephen Kitt