Linux 文件权限与用户管理 — 学习笔记

本文档整理了 Linux 文件权限、用户管理、软链接等核心知识点,包含对比表格、命令速查和实战练习(附答案)。


一、用户类型概述

Linux 系统中存在三类用户概念:

用户类型 说明 特点
普通用户 由管理员创建的日常账户 操作受限,只能操作有权限的文件
root 超级用户 系统管理员账户 拥有最高权限,不受任何权限限制,可任意修改系统文件
用户组 (Group) 一组用户的权限集合 方便批量管理权限,组内用户共享组权限

1.1 关于 root 的重要提示

  • root 是 Linux 的 超级管理员,权利最大、责任也最大
  • 工作中尽量不使用 root 直接操作,以防误操作导致系统故障
  • 正确做法:使用普通用户 + sudo 提权来执行管理操作

二、文件权限分类 (rwx)

Linux 中每个文件/目录都有 读®、写(w)、执行(x) 三种权限,但针对文件和目录,含义不同

权限 针对文件 (File) 针对目录 (Directory)
r (读) 可查看文件内容(catmoretail 可列出目录中的文件列表(ls
w (写) 可修改文件内容(vim编辑、echo追加) 可删除/创建目录中的子文件或子目录(rmtouchmkdir
x (执行) 可执行文件(二进制文件、.sh脚本) 可进入目录(cd

2.1 重要结论

删除一个文件,不需要对该文件本身有权限,而是需要对该文件所在的目录w (写) 权限,且需要有 x (执行) 权限才能进入目录。


三、三个角色 + all

每个文件的权限都对应 三个角色 来分别设置:

角色 缩写 含义 说明
属主 u (user) 文件的创建者/拥有者 默认是创建该文件的用户
属组 g (group) 文件所属的用户组 默认是创建者的主组
其他人 o (other) 除属主和属组成员外的所有用户 既不是u也不是g的用户
所有角色 a (all) 同时代表 u、g、o 三个角色 用于一次性设置所有角色权限

3.1 文件权限查看示例

$ ls -l file.txt
-rw-r--r--  1  user01  group01  1024  Mar 16 10:00  file.txt

拆解解析:

-   rw-   r--   r--    1    user01   group01   1024   Mar 16 10:00   file.txt
|    |     |     |    |      |         |        |         |            |
|    |     |     |    |      |         |        |         |            └── 文件名
|    |     |     |    |      |         |        |         └── 最后修改时间
|    |     |     |    |      |         |        └── 文件大小(字节)
|    |     |     |    |      |         └── 属组(group)
|    |     |     |    |      └── 属主(user)
|    |     |     |    └── 硬链接数
|    |     |     └── o(其他人)权限: r--
|    |     └── g(属组)权限: r--
|    └── u(属主)权限: rw-
└── 文件类型: - 普通文件

3.2 通过角色关系控制权限的示例

场景:file.txt 的权限是 rwxrw----,属主是 jack01,属组是 devops

目标 操作方法 命令
bob01 拥有读写执行权限 将文件属主改为 bob01 chown bob01 file.txt
bob01 拥有读写权限 bob01 加入 devops usermod -G devops bob01

四、Linux 七种文件类型

类型符号 名称 说明 示例
- 普通文件 文本、二进制、压缩包等 .txt.sh.tar.gz
d 目录文件 mkdir 创建 /home/var/log
l 软链接 类似 Windows 快捷方式 ln -s 创建
b 块设备文件 硬盘、光驱等存储设备 /dev/sda/dev/sdb
c 字符设备文件 串口、终端等 /dev/tty
p 管道文件 进程间通信
s Socket文件 进程间网络通信 mysql.sock

五、核心命令

5.1 chmod — 修改文件/目录权限

字母表示法:

命令 作用
chmod u+r file 给属主添加读权限
chmod u-r file 给属主移除读权限
chmod g+w file 给属组添加写权限
chmod o-x file 给其他人移除执行权限
chmod a+r file 给所有角色添加读权限
chmod u+rwx,g+rw,o-r file 组合设置

数字表示法:

权限字符 对应数字 含义
r 4 可读
w 2 可写
x 1 可执行
- 0 无权限

常用数字组合速查表:

数字 字母表示 适用场景
777 rwxrwxrwx 全开(慎用)
755 rwxr-xr-x 可执行脚本、目录
644 rw-r--r-- 普通文件默认
640 rw-r----- 仅属主和组可读写
600 rw------- 私密文件(如密钥)
000 --------- 无任何权限
chmod 755 script.sh      # 脚本可执行
chmod 644 document.txt   # 普通文档
chmod 600 ~/.ssh/id_rsa  # 私钥文件
chmod -R 755 /data       # 递归修改目录下所有文件

5.2 chown — 修改属主 (user)

chown user01 file.txt           # 修改属主为 user01
chown user01:group01 file.txt   # 同时修改属主和属组
chown -R user01 /data           # 递归修改目录及其子文件

5.3 chgrp — 修改属组 (group)

chgrp devops file.txt           # 修改属组为 devops
chgrp -R devops /data           # 递归修改

六、软链接 (Symbolic Link)

软链接类似于 Windows 的快捷方式,指向另一个文件或目录的实际路径。

6.1 创建软链接

ln -s  源文件路径   链接文件路径

# 示例:为代码雨程序创建快捷方式
ln -s /usr/local/cmatrix12/bin/cmatrix   /usr/local/bin/cmatrix

6.2 软链接 vs PATH 变量

对比项 PATH 变量 软链接 (ln -s)
作用范围 添加整个目录 针对单个文件
查找方式 系统按PATH顺序搜索 直接跳转到目标路径
适用场景 批量添加可执行文件 为特定程序创建快捷入口
查看命令 echo $PATH ls -l 显示 ->

6.3 软链接与 Python 多版本管理

当系统同时存在多个 Python 版本时,通过软链接可以灵活切换:

# 查看 python2 实际指向
ll /usr/bin/python2
# 输出: lrwxrwxrwx 1 root root 9  Feb 25 15:04 /usr/bin/python2 -> python2.7

# python2.7 是实际的可执行二进制文件
ll /usr/bin/python2.7
# 输出: -rwxr-xr-x 1 root root 7216  Apr 11 2018 /usr/bin/python2.7

掌握 软链接PATH 配置,即可灵活管理各种软件版本和路径。


七、权限设置实战练习(附答案)

7.1 文件权限练习题

题目 1:/data 目录设置:属主全部权限,属组可读可执行,其他用户无权限。请用 2 种方式写。

# 方式一:字母法
chmod u+rwx,g+rx,o-rwx /data
# 方式二:数字法
chmod 750 /data

题目 2: 设置 /data/user_info.txt 权限:属主读、写,属组读、写,其他人只读。

chmod u+rw,g+rw,o+r /data/user_info.txt
# 或
chmod 664 /data/user_info.txt

题目 3: 设置 /data/password.txt 文件,只有属主读写,其他人无权限。

chmod u+rw,g-rwx,o-rwx /data/password.txt
# 或
chmod 600 /data/password.txt

题目 4-1: 文件 /test_data/file.txt 权限为 ---------,普通用户 yuchao01 能进行哪些操作?

答案: 无任何操作权限。cat/more 读取会报"权限不够",vim/echo 写入会报"权限不够",执行也会报"权限不够"。

题目 4-2: 文件权限为 -r--r--r--,普通用户能进行哪些操作?

答案: 只能读(cat/more/tail),不能写(vim/echo 会报"权限不够"),不能执行。

题目 4-3: 文件权限为 -rw-r--r--,普通用户能进行哪些操作?

答案: 作为 other 角色,只能读(cat/more/tail),不能写,不能执行。

题目 4-4: 文件权限为 -rw-r--rw-,普通用户能进行哪些操作?

答案: 作为 other 角色,有 rw- 权限,可以读和写(cat 查看、echo/vim 编辑),但不能执行。

题目 4-5: 文件权限为 -rw-r--rwx,普通用户能进行哪些操作?

答案: 作为 other 角色,有 rwx 权限,可以读、写、执行。但执行的前提是文件内容是可执行代码(如 bash 脚本)。

题目 4-6: 文件权限为 --------w-,普通用户能进行哪些操作?

答案: 作为 other 角色,只有 w 权限。不能读(cat 报错),不能执行,但可以写入(echo 追加内容到文件)。

题目 4-7: 文件权限为 --------wx,普通用户能进行哪些操作?

答案: 作为 other 角色,有 wx 权限。不能读,但可以写入和尝试执行(前提是文件内容是可执行脚本)。

7.2 目录权限练习题

题目: 分别创建以下权限的文件夹,用普通用户登录测试对目录的读、写、执行:

权限 数字 测试结论
r-- 400 只能 ls 看到文件名,但无法 cd 进入,无法创建/删除文件
rw- 600 能看到文件名,但无法 cd 进入,无法实际创建/删除
r-x 500 可以 ls 查看 + cd 进入,但无法创建/删除文件
-w- 200 几乎无用,无法 ls、无法 cd,虽然理论上可写但需要x配合
--x 100 可以 cd 进入(如果能知道文件名),但无法 ls 查看
rwx 700 完全控制:查看、进入、创建/删除

7.3 综合实战:创建并执行脚本

# 1. 创建脚本文件
touch say_hello.sh

# 2. 写入脚本内容
cat > say_hello.sh << 'EOF'
#!/bin/bash
name="Linux"
echo "Hello, ${name}! Welcome to the world of permissions."
EOF

# 3. 添加执行权限
chmod u+x say_hello.sh

# 4. 执行脚本
./say_hello.sh
# 输出: Hello, Linux! Welcome to the world of permissions.

八、速查速记卡

常用命令速查

ls -l file              # 查看文件权限
ls -ld /data            # 查看目录本身权限
chmod 755 file          # 数字法改权限
chmod u+rwx,g+rx file   # 字母法改权限
chown user:group file   # 改属主和属组
chgrp group file        # 改属组
ln -s /path/src /path/dst   # 创建软链接

权限计算口诀

r = 4,w = 2,x = 1,无 = 0

三个数字分别代表:属主 / 属组 / 其他人

例:755 = rwx(7) r-x(5) r-x(5)

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐