3.4Linux下SUID/SGID/SBIT 权限配置
Posted by 撒得一地 on 2015年12月10日 in Linux教程
之前介绍过SUID与SGID的功能,那么如何配置文件使成为具有SUID与SGID的权限?这就要涉及到Linux下数字更改权限的方法。数字型态更改权限的方式为三个数字的组合,而SUID/SGID/SBIT 权限配置则是在这三个数字之前加上一个数字,最前面的那个数字就代表这几个权限:
4 为 SUID 2 为 SGID 1 为 SBIT
假设要将一个文件权限改为『-rwsr-xr-x』时,由于 s 在使用者权限中,所以是 SUID ,因此, 在原先的 755 之前还要加上 4 ,
也就是:『 chmod 4755 filename 』来配置。
下面这个例子为了方便使用同一个文件来配置,不过要注意的是,SUID是用在文件上而SBIT是用在目录上。
[root@lmode ~]# cd /tmp [root@lmode tmp]# touch ppsszz [root@lmode tmp]# chmod 4755 ppsszz ; ls -l ppsszz -rwsr-xr-x 1 root root 0 Dec 9 23:15 ppsszz [root@lmode tmp]# chmod 6755 ppsszz ; ls -l ppsszz -rwsr-sr-x 1 root root 0 Dec 9 23:15 ppsszz [root@lmode tmp]# chmod 1755 ppsszz ; ls -l ppsszz -rwxr-xr-t 1 root root 0 Dec 9 23:15 ppsszz [root@lmode tmp]# chmod 7666 ppsszz ; ls -l ppsszz -rwSrwSrwT 1 root root 0 Dec 9 23:15 ppsszz
最后一个例子就要特别小心。怎么会出现大写的 S 与 T 呢?不都是小写的吗? 因为 s 与 t 都是取代 x 这个权限的,但是你有没有发现,我们是下达 7666 。也就是说, user, group 以及 others 都没有 x 这个可运行的标志( 因为 666 ),所以,这个 S, T 代表的就是空的。怎么说? SUID 是表示『该文件在运行的时候,具有文件拥有者的权限』,但是文件 拥有者都无法运行了,哪里来的权限给其他人使用?当然就是空的。
而除了数字法之外,你也可以透过符号法来处理。其中 SUID 为 u+s ,而 SGID 为 g+s ,SBIT 则是 o+t 。来看看如下的范例:
#配置权限为-rws--x--x [root@lmode tmp]# chmod u=rwxs,go=x ppsszz ; ls -l ppsszz -rws--x--x 1 root root 0 Dec 9 23:15 ppsszz [root@lmode tmp]# chmod g+s,o+t ppsszz ; ls -l ppsszz -rws--s--t 1 root root 0 Dec 9 23:15 ppsszz