前言

上一篇我们掌握了 Linux 用户与用户组管理,而文件权限是 Linux 安全体系的核心。系统依靠「所有者、所属组、其他用户」三类身份划分访问权限,搭配权限字符、数字、chmod/chown 命令,就能精准控制谁能读、写、执行文件。

本篇详解文件属性、文件类型、权限规则、权限修改命令、目录特殊权限以及 umask 默认权限计算,学完就能彻底看懂 ls -l 输出,灵活配置文件与目录权限。


一、完整文件属性结构

执行 ls -l 命令,每一行内容分为 7 个字段,从左到右依次为:文件类型及权限 → 硬链接数 → 文件拥有者 → 文件所属组 → 文件大小 → 最后修改时间 → 文件名

示例:

-rw-r--r--  1 root root  128  6月 10 10:20 test.txt

二、文件类型(属性第一位字符)

属性串第一个字符用于区分文件类型,常见标识如下:

标识文件类型说明
-普通文本 / 二进制文件
d目录(文件夹)
l软链接(快捷方式)
c字符设备文件(串口、键盘等)
b块设备文件(硬盘、U 盘等存储设备)
p管道文件
s套接字文件(进程间通信使用)

三、文件权限详解(第 2~10 位字符)

ls -l 中第 2~10 位共 9 个字符,分为三组,分别对应三类用户,也是权限管控的核心。

1. 权限分组对应关系

  • 第 2~4 位:文件所有者 权限,简写 u (user)
  • 第 5~7 位:文件所属组 权限,简写 g (group)
  • 第 8~10 位:其他用户 权限,简写 o (other)
  • 简写 a (all):代表所有用户(u+g+o)

2. 基础权限标识与数值

Linux 用三种基础权限,同时支持字符模式和数字模式两种表示方式:

权限字符含义对应数值
r可读(read)4
w可写(write)2
x可执行(execute)1

规则:每组权限数值 = 对应权限数字相加,例如 rwx = 4+2+1 = 7,r-- = 4

3. 权限操作符号

用于字符模式修改权限:

  • +:增加指定权限
  • -:移除指定权限
  • =:清空原有权限,重新设置为指定权限

4. chmod 修改文件 / 目录权限

chmod 是权限修改核心命令,支持字符模式和数字模式。

(1)字符模式示例
# 给所有用户添加读、写、执行权限
chmod ugo+rwx test.txt
# 等价写法,a 代表全部用户
chmod a+rwx test.txt

# 仅给所有者移除执行权限
chmod u-x test.txt
# 给所属组单独设置只读权限
chmod g=r test.txt
(2)数字模式示例(最常用)

按三组权限数值直接赋值,格式:chmod 三位数字 文件名

# 所有者、组、其他用户均为 rwx (7),即 777
chmod 777 test.txt

# 所有者rwx(7)、组r-x(5)、其他r--(4)
chmod 754 test.txt

四、修改文件拥有者与所属组

文件默认归属创建者,可通过 chown、chgrp 重新指定所有者和用户组,仅 root 用户或原所有者可执行操作。

1. chown 修改文件拥有者

  • 基础用法:仅修改所有者
  • 拓展用法:用户:组 格式,同时修改所有者和所属组
  • -R:递归参数,作用于目录内所有子文件、子目录
# 仅修改文件所有者为 user1
chown user1 test.txt

# 同时修改所有者和所属组
chown user1:group1 test.txt

# 递归修改整个目录及内部所有文件
chown -R user1:group1 test_dir/

2. chgrp 修改文件所属组

专门用于单独修改文件 / 目录的所属用户组,同样支持 -R 递归操作。

# 修改文件所属组为 group1
chgrp group1 test.txt

# 递归修改目录内所有内容的所属组
chgrp -R group1 test_dir/

五、目录的专属权限规则

注意:以下规则仅对普通用户生效,root 超级用户不受权限限制。

  1. r 可读权限可以查看目录内的文件、目录名称(能执行 ls 查看列表)。
  2. w 可写权限可以在目录内新建、删除、重命名文件 / 子目录;该权限必须搭配 x 权限才能生效。
  3. x 可执行权限可以进入该目录(执行 cd 切换路径),也能修改目录内文件内容、执行目录中的程序。

六、umask 默认权限掩码

新建文件 / 目录时,系统会自动赋予默认权限,这个默认值由 umask(权限掩码)控制。

1. 基础概念

  • umask 作用:规定需要被扣除的权限
  • 执行 umask 可直接查看当前掩码值
  • 执行 umask 数值 可临时修改掩码值
umask          # 查看当前umask值
umask 022      # 设置umask为022

2. 普通文件 默认权限计算

Linux 规定:普通文件默认最大权限为 666(默认无执行权限)计算公式:最终权限 = 666 - umask 值

示例:umask=022最终权限 = 666 - 022 = 644 → 对应权限 -rw-r--r--

3. 目录 默认权限计算

Linux 规定:目录默认最大权限为 777(目录需要执行权限才能进入)计算公式:最终权限 = 777 - umask 值

示例:umask=022最终权限 = 777 - 022 = 755 → 对应权限 drwxr-xr-x


本篇小结

  1. ls -l 输出分为 7 大字段,首位字符区分 7 种不同文件类型;
  2. 9 位权限分为三组,对应所有者 (u)、所属组 (g)、其他用户 (o),r/w/x 分别对应 4/2/1 数值;
  3. chmod 负责改权限,支持字符、数字两种用法;chown/chgrp 负责修改文件归属;
  4. 目录权限有特殊规则,w 权限必须配合 x 权限才能正常使用;
  5. umask 决定新建文件 / 目录的默认权限,文件以 666、目录以 777 为基数做减法计算。

下期预告

下一篇我们学习文件查找、压缩与打包命令,掌握 find、tar、gzip 等高频工具,快速检索文件、批量打包备份数据。

Logo

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

更多推荐