/etc/passwd と /etc/shadow

いつも既存の行のコピペで済ましてるのだが、思い付きで書式を調べてみる

/etc/passwd

各フィールドの意味
  • 第1フィールド

 ユーザ名 当然ユニークな必要がある.

  • 第2フィールド

 パスワード
 shadowパスワードを使っている時は"x"とする.(最近は大抵これ)

  • 第3フィールド

 UID. これもユーザ毎にユニーク.

  • 第4フィールド

グループID. /etc/gorup 参照

  • 第5フィールド

 未使用(定義上は class となっている)

  • 第6フィールド

 パスワード変更を勧告する時期

  • 第7フィールド

 パスワードの有効期限

  • 第8フィールド

 ユーザの一般情報(主にフルネームなどをかく)

  • 第9フィールド

 ユーザのホーム

  • 第10フィールド

 ログインシェル
 

各フィールドはどう設定すべきか
  • 第2フィールド

 最近はとりあえずxにしておくのが普通. /etc/passwdはだれでも見られるしセキュアじゃないので.

  • 第6,7フィールド

 こちらも/etc/shadowを使い、passwdのほうは空欄にするのが普通っぽい.
 それぞれで別の値指定した場合どっちが優先されるかは未確認.

  • その他のフィールド

 UID, GIDは選択の余地無し(どのグループに属すかって議論はあるけどそれはpasswdの話じゃない)
 それ以外は好き好きor各自の管理ポリシーで.
 

/etc/shadow

  • 第1フィールド

 ユーザ名(ログイン名) /etc/passwdのそれと対応.

  • 第2フィールド

 暗号化されたパスワード. たぶんMD5とかで暗号化されるんだろうけど未調査.
 空欄だとパスワード無し. "*"だとrootがpasswdコマンドで変更するまでログイン不可能.

  • 第3フィールド

 パスワードの最終変更日. unixタイムの通算日数. passwdコマンドとか使うたびに自動更新される.

  • 第4フィールド

 変更可能最短期間(日). この期間を越えないと変更不可. 空欄だと0.

  • 第5フィールド

 未変更可能最長期間(日). この期間を越えたら変更必要. 空欄だと無期限.

  • 第6フィールド

 変更勧告日. 上記期日の何日前にパスワード変更を勧告するか. 空欄だと勧告なし.

  • 第7フィールド

 inactive. この日数の間ログインしないと無効になる. 空欄だと永続的に有効.

  • 第8フィールド

 失効日. アカウント失効までの日数. 空欄だと失効期限無し.

  • 第9フィールド

 フラグ(未使用)
 

どんな値にすべきか
  • 第2フィールド

 普通はmd5で暗号化した値が勝手に入るはず。
 ユーザを新たに追加するときは * にしてroot立ち合いの元passwdコマンドで設定してもらうのが一番安全.
 一時的にでも空欄はあまりよろしくない.
−第3フィールド
 最初はテキトーでOK. そのあとpasswdコマンドでパスワード変えてやれば正しい値になるので.

  • 第4フィールド

 まだ用途不明

  • 第5-8フィールド

 ポリシー次第だけど空欄はあんまりセキュアじゃないよね。
 空欄以外にしてる組織見たことないけどw