/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