連載第14回
2014年2月2日
vi って何コレ使いにくい!

 前回、一般ユーザーIDを追加登録して、さらにそのユーザーをwheel管理者グループにも加えるところまで行きました。しかし管理者グループに属しているユーザーがroot権限を行使出来るように、設定ファイルをちょっぴり書き直す必要があって、その際に使うコマンドが「visudo」なんだそうな…。
 まずは何よりDTIのユーザーマニュアルを当たってみました。そこにあった解説はコチラ→「sudo設定」。しかしどうも初心者ユーザーにはすんなりと要点が掴めないというか、解説中にある

“visudo”コマンドにてファイルを編集します。
※”vi”コマンドと同じ要領で編集が可能です。

という文章の意味がしっくり来ないのは、つまり「vi」というコマンドのことを予め理解していることが前提になっているからですね。しかし初期設定ファイルを編集するというのは、コンピューターを使っていれば普通によくある事なので、まずは打ち込んでみようと思いました。

$ visudo

 そこで一般ユーザーIDでログインして、visudoと打ってみると拒否されたので「su -」でrootに上がって再度打ち込んでみて表示されたテキストにちょっと驚きました。なんだこれ。これが設定ファイルなんでしょうか?…全部コメントなんですけど。

ターミナル内でワープロ?

 参考記事などにはいずれも「ファイル中にある # %wheel ALL=(ALL) ALL という行を探して先頭の#を消して保存」とあるけれど、その行が何処にも見当たりません。ServersMan@VPSも近年せわしくサービス内容が変化しているから最近変更があったのか、あるいは僕のレンタルした「ブログセット」ではデフォルトでこうなっているのか不明ですが、自分の中で解釈すると今開いているファイルの最後にでも「%wheel ALL=(ALL) ALL」を書き加えて上書き保存すれば良いような気がします。しかし、その操作方法がまるで分からなくてキーをいろいろ打ち込んでいるうちにいよいよワケが分からなくなり、急いでネットで調べて「:q!」を打ち込んで「visudo」を強制終了させました…。むむぅ、これは使いにくい、間違って設定ファイルを上書き保存してしまいそうだ。

 改めてググってみたのですが「visudo」単体では詳しい結果が出て来なくて、これは要するに「vi」+「sudo」という意味らしい。先頭の「vi」というのが、ターミナル内で簡易エディタを起動するコマンドなのだとか。ターミナルの中でエディタ?まさかこんな機能があるとは。それにしても問題は、各参考記事は解ってる人が書いているからサラッと流しているけれど、編集方法や正しい保存・終了の仕方など、僕にはviにまつわるアレコレの基本操作方法が全く分からないということです。

日本語チュートリアル発見

 さらに調べていたら「viには日本語チュートリアルがある」という事を発見。何と「vimtutor ja」と打てばターミナル内で起動出来るらしい。早速試してみました。

$ vimtutor ja

 上の「ようこそ」の最後にJキーを押してカーソルを移動、とあるのですが、最初なぜJキーなのかその理由がまるで分かりませんでした。普通に矢印キー使っちゃだめなのかと。とりあえずここは指示に従ってJキーを連打し下方へ移動してゆくと、レッスン1.1が姿を現し、書かれてあることを最後まで読んで納得。もしかしてコレ楽しいかも。

いやマジで!

 
 そして雑用しながら小一時間ほどチュートリアルを真面目にやってみました。レッスン中、幾度か登場する「覚えるな!実行しろ!」というアドバイスが背中を押してくれました。ツール自体の使い辛さがまたゲームっぽくて楽しいというか何と言うか、でもレッスン1に書かれていた通り、最後に辿り着くころにはhjklキーでカーソル移動させる方が、矢印キー打つより速くなっていたのは確かです。肉体に記憶させるという意味で手足指先を動かすってホント重要。いやあ、レッスンやってみて良かったです。

ではリベンジ

 チュートリアルを通して理解出来た、今回の「sudo設定」で必要になりそうなコマンド等は下記の通り。

viでよく使いそうなコマンド

  • 「o」または「O」:カラの行をカーソルのある行の下(または上)に挿入する。
  • 「:q!」:なんかヤバくなったらコレで保存せずにvi終了。
  • 「u」:前回の動作を取消す。
  • 「CTRL+R」:取消しの取消し。
  • 「escキー」:なんか分からなくなったらESCキー連打でノーマルモードに逃げる。
  • 「i」:カーソル位置から文字のインサート。ウィンドウ最下部にーーINSERTーーと状態が表示される。
  • 「x」:カーソル位置から文字のデリート。
  • 「:wq」:開いているファイルの変更を上書き保存してvi終了。

 いくつか列挙してみましたが、要はvisudoで開いた設定ファイルの末尾に「%wheel ALL=(ALL) ALL」を追加して上書き保存すれば良いだけの事のような気がします。viの事が解ってしまえば15秒で作業は終わりそう。

%wheel ALL=(ALL) ALL

 今度は万全の体勢で挑みます。再び一般ユーザーでログインし「su」でrootに昇格、そこから「visudo」を打ち込んで設定ファイルを開きます。Jキーでカーソルを最後の行まで移動させ「o」キーで空の行を挿入し、あらかじめコピーしておいた「%wheel ALL=(ALL) ALL」をペースト。この時、ウィンドウ下部に「INSERT」の文字が表示されていますが、ここから「ESCキー」を押してノーマルモードに抜けて、「:wq」で設定ファイルを上書き保存してvi終了。7秒。

sudoが使えるかの確認

 ここで一旦ログアウトし、改めて、前回wheel管理者グループに追加した一般ユーザーIDでsudoが使えるようになったかどうかの確認です。どうやって確認すれば良いのか一瞬悩みましたが(実はrootと一般ユーザーで実行可能なコマンドの違いがまだ分かってない)、今回のテーマでもある「visudo」自体、一般ユーザーのままでは実行不可だったではありませんか。なので、一般ユーザーでログインした状態で「sudo」を使い「visudo」が実行出来るかどうか試してみれば良いのではあるまいか。

 再び一般ユーザーでログインし、まずは「visudo」と打ち込んでみると当然のようにまた拒否されます。そこで「sudo visudo」とコマンドを入力すると「他人のプライバシーを敬え」「キーをタイプする前によく考えろよ」「この先責任重大」などの警告文みたいなのが表示され、一般ユーザーへのパスワードを聞いてきます。そこでパスワードを入力すると、先ほどの修正済みsudo設定ファイルが無事開きました。つづく。

管理者グループへの細かい権限設定は、ユーザーは自分一人だけなので今回は割愛。というか、自分一人だけなんだから管理者グループに登録する必要もなくて「一般ユーザーID ALL=(ALL) ALL」でOKだったかも。