sudo って便利。今更ながら気づいて、転向した。

と、言っても sudo 単体ではそれ程便利な訳じゃない。

実例

何が便利なのか。キーストローク量を減らす。これに尽きる。

でも、単純に sudo すると便利って事ではない。zsh などシェルの環境とセットと なった時の話となる。

具体的には zsh の predict-on を有効にした環境で使う。これ。

どう便利なのか。2 つの面がある。1 つは同様の作業を繰り返す場合、 ヒストリから素早く補完されること。例えば、システムの更新作業。

su で root になり、以下を実行するとする。

# apt-get update
# apt-get upgrade
# apt-get clean

最初に前回の履歴まで延々戻るか、前半を手入力して、後半のみ編集するかになる。

でも、sudo を使うと

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get clean
  1. s までの入力で sudo で始まる履歴でコマンドライン全体を補完してくれる。
  2. ヒットしない場合、ap~p として ap で始まる行を履歴からさがせる。
  3. sudo apt-get まで確定後に u と入れると update か upgrade が補完される
  4. 続けて d か g を入力すると update か upgrade が確定する

それぞれの段階で意図する行になっていたら、それ以上の入力は不要。 2 ~ 3 文字の入力。最大でも 6 文字程度の入力で実行したいコマンド行が 実行できる。

環境

前述のとおり、 zsh で predict-on を有効にしている。 ちょっとクセがあって、慣れるまで時間がかかるが、その価値はある。

また、root の環境はなるべくいじりたくないってのもある。 何かの時に使えなくなると困るから。 その点でも、一般ユーザのままでいることは目的に合っている。

root のシェルである bash もいろいろ機能強化がされているが、 まだ zsh が便利。

また、ヒストリを一般ユーザ側で持っているので、過去に実行した コマンドを探すのに root にならずに済むってのも、使う場面があるかもしれない。

設定

Debian の標準ではインストールされていない。まず、sudo パッケージを インストールする。

設定は visudo コマンドで行う。

# visudo

sudo の設定ファイルが開かれる。デフォルトの状態では sudo グループに 権限が設定されている。

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

取り合えず、何も書き換えずに終了する。

一般ユーザのうち、root 権限を持たせたいユーザを sudo グループに加える。

# gpasswd -a USER sudo

これで USER ユーザが sudo で root 権限で実行できるようになる。

感想、または言い訳

sudo なんて wheel グループみたいな物だよなぁ。 wheel グループも結局 Linux では否定されてるし。

そう、思っていた。いままでは。

でも、単純に便利なので使う事にした。

前述したとおり、zsh あってこそなのだが。