Linux 修改用户名

#前言

Unix-like 系统使用 uid 区分用户,使用 gid 区分用户组。

uid 是系统分配给用户的独一无二的 id,系统内部使用 uid 来判断权限等。大多数 Linux 指定 root 用户 id 为 0。Debian 下,普通用户的 id 从 1000 开始,这个值在 /etc/login.defs中。

Debian 11 /etc/login.defs 截取

因为使用 id 而不是字符串来判断用户,所以在 Linux 上可以很轻松的修改用户名,组名,而不破坏任何权限。

#步骤
#修改用户名
sudo usermod -l NewName OldName

但是直接执行会遇到问题:要修改的用户有进程在执行。比如我在修改 VPS 上的用户名,就提示 sshd 正在运行,杀死 sshd 显然会断开连接。如果是修改本地的电脑,可以保存数据后,杀死相应的进程,换用 root 登录,修改。

报错

ssh 到 VPS 修改用户名,有两种解决办法:

  1. root 用户登录
  2. 新建一个临时用户(普通),修改后删除临时用户

使用 root 用户登录,才修改了普通用户名。接下来是修改用户目录,usermod 修改用户名时,没有修改相应的用户目录,需要手动修改。下面命令需要 root 权限。

sudo mv /home/OldName /home/NewName
sudo usermod -d /home/NewName -m NewName
#修改组名

下面命令需要 root 权限。

sudo groupmod -n NewName OldName
#注意事项

如果修改用户名时,提示有正在执行的程序,查看是哪个程序在执行,杀死进程前注意保存数据。

不建议使用 root 用户登录。

修改用户名后,使用 sudo 命令要密码:即使曾经设置 sudo 免密码,修改用户名后也要密码才能使用 sudo 命令。