Linux 原生的访问控制是通过控制文件的一组属性实现的。 这些属性集合叫做 access mode 或者直接叫 mode (文件模式),mode 信息存放在索引节点 inode 中。 文件模式中访问者分为三类
user 用户,简称为 u ,即文件的拥有者group 用户组,简称为 g ,拥有文件的的组。 -other 其他人。简称为 o
文件权限的含义:
权限 | 符号 | 文件权限含义 | 目录权限含义 |
---|
读(read) | r | 查看文件内容 | 列出目录内容 | 写(write) | w | 写入或改变文件 | 建立或删除目录中的文件 | 执行(eXecute) | x | 文件可执行 | 可进入(cd)目录 |
文件模式的由12个bit位,也就是4个8进制表示。 从左向右(即从0到11) 0-2: 分别表示 suid标志位,sgid标志 位,sticky 标志位。 3-11 分为三组,每一组的位含义都是 读标位,写标志位,执行权限标志位。 SUID SUID suid 只对可执行文件有意义,对于目录无意义。此标志位设置,表示程序的实际是使用文件所属的用户的权限来执行应用程序。 要特别注意设置了 SUID 的程序是否有提权漏洞。 SGID SGID sgid 对于可执行文件的意义类似于 sgid, 也就是程序的实际使用的是文件所属组的权限来执行应用程序。 对于目录来说 ,设置了 sgid 的目录下新创建所有文件的的所属组就是设置了 sgid 目录的的所属组,这可以用于确定某一个团队共享目录下的所有文件都属性此团队所在组。 Sticky 位 上古时期,此标志位用于告诉操作系统,执行完此应用程序之后,依然将其保留在内存中,下次启动时可以加速启动。 由于现在 Linux 虚拟内存技术的使用,现在 sticky 的这种意义成为多余。 但是如果对文件目录设置 sticky 位则有其他效果,在设置了 sticky 位的目录中,只有文件的拥有者,此目录的拥有者和root 用户才能删除或重命名该目录的文件。 可用于团队目录或者 /tmp 目录中的文件共享。 SUID, SGID, Sticky 标志位在模式字符串的表示。 在 ls -l 输出的模式字符串中只有三段,那怎么判断是否设置了 SUID ,SGID ,Sticky 标志位呢? 由于这些标志位是特殊标志位,为了减少模式字符占用。
SUID 标志位中 用户权限段的x 标志位共用字符。如果 x ,suid 同时设置了就用s 表示。如果x 没有设置应用 S 表示。SGID 类似,使用组权限段的 x 标志位共用字符。Sticky 类似则与其他用户权限段 x 标志位共用字符。如果 x ,sticky 同时设置了就用 t 表示,如果 只设置了 sticky 位则用 T 表示。
umask 在新创建文件时,为根据当前用户的默认设置为其设定权限保护位。
umask 命令不加参数即输出当前的umask 掩码。umask 掩码为 022 的8进制表示,相当于
000 010 010 相当于是取消组权限和其他用户权限段的写权限。
umask 后面加参数可以设置新的 umask 掩码。 umask <newumaskvalue> 对于 umask 值为 022 来说。 由于文件的创建的初始值为 666 ,目录创建的初始值为 777 应用 umask 之后。 新创建文件的权限便为 644 ,新创建的目录的权限便为 755 使用 chmod 改变访问模式 该命令接受8进制数字和模式字符串两种参数形式。 符号意义及说明如下:
- 用户类型
a all 针对所有用户o other 针对其他用户g group 针对组用户u user 针对拥有者
- 操作类型
- 权限类型
r read 读权限w write 写权限x eXecute 执行权限X 对已具有执行权限的目录和文件设定执行权限,但不包括无格式文件。s SUID 或 SGID 属性t sticky 属性。
- 命令选项
-v,--verbose 输出对每一个文件所做的更改.-c,--changes 类似 -v 但是只输出变更部分。-R, --recursive 递归模式。-f,--silient,--quiet 安静模式,屏蔽大部分错误。
|