[Exp2018]Unix系OSでのユーザ情報に関するファイル

概要

Unix 系の OS ではユーザー情報は以下のファイルに書き込まれています.

  • /etc/passwd
  • /etc/shadow
  • /etc/group
  • /etc/gshadow

以下ではこれらのファイルに書き込まれている内容について解説します.

/etc/passwd ファイル

/etc/passwd には以下のような内容が書き込まれています.

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:100:sync:/bin:/bin/sync
games:x:5:100:games:/usr/games:/bin/sh
man:x:6:100:man:/var/catman:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
list:x:38:38:SmartList:/var/list:/bin/sh
shosuke:x:1000:1000:Yoshi-Yuki Hayashi:/home/shosuke:/bin/bash

1 行に 1 ユーザーの情報が記述されています. 個々のユーザーの情報として, コロン (:) で区切られた 7 つのフィールドに, 次のような内容が左から順に書き込まれています.

  1. ユーザー名

    ユーザーのログイン名. これはアカウント名とも呼ばれます.

    例) shosuke

  2. パスワード

    かつて暗号化されたパスワードが書き込まれていた場所. 以前は, このファイルと同名である passwd コマンドを使って各ユーザーが パスワードを登録すると, この部分に書き込まれました.

    現在はセキュリティを考慮し, パスワードの情報は, アカウントを持っている ユーザーなら誰でも見ることの出来る passwd ファイルではなく, root のみ 閲覧可能な shadow ファイルに書き込まれます.

    例) 昔:ODmNoe3rpqcWE (暗号化されている), 今:x .

  3. ユーザー ID

    ユーザーの識別番号. 0 から 65535 までの値を選ぶことが出来ます. システムはこの数値を参照してユーザーを識別するので, 他のユー ザーと重複しないように注意します. また 0 は root の番号なので一 般ユーザーには使用しません. Linux のデフォルト (特に変更しなかっ た場合) では 1000 番以降が与えられます.

    例) 1000

  4. グループ ID

    ユーザーの所属するグループ番号. 複数のグループに属する場合は主た るグループを記述します. Linux のデフォルトでは 1000 番 (users) が与えられます. 登録方法によっては, ユーザー名と同じ名前のグルー プ名が作成されることもあります. 番号とグループ名の対応は /etc/group にリストアップされており, 新たにグループを作った場合, このファイルに 追加します.

    例) 1000

  5. コメント (GECOS フィールド)

    コメント用フィールド. ユーザーの本名等を書いておきます.

    例) Yoshi-Yuki Hayashi

  6. ホームディレクトリ

    ユーザーのホームディレクトリを絶対パスで記述します. 慣習として login 名と同じディレクトリ名が用いられます. ホームディレクトリに関しては後 で学習します.

    例) /home/shosuke

  7. ログインシェル

    ログイン時に起動されるシェル. SUN OS のデフォルトは /bin/sh. Linux では /bin/bash. シェルについては後で学習します.

    例)/bin/bash

/etc/shadow ファイル

/etc/shadow には以下のような内容が書き込まれています. (因みに, 以下の暗号化されたパスワードはでたらめなものであり, 復号化してもメリットはありません. )

addie:$6$Utev74.c$dyH520./rf0...(中略)...pQydGHu6f01:10886:0:99999:7:::0
adam:$6$yfr59.ND$n0FRdB.GTdsC...(中略)...9.Hyr4dTr3:10907:0:99999:7:::0
addison:$6$e.H/te0$prwgyr6GYr...(中略)...5.kOC.g3llX.:10910:0:99999:7:::0
adon:$6$y.JgtEf5$lp.TH..7esCf...(中略)...7fpHYre4./:10905:0:99999:7:::0
samson:$6$DpFRkK3x$r3.856/lWY...(中略)...o9goIcODF7e.:10889:0:99999:7:::
bob:$6$KbyR5re4$tgL85.h/uHt3/...(中略).../nl.yTD4b:10910:0:99999:7:::0
david:$6$OgoWhdOf$uhBfrD./07c...(中略)...c5TG43.ZqP/V:10928:0:99999:7:::0

1 行に 1 ユーザーのパスワード情報が記述されています. 個々のユーザーのパスワード情報として, コロン (:) で区切られた 9 つのフィールドに, 次のような内容が左から順に書き込まれています. なお, このファイルは root の権限をなくして閲覧することはできません.

  1. ユーザー名

    ユーザーのログイン名. 同じ物が /etc/passwd ファイルに記述されてい る必要があります.

    例) samson

  2. パスワード

    暗号化されたパスワードが書かれています.

    例) $6$Utev74.c$dyH520./rf0...(中略)...pQydGHu6f01

  3. 最終パスワード変更日時

    1970 年 1 月 1 日からパスワード最終変更日時迄の日数です.

    例) 10889

  4. パスワード変更不能日数

    パスワード変更が出来る様になるまでの日数です.

    例) 0

  5. パスワード変更要求迄の日数

    パスワードを変更しなくても良い日数です.

    例) 99999

  6. パスワード期限満了警告日数

    パスワードが無効となるまでに, ユーザに "パスワードが無効となりか かっている" との警告を出す日数です.

    例) 7

  7. アカウント無効までの日数

    パスワードが無効となってから, アカウントが不能となり使用できなく なるまでの日数です. 上のサンプルでは設定されていません.

  8. アカウント期限満了の日付

    1970 年 1 月 1 日からアカウント使用不能となる迄の日数です. 上のサンプ ルでは設定されていません.

  9. 将来の使用に予約

    将来的に何か情報を追加するようシステムが変更された場合に, その新 規情報を書き込むために空けてあります. 0 を指定します.

/etc/group ファイル

/etc/group には以下のような内容が書き込まれています.

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
nogroup:x:65534:
project:x:1001:keikei,sugiyama,dongury
planning:x:1002:hoge,foo,bar

/etc/passwd ファイル同様, 1 行に 1 グループの情報が記述されています. 個々のグループの情報として, コロン (:) で区切られた 4 つのフィールドに, 左から順に, 「グループ名:グループのパスワード (gshadow ファイルを使うので現在は使われていない) :グループ ID の数値:グループに属するメンバー全員のユーザー名 (個々のユーザー名はコンマで区切られる) 」の形で書かれています.

/etc/gshadow ファイル

group のパスワードが格納されるファイルで /etc/shadow と同様です.