Linux 文件权限详解

发布于 2025-09-04 分类: Linux

掌握 Linux 文件权限

在 Linux 世界中,权限是保证系统安全与稳定的基石。理解并正确设置文件和目录的权限,可以有效防止意外修改、删除重要文件,并保护个人隐私。本教程将带你深入浅出地学习 Linux 权限系统。

什么是权限?—— 权限的三要素

Linux 的权限系统可以归结为三个核心要素:三类用户身份三种基本权限

1. 三类用户身份

系统中的每个文件和目录都定义了三类可以访问它的用户:

  • 所有者 (Owner/User):文件的创建者,对文件拥有最高控制权。通常用 u 表示。
  • 所属组 (Group):一个用户组。组内的所有成员都拥有该文件或目录的组权限。一个文件只能属于一个组。通常用 g 表示。
  • 其他人 (Others):除了所有者和所属组成员之外的所有用户。通常用 o 表示。
  • 所有人 (All):代表以上三者。通常用 a 表示。

2. 三种基本权限

对于每一类用户,都可以授予或撤销以下三种基本权限:

  • 读 (read - r)
    • 对于文件:可以查看文件内容。
    • 对于目录:可以列出目录中的文件和子目录列表(如使用 ls 命令)。
  • 写 (write - w)
    • 对于文件:可以修改文件内容。
    • 对于目录:可以在目录中创建、删除、重命名文件或子目录。
  • 执行 (execute - x)
    • 对于文件:如果文件是程序或脚本,可以运行它。
    • 对于目录:可以进入(cd)该目录。

如何查看权限?

使用 ls 命令的 -l 选项(长列表格式)可以查看文件和目录的详细权限信息。

ls -l filename.txt

你会看到类似这样的输出:

-rwxr-xr-- 1 bob developers 4.2K Sep 04 15:30 filename.txt

我们重点关注开头的 10 个字符 -rwxr-xr--,它们包含了所有的权限信息:

位置 字符 含义
第 1 位 - 文件类型 (- 代表普通文件, d 代表目录)
第 2-4 位 rwx 所有者 (u) 的权限 (读、写、执行)
第 5-7 位 r-x 所属组 (g) 的权限 (读、执行,无写权限)
第 8-10 位 r-- 其他人 (o) 的权限 (只有读权限)

注意:权限位的顺序永远是 rwx。如果某个权限不存在,则用 - 占位。

如何修改权限?—— chmod 命令

chmod (change mode) 命令是修改文件或目录权限的专用工具。它支持两种模式:符号模式数字模式

方法一:符号模式(易于理解)

符号模式的格式是 chmod [身份][操作符][权限] 文件名

  • 身份 (可选, 默认为 a)u (所有者), g (所属组), o (其他人), a (所有人)。
  • 操作符+ (添加权限), - (移除权限), = (精确设置权限)。
  • 权限r (读), w (写), x (执行)。

示例:

假设我们有一个文件 script.sh,初始权限为 -rw-r--r--

  1. 为所有者添加执行权限:
    chmod u+x script.sh
    # 权限变为: -rwxr--r--
    
  2. 为所属组移除读权限,并添加写权限:
    chmod g-r,g+w script.sh
    # 或者合并为一条:
    chmod g-r+w script.sh
    # 权限变为: -rwx-w-r--
    
  3. 为其他人移除所有权限:
    chmod o-rwx script.sh
    # 权限变为: -rwx-w----
    
  4. 为所有用户设置相同的权限(读和执行):
    chmod a=rx script.sh
    # 权限变为: -r-xr-xr-x
    

方法二:数字模式(高效快捷)

数字模式使用三位八进制数字来一次性设置所有者、所属组和其他人的权限。这种方法在熟练后非常高效。

原理很简单:将每种权限用一个数字代表:

  • r = 4
  • w = 2
  • x = 1
  • 无权限 = 0

将每类用户身份所需的权限数字相加,得到一个 0-7 之间的数字。

数字 权限组合 含义
7 4+2+1 rwx (读、写、执行)
6 4+2 rw- (读、写)
5 4+1 r-x (读、执行)
4 4 r-- (只读)
3 2+1 -wx (写、执行)
2 2 -w- (只写)
1 1 --x (只执行)
0 0 --- (无权限)

格式chmod [所有者数字][所属组数字][其他人数字] 文件名

示例:

  1. 设置权限为 rwxr-x--- (所有者读写执行,所属组读执行,其他人无权限)
    • 所有者: rwx -> 4+2+1 = 7
    • 所属组: r-x -> 4+0+1 = 5
    • 其他人: --- -> 0+0+0 = 0
    • 命令:
      chmod 750 script.sh
      
  2. 设置权限为 -rw-rw-r-- (所有者和所属组可读写,其他人只读)
    • 所有者: rw- -> 4+2+0 = 6
    • 所属组: rw- -> 4+2+0 = 6
    • 其他人: r-- -> 4+0+0 = 4
    • 命令:
      chmod 664 config.conf
      

常用权限组合:

  • 755: 对于目录和脚本很常见。所有者可完全控制,其他人可读可执行。
  • 644: 对于普通文件很常见。所有者可读写,其他人只读。
  • 700: 对于私密目录或脚本。只有所有者能访问。

特别注意:目录的权限

目录的权限含义与文件略有不同,这非常重要:

  • r (读):可以列出目录下的内容(ls)。如果你没有 r 权限,即使能进入目录,也无法看到里面有什么。
  • w (写):可以在目录内创建、删除、移动文件或子目录。注意:删除一个文件,需要对该文件所在的目录有写权限,而不是对文件本身有写权限。
  • x (执行):可以进入该目录(cd)。这是访问目录下任何文件或子目录的前提。没有 x 权限,你连目录都进不去,即使你拥有目录下文件的所有权限也没用。

查看目录自身权限:
使用 ls -ld directory_name 可以查看目录本身的权限,而不是其内容。

ls -ld my_docs
drwx------ 2 bob users 4.0K Sep 04 15:35 my_docs

超级用户 root

在 Linux 系统中,root 用户是超级管理员,它不受权限系统的限制,可以读取、修改或删除系统上的任何文件。因此,root 权限应谨慎使用。

总结

命令 功能
ls -l 查看文件或目录的详细权限
ls -ld 查看目录本身的详细权限
chmod 修改文件或目录的权限

核心要点

  • 权限分为读(r)写(w)执行(x)
  • 用户分为所有者(u)所属组(g)其他人(o)
  • 目录的 x 权限是访问其内部所有内容的基础。
  • 正确配置权限是保障 Linux 系统安全的关键。

动手实践

现在,轮到你来练习了!

  1. 进入你的工作目录(例如 ~/linuxtutorialwork)。
  2. 创建一个新文件 test.txt 和一个新目录 test_dir
  3. 使用 ls -lls -ld 查看它们的默认权限。
  4. 使用符号模式 (u+x, go-r 等) 修改 test.txt 的权限,并验证结果。
  5. 使用数字模式 (755, 600 等) 修改 test_dir 的权限。
  6. 尝试移除 test_dirx 权限 (chmod u-x test_dir),然后试着 cd 进去,看看会发生什么。再把它加回来。
  7. 尝试移除 test_dirr 权限,然后 cd 进去,再用 ls 命令,看看会发生什么。

通过实践,你会对 Linux 权限有更深刻的理解。


-- 感谢阅读 --