4、Linux学习之文件权限(二)

发布时间 2023-12-10 17:13:18作者: Lathe

二、基本权限ACL

ACL(Access Control List)为访问控制列表。ACL可以设置特定用户或用户组对于一个文件或文件夹的操作权限。

 即ACL用于设定某个用户针对文件的权限

 权限的优先级顺序:所有者-->ACL自定义用户-->ACL自定义组-->其他人

1、查看ACL权限:getfacl命令

2、设置ACL权限:setfacl命令

①  “-m”参数设置ACL权限

用户设置ACL权限命令格式:setfacl -m u:用户名:权限  文件名

设置ACL权限命令格式:  setfacl -m g:组名:权限  文件名

(当使用ll命令查看文件时,权限字符位最后出现“+”,说明该文件含有ACL权限)

 

②  删除ACL权限

  • 删除指定的ACL权限:

          命令格式:setfacl -x u:用户名 文件名  # 删除指定用户的ACL权限

                               setfacl -x g:组名 文件名    # 删除指定组的ACL权限

  • 删除所有的ACL权限:

命令格式:setfacl -b 文件名

③  默认ACL权限(default)

指的是针对父目录而言,新建的文件和子目录会继承父目录的ACL权限。

 命令格式:setfacl -m d:u:用户名:权限 -R 文件名

   注意:默认权限,只能赋予目录,即命令中的文件名为目录的名称

3、 最大有效权限mask

  •  给用户或用户组设定的ACL权限并不是真正的设定权限,而是通过设定的ACL权限与mask权限进行“”运算后,获得用户的真正权限

    系统默认mask权限rwx(一般不需要更改),此时,任何权限与mask权限进行与运算,结果仍是权限本身。

  • mask是用来指定最大有效权限。可以理解为:用户和用户组所设定的权限必须在mask权限设定的范围内才能生效。

        注意:一般不会去修改系统默认的mask权限,但是能够修改,命令格式如下:

        setfacl -m m:权限 文件名

 

三、高级权限

1、Set UID:SUID权限

SUID权限:在文件可执行的二进制文件)的所有者属性的x权限位上标志为s时,表示该文件具有SUID权限。

  SUID权限的作用是:

    拥有可执行文件的执行权限普通用户,在运行该执行文件的过程时,

    暂时获得该执行文件的所有者的权限,执行结束后,释放权限。

  SUID权限是在执行的过程中生效

  总结SUID的限制与功能,如下:

  •  SUID权限仅对二进制程序(binary program)有效
  •  执行者对该程序需要具有x的可执行权限
  •  SUID权限仅在执行该程序的过程中有效(run-time)
  •  执行过程中执行者将具有该程序拥有者(owner)的权限

  警告:SUID仅可用在可执行程序(binary program)上,不建议用在shell script上;

     不能用在目录上

 

设置SUID权限的方法:(基本权限的数字表示法前加的4代表SUID权限

方法一chmod u+s 文件名 (权限的字符模式,在user处添加s

方法二chmod 4755 文件名 (权限的数字模式,在基本权限的数字前加4

      注意:当文件SUID的标志s不是小写而是大写S时,说明无执行权限x,即为空,无效。

取消SUID权限的方法:  chmod u-s 文件名

 

 

2、Set GID:SGID权限

  SGID权限:在文件所属组x权限位上标志位s时,表示该文件具有SGID权限。

  SGID权限可以作用于可执行的二进制文件,也可以作用于目录

  A、SGID对于文件的含义:(类似于SUID的作用)

    •  只有可执行的二进制程序才能设置SGID权限
    •     执行者对该程序(设置了SGID权限)需要具有x的可执行权限
    •     在执行该程序的时候,执行者的所属组会临时变成该程序文件的所属组
    •  SGID权限只在该程序执行过程中有效,即所属组身份的改变只在执行过程有效

   例说明:普通用户执行locate命令(locate命令设置了SGID权限)

    

    B、SGID对于目录的含义:(常用的用途)

    • 普通用户必须对该目录(有SGID权限的目录)具有r与x权限,才能进入该目录
    • 普通用户在此目录下的有效群组将会变成该目录的群组
    • 用途若使用者拥有该目录的w权限(写),则使用者在该目录下新建文件后,新建文件的所属组与该目录的所属组相同

   (即拥有SGID权限的目录下,新建的文件的所属组与该目录的所属组是一样的。)

     C、设置SGID权限的方法:(基本权限的数字表示法前加的2代表SGID权限

   方法一:chmod g+s 目录名(权限的字符模式,在group处添加s

   方法二chmod 2755 目录名(权限的数字模式,在基本权限的数字前加2

   注意:当文件SGID的标志s不是小写而是大写S时,说明无执行权限x,即为空,无效。

       D、取消SGID权限的方法:chmod g-s 目录名

 

3、Sticky Bit:SBIT权限

  SBIT权限:即粘着位,在目录其他人x权限位上标志成 ,则该目录具有SBIT权限。

  SBIT权限只针对目录有效

  SBIT权限对于“目录”的含义:

  • 使用者对于该目录(有SBIT权限的目录)具有w、x权限,即具有写、入权限,
  • 使用者在该目录下建立文件或子目录时,只有自己或root能够删除文件或子目录

  通俗的理解是:具有SBIT权限的目录下,只能够对自己建立的文件进行删除、更名、移动等操作,而无法删除他人建立的文件。如系统中的“/tmp/”目录:

     

  设置SBIT权限的方法:(基本权限的数字表示法前加的1代表SBIT权限

    方法一:chmod -R o+t 目录名(权限的字符模式,在other处添加t

    方法二chmod -R 1755 目录名 (权限的数字模式,在基本权限的数字前加1

  取消SBIT权限的方法:chmod -R o-t 目录名

 

 四、文件隐藏属性 

1、隐藏属性

  linux系统中文件除了普通rwx权限外,还有一种隐藏权限,如下:

  

  其中,每个位置代表一种隐藏属性,若含有该属性则显示相应字符,如i属性,

  若没有该隐藏属性则显示“-”(减号)

2、常用隐藏属性介绍

  

 3、设置文件隐藏属性:chattr命令

 命令格式:chattr + 参数 文件名

 “a”参数:增加了“a”属性之后,便不能再使用Vim编辑器写入文本,需要使用echo命令以追加的方式写入。(此属性一般用于日志文件)

echo 内容 >> 文件名          “>>”表示追加

echo 内容 >  文件名             “>”表示覆盖

 4、查看文件隐藏属性:lsattr命令