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 安全运维的最佳实践。

笔记加载中…