1. 简介
Linux系统可以使用ls –l或ll查看文件或目录的属性权限,通常会列出十位的字符表示文件属性,其中第一个字符表示文件类型,其余9个字符称为文件模式,分别表示文件所有者、文件所属群组以及其他所有用户对该文件的读取、写入和执行权限:
2. 文件类型
linux上常用的文件类型有以上几种:
- 普通文件:是一个实体文件,可以直接读写,可以是二进制文件、可以是txt等格式文件
- 目录文件:是文件的集合,可以存放普通文件、目录文件、链接、字符设备文件、块文件等
- 符号链接:是个伪文件,也是个伪属性值,通常指向或链接的文件才是真正的文件属性
- 字符设备文件:该文件通常是驱动枚举出来的节点,可以以字节流的方式读写
- 块设备文件:表示以数据块方式处理数据的设备,如常用的光驱、硬盘驱动
3. 权限说明
r:read,可读
w:write,可写
x:excute,可执行
对文件而言,r代表可获取文件的数据;w可修改文件的数据;x代表可将此文件运行为进程。
对目录而言,r代表可使用ls命令获取其下的所有文件列表;w代表可修改此目录下的文件列表,即创建或删除文件;x代表可使用cd命令切换至此目录中,且可使用ls -l来获取所有文件的详细属性信息
4. 属主和属组
英文 | 中文 | 简写 |
---|---|---|
owner | 属主 | u |
group | 属组 | g |
other | 其他 | o |
系统中每个文件都拥有特定的权限:属主、属组以及其他人,通过这样的机制来限制哪些用户或用户组可以对特定文件进行相应的操作。
通常查看应用是否拥有权限,先看用户是不是文件所有者,再看是不是所属组,最后看是不是其他用户,如果是其中一个,就有权限;
对普通用户来说,没有权限是不能访问资源的;
读写权限对root用户不受限制,但x权限受控制;
需要注意的是:对root用户来说,如果root没有x权限,只要属组和其他有x权限,root用户就能执行,而普通用户不行。
5. 权限组合机制
通过使用3位八进制数字,我们可以分别设置文件所有者、组成员和其他所有用户的文件模式。每一位八进制数字和权限有如下的对应关系:
权限 | 二机制 | 八进制 |
---|---|---|
— | 000 | 0 |
–x | 001 | 1 |
-w- | 010 | 2 |
-wx | 011 | 3 |
r– | 100 | 4 |
r-x | 101 | 5 |
rw- | 110 | 6 |
rwx | 111 | 7 |
3位八进制数字常用的组合:
在linux系统中可以通过“chmod + 三位八进制数字 + 文件或目录”命令来修改文件权限。如chmod 777 /usr/bin/test。
另外在内核驱动中对于文件节点权限还有如下表示方式:
通常驱动中会以数字组合或上图的方式进行组合来代表权限:
注:高版本内核中不支持内核驱动节点对于其他用户组提供可写权限,如sdx12-ap\kernel\msm-5.4\include\linux\kernel.h
若对于其他用户组提供可写权限,则会编译报错: