連載第13回
2014年1月26日
一般ユーザーの追加、su とか sudo とか

 前回、簡単なCoda 2のセットアップを済ませたので、今回からようやく実務となります。ServersMan@VPSに限らず「VPSをレンタルしてまず最初にサクサクっとやっておくべき事」に関するネット上の記事をいくつか参照していると、いずれもまずは「rootでサーバーに接続するのは止めておけ」と警告しておられます。第11回でroot接続する際のパスワードを変更してみたはいいけれど「そもそもrootで接続するな」という事らしい。ではどうするのかと言うと、何でも操作出来てしまうroot権限ではなく、出来る事の限られた一般ユーザーなるものを作って、普段はそれでサーバーに接続してくださいとの事。つまりコレは「rootのパスワードが他者にバレてしまうのは非常に危険だが、一般ユーザーのパスワードならバレてもそこそこの被害で済むよね」という理解でOKでしょうか。個人的にはrootで接続している最中に他人にバレてしまうという状況が全く理解出来ないのですが、サイバーな世界は僕の想像以上に進んでいるのでしょう。では早速、希望の一般ユーザーを登録してみます。

一般ユーザーの追加手順

[root@♥♡♥]# adduser ◆◆◆◆◆◆◆◆◆◆◆◆◆◆ 
[root@♥♡♥]# passwd ◆◆◆◆◆◆◆◆◆◆◆◆◆◆ 
Changing password for user ◆◆◆◆◆◆◆◆◆◆◆◆◆◆.
New password:  
Retype new password:  
passwd: all authentication tokens updated successfully.
[root@♥♡♥]#

1行目:使用するコマンドは「adduser」。この後に続けて希望のユーザー名を入力。
2行目:そのまま続けて「passwd」を入力し、パスワードを決めます。上で新規登録した一般ユーザーのIDを入力。後は第11回で行った事の繰り返し。

 ここで一旦「logout」して、今度はrootではなく、新規登録した一般ユーザーのIDとパスワードで接続出来るのかを確認。問題なくログイン出来るようです(↓)。[◆◆◆◆@♥♡♥]$ における、◆◆◆◆の箇所が、上で登録したユーザー名になるのですね。

su とか

 さて。さらに「最初にやっておく事」関連ユーザー記事をアレコレ読み進めてゆくと、rootでログインするのを止めて、やれる事の制限された一般ユーザーでログインしている場合でも、必要に応じて「su」や「sudo」というコマンドでroot権限を使えるらしい…というのが分かってきました。スーとか須藤とか、まるで人の名前みたいですが、早速テストしてみました。

su:スーってなんだ!?

[◆◆◆◆◆◆◆@♥♡♥ ~]$ su 
Password:  
[root@♥♡♥ ◆◆◆◆◆◆◆]#  

1行目:一般ユーザーでログインしている状態で「su」を入力
2行目:rootのパスワードを尋ねられるので、第11回で変更したパスワードを入力
3行目:rootに昇格しました

 ↑こちらCoda 2の画面。一般ユーザーID(ピンク色)でログインして「su」でrootに昇格。ちなみに、rootに昇格したあと、またもとのユーザーに戻るにはどうしたら良いのだろう?と調べてみたら「su ユーザーID」でIDの切り替えが出来るそうです。無事元に戻れました。
 ところで記事などでは「su」と「su -」と別々に紹介しているところがあって、それら2つの違いは何なのだろうと疑問に思い調べてみると、前者はホームディレクトリが一般ユーザーのままで、その環境(シェル、環境変数など)を引き継ぎ、後者はホームディレクトリが/rootになって、rootの環境を使用することになるそうです。なるほど。

では、sudo とは何だ?

 ではスドー(正しい発音は知りません)とは何なのでしょう。どちらもroot権限が実行出来るという点で変わりないような気もするのですが、それらが2つ共に存在する理由は?…ネットでアレコレ検索してゆくと、僕と同じような疑問を抱いてちゃんと調べた結果を丁寧にまとめてくれているページがありました(↓)。ふむふむ。

外部サイト参考記事
Mac OS X/suとsudoの違い(WEB開発初心者の成長記録)

 なるほど。あらかじめ「sudo」コマンドを使えるユーザーを指定し、さらにそこで使えるコマンドを制限したりしておく事前作業が必要みたいです。つまり一般ユーザーをしっかり管理下に置いた状態で使わせるコマンド、と解釈しました。これで何故、その他の参考記事内(↓)で「管理者グループに追加」とか「sudoを実行出来るようにする」とか言う説明があるのか分かったような気がします。

 必要な手順をまとめると、sudoを一般ユーザーが実行できるようにするには

1.「useradd -G wheel 一般ユーザーID」で一般ユーザーをwheelグループ(管理者グループ)に加える。
2.そのwheelグループに参加しているユーザーがsudoを実行出来るように、設定ファイルを編集しておく(ここでwheelグループって何?と思い、調べてみました→「wheelグループ」(ITPro)。その解説内にあるPAMって何?と思ったのでコレも参照に。「PAM」(ITPro))。それでは順に作業を進めてみます。

wheelグループに一般ユーザーを追加する

useradd -G wheel ◆◆◆◆◆◆◆◆◆

◆◆◆◆◆◆◆◆◆は任意の一般ユーザー名。

 しかし。一般ユーザーIDでログインし、参照元の記事の通りタイプしてみたところ「Permission denied」と拒否されてしまいました。これはroot権限でないとダメなのかしらと思い、覚えたての「su」でrootから実行してみると、今度は「user ‘◆◆◆◆◆’ already exists」そのユーザーIDはもう存在してるよと拒否される始末。しばらく拒否される原因が全く思い付かなくて悩みましたが、こちらのユーザー記事(↓)を眺めていてある事に気付きました。

 要するに「同時にユーザー作成と管理者グループ追加を行う場合」と「既存ユーザーを管理者グループに追加する場合」とでは、使うコマンドが違うらしい…。上で拒否された「useradd -G wheel」は前者、つまり新規ユーザーIDを登録する場合に使うもの。しかし僕の場合は前回で既にユーザーを登録済みなので(だからalready existsと出た)、そういう場合はユーザーの属性を変更する「usermod -G wheel」を使わねばいけないらしい。

既存の一般ユーザーをwheelグループに追加する

usermod -G wheel ◆◆◆◆◆◆◆◆◆

 まず一般ユーザーIDでログインしてテストしてみると、先と同様に拒否されました。
「su」でrootに昇格して再度コマンドを入力してみると、今度は何のコメントも出てこないのでうまく受理された感じ。
 そこで一般ユーザーに戻って、idコマンドで属性を表示させてみました。
ここで「10(wheel)」が表示されていれば成功のようです。つづく。

wheelグループに一般ユーザーを追加する

[◆◆◆◆◆◆@♥♡♥ ~]$ usermod -G wheel ◆◆◆◆◆◆
-bash: /usr/sbin/usermod: Permission denied
[◆◆◆◆◆◆@♥♡♥ ~]$ su
Password:
[root@♥♡♥ ◆◆◆◆◆◆]# usermod -G wheel ◆◆◆◆◆◆
[root@♥♡♥ ◆◆◆◆◆◆]# su ◆◆◆◆◆◆
[◆◆◆◆◆◆@♥♡♥ ~]$ id
uid=500(◆◆◆◆◆◆) gid=500(◆◆◆◆◆◆) groups=500(◆◆◆◆◆◆),10(wheel)
[◆◆◆◆◆◆@♥♡♥ ~]$

1行目:一般ユーザーでログインした状況でテスト。
2行目:やはり拒否されました。
3行目:rootへ昇格。
5行目:何も反応が無いのでうまくいった感じ。
6行目:一般ユーザーに戻る。
7行目:ユーザーの属性を表示させてみる。

管理者グループに、sudoコマンドの実行許可を与えるところまで行きたかったのですが、非常に長くなってしまったので2回に分けます。また、誤記や間違い等ありましたらガンガンお気楽に指摘をお願いします。