第7章 控制对文件的访问
1.1 Linux 文件系统权限
文件权限控制对文件的访问
可以针对文件所属用户、所属组和其他用户设置不同的权限
权限具有优先级,user 权限覆盖 group 权限, group 覆盖 other 权限
有三种权限类别:读取、写入和执行
权限
对文件的影响
对目录的影响
r(读取)
可以读取文件内容
可以列出目录的内容(文件名)
w(写入)
可以更改文件内容
可以创建或删除目录中的任一文件
x(执行)
可以作为命令执行文件
目录可以成为当前工作目录。(可以 cd 它,
但还需要读取权限才能列出里面的文件)
用户通常对目录具有 r 和 x 权限,可以进入目录并列出文件(如果对目录
只有 r 权限,则只能列出目录中文件名称,无法获得属性)
对文件所在目录具有所有权或写入权限的用户可以删除此文件,无论文件
本身权限如何
1.2****查看权限及所有权
ls -l 命令显示文件的权限和所有权,-d 选项显示所属目录的权限和所有权
第一位文件类型:- 普通文件,d 目录,l 软链接,b 块设备,c 字符设备,
p 管道,s socket。接下来九位代表文件权限,分三组,每组三个字符,
每组分别对应所属用户、所属组、其他用户权限,权限可以表示为:r w x
或 - ,权限依据优先匹配原则
ls -l # 默认显示当前目录下的文件详细信息
ls -l [目录] # 显示指定目录的下文件的详细信息
ls -ld [目录] # 显示目录本身的信息(d-dir)
根目录本身信息:
ls -ld /

根目录下的文件信息:
ls -l /

其中第一列首字符表示文件类型,主要有以下几种:
标识符 文件类型 说明
- 常规文件 普通文本、二进制文件等
d 目录 文件夹
l 符号链接 指向另一个文件的快捷方式
c 字符设备文件 按字符流处理的设备(如终端)
b 块设备文件 按数据块处理的设备(如磁盘)
p 命名管道文件 进程间通信的 FIFO 管道
s 本地套接字文件 进程间通信的 socket 文件
2.1****更改文件和目录权限
chmod (change mode) 命令用于修改文件权限,有符号法或数值法
符号法:
- Who 是指 u、g、o、a(代表用户、组、其他、全部)
- What 是指 +、-、=(代表添加、删除、精确设置)
- Which 是指 r、w、x 或 X(代表读取、写入、执行)
- 注:对目录设置执行权限需要使用 X

数值法: - 每个数字代表一个访问级别的权限:user、group、other
- 用八进制数字的 4、2、1 分别代表读取、写入和执行
- 有经验的管理员通常使用数值权限,简短方便
-下图说明了系统如何解释 644 八进制权限值

2.2****更改文件和目录的用户或组所有权
新文件由创建该文件的用户所有,只有 root 用户可以更改文件的用户
组所有权可以由 root 用户或文件的所有者来设置,root 用户可将文件所
有权授予任何组,而普通用户仅可将文件所有权授予他们所属的组
使用 chown(change owner)命令可更改文件所有权,-R 递归

3.1****特殊权限
特殊权限构成了除了基本用户、组和其他类型之外的第四种权限类型
这些权限超出了基本权限类型允许的范畴,提供了额外的访问相关功能
用符号表示:setuid = u+s;setgid = g+s;sticky = o+t
用数值表示(第四位):setuid = 4;setgid = 2;sticky = 1
3.3****文件默认权限
创建新文件或目录时,会为其分配初始权限。有两个因素会影响这些初始
权限,第一是创建常规文件还是创建目录,其次是当前的 umask 值
如创建新目录,操作系统会为其分配权限 0777 (drwxrwxrwx)
如果是创建文件,操作系统则为其分配权限 0666 (-rw-rw-rw-)
shell 会话还会设置一个 umask,进一步限制初始设置的权限,这是一个
八进制位掩码,用于清除由该进程创建的新文件和目录的权限
例如,umask 0002 可清除其他用户的写入位,前导零表示特殊的用户和
组权限未被清除

2)对目录:
创建一个目录,在其中创建一些文件目录:(以下是目录结构)

只有读权限时,无法进入,查看目录内容时不能看到完整信息,不能创建、删除、移动内部内容:

只有写权限时,无法进入,无法查看目录内容,也不能创建、删除、移动内部内容(需要搭配x权限):

只有执行权限,可以进入:
