简介
说明
本文介绍Linux系统如何修改主机名和用户名。(本文以Ubuntu为例,其他系统是一样的)。
用户名和主机名会显示在命令行上,形式为:用户名@主机名。如下图所示(用户名为test;主机名为knife):
需求
现在的用户名和主机名如下:
想把用户名(test) 改为aaa,主机名(knife)改为bbb。
查看当前主机名和用户名
上边直接通过命令行的标记即可确定主机名和用户名。也可以通过命令进一步确定。
查看主机名
- 法1:hostname
- 法2:uname -a
查看用户名
- 法1:whoami
先切换到root
su
然后输入密码即可切换到root用户。
(使用su root也可以)
修改主机名为bbb
1. 修改hostname
法1:修改/etc/hostname(需要重启才生效)
将/etc/hostname里的内容改为新主机名。
原来:
可以用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文件,将原主机名改成新主机名。
修改后:
修改用户名为aaa
1.修改passwd文件
将/etc/passwd里边的原用户名改为新用户名。
本处将test改为aaa。
2.修改shadow文件
将/etc/shadow里边的原用户名改为新用户名。
本处将test改为aaa。
3.修改home文件夹下的用户文件夹名
将/home/下边原用户名对应的文件夹改为新用户名对应的文件夹。
本处将test文件夹改为aaa文件夹。
命令:
mv /home/test /home/aaa
4.修改group文件
将/etc/group里边的所有的原用户名改为新用户名。
可以发现,有多行包含test用户名,将它们全部改为aaa。
5.修改sudoers文件(非必须)
将/etc/passwd里边的原用户名改为新用户名。如果没有,可以不操作,或者直接添加新用户名(模仿root复制一行,root改为想要加的用户名)。
本处我没有找到test用户,所以不操作sudoers。
6.重启机器
重启机器并登录:
总结
修改主机名整理为脚本
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。
\<和\>是正则表达式,分别表示词首和词尾,保证只匹配整个主机名(或用户名),不匹配包含主机名(或用户名)的其他字符串,不能去掉。