我正在使用Ubuntu 12.04并进行了一些自定义。我还将使其成为定制的ubuntu的新iso。
我想问的是如何更改用户名。我当前的主文件夹中有很多配置。因此,我不想弄乱更改用户名。
那么,有什么最佳实践或工作流程可以做到这一点吗?
我正在使用Ubuntu 12.04并进行了一些自定义。我还将使其成为定制的ubuntu的新iso。
我想问的是如何更改用户名。我当前的主文件夹中有很多配置。因此,我不想弄乱更改用户名。
那么,有什么最佳实践或工作流程可以做到这一点吗?
Answers:
在真正正确的方式?假设您要将用户“ 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
获取目录及其下所有文件和目录的所有权和分组关系,以拥有新目录。
我建议不要尝试更改用户名。当在配置文件中以用户主目录形式静态引用用户名时,通常会出现问题/home/<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”。
更改用户身份并不是很多工作,您只需要做到周密。
usermod
命令组合为一个,并且还应该记住/etc/gshadow
与/etc/group
; 一起编辑。可以使用GNU sed更改它们中的两个:sudo sed -i 's/oldname/newname/g' /etc/{group,gshadow}
–或更好地使用sudo groupmod -n newname oldname
。在突出显示其他一些陷阱方面做得很好,例如必须手动更改用户的crontab的名称(如果有的话)。