最低限 Unix / Linux [I]

発展. ユーザ情報に関するファイル

必修

  1. アカウント作成とログイン, ログアウトの作法(2020年度は実施しません)
  2. Unix の代表的なコマンド
  3. ファイルとディレクトリ
  4. パーミッション

発展

  1. ユーザ情報に関するファイル
  2. ルートディレクトリにある主なディレクトリ
  3. パーミッション付録

[5.1] ユーザ情報に関する 3 つのファイル

ユーザ情報は /etc/passwd, /etc/shadow, /etc/group の 3 つのファイルに書き込まれています. このうち passwd と group は一般ユーザでも閲覧可能ですが, shadow は root しか閲覧できません. かつては passwd に直接暗号化したパスワードが記載されていましたが, 昨今の情報技術の進歩に伴い暗号の解読 (復号化) が容易になりつつあるため, セキュリティ上の懸念から root のみが閲覧可能な shadow ファイルにまとめられるようになりました.

[5.2] /etc/passwd

まずは /etc/passwd を閲覧してみましょう.

$ lv /etc/passwd

/etc/passwd には以下のような内容が書き込まれています. (カーソル上下でページ送り, q で終了)

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
taro:x:1000:1000:Wakusei Taro:/home/taro:/bin/bash

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

  1. ユーザ名
    ユーザの login 名. アカウント名とも呼ばれます.
    例)taro

  2. パスワード
    かつて暗号化されたパスワードが書き込まれていた場所. このファイルと同名の passwd コマンドで各ユーザがパスワードを登録すると, この部分に書き込まれました.
    現在はセキュリティを考慮し, パスワードの情報は, アカウントを持っているユーザなら誰でも見ることの出来る passwd ファイルではなく, root のみ閲覧可能な shadow ファイルに書き込まれます.
    例)昔:ODmNoe3rpqcWE(暗号化されている), 今:x .

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

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

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

  6. ホームディレクトリ
    ユーザのホームディレクトリを絶対パスで記述します. 慣習として login 名と同じディレクトリ名が用いられます. 例)/home/taro

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

[5.3] /etc/shadow

続いて /etc/shadow を閲覧してみましょう。root 権限を持つ VTA に作業してもらいます。

# lv /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. ユーザ名
    ユーザの login 名. 同じ物が /etc/passwd ファイルに記述されている必要があります.
    例)samson

  2. パスワード
    暗号化されたパスワードが書かれています.
    例)$1$Utev74.c$dyH520./rf0pQydGHu6f01

  3. 最終パスワード変更日時
    1970年1月1日からパスワード最終変更日時迄の日数です.
    1970年1月1日は UNIX 時間での起点の日にち (UNIX Epoch:ユニックスエポック)です. UNIX 時間とはコンピュータシステム上の時刻表現の一種です.
    この時間自体には意味はなくただ UNIX 時間を決めた時に切が良かったからです.
    例)10889

  4. パスワード変更不能日数
    パスワード変更が出来る様になるまでの日数です.
    例)0

  5. パスワード変更要求迄の日数
    パスワードを変更しなくても良い日数です.
    例)99999

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

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

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

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

[5.4] /etc/group

最後に /etc/group を閲覧してみましょう. これは一般ユーザでも閲覧可能です.

$ lv /etc/group

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

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:lp
mail:x:8:
news:x:9:
uucp:x:10:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:
floppy:x:25:
tape:x:26:
audio:x:29:
nogroup:x:65534:
taro:x:1000:
hanako:x:1005:
dongury:x:1007:

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

[5.5] ユーザ情報を変更する方法

ユーザの情報を変更する, あるいは adduser や useradd コマンドを利用せずに 直接設定ファイルを編集してアカウントを追加する場合, それぞれの設定ファイル専用のコマンドを用いて編集しなければいけません.

各設定ファイルと編集用コマンドの対応は下記の通りです.

設定ファイル /etc/passwd /etc/group /etc/shadow
編集用コマンド vipw vigr vipw -s

これらの編集用コマンドは全て vi という文字が頭に付いていますが, それはこれらが vi というエディタと操作が同じであることを意味しています.




>> 次ページへ

情報実験第二回のページへ戻る

最終更新日: 2018/04/16(村橋究理基) copyright © 2000-2018 inex