#前言
Unix-like 系统使用 uid 区分用户,使用 gid 区分用户组。
uid 是系统分配给用户的独一无二的 id,系统内部使用 uid 来判断权限等。大多数 Linux 指定 root 用户 id 为 0。Debian 下,普通用户的 id 从 1000 开始,这个值在 /etc/login.defs
中。
/etc/login.defs
截取
因为使用 id 而不是字符串来判断用户,所以在 Linux 上可以很轻松的修改用户名,组名,而不破坏任何权限。
#步骤
#修改用户名
sudo usermod -l NewName OldName
但是直接执行会遇到问题:要修改的用户有进程在执行。比如我在修改 VPS 上的用户名,就提示 sshd 正在运行,杀死 sshd 显然会断开连接。如果是修改本地的电脑,可以保存数据后,杀死相应的进程,换用 root 登录,修改。
ssh 到 VPS 修改用户名,有两种解决办法:
- root 用户登录
- 新建一个临时用户(普通),修改后删除临时用户
使用 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 命令。