ユーザーとグループ

INPUT · スライド

ユーザーを作る

01 / 08

名簿に書き足す

前のレッスンで名簿を読んだね。/etc/passwd はただのテキストファイルだった。

ということは、行を足せばユーザーが増えるはずだよね。理屈はそのとおりだよ。

でも手で書き足すのはやめておこう。ユーザーを1人増やすには、実は3か所を揃える必要があるんだ。

  • /etc/passwd に行を足す
  • /etc/group にその人のグループを足す
  • /home/その人 の部屋を作って、持ち主をその人にする

どれかを忘れると、ログインできてもホームが無い人ができてしまう。だからまとめてやってくれる道具を使うんだ。それが adduser だよ。

02 / 08

adduser で1人ぶん作る

root になってから打つよ。ユーザーを増やすのは、もちろん root だけができることだね。

~ $ suPassword:~ $ adduser -D taro~ $ grep taro /etc/passwdtaro:x:1000:1000:Linux User,,,:  /home/taro:/bin/sh

1行できたね。番号は 1000 から始まっているよ。前のレッスンで「100以上が人間」と言ったけれど、最近の Linux は 1000 から振るのがふつうなんだ。

-D は「パスワードを付けないで」という指定だよ。これを外すと、その場でパスワードを聞かれる。あとで passwd で付けられるから、まずは -D で作るのが楽だよ。

グループも一緒にできているよ。grep taro /etc/group を打つと taro:x:1000: が見つかるはずだよ。同じ名前のグループが自動で作られるんだね。

03 / 08

部屋も一緒に作られる

adduser は名簿だけでなく、その人の部屋も用意してくれるよ。

~ $ ls -ld /home/tarodrwxr-sr-x 2 taro taro 40  /home/taro

持ち主が taro になっているね。自分の部屋は自分のものだよ。あなたの /home/manabiyamanabiya のものだったのと同じだね。

何もしなければ、この部屋は taro だけが自由に使える。他の人は読めるけれど書けない、という形だよ。

-H を付けると部屋を作らない指定もできるよ。プログラム用のユーザーのように、そもそも人が入らないものを作るときに使うんだ。

-h で場所を変えることもできるよ。www-data のホームが /var/www だったのを覚えているかな。ああいうのは -h /var/www で作るんだ。

04 / 08

パスワードを付ける

-D で作ったので、まだパスワードが無いよ。付けるのは passwd だね。

~ $ passwd taroChanging password for taroNew password:Retype password:passwd: password for taro  changed by root

2回聞かれるのは打ち間違いを防ぐためだよ。画面には何も出ないので、慎重に打ってね。

短いパスワードにすると Bad password: too weak と言われるよ。でも root が付けるときは注意だけで通してくれるんだ。管理者の判断を邪魔しないという作りだね。

付けたパスワードはどこに入るんだろう。/etc/shadow だよ。前のレッスンで「2列目の x は別のところにある印」と言ったところだね。

次の問題で、そこに何が書かれているかを見てみよう。

05 / 08

パスワードは戻せない形で保存される

/etc/shadow を root で覗くと、こんなものが入っているよ。

taro:$5$/m5JcgqH/yYoF43Z$.exc5...

打ったパスワードそのものはどこにも保存されていないんだ。入っているのはハッシュという、計算で潰した結果だよ。

ハッシュには2つの性質があるよ。

  • 同じ文字を入れれば、必ず同じ結果になる
  • 結果から元の文字は戻せない

だからログインのときは、打った文字を同じ計算に通して、保存されている結果と一致するかだけを見ているんだ。

先頭の $5$ は計算の種類(SHA-256)で、次の /m5Jcg...その人ごとに違う塩だよ。同じパスワードでも人によって結果が変わるようにしてある。

これが「管理者でも人のパスワードは読めない」ということだよ。root は上書きはできるけれど、読むことはできないんだ。

06 / 08

その人になってみる

作った人になってみよう。root からならパスワード無しでなれるよ。

~ $ su taro~ $ whoamitaro

なぜパスワードが要らないんだろう。root は何でもできるからだよ。パスワードを聞く意味が無いんだ。root はそもそも passwd taro で好きなパスワードに変えられるからね。

逆に、あなた(manabiya)から su taro をするとパスワードを聞かれるよ。同じ立場の人になるには、その人のパスワードを知っている必要があるんだ。

taro になっているあいだは、あなたのホームには書けないよ。/home/manabiyamanabiya のもので、その他の枠には w が無いからね。

章6でやった枠の話が、そのまま効いてくるんだ。試してみると分かりやすいよ。

07 / 08

消しても部屋は残る

要らなくなったユーザーは deluser で消せるよ。でも中途半端に消えるんだ。

~ $ deluser taro~ $ grep taro /etc/passwd~ $ ls -ld /home/tarodrwxr-sr-x 2 1000 1000 40  /home/taro

名簿からは消えたのに、部屋はそのまま残っているね。しかも持ち主の名前が 1000 という番号になっているよ。

ここで章6で話したことがつながるよ。「Linux が見ているのは番号で、名前は /etc/passwd を引いた飾り」と言ったよね。

名簿から行が消えたので、番号から名前を引けなくなったんだ。だから番号がそのまま出ている。

これは実際のサーバーでよく見る光景だよ。ls -l の持ち主が数字になっていたら、その番号の人はもう名簿にいないという意味なんだ。

部屋も消したいときは deluser --remove-home を使うか、あとから rm -rf するよ。わざと残すこともあるからね。中のファイルが要るかもしれないからだよ。

08 / 08

さあ、打ってみよう

今日は root になる回数が多いよ。手順を覚えておこう。

su           → パスワード manabiyaadduser -D 名前exit         → 自分に戻る

覚える旗は4つだけだよ。

意味
-Dパスワードを付けない
-s使うシェルを決める
-u番号を決める
-H部屋を作らない

exit を忘れないことがいちばん大事だよ。root のままでも、作った人のままでも、次の問題で困ることになるからね。

困ったら whoami を打とう。いま誰なのかがすぐ分かるよ。