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 | 修改所属组 |
以上就是关于“文件模式”的相关说明。