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

来源:互联网 发布:全国旅游景点数据库 编辑:程序博客网 时间:2024/04/24 02:04

出处:http://yuzhou68.blog.163.com/blog/static/189290358200821782653181/

 

解释S位和T位:su位可以使程序以文件所属者身份执行,sg位可以使程序以文件所属组身份执行,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-   1 root     root       550349  3?? 14 14:31 4444.jpg 

   程序的t属性表示粘着位,即告诉系统在程序完成后在内存中保存一份运行程序的备份,如该程序常用,可为系统 节省点时间,不用每次从磁盘加载到内存。由本人注明:是保存在虚拟内存中,而不是物理内存中。 

   目录的t属性,设置了目录的T属性后1000,由只有该目录的所有者及root才能删除该目录, 
    如/tmp目录就是drwxrwxrwt 

原创粉丝点击