目次

FreeBSDでユーザー名を変更する

要旨

FreeBSDで既存のユーザー名を変更するには、/etc/master.passwdを編集しpwd_mkdbコマンドでユーザーデータベースを更新してやればよい。と同時に/etc/groupでグループの変更も忘れずに行うこと。

手順

ユーザー名の変更

ユーザーデータベースのマスターファイル/etc/master.passwdで、当該ユーザーのユーザー名を変更する。マスターファイルなので編集には細心の注意を払うこと。

ここでは、例としてolduserをnewuserにする。必要ならホームディレクトリのパスも変更する。

■変更前

(略)
www:*:80:80::0:0:World Wide Web Owner:/nonexistent:/usr/sbin/nologin
_ypldap:*:160:160::0:0:YP LDAP unprivileged user:/var/empty:/usr/sbin/nologin
hast:*:845:845::0:0:HAST unprivileged user:/var/empty:/usr/sbin/nologin
nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/usr/sbin/nologin
olduser:$hashvalueofpassword:1001:1001::0:0:User &:/home/olduser:/usr/local/bin/bash

■変更後

(略)
www:*:80:80::0:0:World Wide Web Owner:/nonexistent:/usr/sbin/nologin
_ypldap:*:160:160::0:0:YP LDAP unprivileged user:/var/empty:/usr/sbin/nologin
hast:*:845:845::0:0:HAST unprivileged user:/var/empty:/usr/sbin/nologin
nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/usr/sbin/nologin
newuser:$hashvalueofpassword:1001:1001::0:0:User &:/home/newuser:/usr/local/bin/bash

ファイルの変更が終わったら、pwd_mkdbコマンドでユーザーDBを更新する。

# pwd_mkdb /etc/master.passwd
# pwd_mkdb -p /etc/master.passwd

1つ目で /etc/pwd.db, /etc/spwd.db を、2つ目で/etc/passwdが更新される模様。

グループの変更

通常、ユーザーを作成すると同名のグループが作成されるため、/etc/groupも忘れずに変更する。また、当該ユーザーがwheelグループに所属していたりsudoersの場合、修正を忘れるとrootに昇格できなくなる。rootのネットワークログインが無効化されてたりすると、最悪、リモートでは対処不能になるので要注意。

■変更前

(略)
wheel:*:0:root,olduser
(略)
olduser:*:1001:

■変更後

(略)
wheel:*:0:root,newuser #←wheelユーザーを忘れがちなので注意!
(略)
newuser:*:1001:

これで変更後のユーザーでログインができるようになるハズ。UID/GIDは変更してないので、ファイルのパーミッションなどは前のユーザー名の状態がそのまま引き継がれる(ユーザー名はUIDに対応する表示名程度のものなので当然ですな。)