
先来回顾麒麟往期内容:

微
思
本章学习目标
-
掌握文件和目录权限
-
理解文件和目录特殊权限

一:文件与目录的权限


查看文件权限
ls -la 命令查看文件的权限,有七项属性
1、文件权限:表示这个文件的类型与权限,这一项有 10 个字符
2、文件链接数:链接到该文件所在 inode 结点的文件名数目
3、所属用户:该文件的拥有者
4、所属组:该文件的所属用户组,该用户组的所有用户对这个文件有第二组权限
5、文件大小:该文件的大小,默认单位为 B
6、修改时间:该文件的创建日期或者最近一次修改的日期
7、文件名:该文件的文件名


文件权限
在麒麟操作系统中,每个文件都有所属的拥有者和所属组,而且定义了文件的拥有者、所属组以及其他用户对文件所具有的读(r)、写(w)、执行(x)等权限。
对于普通文件来说,权限比较简单易了解:"可读"表明可以读取文件的内容;"可写"表明可以新增、修改、删除文件的内容;"可执行"则表明可以运行一个脚本程序。
对目录文件来说,"可读"表明可以读取目录内的文件列表;"可写"表明可以在目录内新增、删除、重命名文件;而"可执行"则表明可以进入该目录。

文件权限标识符
1、字符标识
读写执行权限关于文件与目录可执行命令的差异文件的读、写、执行权限英文全称分别是 read、write、execute,能够简写为 r、w、x,文件拥有者,所属组及其他用户权限之间无相关。
使用 u、g、o 表示文件拥有者(user)、所属组(group)、其他用户(others)。
a 表示三组所有的权限,+和-分别表示增加和去掉相应的权限,=表示赋予某种权限。
2、数字标识
数字表示的文件权限:r 用 4 表示,w 用 2 表示,x 用 1 表示。
文件权限的数字法标识依据字符(rwx)的权限相加核算而来,其目的是简化权限的标

例如,若某个文件的权限为 7 则代表可读、可写、可执行(4+2+1);若权限为 6 则代表
可读、可写(4+2)。我们来看这样的一个例子。现在有这样一个文件,其拥有者具有可读、
可写、可执行的权限,其文件所属组具有可读、可写的权限;而且其他用户只需可读的权限。
那么,这个文件的权限就是 rwxrw-r--,数字法标明即为 764。

chmod 命令
命令格式 1:
chmod [ugoa] [+-=] [rwx] 文件或目录
命令格式 2:
chmod nnn 文件或目录 #nnn 是 3 位八进制数
常见命令选项:
-R:递归修改指定目录下所有子项的全新

chown 命令
命令格式:
chown [option] 属主:属组 文件或目录
常见命令选项:
-R:递归修改指定目录下所有文件、子目录的归属
chgrp 命令
改变文件所属群组
命令格式:
chagrp [option] 属组 文件或目录
常见命令选项:
-R:递归修改指定目录下所有文件、子目录的归属

特殊权限
文件的 rwx 权限无法满足对安全和灵活性的需求,因而便有了 SUID、SGID 与 SBIT 的特别权限位。这是一种对文件权限进行设置的特别功用,能够与一般权限一起运用,以补偿一般权限不能实现的功用。
SUID 是一种对二进制程序进行设置的特别权限,可以让二进制程序的执行者暂时具有属主的权限(仅对具有执行权限的二进制程序有用)。
SUID:当 s 标志出现在文件拥有者的 x 权限上时,称为 Set UID,数字权限为 4。
SUID 功能:
-
仅对二进制程序有效;
-
执行者对该程序需要有 x 可执行权限;
-
本权限仅在执行该程序的过程中有效;
-
执行者将具有该程序拥有者的权限。

SGID 特殊权限
SGID 特别权限有两种使用场景,当对二进制程序进行设置时,可以让执行者暂时获取到文件所属组的权限;而对目录进行设置时,则是让目录内新创建的文件主动承继该目录原有用户组的称号。
SGID:当 s 标志在群组的 x 时称为 Set GID,数字权限为 2。
功能:
-
SGID 改变的是执行者的所属组,可以对可执行文件和目录设置;
-
命令执行者要对该程序拥有执行(x)权限
-
命令执行者在执行程序的时候,组身份升级为该可执行程序文件的属组
-
SGID 权限只在该程序执行过程中有效,也就是组身份只在程序执行过程中发生改变,命令结束用户组身份恢复.
-
对目录设置 SGID 属性,可以使得访问在该目录下创建的所有文件的所有权,都继承原目录的所有者,而非创建者。

SBIT 权限
SBIT 特别权限可保证用户只能删除自己的文件,而不能删除其他用户的文件。换句话说,当对某个目录设置了 SBIT 粘滞位权限后,那么该目录中的文件就只能被其拥有者执行删除操作了。
SBIT 权限:在权限位的最低位表现为 t,称为粘滞位,数字权限为 1。
功能:
-
SBIT 权限只对目录有效
-
普通用户对于目录有 w、x 权限,即普通用户可以在此目录创建文件删除文件。
-
通过对目录设置 SBIT 权限,当使用者在该目录下创建文件或目录时,仅自己及 root有权利删除该文件。

隐藏权限
除了具有一般权限和特别权限之外,还有一种隐藏权限,即被隐藏起来的权限,默许状况下不能直接被用户发觉。有用户曾经在生产环境中碰到过明明权限足够但却无法删除某个文件的状况,或者仅能在日志文件中追加内容而不能修改或删除内容,这在某些特定的程度上阻挠了黑客篡改系统日志的图谋。
chattr 命令
chattr 命令用于设置文件的隐藏权限
语法格式:
chattr [option] 文件名称
假如想要把某个隐藏功能添加到文件上,则需要在命令后边追加"+参数",假如想要把某个隐藏功能移出文件,则需要追加"-参数"。chattr 命令中可供挑选的隐藏权限参数非常丰富。
常见命令选项:
-
i 无法对文件进行修改;若对目录设置了该参数,则仅能修改其间的子文件内容而不能新建或删除文件
-
a 仅允许补充(追加)内容,无法掩盖/删除内容(Append Only)
-
S 文件内容在改变后当即同步到硬盘(sync)
-
s 完全从硬盘中删除,不可恢复(用 0 填充原文件地点硬盘区域)
-
A 不再修改这个文件或目录的最终访问时刻(atime)
-
b 不再修改文件或目录的存取时刻
-
D 查看压缩文件中的报错
-
d 运用 dump 命令备份时疏忽本文件/目录
-
c 默许将文件或目录进行压缩
-
u 当删除该文件后仍然保存其在硬盘中的数据,以便日后恢复
-
t 让文件系统支撑尾部合并(tail-merging)
-
x 能够直接访问压缩文件中的内容
lsattr 命令
用于检查文件的隐藏权限
语法格式:
lsattr [option] 文件名称

ACL 权限
ACL 权限供给的是在拥有者、所属组、其他用户的读/写/执行权限之外的特别权限操控,运用 setfacl 命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的操控。
普通文件或目录设置 ACL 访问操控实际上是针对指定的用户或用户组设置文件或目录的操作权限,愈加精准地派发权限。因此,假如针对某个目录设置了 ACL,则目录中的文件会承继其权限;若针对文件设置了 ACL,则文件不再承继其父目录的权限。

setfacl 命令
setfacl 命令用于处理文件的 ACL 权限规定
语法格式:
setfacl [参数] 文件名称
目录文件需要用 -R 递归参数;
针对普通文件则运用 -m 参数;
假如想要删除某个文件的 ACL,则可以正常地运用 -b 参数。
常见命令选项:
-
-m 修改权限
-
-M 从文件中读取权限
-
-x 删除某个权限
-
-b 删除所有权限
-
-R 递归子目录

getfacl 命令
getfacl 命令用于查看文件的 ACL 权限
语法格式:
getfacl [option] 文件名称
getfacl 命令用于显现文件上设置的 ACL 信息,格式为"getfacl 文件名称"。Linux系统中的命令便是这么又可爱又好记。想要设置 ACL,用的是 setfacl 命令;要想检查 ACL,则用的是 getfacl 命令。下面运用 getfacl 命令呈现在 root 管理员家目录上设置的一切