简介

说明

本文介绍Linux系统如何修改主机名和用户名。(本文以Ubuntu为例,其他系统是一样的)。

用户名和主机名会显示在命令行上,形式为:用户名@主机名。如下图所示(用户名为test;主机名为knife):

怎么修改linux容器名 linux 怎么改名_服务器

需求

现在的用户名和主机名如下:

怎么修改linux容器名 linux 怎么改名_服务器

想把用户名(test) 改为aaa,主机名(knife)改为bbb。

查看当前主机名和用户名

上边直接通过命令行的标记即可确定主机名和用户名。也可以通过命令进一步确定。

查看主机名

  • 法1:hostname
  • 法2:uname -a

查看用户名

  • 法1:whoami

先切换到root

su

然后输入密码即可切换到root用户。

(使用su root也可以)

修改主机名为bbb

1. 修改hostname

法1:修改/etc/hostname(需要重启才生效)

将/etc/hostname里的内容改为新主机名。

原来:

怎么修改linux容器名 linux 怎么改名_用户名_03

可以用vi、gedit等修改。这里我用个更快的命令:

echo 'bbb' > /etc/hostname

注意,此法修改完后,/etc/hostname里确实是“bbb”了,但hostname命令结果仍然是“knife”。重启后hostname才是bbb。

法2:用命令修改(不需要重启)

hostnamectl set-hostname bbb

此法修改完后,/etc/hostname是“bbb”了,而且hostname命令结果也是“bbb”。无需重启

2. 修改hosts

修改/etc/hosts文件,将原主机名改成新主机名。

怎么修改linux容器名 linux 怎么改名_服务器_04

修改后:

怎么修改linux容器名 linux 怎么改名_Linux_05

修改用户名为aaa

1.修改passwd文件

将/etc/passwd里边的原用户名改为新用户名。

怎么修改linux容器名 linux 怎么改名_怎么修改linux容器名_06

本处将test改为aaa。

2.修改shadow文件

将/etc/shadow里边的原用户名改为新用户名。

怎么修改linux容器名 linux 怎么改名_服务器_07

本处将test改为aaa。

3.修改home文件夹下的用户文件夹名

将/home/下边原用户名对应的文件夹改为新用户名对应的文件夹。

怎么修改linux容器名 linux 怎么改名_服务器_08

本处将test文件夹改为aaa文件夹。

命令:

mv /home/test /home/aaa

4.修改group文件

将/etc/group里边的所有的原用户名改为新用户名。

怎么修改linux容器名 linux 怎么改名_用户名_09

可以发现,有多行包含test用户名,将它们全部改为aaa。

5.修改sudoers文件(非必须)

将/etc/passwd里边的原用户名改为新用户名。如果没有,可以不操作,或者直接添加新用户名(模仿root复制一行,root改为想要加的用户名)。

怎么修改linux容器名 linux 怎么改名_Linux_10

本处我没有找到test用户,所以不操作sudoers。

6.重启机器

重启机器并登录:

怎么修改linux容器名 linux 怎么改名_服务器_11

总结

修改主机名整理为脚本

hostnamectl set-hostname ubuntu \
&& \
sed -i 's/\<oldHostName\>/newHostName/g' /etc/hosts

上边命令里:oldHostName为原主机名,newHostName为新主机名。 

修改用户名整理为脚本

sed -i 's/\<oldUserName\>/newUserName/g' /etc/passwd \
&& \
sed -i 's/\<oldUserName\>/newUserName/g' /etc/shadow \
&& \
mv /home/oldUserName /home/newUserName \
&& \
sed -i 's/\<oldUserName\>/newUserName/g' /etc/group \
&& \
sed -i 's/\<oldUserName\>/newUserName/g' /etc/sudoers

直接执行上边脚本即可,oldUserName为原用户名,newUserName为新用户名。 (\<和\>是正则表达式,分别表示词首和词尾,保证只匹配整个主机名,不匹配包含主机名的其他字符串,不能去掉)

备注

上边脚本我自己试过。用本例中的knife替换oldHostName,bbb替换newHostName;用本例中的test替换oldUserName,aaa替换newUserName。

\<和\>是正则表达式,分别表示词首和词尾,保证只匹配整个主机名(或用户名),不匹配包含主机名(或用户名)的其他字符串,不能去掉。