linux

linux重命名账户名

重命名仅需要用root用户执行以下命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
export olduser=gxt_kt
export newuser=gogongxt
# 修改用户名
sudo usermod -l ${newuser} ${olduser}
# 重命名主目录
sudo mv /home/${olduser} /home/${newuser}
# 修改用户组名
sudo groupmod -n ${newuser} ${olduser}
# 更新主目录的所属用户和组
sudo chown -R ${newuser}:${newuser} /home/${newuser}
sudo usermod -d /home/${newuser} -m ${newuser}
# 手动编辑配置文件,将旧用户名替换为新用户名
cat /etc/passwd | grep ${olduser}
cat /etc/shadow | grep ${olduser}
cat /etc/group | grep ${olduser}
cat /etc/gshadow | grep ${olduser}
# 注意这里为了保险起见,最好搜索以下老用户名,确保全部更改完成
sudo vim /etc/passwd
sudo vim /etc/shadow
sudo vim /etc/group
sudo vim /etc/gshadow

但是由于很多时候可能要改的用户还有进程在跑,所以第一个usermod就会执行报错,这时候可以sudo pkill -u ${olduser}强制关闭对应进程。但是这不是一个好方法,正确操作应该是进入单用户模式,再进行重命名账户的操作。

怎么进入单用户root模式:

  1. 首先重启,开机时按住shift,就会进入GRUB选择界面
  2. 进入Advanced options
  3. 进入(recovery mode),进入后选择root
  4. 输入root密码就进入了root命令行模式,这时候时不会启用任何普通用户的进程的,就可以放心操作上面那些重命名的命令了。

这里的wsl系统是你要修改的系统

  1. 首先关机:wsl –shutdown
  2. 配置默认登录用户是root:ubuntu2404 config –default-user root
  3. 继续执行上面的命令完成修改
  4. 修改后将默认登录用户名改回来:ubuntu2404 config –default-user ${newuser}

可以使用vnc从grub界面进入,修改方法和第一个一样,但是阿里云可能由于服务器配置较低,进入grub的恢复模式也会卡住,导致无法修改。

由于服务器没有图形化程序,所以最后还是选择使用pkill强制结束进程再进行修改:

  1. 关机重启服务器
  2. 使用ssh连接到机器,要指定到root用户: ssh root@ip
  3. 强制结束要修改的用户的进程:sudo pkill -u ${olduser}
  4. 接着执行上面的命令进行后续的修改
WARNING

修改完成后,需要注意一些路径问题,需要手动修复。

  1. 注意一些原有的软链接会失效,需要手动修改回来

  2. 需要注意如果有一些service 在路径/usr/lib/systemd/system,可能会因为修改路径失效。

    使用cat ./* | grep ${olduser}查看是否有老的用户名需要修改

    • 单文件可以方便的使用命令sudo sed -i "s/${olduser}/${newuser}/g" ./file进行替换
    • 目录下的所有文件,可以使用find . -type f -exec sudo sed -i "s/${olduser}/${newuser}/g" {} \; -print进行递归替换。替换完成后再使用cat查看确认一下
  3. 注意可能默认的sudoers没有修改过来,需要查看/etc/sudoers文件

    替换使用:sudo sed -i "s/${olduser}/${newuser}/g" /etc/sudoers