【Linux】文件特殊权限 SUID/SGID/Sticky Bit

 

linux中除了常见的读(r)、写(w)、执行(x)权限之外,还有3个特殊的权限,分别是setuid、setgid和stick bithtml

一、setuid、setgidlinux

先看个实例,查看你的/usr/bin/passwd 与/etc/passwd文件的权限ui

 

[root@MyLinux ~]# ls -l /usr/bin/passwd /etc/passwd
-rw-r--r-- 1 root root 1549 08-19 13:54 /etc/passwd
-rwsr-xr-x 1 root root 22984 2007-01-07 /usr/bin/passwd

 

众所周知,/etc/passwd文件存放的各个用户的帐号与密码信息,/usr/bin/passwd是执行修改和查看此文件的程序,但从权限上看,/etc/passwd仅有root权限的写(w)权,可实际上每一个用户均可以经过/usr/bin/passwd命令去修改这个文件,因而这里就涉及了linux里的特殊权限setuid,正如-rwsr-xr-x中的scode

setuid就是:让普通用户拥有能够执行“只有root权限才能执行”的特殊权限,setgid同理指”组“htm

做为普通用户是没有权限修改/etc/passwd文件的,但给/usr/bin/passwd以setuid权限后,普通用户就能够经过执行passwd命令,临时的拥有root权限,去修改/etc/passwd文件了blog

二、stick bit (粘贴位)it

再看个实例,查看你的/tmp目录的权限class

[root@MyLinux ~]# ls -dl /tmp
drwxrwxrwt 6 root root 4096 08-22 11:37 /tmp

 tmp目录是全部用户共有的临时文件夹,全部用户都拥有读写权限,这就必然出现一个问题,A用户在/tmp里建立了文件a.file,此时B用户看了不爽,在/tmp里把它给删了(由于拥有读写权限),那确定是不行的。其实是不会发生这种状况,由于有特殊权限stick bit(粘贴位)权限,正如drwxrwxrwt中的最后一个tgui

stick bit (粘贴位)就是:除非目录的属主和root用户有权限删除它,除此以外其它用户不能删除和修改这个目录file

也就是说,在/tmp目录中,只有文件的拥有者和root才能对其进行修改和删除,其余用户则不行,避免了上面所说的问题产生。用途通常是把一个文件夹的的权限都打开,而后来共享文件,象/tmp目录同样。

三、如何设置以上特殊权限
      setuid:chmod u+s xxx

setgid: chmod g+s xxx

stick bit : chmod o+t xxx

或者使用八进制方式,在原先的数字前加一个数字,三个权限所表明的进制数与通常权限的方式相似,以下:

suid   guid    stick bit

  1        1          1

因此:suid的二进制串为:100,换算十进制为:4

guid的二进制串为:010,换算:2

stick bit 二进制串:001,换算:1

因而也能够这样设:setuid:chmod 4755 xxx

setgid:chmod 2755 xxx

stick bit:chmod 1755 xxx

最后,在一些文件设置了特殊权限后,字母不是小写的s或者t,而是大写的S和T,那表明此文件的特殊权限没有生效,是由于你还没有给它对应用户的x权限  

 

转自:http://www.cnblogs.com/huangzhen/archive/2011/08/22/2149300.html

相关文章
相关标签/搜索