1. 首页
  2. IT资讯

和ctrl讨论linux系统上s,t权限位的问题,颇有感触,总结如下

关于Linux系统中文件或目录的s、t权限位的说明

[root@localhost /]# ls -l /bin/bash
-rwxr-xr-x    1 root     root       626028 2003-02-11  /bin/bash
———————————————————————————–
[root@localhost /]# chmod u+s /bin/bash
[root@localhost /]# ls -l /bin/bash
-rwsr-xr-x    1 root     root       626028 2003-02-11  /bin/bash
s位的说明:
     如上图所示:
     一般来说,一个运行中的程序为运行这个程序的用户所拥有。    但如果该程序是suid/guid程序,则运行的程序则为文件所有者拥有,运行中的程序在程序运行期间拥有文件所有者的全部权限。     如果一个普通用户运行了一个属于根用户的带s标志的程序,那么,该程序将不考虑用户权限,而是自动拥有在系统中读/写任何文件及目录的特权。
    这样做,有一定的好处,但一般我们不建议采用s位,要严格设置这种权限,避免破坏性。
   比如:若你的suid程序是/bin/bash的话,则会导致严重后果,一个普通用户若在某个短时间取得过root权限,他就能设置一个suid程序/binb/bash来取得根特权。 (若拿它来破坏别人的系统,后果自负)
# cp /bin/bash /home/jephe/.backdoor
# chmod 4755 /home/jephe/.backdoor
这样当攻击者执行了/home/jephe/.backdoor后就得到了根特权,可用id命令显示suid=0
t位的说明:
   t位就比较好理解了。如下图所示:
[root@localhost root]# ls -l 4444.jpg
-rw-r–r–    1 root     root       550349  3?? 14 14:31 4444.jpg
[root@localhost root]# chmod o+t 4444.jpg
[root@localhost root]# ls -l 4444.jpg
-rw-r–r-T    1 root     root       550349  3?? 14 14:31 4444.jpg
   程序的t属性表示粘着位,即告诉系统在程序完成后在内存中保存一份运行程序的备份,如该程序常用,可为系统 节省点时间,不用每次从磁盘加载到内存。由本人注明:是保存在虚拟内存中,而不是物理内存中。
   目录的t属性,设置了目录的T属性后1000,由只有该目录的所有者及root才能删除该目录,
    如/tmp目录就是drwxrwxrwt
记住,记住,呵呵。

lhdz_bj:
好,很精深的问题。美中不足的是,T粘着位的介绍少了点,再清楚点就好了,呵。。。
主人回复:
哈,多谢老大哥捧场。 t位的说明就那点意思啊,呵呵。若有不太清楚的地方,您说~,我知无不言,言无不尽。

lhdz_bj:
首先,你说的很清楚了,可我觉得S和T权限位,似乎都和安全能扯上关系,S位对安全的影响你说的很清楚很详细了,T位虽然说清楚了,但没涉及到安全的问题,能否说点T位和安全的具体关系呢?不过,首先声明,我对LINUX研究肯定没老弟深入,就是再7、8年前看过一点,还看过一本有关安全的书,都讲到了S、T位和安全的关系,现在也忘记的差不多了,呵,多赐教啊。
主人回复:
据目前所看到的资料而言,t位好像确实没有安全方面的关系。它的作用应该就是~可以使带有t位的程序在运行结束以后,不会退出内存,而是将这个程序保留在虚拟内存当中。这样,当再次运行这个程序的时候,就不再需要从磁盘中重新读取调入内存了,加快了程序的运行速度。好像就是这个作用:)

lhdz_bj:
我刚才查了一下,是这个意思,其实你刚才最后一句有这个意思:
要删除一个文件,你不一定要有这个文件的写权限,但你一定要有这个文件的上级目录的写权限。也就是说,你即使没有一个文件的写权限,但你有这个文件的上级目录的写权限,你也可以把这个文件给删除,而如果没有一个目录的写权限,也就不能在这个目录下创建文件。
如何才能使一个目录既可以让任何用户写入文件,又不让用户删除这个目录下他人的文件,sticky就是能起到这个作用。sticky一般只用在目录上,用在文件上起不到什么作用。
在一个目录上设了sticky位后,(如/tmp,权限为1777)所有的用户都可以在这个目录下创建文件,但只能删除自己创建的文件,这就对所有用户能写的目录下的用户文件启到了保护的作用。
至于,sticky bit是否如你所说,可以使程序运行后保存在内存的交换区中,你是参考的什么资料,我一直没看到相应的资料。
主人回复:
可以创建自己的文件,删除自己的文件,但就是不能删除别人的文件。嗯,学到!! 文件也可以设置t位,它不仅可以设置t位(chmod 1777 myfie),而且,也可以设置T位(chmod o+t myfile)。t和T之间的区别我还没有搞清楚。 程序的t位,参考地址:http://blog.chinaunix.net/u2/63316/showart_495911.html

lhdz_bj:
查了些资料,都是些互相抄录的东西,总结如下:
1.目录设置STICKY BIT后,即使用户拥有该目录的写权限,目录下的文件也只能由属主和 ROOT才能删除,用户不能删除该目录下的其他用户的文件。
2.文件设置了STICKY BIT后,即使其他用户拥有对该文件的写权限,也不能删除该文件,只能由该文件的属主删除。当然,也有文件设置该sticky bit位后,程序运行后要再内存中保留影像的说法,也可能会有这种功能,但现在用的不是很多,有待验证,至于程序留在系统交换区的说法,我觉得有待商榷,因为系统交换区是再硬盘上的,放在交换区和用到该程序时重新从盘上读,能快多少呢?
3.关于t和T,是这样的,当设置STICKY BIT位后,当用ls -al命令列目录或文件权限时,如果目录或文件的的STICKY BIT位原来有x权限,就显示t,如果原来没有x权限,就显示T,因为显示时sticky bit位要占用x位的。
共勉。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8484829/viewspace-478111/,如需转载,请注明出处,否则将追究法律责任。

主题测试文章,只做测试使用。发布者:深沉的少年,转转请注明出处:http://www.cxybcw.com/184773.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code