最近,CentOS5.11からCentOS6.6への,サーバ移行の作業を行っています.

手始めにユーザ情報の移行について.

/etc以下の,passwd,group,shadow,gshadowを移行元から移行先にコピーします. でもそっくりコピーするのは怖いので移行元で追加したユーザの情報のみを移行先の同ファイルに書き足すようにする.

今回の環境では,問題は起こりませんでした. ただ,移行元でログインシェルをzshにしていたユーザが,移行先にzshがインストールされていなかったためにログインできなくなるという事態が発生. こういう時って,Permission deniedで弾かれるんですね. すぐに原因特定できましたが,このエラーだと気付きにくいような気がします


上記に書いた4つのファイル,普段あんまり気にすることがないのでこの機会にまとめておく.

/etc/passwd

ユーザ一覧. ユーザ名等の情報が記述されている.

デフォルトでは全ユーザが閲覧のみ可能. rootが閲覧・編集可能.

[~]% ls -la /etc/passwd
-rw-r–r– 1 root root 1164 11月 11 16:52 /etc/passwd

root:x:0:0:root:/root:/bin/zsh test:x:502:502::/home/test:/bin/bash

[1. ユーザ名]:[2. パスワード]:[3.ユーザID]:[4.グループID]:[5.コメント]:[6.ホームディレクトリ]:[7.ログインシェル]

[2.パスワード]については,xの場合シャドウパスワードを意味する. 無記述の場合,パスワードレスでログインできる.

/etc/group

グループ一覧.

デフォルトでは全ユーザが閲覧のみ可能. rootが閲覧・編集可能.

root:x:0:
test:x:502:

[1.グループ名]:[2.パスワード]:[3.グループID]:[4.被所属サブグループリスト]

[2.パスワード]については/etc/passwdと同様

/etc/shadow

/etc/passwdでパスワードがxで表示されている場合,こちらのファイルに記述されている. パスワードはハッシュ化された状態で記述. rootのみが,閲覧のみ可能.

test:$6$kzDwOQQk$uM3ahBpLKHaU6NtA0qaTz/UUxUlIo89hELbU1cXfRKloL7LkfefAxoFpR0wH7EZ6q05LLDdf8VyXcGnU0XqFG1:16399:0:99999:7:::

[1.ユーザ名]:[2.パスワード]:[3.パスワード変更からの日数]:[4.パスワード変更可能までの日数]:[5.パスワードの変更の必要が発生するまでの日数]:[6.パスワード変更の警告を受ける日数]:[7.パスワード停止からアカウント停止までの日数]:[8.パスワードの有効期限]:[9.予約フィールド]

込み入っている.

[3.パスワード変更からの日数]と[8.パスワードの有効期限]については,1970/1/1からカウントした日数. UNIX時間かー.

/etc/gshadow

/etc/shadowのグループ版. あるいは/etc/groupのシャドウパスワードが記述されているファイル.


 

例えば/etc/passwdの中身を書き換える形でユーザ情報を変更しようとすると,(ログインシェルを変更したり)ハッシュ化の結果が変わるため/etc/shadowに記述されているハッシュ化済みのパスワードと適合しなくなり,ログインができなくなったりする.

僕はこれで少しハマりました

以上.