问题描述
我正在使用Ubuntu 12.04并进行了一些自定义。我还将使其成为定制的ubuntu的新iso。
我想问的是如何更改用户名。我当前的主文件夹中有很多配置。所以我不想弄乱更改用户名。
那么,有什么最佳实践或工作流程吗?
最佳思路
真正正确的方法?假设您要将用户’peter’更改为’paul’。
groupadd paul
usermod -d /home/paul -m -g paul -l paul peter
这会将名称,组,主目录以及该目录的所有权和组以及所有文件更改为新目录。最后,您得到的用户与最初创建为’paul’的用户没有区别。
另一种方法是编辑/etc/passwd
和/etc/shadow
文件中peter条目的第一字段。然后在/etc/group
中将每次出现的’peter’更改为’paul’。然后将主目录从/home/peter
重命名为/home/paul
。然后chown -R paul /home/peter
获取该目录及其下所有文件和目录的所有权和分组关系,以拥有新目录。
次佳思路
我建议不要尝试更改用户名。当以用户主目录/home/<username>
的形式在配置文件中静态引用用户名时,通常会产生问题。这些几乎永远不会以通用方式编写,因此通常最好只是创建一个新的用户名,然后将用户的文件和数据迁移到新帐户中。
第三种思路
尝试使用usermod命令。
exec sudo su
usermod --login newname oldname
第四种思路
您可以更改它;请参阅AskUbuntu上的How do I change my username?。这些指示对我来说效果很好。要保留您的配置,只需为旧主目录建立符号链接,如该问题的答案中所述。
第五种思路
使用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”。
更改用户身份并不是很多工作,您只需要做到周密。