linux文件特殊权限:SUID,SGID,SBIT

        通常我们看到的文件的权限就是rwx这个三个读、写、可执行的权限的组合,但是,眼尖的朋友可能会发现有些文件的权限怪怪的?譬如说/tmp和/usr/bin/passwd,如下图所示:

       不应该只有rwx吗?还有其他的特殊权限(s跟t)啊?s和t到底是什么呢?


Set UID

        当s这个标志出现在文件拥有者的x权限上时,例如刚刚提到的/usr/bin/passwd这个档案的权限状态:-rwsr-xr-x,此时就称为Set UID,简称SUID的特殊权限。那么SUID的权限对于一个档案的特殊功能是什么呢?基本上SUID有这样的限制与功能:

  1. SUID权限仅对二进制程序(binary program)有效
  2. 执行者对于程序需要具有x的可执行权限
  3. 本权限仅在执行该程序的过程中有效(run-time)
  4. 执行者将具有该程序拥有者的权限
        讲这么硬的东西,你可能对于SUID还是没有概念,没关系,我们举个例子来说明好了。我们的linux系统中,所有的帐号和密码都记录在/etc/shadow这个文件里面,这个文件的权限为:-rw------- 1 root root,意思是这个档案仅有root可读且仅有root可以强制写入而已。既然这个档案仅有root可以修改,那么我们自己能否自行修改自己帐号的密码呢?你可以使用你自己的帐号输入passwd这个指令来看看,嘿嘿!一般用户当然修改自己的密码了!
       喔!有没有冲突啊?明明/etc/shadow就不能让一般帐户去存取的,为什么一般帐户还能修改这个文件内的密码呢?这就是SUID的功能啦! 通过上述的功能说明,我们可以知道:
       1、普通用户对于/usr/bin/passwd这个程序来说是具有x权限的,表示普通用户能执行passwd
       2、passwd的拥有者是root这个帐户
       3、一般用户执行passwd的过程中,会暂时获得root的权限
       4、/etc/shadow就可以被vbird所执行的passwd所修改
       但如果一般用户使用cat去读取/etc/passwd时,他能够读取吗?因为cat不具有SUID的权限,所以一般用户执行cat /etc/shadow时,是不能读取/etc/passed的。
       另外,SUID仅可用在binart program上,不能够用在shell script上面!这是因为shell script只是将很多的binary可执行文件调用执行而已!所以SUID的权限部分,还是得要看shell脚本调用的程序的设定,而不是shell脚本自身。当然,SUID对于目录也是无效的~这点特别留意。

Set GID

      当s标志在文件拥有者的x项是称为SUID,那s在群组的x时,则称为Set GID,SGID。举例来说,你可以下面的指令来观察具有SGID权限的档案:

          与SUID不同的是,SGID可以针对文件或目录来设定!如果是对档案来说,SGID有如下功能:
       1、SGID对二进制程序有用
       2、程序执行者对于该程序来说,需具备x的权限
       3、执行者在执行的过程中将会获得该程序群组的支持
       举例来说,上面的/usr/bin/locate这个程序可以去搜索/var/lib/mlocate/mlocate.db这个档案的内容,mlocate.db的权限如下:
       
        与SUID非常的类似,若我们使用普通帐户去执行locate时,那么普通帐号将会获得slocate群组的支持,因为就能够去读取mlocate.db啦!非常有趣吧!
        除了binary  program之外,事实上SGID也能够用在目录上,这也是非常常见的一种用途!当一个目录设定了SGID的权限后,他将具有如下的功能:
        1、用户若对于此目录具有r与x的权限时,该用户能够进入此目录
        2、用户在此目录下的有效群组将会变成该目录的群组
        3、用途:若用户在此目录下具有w的权限(可以新建档案),则使用者所建立的新档案,该新档案的群组与此目录的群组相同
        SGID对于项目开发来说是非常重要的!因为这涉及群组权限的问题。

Sticky Bit

       这个Sticky Bit,SBIT目前只针对目录有效,对于档案已经没有效果了。SBIT对于目录的作用是:
       1、当用户对于此目录具有w、x权限,亦即具有写入的权限时
       2、当用户在该目录下建立档案或目录时,仅有自己与root才有权利删除该档案
       换句话说:当甲这个用户于A目录是具有群组或其他人的身份,并且拥有该目录w的权限,这表示甲用户对于该目录内任何人建立的目录或档案均可进行“删除/更名/搬移”等动作。不过,如果将A目录加上SBIT的权限时,则甲只能对自己建立的档案或目录进行删除/更名/移动等动作,而无法删除他人的档案。
       举例来说,我们的/tmp本身的权限是drwxrwxrwt,这这样的权限内容下,任何人都可以在/tmp内新增、修改档案,但仅有该档案/目录的建立者与root能够删除自己的目录或档案。

SUID/SGID/SBIT权限设定
        前面介绍过SUID与SGID的功能,那么如何配置文件使成为具有SUID或SGID的权限呢?可以通过chmod数字更改权限的方法,其中4为SUDI,2为SGID,1为SBIT。
        假设要将一个档案权限改为-rwsr-xr-x时,由于s在用户权利中,所以是SUID,因此,在原先的755之前还要加上4,也就是chmod 4755 filename来设定。
       除了数字法之外,你也可以通过符号法来修改权限哦!其中SUID为u+s,而SGID为g+s,SBIT则是o+t啰!


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值