[Linux] 特殊权限的SUID、SGID、SBIT

        在Linux中,文件权限属性除了基本的读(r)、写(w)、执行(x)权限外,还有一些特殊的权限位,包括SUID (Set User ID)、SGID (Set Group ID) 和 SBIT (Sticky Bit),它们可以改变文件执行时的行为或者目录访问时的行为 。当我们查看一些其他的文件的时候,会发现有其他权限的字母,如s,t等。

文件权限可以通过两种方式表示:符号表示法和数字表示法。

  • 符号表示法:使用字符来表示权限,例如 -rwxr-xr-x。这里,第一个字符表示文件类型(例如 - 表示常规文件,d 表示目录),接下来的九个字符分成三组,每组三个字符,分别表示所有者、所属组和其他用户的权限。

  • 数字表示法:使用数字来表示权限,例如 755。这里,每个权限位用数字表示:4 表示读权限,2 表示写权限,1 表示执行权限,0 表示无权限。每三个数字一组,分别表示所有者、所属组和其他用户的权限。

SUID (Set User ID)

        当一个可执行文件设置了SUID位时,该程序运行时会获得文件所有者的权限,而不是运行该程序的用户的权限。这意味着即使普通用户运行这个程序,它也会以文件所有者的身份来执行,这样可以用来实现一些需要较高权限的操作,但又不需要用户直接以管理员身份运行命令。

示例:

  • 文件权限显示为 -rwsr-xr-x,其中 s 表示SUID位被设置。
  • 如果root用户拥有一个名为 passwd 的程序,并且设置了SUID位,那么任何用户运行这个程序时都会以root的身份执行,这样用户就可以修改自己的密码而无需知道root密码。

SGID (Set Group ID)

        SGID类似于SUID,但它针对的是组权限。如果一个文件设置了SGID位,当用户执行这个文件时,其有效组ID将变成文件所属组的ID。对于目录来说,设置SGID意味着在这个目录下创建的新文件或子目录将会继承该目录的组所有权,而不是创建者的默认组。

示例:

  • 目录权限显示为 drwxr-sr-x,其中 s 表示SGID位被设置。
  • 如果一个共享目录 /groupwork 设置了SGID位,那么所有在这个目录下创建的文件和目录都将属于 /groupwork 的组,而不是创建者的默认组。

SBIT (Sticky Bit)

        SBIT通常用于目录上,它的主要目的是防止用户删除或重命名不属于他们的文件。当一个目录设置了SBIT位,只有文件的所有者、目录的所有者以及具有写权限的用户才能删除或重命名文件。

示例:

  • 目录权限显示为 drwxrwxr-t,其中 t 表示SBIT位被设置。
  • 如果一个公共目录 /uploads 设置了SBIT位,那么用户只能删除自己上传的文件,不能删除其他用户上传的文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值