我有一个用户名为jsmith的用户,他刚刚结婚,希望她的login名反映她的新婚名:jdoe。 我明白,usermod会做出改变,但我担心,我没有想到的影响。 我想要做到以下几点:
mkdir / home / jdoe chown jdoe:jdoe / home / jdoe
usermod -l jdoe -m / home / jdoe jsmith cp -rp / home / jsmith / * / home / jdoe
用户属于一个普通的组,所以应该没有GID问题,我已经运行查找命令没有结果寻找她的GID拥有的文件。
从我的实验中:usermod命令将所有使用jsmith的UID的文件的所有权更改为jdoe。 她的GID没有文件,所以没有任何意义。 我将不得不手动进入/ etc / group,并在她所在的任何组中更改她的用户名。
基本上我的问题是:/ etc / shadow和/ etc / gshadow是否需要手动修改? 我错过了什么?
假设这是一个本地authentication的用户(听起来像是这样),你应该只能修改/ etc / passwd,/ etc / shadow和/ etc / group,然后把她旧的主目录名改为新的目录名称。
这将确保她有和以前一样的UID,所以不会出现文件许可错误。 她的旧login的唯一残余部分将存在于日志文件中。
用户名的改变不会改变uid或guid – 所以这样做应该没有问题:
mv /home/olddir /home/newdir usermod -l newname oldname usermod -d /home/newdir newname
如果您确实需要更新用户标识,则可以使用find来完成。 例如,如果旧的UID是500,新的UID是600:
find / -user 500 -print0 | xargs -0 chown 600