您当前的位置:首页 > 计算机 > 系统应用 > Linux

Linux 文件权限详解

时间:12-14来源:作者:点击数:
CDSY,CDSY.XYZ
配图源自 Freepik

在对文件进行操作之前,应先了解文件权限是什么?有哪些权限?

$ tree .
.
├── README.md
├── package.json
└── src

1 directory, 2 files

以上有一个目录和两个文件。然后通过 ls -l 命令,可以查看文件的具体属性:

$ ls -l
total 8
-rw-r--r--  1 frankie  staff   0  7  3 00:18 README.md
-rw-r--r--  1 frankie  staff  90  7  2 22:42 package.json
drwxr-xr-x  2 frankie  staff  64  7  2 22:42 src

以 package.json 文件为例,

其中 -rw-r--r-- 首个字符 - 表示「文件类型」,后面的九位字符 rw-r--r-- 表示「文件权限」。

「文件类型」用于表明它是文件、链接文件或者目录等,主要有以下几种:

  • 若为 d 则是目录;
  • 若为 - 则是文件;
  • 若为 l 则表示为链接文件(link file);
  • 若为 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若为 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

「文件权限」分为三种身份,分别为文件所有者权限(owner)、文件所在群组权限(group)、其他用户权限(others)。每一种身份都有各自的读写执行权限。通常情况下,一个文件只能归属于一个用户和群组,如果其他用户想拥有此文件的权限,可以将该用户加入到具有权限的群组,一个用户可同时归属于多个群组。

每种身份包括读写和执行权限,其中 r 表示读权限(read),w 表示写权限(write),x 表示执行权限(execute),- 表示无对应权限。除了用 rwx- 形式之外,也可以使用八进制数模式来表示,对应如下:

八进制值 文件权限 权限说明
0 --- 无任何权限
1 --x 仅执行权限
2 -w- 仅写权限
3 -wx 有写和执行权限
4 r-- 只读权限
5 r-x 读和执行权限
6 rw- 读写权限
7 rwx 读写和执行权限

每种身份的权限数字为 rwx 的累加得出来的。比如,前面 package.json 的权限为 -rw-r--r--,表示文件所有者权限为 rw-(4+2+0),文件所在群组权限为 r--(4+0+0),其他用户权限为 r--(4+0+0),因此该文件的权限数字为 0o644

我们常用 chmod 命令来修改文件的权限,比如:

$ chmod 755 ./src/bin/test.js

以上的 755 就是表示权限数字,该文件的权限将被改写为 rwxrw-rw-,即所有者可读写可执行,所在群组可读,其他用户可读。

除了数字方式,还可以通过字符方式修改文件权限。形式如:

$ chmod who+operator+permissions <file>

其中 who 表示要更改权限的用户,operator 表示要执行的操作,permissions 表示要更改的权限。

符号 功能 说明
u who 文件所有者
g who 文件所在群组
o who 其他用户
a who 所有用户
     
= operator 赋值
+ operator 添加
- operator 删除
     
r permissions 读权限
w permissions 写权限
x permissions 执行权限

因此,

$ chmod 755 ./src/bin/test.js

# 相当于
$ chmod u=rwx,g=rw,o=rw ./src/bin/test.js

# 也可对每种用户分别设置
$ chmod u=rwx ./src/bin/test.js
$ chmod g=rw ./src/bin/test.js
$ chmod o=rw ./src/bin/test.js

除了常见的 r/w/x 权限之外,还有一些特殊权限:SUID、SGID 和 SBIT,这里不做展开,有兴趣自行查阅。

CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐