Linux 中的“文件模式”,就是我们用 ls -al 命令在终端查看文件信息时,在最左侧看到的一串字符如:"-rw-r–r–" ,这个就是文件的模式。

当然除了“文件模式”这个名字外,还可以叫做如下:

  • mode
  • 文件模式位(mode bits)
  • 权限位(permission bits)
  • 文件属性字段(在 ls 输出中)

下面就详细讲解下“文件模式”中每一位的作用。

文件类型位

文件模式字符串的第一位位文件类型,下面是 Linux 中常见的文件类型及其显示字符:

显示字符 类型名称 说明 常见示例
- 普通文件(regular file) 最常见的文件类型 test.txt
d 目录(directory) 存放文件名的特殊文件 src/
l 符号链接(symbolic link) 指向另一个路径 link → test.txt
c 字符设备(character device) 串口、终端等 /dev/ttyUSB0
b 块设备(block device) 硬盘等块设备 /dev/sda
p 管道(FIFO) 进程间通信 mkfifo 创建
s 套接字(socket) 进程通信 socket 文件 /var/run/docker.sock

权限位

文件模式符号一共有 10 位,第一位为文件类型,剩余的 9 位位权限位,10位文件模式字符划分如下:

[文件类型][用户权限][组权限][其他人权限]

- rwx rwx r-x
│ │   │   │
│ │   │   └── 其他人(others)
│ │   └────── 组(group)
│ └────────── 用户(owner)
└──────────── 文件类型

后9位分为3组,每一组 3 位固定顺序:r w x,分别对于:

字符 含义 数值
r 读权限 4
w 写权限 2
x 执行权限 1
- 没有该权限 0

chmod 修改文件模式的命令

基本用法:

chmod [选项] 模式 文件名

两种模式:“数字模式”和“符号模式”。

数字模式

chmod 755 file

表示当前用户用于读写和执行的权限,组用户和其它用户拥有读和执行的权限。

符号模式(更灵活)

格式:

chmod [u/g/o/a][+/-/=][rwx] file

含义:

字母 代表
u 用户(owner)
g 组(group)
o 其他人(others)
a 所有人(all)

操作符:

符号 含义
+ 添加权限
- 删除权限
= 重新设置

例子

添加执行权限:

chmod +x script.sh

等价于:

chmod a+x script.sh

只给用户添加执行权限:

chmod u+x file

删除组写权限:

chmod g-w file

设置用户位 rw,其它清空:

chmod u=rw file

递归修改目录

chmod -R 755 folder

⚠️注意: 目录执行权限(x)非常重要,没有 x 无法进入目录。

和 chown 的区别

很多人容易混淆:

命令 修改内容
chmod 修改权限
chown 修改所属用户
chgrp 修改所属组

以上就是关于“文件模式”的相关说明。