Linux 用户和用户组管理
Linux 是多用户操作系统,每个用户拥有自己的家目录与权限,而"用户组"用来批量授予相同权限。学会管理用户与组,是保障系统安全的基础,也是从"会用 Linux"走向"会管 Linux"的分水岭。
基本概念
- 用户:登录系统的身份,如 root、zhangsan。
- 组:用户的集合,同组成员共享该组的权限。
- root:超级用户,UID 为 0,权限几乎不受限制,日常建议少用。
- 每个用户有一个主组(primary group),还可以加入多个附加组。
用户配置文件
用户信息集中在三个文本文件里:
| 文件 | 内容 |
|---|---|
| /etc/passwd | 账号、UID、主组、家目录、登录 shell |
| /etc/shadow | 加密后的密码与有效期 |
| /etc/group | 组名、GID、组成员列表 |
查看示例:
cat /etc/passwd
# 输出:root:x:0:0:root:/root:/bin/bash
# 输出:zhangsan:x:1000:1000::/home/zhangsan:/bin/bash
每行字段依次为:用户名:密码占位:UID:GID:描述:家目录:登录shell。
用户管理命令
useradd -m -s /bin/bash zhangsan # 新建用户并创建家目录
passwd zhangsan # 设置或修改密码
usermod -aG sudo zhangsan # 加入 sudo 组,获得管理员权限
id zhangsan
# 输出:uid=1000(zhangsan) gid=1000(zhangsan) groups=1000(zhangsan),27(sudo)
userdel -r zhangsan # 删除用户并删除其家目录
注意:Debian/Ubuntu 系的 useradd 需加 -m 才会自动建立家目录。
用户组管理命令
groupadd dev # 新建组 dev
groupadd -g 2000 ops # 指定 GID 为 2000 创建组
gpasswd -a zhangsan dev # 把 zhangsan 加入 dev 组
gpasswd -d zhangsan dev # 把 zhangsan 移出 dev 组
groupdel dev # 删除组
cat /etc/group
# 输出:dev:x:1001:zhangsan
su 与 sudo 切换
- su:直接切换为另一个用户,需要目标用户的密码。
- sudo:以 root 身份执行单条命令,只需本人密码,且有审计日志。
su - zhangsan # 切换为 zhangsan(- 表示加载其环境)
sudo whoami
# 输出:root
exit # 退回原用户
给普通用户授权 sudo,编辑 /etc/sudoers(必须使用 visudo,防止语法错误):
sudo visudo
在文件末尾追加一行:
zhangsan ALL=(ALL) ALL
保存退出后,zhangsan 即可使用 sudo 执行管理员命令。
小结:用户与组的信息集中在 /etc/passwd、/etc/shadow、/etc/group;增删改用 useradd/userdel、groupadd/groupdel;日常坚持"普通用户 + sudo",只在必要时才切到 root,是 Linux 安全运维的最佳实践。