Linux用户和组及权限管理 学习笔记

一、用户和组的概念与意义

1.1 用户(User)

Linux 是多用户多任务操作系统,每个登录系统的账号就是一个用户。系统通过用户来区分资源归属、控制访问权限。每个用户都有唯一的 UID(用户 ID),以及一个主组(GID)。

  • 超级用户 root:UID 为 0,拥有系统最高权限。
  • 普通用户:UID 从 1000 开始(CentOS/RHEL 系统通常如此)。
  • 系统用户/虚拟用户:UID 1~999,供系统服务使用,不能登录。

1.2 用户组(Group)

用户组是用户的集合,用来批量管理权限。每个用户至少属于一个主组,还可以加入多个附加组。组有唯一 GID。

  • 私有组(主组):创建用户时自动生成,组名通常与用户名相同。
  • 公共组(附加组):多个用户共享,用于统一授予权限。

1.3 相关配置文件

文件作用
/etc/passwd用户信息(用户名、UID、GID、家目录、登录Shell)
/etc/shadow用户密码及密码有效期(仅 root 可读)
/etc/group组信息(组名、GID、组成员)
/etc/gshadow组密码信息

二、用户管理命令

2.1 创建用户 useradd

useradd zerise                     # 创建用户,自动建主组和家目录
useradd -m -s /bin/bash tom        # 创建并强制建家目录,指定Shell
useradd -u 2000 -g java -G test dev # 指定UID、主组、附加组
useradd -d /home/xx -c "备注" 用户名  # 指定家目录、注释
2.2 修改用户 usermod
usermod -aG test zerise    # 追加附加组(必须带 -a,否则覆盖原有附加组)
usermod -g java zerise     # 修改主组
usermod -l newname oldname # 改用户名
usermod -L zerise          # 锁定用户
usermod -U zerise          # 解锁用户
usermod -s /sbin/nologin 用户名 # 禁止登录
2.3 删除用户 userdel
userdel zerise       # 删除用户,保留家目录
userdel -r zerise    # 删除用户并同时删除家目录和邮件
2.4 密码管理 passwd / chage
passwd zerise           # root 为用户设密码
passwd                  # 用户改自己密码
passwd -l zerise        # 锁定密码
passwd -d zerise        # 清空密码
echo "密码" | passwd --stdin 用户名   # 非交互式设置(RHEL系)
chage -l zerise         # 查看密码有效期信息
2.5 查看用户信息
id zerise               # 查看 UID、GID、所属组
who / w / users         # 当前登录用户
last                    # 登录历史
cat /etc/passwd         # 查看全部用户
2.6 切换用户 su
su - zerise     # 切换用户并加载其环境变量(推荐加 -)
su              # 默认切到 root

三、用户组管理命令
3.1 创建组 groupadd
groupadd java               # 创建普通组
groupadd -g 3000 test       # 指定 GID
groupadd -r sysgroup        # 创建系统组
3.2 修改组 groupmod
groupmod -n newjava java    # 改组名
groupmod -g 4000 java       # 改 GID
3.3 删除组 groupdel
groupdel test               # 删除组(若该组是某用户主组则不能删)
3.4 组成员管理 gpasswd
gpasswd -a zerise test      # 把用户加入组
gpasswd -d zerise test      # 从组中移除用户
gpasswd -A zerise test      # 指定组管理员
gpasswd -M user1,user2 test # 批量设置组成员
3.5 查看组信息
cat /etc/group
groups 用户名               # 查看用户所属组
getent group test           # 查询组信息
## 四、文件权限管理

### 4.1 权限表示

使用 `ls -l` 查看,如 `-rwx r-x r--`:

| 部分 | 含义 |
|---|---|
| 第1位 | 文件类型:- 普通文件,d 目录,l 链接,c/b 设备 |
| 2~4位 | 属主(u)权限 |
| 5~7位 | 属组(g)权限 |
| 8~10位 | 其他用户(o)权限 |

权限含义:

- r(读)= 4:文件可查看内容;目录可列出内容(ls)
- w(写)= 2:文件可修改;目录内可创建/删除文件
- x(执行)= 1:文件可执行;目录可进入(cd)

### 4.2 修改权限 chmod

字母法:

```bash
chmod u+x file.sh         # 属主加执行
chmod g-w file            # 属组去掉写
chmod o=r file            # 其他用户设为只读
chmod a+x file.sh         # 所有人加执行
chmod -R 755 dir          # 递归设置
数字法(读4+写2+执行1):
chmod 755 file            # rwx r-x r-x
chmod 644 file            # rw- r-- r--
chmod 700 dir             # 仅属主有全部权限
4.3 修改属主/属组 chown、chgrp
chown zerise file                # 改属主
chown zerise:test file           # 同时改属主和属组
chown -R zerise:test dir         # 递归修改
chgrp test file                  # 只改属组
4.4 默认权限 umask
umask            # 查看,如 0022
umask 077        # 设置
4.5 特殊权限 • SUID(4):如 /usr/bin/passwd,执行时以属主身份运行 • SGID(2):目录内新建文件继承该组 • 粘滞位 Sticky(1):如 /tmp,目录内文件只有属主才能删除
chmod 4755 file      # 设置SUID
chmod 1777 /tmp      # 设置粘滞位

> 注意:上面这段里每个 ```````bash ````都配了结束的 ```````````,粘贴时 **别把首尾那两个包裹用的 ```````markdown ````/ ```````````也一起复制进去** ,只复制中间正文。

## 三、快速自查

发布前点顶部「预览」看一遍:如果标题是大号加粗、表格有边框、命令带深色底,说明代码块闭合正常;如果整个页面是一片深色,说明还有未闭合的 ` ````。
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐