在 Linux 系统中,用户管理是系统管理员的核心工作之一,涉及用户账号的创建、修改、删除、权限分配等操作。Linux 采用多用户多任务机制,通过严格的用户和组管理确保系统安全性和资源分配合理性。以下是 Linux 用户操作的详细介绍:
一、用户账号的基本概念
用户类型
- 超级用户(root):拥有系统最高权限(UID=0),可执行所有操作。
- 系统用户:用于运行服务(如
nginx
、mysql
),通常不允许登录,UID 范围一般为 1-999(不同发行版可能不同)。 - 普通用户:由 root 创建的用户,权限受限制,UID 范围通常从 1000 开始。
用户标识
- UID(User ID):系统识别用户的唯一数字标识(如 root 的 UID 为 0)。
- GID(Group ID):用户所属主组的唯一标识。
- 用户名:用户登录时使用的字符串(如
alice
、bob
)。
关键配置文件
/etc/passwd
:存储用户账号基本信息(用户名、UID、GID、家目录等)。/etc/shadow
:存储用户密码哈希及密码策略(权限为 000,仅 root 可读取)。/etc/group
:存储组信息(组名、GID、成员列表)。/etc/gshadow
:存储组密码信息(较少使用)。
二、用户账号管理命令
1. 创建用户(useradd
)
用于新建用户账号,语法:
useradd [选项] 用户名
常用选项:
-u <UID>
:指定用户的 UID(需确保唯一)。-g <GID/组名>
:指定用户的主组(默认会创建与用户名同名的组)。-G <组1,组2>
:指定用户的附加组(逗号分隔多个组)。-d <家目录>
:指定用户的家目录(默认/home/用户名
)。-s <shell路径>
:指定用户的登录 shell(默认/bin/bash
,禁止登录可设为/sbin/nologin
)。-m
:自动创建家目录(默认创建,部分发行版需显式指定)。-c <注释>
:添加用户注释(如全名、用途)。
示例:
# 创建用户alice,主组为users,附加组为sudo,家目录为/home/alice,shell为bash
useradd -g users -G sudo -d /home/alice -s /bin/bash -c "Alice Smith" alice
2. 设置 / 修改密码(passwd
)
用于管理用户密码,语法:
passwd [选项] 用户名 # 不指定用户名则修改当前用户密码
常用选项:
-l
:锁定用户(密码前加!
,禁止登录)。-u
:解锁用户。-d
:删除用户密码(允许空密码登录,不推荐)。-e
:强制用户下次登录时修改密码。-n <天数>
:设置密码最小有效期(不能提前修改)。-x <天数>
:设置密码最大有效期(过期需修改)。
示例:
# 为alice设置密码(输入时无回显)
passwd alice# 强制alice下次登录修改密码
passwd -e alice
3. 修改用户信息(usermod
)
用于修改已有用户的属性,语法:
usermod [选项] 用户名
常用选项(与useradd
类似,新增关键选项):
-aG <组>
:追加附加组(需配合-G
,否则会覆盖原有附加组)。-l <新用户名>
:修改用户名(家目录和 UID 不变)。-m -d <新家目录>
:移动家目录到新路径并更新配置。-s <新shell>
:修改登录 shell。
示例:
# 将alice的附加组新增docker
usermod -aG docker alice# 修改alice的用户名为alice_new,并移动家目录到/home/alice_new
usermod -l alice_new -m -d /home/alice_new alice
4. 删除用户(userdel
)
用于删除用户账号,语法:
userdel [选项] 用户名
常用选项:
-r
:删除用户时同时删除家目录和邮件目录(默认仅删除账号信息)。
示例:
# 彻底删除alice(包括家目录)
userdel -r alice
⚠️ 注意:删除正在登录的用户可能导致文件残留,建议先确认用户已退出。
5. 查看用户信息
id
:查看用户 UID、GID 及所属组:id alice # 输出:uid=1001(alice) gid=100(users) groups=100(users),27(sudo),998(docker)
finger
(需安装):查看用户详细信息(全名、登录时间等):finger alice
getent
:从系统数据库中查询用户 / 组信息(兼容 NIS/LDAP 等):getent passwd alice # 等价于查看/etc/passwd中alice的行
三、用户组管理
用户组用于批量管理权限,每个用户至少属于一个主组,可加入多个附加组。
1. 创建组(groupadd
)
语法:
groupadd [选项] 组名
选项:
-g <GID>
:指定组的 GID。
示例:
# 创建GID为1005的组dev
groupadd -g 1005 dev
2. 修改组信息(groupmod
)
语法:
groupmod [选项] 组名
选项:
-g <新GID>
:修改组的 GID。-n <新组名>
:修改组名。
示例:
# 将组dev改名为development
groupmod -n development dev
3. 删除组(groupdel
)
语法:
groupdel 组名 # 需确保组不是任何用户的主组,否则需先修改用户主组
4. 管理组成员(gpasswd
)
语法:
gpasswd [选项] 组名
常用选项:
-a <用户名>
:添加用户到组。-d <用户名>
:从组中删除用户。-M <用户1,用户2>
:批量设置组成员(覆盖原有成员)。
示例:
# 将alice添加到development组
gpasswd -a alice development# 批量设置development组的成员为alice和bob
gpasswd -M alice,bob development
四、用户切换与权限提升
1. 切换用户(su
)
用于切换到其他用户身份,语法:
su [选项] 用户名 # 不指定用户名默认切换到root
选项:
-
或-l
:模拟完整登录环境(加载目标用户的环境变量)。-c <命令>
:以目标用户身份执行单个命令后返回当前用户。
示例:
# 切换到root并加载环境变量
su - root# 以alice身份执行ls命令
su - alice -c "ls /home/alice"
2. 权限提升(sudo
)
允许普通用户以 root 权限执行指定命令(需配置sudoers
文件)。
配置方法:
- 执行
visudo
打开sudoers
配置文件(自动校验语法,比直接编辑更安全)。 - 添加规则:
bash
# 允许alice执行所有命令(需输入alice自己的密码) alice ALL=(ALL) ALL# 允许sudo组成员执行所有命令(无需密码) %sudo ALL=(ALL) NOPASSWD: ALL
使用示例:
# 以root权限安装软件
sudo apt install nginx
五、用户登录相关操作
1. 查看当前登录用户(who
/w
)
who
:显示登录用户的用户名、终端、登录时间和 IP:bash
who # 输出:alice pts/0 2025-08-04 10:00 (192.168.1.100)
w
:在who
基础上增加用户当前运行的命令和系统负载:bash
w # 显示更详细的登录用户活动信息
2. 强制用户 logout(pkill
/kill
)
若需强制踢掉登录用户,先通过who
获取其终端(如pts/0
),再发送终止信号:
pkill -kill -t pts/0 # 强制终止pts/0终端的所有进程
六、用户管理最佳实践
- 最小权限原则:普通用户仅授予必要权限,避免直接使用 root 操作。
- 密码策略:通过
passwd
设置密码有效期,禁止空密码,推荐使用复杂密码(字母 + 数字 + 符号)。 - 定期清理:删除无用账号(
userdel -r
),锁定长期不使用的账号(passwd -l
)。 - 使用 sudo 替代 su:通过
sudoers
精细控制权限,便于审计操作日志(日志位于/var/log/sudo.log
或/var/log/auth.log
)。 - 避免修改系统用户:系统用户(如
bin
、sys
)用于服务运行,随意修改可能导致服务异常。
通过上述命令和概念,可完成 Linux 用户从创建到删除、权限配置的全生命周期管理。合理的用户管理是保障系统安全和稳定运行的关键。