«前の日記(2012-03-16) 最新 次の日記(2012-04-02)» 編集

meta's blog - The Power To Serve

筆者について

FreeBSDを通じてOSSにささかな貢献を。

OSS活動をご支援いただける方を募集しています


2012-03-17 設定ファイルの編集などなど

sudo vim より sudoedit を使うべき理由

Linux や FreeBSD を使っていて、設定ファイルを書き換える際に root 権限が必要な場合に sudo vi(m) や sudo emacs を実行してしまう人は少なくないと思います(「"sudo vi" 自宅サーバ」などで検索すると山ほど出てくる。昔は自分もよくやってました)

しかし sudo で vim や emacs などのエディタを起動するべきではない理由がいくつかあります。そして、代わりに sudoedit を使うと嬉しいことがあります。

  1. 自分の .vimrc や .emacs を使用できる
  2. ユーザの権限の昇格を厳密に管理できる

2つ目のセキュリティ上の理由は説明されることが多いので後でさらっと流します。

自分の .vimrc や .emacs を使用できる

例えばこれは FreeBSD の /etc/rc.firewall を sudo vim で開いた例です。

%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2012-03-17+2.18.18.png

なんかモノクロでしょぼいです。これは sudo で vim を起動すると root の .vimrc を見に行くためで、/root/.vimrc が存在しないと寂しい表示になります。ところが sudoedit を使うと、以下のように自分が育ててきた .vimrc を読み込んでくれるのでハイライト表示や行数、文字コード、改行コードなどが表示されて便利です。

%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2012-03-17+2.21.05.png

これだけで 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" と "!" のあいだに半角スペースがあります

で保存できます。便利便利。