LINUX中s和t两个特殊权限及x权限说明

总结导读:

当s权限在文件所有者 x 权限上时,即当执行该文件时将具有该文件所有者的权限。

当s权限在文件组 x 权限上时,执行者在执行该文件时将具有该文件所属组的权限。

t权限在other x权限上时,任何人都可以在目录内新增、修改文件,但是只有该文件或目录的建立都与root用户能够删除自己的文件或目录。

系统是这样规定的, 假如本来在该位上有x, 则这些特别标志 (suid, sgid, sticky) 显示为小写字母 (s, s, t).否则, 显示为大写字母 (S, S, T) 。


s和t两个特殊权限说明:

LINUX中除了r w x 三个权限外(分别代表r 读,w 写,x 执行),其实还有两个特殊的权限s 跟t

当s权限在文件所有者 x 权限上时,例如:-rwsr-xr-x,此时称为Set UID,简称为SUID的特殊权限,

即当执行该文件时将具有该文件所有者的权限。

例如:有一个普通用户hff,当hff修改密码时,执行passwd这个命令,passwd该文件权限为:-rwsr-xr-x

1. hff对于 /usr/bin/passwd 这个程序具有 x 权限,表示hff 能执行 passwd
2. passwd 文件的所有者是 root 
3. hff 执行 passwd 的过程中,会暂时获得 root 的权限

4. /etc/shadow 就可以被 hff 所执行的 passwd 所修改。


[mark@centos4 root]$ passwd jack
passwd: Only root can specify a user name.其他用户只能使用passwd修改自己的密码而已

[mark@centos4 root]$ ls -lah /etc/passwd
-rw-r--r-- 1 root root 1.6K Feb 25 16:59 /etc/passwd

[mark@centos4 root]$ ll -h /usr/bin/passwd
-rwsr-xr-x. 1 root root 28K Jun 10  2014 /usr/bin/passwd
[mark@centos4 root]$


当s权限在文件组 x 权限上时,例如:-rwx--s--x,此时称为Set GID,简称为SGID的特殊权限,

我理解的是:执行者在执行该文件时将具有该文件所属组的权限。


还有一个t权限,Sticky Bit,简称为SBIT权限,只针对目录有效。

-当用户对此目录具有 w, x 权限,亦具有写入的权限时
-当用户在该目录下创建文件或目录时,仅有自己与 root用户才有权限删除该文件或目录

例如:

/tmp 本身权限是drwxrwxrwt,表示任何人都可以在/tmp目录内新增、修改文件,但是只有该文件或目录的建立都与root用户能够删除自己的文件或目录。


x权限说明:

添加x的说明:如果目录具有 x 权限,例如 drwx--x--x,则所属组和其它用户都可以进入该目录,并可以查看该目录下的文件的内容,但是不能使用ls命令查看该目录下的内容,不能在该目录下创建文件或目录:

例如 hff用户的/home/hff 目录具有 drwx--x--x 属性,你知道该目录下有一个test文件,则使用oracle用户可以直接查看该文件的内容 cat /home/hff/test,但是oracle用户不能在/home/hff目录创建文件或目录。

补充:

https://www.cnblogs.com/MrListening/p/5813281.html

Linux中的特殊权限粘滞位(sticky bit)详解

Linux下的文件权限

在linux下每一个文件和目录都有自己的访问权限,访问权限确定了用户能否访问文件或者目录和怎样进行访问。最为我们熟知的一个文件或目录可能拥有三种权限,分别是读、写、和执行操作,在这里不做详细说明。我们创建一个文件后系统会默认地赋予所有者读和写权限。当然我们也可以自己修改它,添加自己需要的权限。

特殊权限

但是这三种权限就足够了吗?我们现在来说说在linux下的另一个特殊权限。首先我们来看看在根目录下的一个目录tmp,可以看到tmp目录的other权限是'rwt',那么这里的t又是什么权限呢,有什么意义。

在理解这个权限之前我们先来看看tmp这个目录是存放什么东西的,linux下tmp目录是存放一些临时文件的,那么上图可以看到,该目录的所有者和组用户的权限都是rwx,对于other的权限是rwt。

我们知道如果一个目录的other权限设置有写和执行权限的话,那么别的用户也是可以在该目录下进行创建文件和删除文件等操作,我们来试一试:

现在是root用户,在它的根目录下创建了一个cur目录,并且赋予了777权限。

之后再给cur目录下新建了test1和test2两个文件,而此时我们可以看到这两个文件的other权限只有一个读权限。

现在我们切换用户到dh用户下,试着删除刚刚新建的文件,发现是完全可以删除的。那么这就存在了一个问题,像/tmp目录的权限是应该设置成"rwxrwxrwx"的,因为它要允许任何用户都能在该目录下创建、删除、移动文件等操作。但我们刚刚也看到了,我的dh用户是可以删除root用户在cur目录下创建的文件夹,那么对于tmp目录,任意用户都可以删除系统服务运行中的临时文件(别的用户的),那么这肯定是我们不想要的。

所以回到最初,我们看到tmp目录的权限是"rwxrwxrwt",这里的t就起了相当重要的作用。

粘滞位(粘着位)

上面所说的t权限就是我们在这里要讲的粘滞位(sticky bit),我们给刚刚的cur目录采用chmod o+t的方式给other用户设置粘滞位。

然后我们继续切换到dh用户,看看我们能否继续之前的删除操作:

可以看到此时我们看到dh用户是没有权限删除root用户创建的文件了,这也就是粘滞位的作用。

粘滞位权限便是针对此种情况设置,当⽬录被设置了粘滞位权限以后,即便⽤户对该⽬录有写⼊权限,也不能删除该⽬录中其他⽤户的⽂件数据,⽽是只有该⽂件的所有者和root⽤户才有权将其删除。设置了粘滞位之后,正好可以保持⼀种动态的平衡:

允许各⽤户在⽬录中任意写⼊、删除数据,但是禁⽌随意删除其他⽤户的数据。

几点说明

对于特殊权限的添加是添加在原有的执行权限上的,所以特殊权限添加的要求需要文件或者目录本身具有可执行权限。

上图中,我去掉了cur的other的执行权限,可以看到本来't'的位置变成了'T',此时dh用户在cur目录中是不具有权限来进行一系列操作的。

那么原来的执行标志x到哪里去了呢?

系统是这样规定的, 假如本来在该位上有x, 则这些特别标志 (suid, sgid, sticky) 显示

为小写字母 (s, s, t).否则, 显示为大写字母 (S, S, T) 。  

注意事项

》粘滞位权限是针对目录的,对文件无效

上述的这些操作是在root用户下创建了一个test.c文件,然后添加了t权限,然而在dh用户下还是可以直接进行删除的。所以粘滞位是针对有执行权限的目录的,对于文件添加粘滞位并没有什么作用。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值