Linux中的ACL权限,权限掩码及特殊权限

一、基本权限ACL

  1、什么是ACL?

ACL 的全称是 Access ControlList(访问控制列表),一个针对文件/目录的访问控制列表。他在 UGO 权限管理的基础上为文件系统提供一个额外的、更灵活的权限管理机制。它被设计为 unix 文件权限管理的一个补充。ACL 允许你给任何用户或用户组设置任何文件/目录的访问权限。

   既然是作为 UGO 权限管理的补充,ACL 自然要有 UGO 办不到或者很难办到的事,比如:

1、可以针对用户来设置权限
2、可以针对用户组来设置权限
3、子文件/目录继承父目录的权限

  2、那么在使用 acl 权限前,先检查是否支持 acl 。如何检查呢?如下图:在这里插入图片描述

    提示:

   (1)、在默认情况下(Default mount options:)已经加入 acl 支持。若不支持,则需要添加。
   (2)、检查时可以用 tune2fs -l ,也可以用 df -h 。

  3、如何设置acl?

  设置acl权限, 就用到setfacl命令了。

  语法

SYNOPSIS
       setfacl  [-bkndRLPvh]  [{-m|-x} acl_spec] [{-M|-X} acl_file] file
       ...

       setfacl --restore=file

  选项

-m 配置后面的 acl 参数给文件/目录使用,不可与 -x 合用
-x 删除后续的 acl 参数,不可与 -m 合用(可按指定权限删除)
-b 移除所有 acl 配置参数
-k 移除所有默认的 acl 参数
-R 递归配置 acl
d 配置"默认 acl 参数",只对目录有效,在该目录新建的数据会引用此默认值

  给大家举几个实例

  1、设置 acl,使其他用户 user1 可以对 /tmp file2 执行读写权限。
在这里插入图片描述
  2、对 /tmp/test2 的目录进行 acl 设置,使其他用户 user2 对 /tmp/test2 下的所有文件或目录都有读写执行权限。
在这里插入图片描述

二、权限掩码

   权限掩码是什么?

在 Linux 下创建一个文件或目录之后是可以通过 chmod 等命令进行权限设置,来达到给当前用户、用户组用户以及其他用户分配不同的访问权限。那么,我们新创建的文件或目录本身也是有它的默认权限的,这个默认权限是什么?就是有权限掩码 umask 所确定的。它的功能可以说与 chmod 相反,代表默认拿走的,也就是不要动的权限。

   在Linux下查看的方式有两种,一种是直接输入 umask,可以看到数字形态的权限设置数,另一种是节 umask -S(Symbolic)选项,可以看到以符号的方式来显示出权限。

   umask命令

umask 查看当前umask
umask MASK 设置umask

  给大家演示一下

在这里插入图片描述
   在设置权限时,文件是用 666-umask ,而目录是 777-umask 。

   提示:

为什么文件要用 666-umask ,而目录要用 777-umask ?
因为文件默认权限不能有执行权限;如果在减的过程中有执行权限,则需要将其加 1 。

三、文件特殊权限SUID、SGID、SBIT

   1、什么是SUID?

SUID即SetUID,当S这个标志出现在文件所有者的x权限上时,如 /user/bin/passwd 这个文件的权限状态:" -rwsr-xr-x ",此时就被称为 SUID。

   这个权限的特殊作用是什么呢?

1、SUID 权限仅对二进制程序有效;
2、执行者对于该程序需要具有 x 的可执行权限;
3、本权限仅在执行该程序的过程中有效;
4、执行者将具有该程序拥有者的权限。

    SUID 的目的就是让本来没有相应权限的用户运行这个程序时,可以访问他没有权限访问的资源。

    展示位置:属主的执行权限位 如果属主原本有执行权限,显示为小写 s;否则为大写 S。

  给大家举给个例子

   用user1用户更改密码
在这里插入图片描述

   提示:

  当 user1 执行 passwd 命令时,调用 /usr/bin/passwd 来访问 /etc/shadow 文件,因为 /usr/bin/passwd 的 user 权限中的执行权限位上有 s,则其他用户 user1 可以充当 root 来执行此进程。

   2、什么是SGID?

当 s 这个标志出现在文件所属用户组的 x 权限位上,就称为 SGID

   注意:

1、SGID 对二进制程序有用;
2、程序执行者对于该程序来说,需具备 x 的权限;
3、SGID 主要用在目录上。
4、在此目录下创建新的文件时,新的文件的属组和此目录的属组相同

    展示位置:属主的执行权限位 如果属主原本有执行权限,显示为小写 s ;否则为大写 S 。

  为了让大家更清楚的理解,下面为大家举个实例演示一下

    在 test2/ 新创建文件和目录,展示改变权限位前后的文件目录权限详细信息
在这里插入图片描述

   注意:

   当此目录的属组用户权限位的 x 上显示的是 s 时,其他用户在此目录下新建的文件和目录的属组与当前目录的属组相同。

   3、什么是SBIT?

SBIT 即 Sticky Bit,这个就是针对 others 来设置的,和前面两个一样,只是功能不同。 SBIT目前只针对目录有效。
对于目录的作用是:当用户在该目录创建文件或目录时,仅有自己与 root 才有权力删除。

   展示位置:属主的执行权限位 如果属主原本有执行权限,显示为小写 t;否则为大写 T。

  下面演示一个实例帮助大家理解

   在 /tmp/test3 下,用户 user1 新创建一个文件和目录,展示改变权限位前后,属主 user1 及其他用户 user2 对其删除操作

在这里插入图片描述

  通过以上的解释及举例说明,相信大家对这些都不陌生了吧。

猜你喜欢

转载自blog.csdn.net/weixin_45440548/article/details/104812921