筆者について
FreeBSDを通じてOSSにささかな貢献を。
- 日本xrdpユーザ会発起人
- xrdp developer
- FreeBSD developer
OSS活動をご支援いただける方を募集しています
2012-03-17 設定ファイルの編集などなど
■ sudo vim より sudoedit を使うべき理由
Linux や FreeBSD を使っていて、設定ファイルを書き換える際に root 権限が必要な場合に sudo vi(m) や sudo emacs を実行してしまう人は少なくないと思います(「"sudo vi" 自宅サーバ」などで検索すると山ほど出てくる。昔は自分もよくやってました)。
しかし sudo で vim や emacs などのエディタを起動するべきではない理由がいくつかあります。そして、代わりに sudoedit を使うと嬉しいことがあります。
- 自分の .vimrc や .emacs を使用できる
- ユーザの権限の昇格を厳密に管理できる
2つ目のセキュリティ上の理由は説明されることが多いので後でさらっと流します。
自分の .vimrc や .emacs を使用できる
例えばこれは FreeBSD の /etc/rc.firewall を sudo vim で開いた例です。
なんかモノクロでしょぼいです。これは sudo で vim を起動すると root の .vimrc を見に行くためで、/root/.vimrc が存在しないと寂しい表示になります。ところが sudoedit を使うと、以下のように自分が育ててきた .vimrc を読み込んでくれるのでハイライト表示や行数、文字コード、改行コードなどが表示されて便利です。
これだけで sudoedit を使う価値があります。自分の好みのエディタを環境変数 EDITOR にセットするよう .bashrc や .zshrc などに書くのを忘れずに。
ユーザの権限の昇格を厳密に管理できる
はい、2つ目。
EDITOR=vim
の場合に
$ sudoedit /etc/sysctl.conf
などとして、vim 上で :sh などを実行しても root のシェルは起動できません。sudo vim の場合と比べてみてください。
これがどうしてセキュリティ上嬉しいのかは他所で調べてください。
■ sudoedit を忘れてユーザ権限で設定ファイルを編集してしまったときの小技
環境変数 EDITOR=vim となっていると仮定します。
設定ファイルの内容を less や lv で確認しています。
$ less httpd.conf
設定ファイルの見ていると、編集したくなったので less コマンドを実行中に v を押してエディタを起動します。 編集が終わり、一仕事終えて :wq で保存して終了しようとすると、このエディタはユーザ権限で実行しているので…
Read-only file, not written; use ! to override.
と言われてて保存できません。
sudo で root に昇格できるなら、そんなときは
:w !sudo tee % # "w" と "!" のあいだに半角スペースがあります
で保存できます。便利便利。