sudoeditコマンド

別のユーザー(通常はroot)として安全にファイルを編集します。

概要

sudoeditsudo -eとしても使用可能)は、ユーザーが自分のエディタ設定を使いながら、昇格した権限でファイルを編集することを可能にします。エディタに直接sudoを使用する場合と異なり、sudoeditはファイルの一時的なコピーを作成し、お好みのエディタで編集させた後、適切な権限で元の場所にコピーし直します。

オプション

-u, --user=user

ファイルを編集するユーザーを指定します(デフォルトはroot)

$ sudoedit -u www-data /var/www/html/index.html

-H, --set-home

HOME環境変数を対象ユーザーのホームディレクトリに設定します

$ sudoedit -H /etc/ssh/sshd_config

-C, --close-from=num

num以上のすべてのファイルディスクリプタを閉じます

$ sudoedit -C 3 /etc/hosts

-h, --help

ヘルプメッセージを表示して終了します

$ sudoedit -h

使用例

システム設定ファイルの編集

$ sudoedit /etc/ssh/sshd_config
[デフォルトのエディタがファイルを開きます]

複数のファイルを一度に編集

$ sudoedit /etc/hosts /etc/resolv.conf
[デフォルトのエディタが各ファイルを順番に開きます]

特定のユーザーとして編集

$ sudoedit -u postgres /etc/postgresql/13/main/postgresql.conf
[デフォルトのエディタがファイルを開き、変更はpostgresの所有となります]

ヒント:

お好みのエディタの設定

sudoeditはEDITORまたはVISUAL環境変数を使用して、どのエディタを使用するかを決定します。シェルプロファイルでこれらを設定してください:

$ echo 'export EDITOR=vim' >> ~/.bashrc
$ source ~/.bashrc

セキュリティ上の利点

システムファイルを編集する際は、sudo vimではなく常にsudoeditを使用してください。これにより、エディタのプラグインや設定が昇格した権限でコードを実行する可能性があるセキュリティ問題を防ぎます。

一時ファイルの場所

sudoeditはデフォルトで/tmpに一時ファイルを作成します。非常に大きなファイルを編集する必要がある場合は、/tmpパーティションに十分な空き容量があることを確認してください。

よくある質問

Q1. sudoeditsudo vimの違いは何ですか?

A. sudoeditはファイルの一時的なコピーを作成し、通常のユーザー権限で編集した後、昇格した権限でコピーし直します。sudo vimはエディタ全体をroot権限で実行するため、エディタにコードを実行する可能性のあるプラグインや設定がある場合、セキュリティリスクとなる可能性があります。

Q2. どのエディタを使用するかを指定するにはどうすればよいですか?

A. シェルプロファイル(例:~/.bashrcの中のexport EDITOR=nano)でEDITORまたはVISUAL環境変数を設定します。

Q3. sudoeditで複数のファイルを一度に編集できますか?

A. はい、編集したいすべてのファイルをリストするだけです:sudoedit file1 file2 file3

Q4. 元のファイルを表示する権限がない場合はどうなりますか?

A. 通常のユーザーがファイルを読めなくても、そのファイルを編集するためのsudo権限があれば、sudoeditは正常に動作します。

参考資料

https://www.sudo.ws/docs/man/sudoedit.man/

改訂履歴