文件系统的特殊权限以及ACL的相关用法

【文件系统的特殊权限】


       Linux系统下文件有三种权限,可读(Readable)、可写(writable)、可执行(excutable

这是比较常见的三种权限,比较常见,这篇就暂且不提。事事都有例外,今天主要来提一提那些例外的事。

首先先看一下例子。我们知道一个文件权限就代表着它可以执行什么,例如下图,/etc/passwd 的权限:对于其他用户是只读的。




       那么我们首先思考一下:这个文件对于其他用户来说,是只读,不可写,不可执行的。那么用户只能查看这个文件。我们知道这个文件是用来存放用户信息的。如果用户想要修改自己的密码是没有权限的,那么接下来我们切换一个用户来实验一下:



显示修改密码成功。为什么?不是只有只读权限吗?接下来我们看看/etc/passwd 文件在哪:


我们知道文件的三种权限为rwx,那么上述文件权限有一个s权限是什么意思?这就是文件系统的特殊权限。


【干货】


文件的特殊权限有三种:SUID、SGID、sticky

SUID:  

       即对文件所属人的权限进行操作。如上图,当它出现在文件拥有者权限位时,代表了任何拥有执行该文件权限的人,在执行过程中都临时拥有该文件所属人的权限。SUID只有对一个可执行的二进制文件才有意义,如果作用在一个普通文件或者脚本时是没有意义的。

       如上图,在文件所属人为上有s权限,那么当wangcai用户对文件拥有执行权限操作时,将临时获得root的权限。所以wangcai用户可以对自己密码进行修改并修改成功。

用一张图可以很清晰的表示:


SGID:即对文件所属组的权限进行操作

①  当对一个可执行的二进制文件作用了SGID权限之后,任何拥有执行该文件权限的人,在执行的过程时都临时拥有该文件所属组的权限。这个与SUID的作用是一样的

②  还有一种特殊情况。当对一个目录作用了SGID权限之后,情况就不一样了。

先来做一个实验~


 


这时候如果想使dir 目录下新创建的文件所属组也为g1组怎么办?


 


       由以上实验可以得出:当对一个目录作用了SGID权限之后,当用户对某一目录有wx的权限时,该用户在该目录下建立文件或目录时,这个文件或者目录都属于父目录所属的组。


Sticky位

       也可称为粘滞位。它的表示方法与前两个不同。SUID 和SGID都使用s表示,而Sticky位用t表示。

它表示当对一个目录(必须作用在目录上)作用了sticky之后,该目录下的文件仅其所属人才能删除。而且它只作用于组用户,目录的所属人不受其影响。

例如:



做一个实验:

在一个公司里,张三、李四、王五属于一个项目小组(admin),在这个小组里他们的信息是共享的:



即:三个人之间可以相互查看修改对方创建的文件,但同时也可以删除对方的文件。如:



     这种操作显然是不科学的。现在我们需要设置在同一目录里的文件只能由所属人删除,其他人不能删除,这就需要使用sticky:

 


那么如何来设置上面所说的三种权限呢?

①  数字模式

         4 表示SUID

         2 表示SGID

         1 表示Sticky

表示方法:在原有普通文件权限之前加上相应的特殊权限。

eg: 上述例子里,用数字模式表示为:

   chmod  1771 dir1

如果三个权限同时存在时,将各个权限的值相加,即7xxx 表示。

 

 权限模式

         SUID : chmod  u+s filename

         SGID : chmod  g+s filename

         Sticky: chmod  o+t filename

 

 

【ACL(Access Control List)】访问控制列表

       我们知道,文件权限将用户分为三种人:文件所属人,所属组的成员以及其他人。但是在现实生活中,这三个分类往往满足不了我们的需求。那么ACL就是为了实现更灵活的权限管理而生。

除了文件的所有者,所属组和其他人,我们可以对更多的用户设置不同的权限来应用于不同的情况。


1、ACL权限的开启

     想要对不同用户设置更多的acl权限,首先要确保acl权限的开启。

     CentOS7 默认创建的xfs和ext4文件系统具有ACL功能

     CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加,添加方法为:

     tune2fs –o acl/dev/sdb1

     mount –o acl/dev/sdb1 /mnt/test


2、ACL权限的应用

     查看文件的ACL权限

     getfacl filename/group

 

    设置一个用户的ACL权限:

setfacl  -m  u:username:rwx  file(directory)       【u】表示指定用户

    设置一个组的ACL权限:

setfacl  -m  g:groupname:rwx file(directory)      【g】表示指定组

 

如:现有一个文件权限如下:


 

设置ACL权限,使用户tom 拥有对该目录读写的权利,该用户不属于其中三类任一类:



设置组:

 

  

       以上设置命令只对当前已存在的文件或者目录设置了acl权限,如果想要对未来创建的文件或者目录都拥有acl权限,需要加上默认权限:

setfacl  -m  d:u:username:rwx  file(directory)




setfacl –R -m       表示递归创建特殊权限


如果要删除用户的权限:

setfacl –x  file(directory)       删除用户的权限



setfacl -Rb * 清空所有目录及文件的ACL权限


【顺序】

      acl权限的生效顺序为:所有者  -> 自定义用户 -> 自定义组 -> 其他人

      按生效顺序查找,一旦找到所对应的条件将不在向下查看。


【说明】

      如果一个用户属于多个组,并且多个组都设置了acl权限,则该用户拥有组的累加权限。

 


PS:以上就是本编所总结的文件系统相关特殊权限,其中若有错误不足之处,希望路过的看官大神指正,小女子不胜感激~~~
再次笔芯~~~



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值