UNIX 文件权限模拟器是一个教学工具,用于模拟 UNIX/Linux 文件系统的权限控制机制。它提供了一个交互式命令行界面(Shell),让用户可以体验真实的文件权限管理。
- 📁 真实的文件系统层次结构
- 👥 多用户和用户组管理
- 🔒 完整的读/写/执行权限控制
- 🛠️ 18个常用 UNIX 命令
- 🎓 适合学习和实验
- ✅ 创建和删除文件和目录
- ✅ 移动和重命名文件
- ✅ 复制文件
- ✅ 递归删除非空目录
- ✅ 支持绝对路径和相对路径
- ✅ 支持相对路径快捷方式(
./file,../file) - ✅ 路径规范化(
.和..) - ✅ 完整的输入验证和安全检查
- ✅ 读(r)、写(w)、执行(x)权限
- ✅ 所有者、用户组、其他用户权限分类
- ✅ 使用
chmod修改权限 - ✅ 使用
chown修改所有者 - ✅ Root 超级用户权限
- ✅ 创建和删除用户(
useradd,userdel) - ✅ 创建用户组(
groupadd) - ✅ 添加用户到用户组(
groupmod) - ✅ 用户组权限控制
- ✅ 切换用户(
su)
- 编译项目(如果需要)
- 运行
DemoProject.exe - 选择模式:
- 输入
1- 运行所有测试 - 输入
2- 进入交互式Shell
- 输入
进入 Shell 后,你会看到提示符:
[root@/]$
格式: [用户名@当前路径]$
创建新用户
[root@/]$ useradd alice
用户创建成功: alice (UID=1, GID=1)注意: 只有 root 可以创建用户
删除用户
[root@/]$ userdel 1
用户删除成功: UID=1创建用户组
[root@/]$ groupadd developers
组创建成功: developers (GID=3)注意: 只有 root 可以创建用户组
添加用户到用户组
[root@/]$ groupmod 3 1
成功将 UID=1 添加到 GID=3注意: 只有 root 可以修改用户组成员
切换当前用户
[root@/]$ su 1
[alice@/]$ whoami
alice (UID=1)显示当前用户信息
[root@/]$ whoami
root (UID=0)列出目录内容
[root@/]$ ls /home
drwxr-xr-x uid=0 user1/
-rw-r--r-- uid=0 readme.txt输出格式:
- 第一个字符:
d(目录) 或-(文件) - 接下来9个字符: 权限(rwxr-xr-x格式)
uid=: 所有者ID- 文件名
创建目录
支持路径格式:
- 绝对路径:
mkdir /home/test - 相对路径:
mkdir test,mkdir ./test,mkdir ../test
[root@/]$ mkdir /home/test
[root@/]$ cd /home
[root@/home]$ mkdir ./subdir
[root@/home]$ ls
drwxr-xr-x uid=0 test/
drwxr-xr-x uid=0 subdir/创建空文件
支持路径格式:
- 绝对路径:
touch /home/file.txt - 相对路径:
touch file.txt,touch ./file.txt
[root@/]$ touch /home/file.txt
[root@/home]$ touch ./newfile.txt
[root@/home]$ ls
-rw-r--r-- uid=0 file.txt
-rw-r--r-- uid=0 newfile.txt删除文件或空目录
[root@/]$ rm /home/file.txt递归删除目录(包含内容)
[root@/]$ rm -r /home/testdir移动或重命名文件
# 重命名
[root@/]$ mv /home/old.txt /home/new.txt
# 移动到目录
[root@/]$ mv /home/file.txt /home/user1/
# 移动并重命名
[root@/]$ mv /home/file.txt /home/user1/newfile.txt复制文件
# 复制到目录
[root@/]$ cp /home/file.txt /home/user1/
# 复制并重命名
[root@/]$ cp /home/file.txt /home/user1/copy.txt修改文件权限
格式1: 八进制格式
[root@/]$ chmod /home/file.txt 755- 7 = rwx (读+写+执行)
- 5 = r-x (读+执行)
- 5 = r-x (读+执行)
格式2: 符号格式
[root@/]$ chmod /home/file.txt rwxr-xr-x权限对照表:
| 数字 | 二进制 | 权限 |
|---|---|---|
| 0 | 000 | --- (无权限) |
| 1 | 001 | --x (执行) |
| 2 | 010 | -w- (写) |
| 3 | 011 | -wx (写+执行) |
| 4 | 100 | r-- (读) |
| 5 | 101 | r-x (读+执行) |
| 6 | 110 | rw- (读+写) |
| 7 | 111 | rwx (读+写+执行) |
修改文件所有者
[root@/]$ chown /home/file.txt 1
修改所有者成功: UID=1
[root@/]$ chown /home/file.txt 1 3
修改所有者成功: UID=1, GID=3参数说明:
uid- 新的用户ID (必需)gid- 新的组ID (可选,如果不指定则不修改组)
注意: 只有 root 可以修改文件所有者
切换当前目录
[root@/]$ cd /home
[root@/home]$ cd user1
[root@/home/user1]$ cd ..
[root@/home]$ cd /
[root@/]$支持:
- 绝对路径:
cd /home/user - 相对路径:
cd user1 - 父目录:
cd .. - 当前目录:
cd .
显示当前工作目录
[root@/home/user1]$ pwd
/home/user1显示命令帮助
[root@/]$ help显示所有可用命令及格式
退出 Shell
[root@/]$ exit
再见!每个文件有3类权限,每类3个bit:
类型 | 所有者 | 用户组 | 其他用户
-----|--------|--------|--------
d | rwx | r-x | r--
| 111 | 101 | 100
| 7 | 5 | 4
| 权限 | 字符 | 说明 | 文件 | 目录 |
|---|---|---|---|---|
| 读 | r | Read | 查看文件内容 | 列出目录内容 |
| 写 | w | Write | 修改文件内容 | 创建/删除文件 |
| 执行 | x | Execute | 执行程序 | 进入目录(cd) |
- Root 用户: UID=0,拥有所有权限
- 文件所有者: 检查所有者权限(owner_perms)
- 同组用户: 检查用户组权限(group_perms)
- 其他用户: 检查其他用户权限(other_perms)
- 目录创建: 755 (rwxr-xr-x)
- 文件创建: 644 (rw-r--r--)
# 1. 创建项目目录
[root@/]$ mkdir /project
[root@/]$ mkdir /project/src
[root@/]$ mkdir /project/docs
# 2. 创建项目文件
[root@/]$ touch /project/src/main.c
[root@/]$ touch /project/docs/readme.md
# 3. 设置权限
[root@/]$ chmod /project/src 755
[root@/]$ chmod /project/docs 755
[root@/]$ chmod /project/src/main.c 644
# 4. 查看结果
[root@/]$ ls /project
drwxr-xr-x uid=0 src/
drwxr-xr-x uid=0 docs/# 1. 创建用户和组
[root@/]$ useradd alice
用户创建成功: alice (UID=1, GID=1)
[root@/]$ useradd bob
用户创建成功: bob (UID=2, GID=2)
[root@/]$ groupadd developers
组创建成功: developers (GID=10)
# 2. 添加用户到组
[root@/]$ cd /project
[root@/project]$ touch shared.txt
# 3. 修改所有者和权限
[root@/project]$ chown /project/shared.txt 1 10
[root@/project]$ chmod /project/shared.txt 664
# 664 = rw-rw-r--
# alice(UID=1,GID=10) 和 组成员可读写,其他用户只读
# 4. 测试权限
[root@/project]$ su 1
[alice@/project]$ # alice可以读写
[root@/project]$ su 2
[bob@/project]$ # bob可以读写(同组)# 创建测试文件
[root@/]$ touch /test.txt
[root@/]$ chmod /test.txt 000
# 测试root权限
[root@/]$ rm /test.txt
# 成功! root始终可以访问
# 创建测试文件
[root@/]$ touch /public.txt
[root@/]$ chmod /public.txt 644
# 644 = rw-r--r-- (所有人可读)
# 普通用户测试
[root@/]$ su 1
[alice@/]$ rm /public.txt
rm: 权限不足
# alice不是所有者,只有读权限,无法删除A: 检查以下几点:
- 你是否是文件所有者?
- 你是否有父目录的写权限?
- 使用
ls查看文件权限
[alice@/]$ ls /home/file.txt
-rw-r--r-- uid=0 file.txt这个文件所有者是root(uid=0),alice无法删除。
A: Root 是超级用户,UID=0,拥有系统所有权限。Root 可以:
- 访问任何文件(无论权限如何)
- 修改任何文件的权限和所有者
- 删除任何文件
- 创建和管理其他用户
A: 使用二进制转十进制:
rwx = 111 (二进制) = 7 (十进制)
r-x = 101 (二进制) = 5 (十进制)
rw- = 110 (二进制) = 6 (十进制)
r-- = 100 (二进制) = 4 (十进制)
常用权限:
- 777 = rwxrwxrwx (所有人可读写执行)
- 755 = rwxr-xr-x (所有者全权限,其他人可读执行)
- 644 = rw-r--r-- (所有者可读写,其他人只读)
- 600 = rw------- (仅所有者可读写)
A: 目录的执行权限意味着:
- ✅ 可以
cd进入目录 - ✅ 可以访问目录下的文件
- ❌ 没有 x 权限: 无法进入目录,即使有读权限
[root@/]$ chmod /home 644
# rw-r--r-- = 没有执行权限
[alice@/]$ cd /home
cd: 权限不足A:
-
绝对路径: 从根目录(
/)开始的完整路径/home/user/file.txt
-
相对路径: 从当前目录开始的路径
# 当前在 /home user/file.txt # 进入user目录 ../admin/file.txt # 返回上一级,再进入admin ./file.txt # 当前目录的file.txt
A: 这是文件系统的保护机制:
- 目录包含
.(指向自己) 和..(指向父目录) - 删除目录会破坏这个结构
- 必须先删除目录中的所有内容,或使用
rm -r
A: 使用 rm -r 命令:
[root@/]$ rm -r /home/testdir这会删除目录及其所有内容(文件和子目录)。
A:
- 所有者(UID): 文件的拥有者,权限最高
- 用户组(GID): 协作用户组,同组用户共享权限
权限检查顺序:
- 如果是所有者 → 使用所有者权限
- 如果在同组 → 使用用户组权限
- 否则 → 使用其他用户权限
A: 使用 pwd 命令:
[alice@/home/user1]$ pwd
/home/user1A:
/- 根目录.- 当前目录..- 父目录~- 不支持(这是bash功能,本Shell未实现)
| 命令 | 功能 | 示例 |
|---|---|---|
useradd <name> |
创建用户 | useradd alice |
userdel <uid> |
删除用户 | userdel 1 |
groupadd <name> |
创建组 | groupadd devs |
groupmod <gid> <uid> |
添加用户到组 | groupmod 3 1 |
su <uid> |
切换用户 | su 1 |
whoami |
显示用户 | whoami |
ls [path] |
列出目录 | ls /home |
mkdir <path> |
创建目录 | mkdir /test |
touch <path> |
创建文件 | touch /a.txt |
rm <path> |
删除 | rm /a.txt |
rm -r <path> |
递归删除 | rm -r /dir |
mv <src> <dst> |
移动/重命名 | mv /a /b |
cp <src> <dst> |
复制 | cp /a /b |
chmod <path> <p> |
修改权限 | chmod /a 755 |
chown <path> <u> [g] |
修改所有者 | chown /a 1 2 |
cd <path> |
切换目录 | cd /home |
pwd |
显示路径 | pwd |
help |
帮助 | help |
exit |
退出 | exit |
- 版本: 1.0
- 最后更新: 2025
- 项目: UNIX 文件权限模拟器
祝使用愉快! 🚀