在Ubuntu或任何Linux中更改用户名的正确方法


26

我正在使用Ubuntu 12.04并进行了一些自定义。我还将使其成为定制的ubuntu的新iso。

我想问的是如何更改用户名。我当前的主文件夹中有很多配置。因此,我不想弄乱更改用户名。

那么,有什么最佳实践或工作流程可以做到这一点吗?


通常使用您的用户名创建主目录,但是您可以通过更改/ etc / passwd和/ etc / shadow中条目的前几个元素来更改用户名,而无需更改主目录。确保您可以以root用户身份登录(不仅是用户登录名中的sudo),以防万一您输入错误。
Anthon

如果我想更改主目录的名称怎么办?在第一要素中所说的到底是什么意思?
CorpusCallosum 2013年

Answers:


28

真正正确的方式?假设您要将用户“ peter”更改为“ paul”。

groupadd paul
usermod -d /home/paul -m -g paul -l paul peter

这会将名称,组,主目录以及该目录的所有权和组以及所有文件更改为新目录。最后,您得到的用户与最初创建为“ paul”的用户没有区别。

另一种方法是在/etc/passwd/etc/shadow文件中编辑彼得条目的前几个字段。然后将每次出现的“ peter”更改为“ paul” /etc/group。然后将主目录从重命名/home/peter/home/paul。然后chown -R paul /home/peter获取目录及其下所有文件和目录的所有权和分组关系,以拥有新目录。


3
无需如果你已经编辑/的CHOWN等/ {passwd文件,阴影,组} - inode的商店所有者组数字
格雷厄姆·尼科尔斯

5

我建议不要尝试更改用户名。当在配置文件中以用户主目录形式静态引用用户名时,通常会出现问题/home/<username>。这些几乎永远不会以通用方式编写,因此通常最好只创建一个新的用户名,然后将用户的文件和数据迁移到新帐户。


1
感谢您的评论。我创建了一个新用户,并更改了旧用户的userid /组和主目录。看起来一切都很好。您是否认为此方法也可能引起问题?
CorpusCallosum


3

您可以更改它;请参阅如何更改用户名?在AskUbuntu上。这些指示对我来说效果很好。要保留您的配置,只需为旧主目录建立符号链接,如该问题的答案中所述。


3

使用usermod更改用户名主目录。将用户peter更改为paul:

usermod -l paul peter
grep paul /etc/passwd /etc/shadow       # check

更改主目录,然后将所有内容移至该目录(如有必要,则创建)

usermod -m -d /home/paul paul
grep paul /etc/passwd               # check

更改组名,但不要使用usermod,因为它需要您首先创建另一个组(例如GID 1001),尽管它将更新$ HOME目录中所有内容的GID,但您必须搜索并更改具有旧组所有权的其他文件和目录。相反,只需手动更改组名。

nano /etc/group

并改变

peter:x:1000:

paul:x:1000:

您将必须更改cron,at和其他使用用户名而不是UID的服务使用的文件名。使用

find /var -name "*peter*"

查找这些文件。

您还必须更改某些服务(例如邮件处理应用程序)使用的配置文件

最后,脚本将需要编辑使用“ / home / peter /”的。将出现的“ / home / peter /”更改为“ $ HOME”。

更改用户身份并不是很多工作,您只需要做到周密。


赞成,因为这与我使用的方法相同(出于与保存GID有关的相同原因)。顺便说一句,您实际上可以将两个usermod命令组合为一个,并且还应该记住/etc/gshadow/etc/group; 一起编辑。可以使用GNU sed更改它们中的两个:sudo sed -i 's/oldname/newname/g' /etc/{group,gshadow}–或更好地使用sudo groupmod -n newname oldname。在突出显示其他一些陷阱方面做得很好,例如必须手动更改用户的crontab的名称(如果有的话)。
安东尼G-莫妮卡

快速附录...您不能在执行此操作时登录。制作属于sudoers组的新临时用户,进行登录,进行更改,从新临时帐户注销,登录到重命名的帐户,然后删除临时帐户。
Janus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.