关于Linux下s、t、i、a权限
关于Linux下s、t、i、a权限
    ⽂件权限除了r、w、x外还有s、t、i、a权限:
⾸先我们利⽤umask查看系统的权限为四位,⾸位就是特殊权限位,SetUID为4,SetGID为2,t为1
[root@iz2ze46xi6pjjj69ailg9lz ~]# umask
0022
⼀、 s权限解读:  (SetUID和SetGID)
1.SetUID权限解读(针对所属主设置s权限,数字表⽰为4)
  SetUID:当⼀个可执⾏程序具有SetUID权限,⽤户执⾏这个程序时,将以这个程序所有者的⾝份执⾏。前提是这个⽂件是可执⾏⽂件,可就是具有x权限(属组必须先设置相应的x权限)。chmod命令不进⾏必要的完整性检查,即使不设置x权限就设置s权
限,chmod也不会报错,当我们ls -l时看到rwS,⼤写S说明s权限未⽣效)
  (1)设置权限的⽅法:
          chmod u+s xxx
         chmod 4777 xxx
    解释:我们利⽤umask知道权限的设置是四位数,后三位是ugo对应的属性,⾸位就是特殊位权限的表⽰,SetUID的权限位是4,因此可以⽤chmod 4777 xxx设置s权限。
  例1: linux的passwd命令就具有s权限,因此普通⽤户可以修改⾃⼰的密码:
[qlq@iz2ze46xi6pjjj69ailg9lz ~]$ ls -la `which passwd`
-rwsr-xr-x. 1 root root 27832 Jun 102014 /usr/bin/passwd
    解释:passwd的所属这是root,所属组也是root,具有s权限,因此其他⽤户执⾏passwd的时候是以passwd的所属组root执⾏。
  例2:将touch赋予s权限,查看其创建的⽂件的所属组
    (1)qlq⽤户touch没有被赋予s权限的时候创建⼀个⽂件(所属主是当前⽤户,所属组是当前⽤户的组:)
[qlq@iz2ze46xi6pjjj69ailg9lz test]$ ls
[qlq@iz2ze46xi6pjjj69ailg9lz test]$ touch test1file
[qlq@iz2ze46xi6pjjj69ailg9lz test]$ ll
total 0
-rw-rw-r-- 1qlq qlq0 Mar 3012:54 test1file
    (2)root⽤户将touch赋予s权限:
[root@iz2ze46xi6pjjj69ailg9lz ~]# chmod u+s `which touch`  #赋予所属主s权限
[root@iz2ze46xi6pjjj69ailg9lz ~]# ll `which touch`    #查看touch权限
盛墨兰结局-rwsr-xr-x. 1 root root 62488 Nov  62016 /usr/bin/touch
    (3)qlq⽤户再次创建⼀个⽂件查看所属主(所属主是root,所属组是当前⽤户所属组)
[qlq@iz2ze46xi6pjjj69ailg9lz test]$ touch test1file2
[qlq@iz2ze46xi6pjjj69ailg9lz test]$ ll ./test1file2
-rw-rw-r-- 1 root qlq 0 Mar 3012:59 ./test1file2
(2)收回s权限
chmod u-s xxx
    chmod  0777  xxx
例如:收回上⾯的touch的s权限之后再次创建⽂件:
    (1)root⽤户收回权限
[root@iz2ze46xi6pjjj69ailg9lz ~]# chmod 0755 `which touch`    #收回权限
[root@iz2ze46xi6pjjj69ailg9lz ~]# ll `which touch`      #查看权限
-rwxr-xr-x. 1 root root 62488 Nov  62016 /usr/bin/touch
      第⼀位为特殊权限位。因此⽤0就表⽰没有特殊权限。
    (2)qlq⽤户再次创建⼀个⽂件查看信息:(所属主变成当前⽤户)
建模方法
[qlq@iz2ze46xi6pjjj69ailg9lz test]$ ll ./test1file3
-rw-rw-r-- 1 qlq qlq 0 Mar 3013:06 ./test1file3
(3)查看系统具有SetUID或者GID的⽂件
[root@iz2ze46xi6pjjj69ailg9lz ~]# find / -perm 4755 -o -perm 2755  #跟据权限查看,-o表⽰or,4代表SetUID,2代表SetGID /usr/lib/polkit-1/polkit-agent-helper-1
/usr/sbin/netreport
/usr/sbin/postqueue
/usr/sbin/pam_timestamp_check
/usr/sbin/unix_chkpwd
/usr/sbin/postdrop
/usr/sbin/usernetctl
/usr/bin/at
/usr/bin/gpasswd
/usr/bin/passwd
/usr/bin/write
/usr/bin/su
注意:
  vim和vi不能被授予s权限,否则好多只读⽂件都可以被以root⾝份保存。
(4)当我们针对⼀个不具备x权限的⽂件设置s权限时⽆效,权限变为⼤写S,⼤写S说明s权限未⽣效
[qlq@iz2ze46xi6pjjj69ailg9lz test]$ chmod u+s ./test1file
[qlq@iz2ze46xi6pjjj69ailg9lz test]$ ll
total 0
-
rwSrw-r-- 1 qlq  qlq 0 Mar 3012:54 test1file
2.SetGID解读(针对所属组设置权限,数字表⽰为2)
  ⼀个可执⾏⽂件具有SetGID权限表⽰运⾏这个程序的时候是以这个程序的所属组的⾝份运⾏,同样这个⽂件需要具有x权限(必须可以运⾏)
设置权限⽅法
  chmod g+s xxx
哪个品牌女装好  chmod 2777 xxx
收回权限⽅法:
  chmod g-s xxx
  chmod 0777 xxx
例1:针对上⾯的touch同时设置SetUID和SetGID权限之后创建⽂件
(1)root⽤户设置权限
[root@iz2ze46xi6pjjj69ailg9lz ~]# chmod 6755 `which touch`
[root@iz2ze46xi6pjjj69ailg9lz ~]# ll `which touch`
-rwsr-sr-x. 1 root root 62488 Nov  62016 /usr/bin/touch
(2)qlq⽤户创建⼀个⽂件:(所属主为root,所属组是root所在的组)
[qlq@iz2ze46xi6pjjj69ailg9lz test]$ touch test1file4
[qlq@iz2ze46xi6pjjj69ailg9lz test]$ ll | grep test1file4
京东银行卡-rw-rw-r-- 1 root root 0 Mar 3013:19 test1file4
例2:将touch的权限只设置SetGID并创建⽂件:
(1)root⽤户设置权限
[root@iz2ze46xi6pjjj69ailg9lz ~]# chmod 2755 `which touch`
[root@iz2ze46xi6pjjj69ailg9lz ~]# ll `which touch`
-
rwxr-sr-x. 1 root root 62488 Nov  62016 /usr/bin/touch
(2)qlq⽤户创建⼀个⽂件:(所属主为qlq,所属组是root所在的组)
[qlq@iz2ze46xi6pjjj69ailg9lz test]$ touch test1file5
[qlq@iz2ze46xi6pjjj69ailg9lz test]$ ll | grep test1file5
-rw-rw-r-- 1 qlq  root 0 Mar 3013:21 test1file5
例三:收回touch的SetGID权限:
[root@iz2ze46xi6pjjj69ailg9lz ~]# chmod g-s `which touch`
[root@iz2ze46xi6pjjj69ailg9lz ~]# ll `which touch`
-rwxr-xr-x. 1 root root 62488 Nov  62016 /usr/bin/touch
注意:上⾯的SID和GID要求⽤户必须有执⾏⽂件的权利,如果有执⾏权限执⾏的时候s位才会⽣效:
例如:
(1)root将o的x权限去掉中国名校
[root@iz2ze46xi6pjjj69ailg9lz ~]# chmod 4750 `which touch`
[root@iz2ze46xi6pjjj69ailg9lz ~]# ll `which touch`
-rwsr-x---. 1 root root 62488 Nov  62016 /usr/bin/touch
(2)qlq执⾏touch命令权限不允许:
[qlq@iz2ze46xi6pjjj69ailg9lz ~]$ touch www
-bash: /usr/bin/touch: Permission denied
可以实现⽂件夹共享)
设置,可以实现⽂件夹共享
⼆、黏着位 t  解读(针对others设置,
t :设置粘着位,⼀般针对权限是777的⽂件夹设置权限。如果⽂件设置了t权限则只有属主和root有删除⽂件的权限(没有意义)
笔记本散热器哪个好  如果权限为777的⽬录设置t权限,索引⽤户可以在这个⽬录下⾯创建⽂件和删除⾃⼰创建的⽂件,删除其他⼈创建的⽂件权限不被允许(当然root可以删除所有⼈创建的权限)。(为了共享⽬录,例如临时⽂件夹)
设置权限
  chmod  o+t  xxx
  chmod  1777 xxx
收回权限
  chmod o-t  xxx 
  chmod 0777 xxx
例1:linux的存放临时⽂件夹的tmp⽬录就有t权限:
[root@iz2ze46xi6pjjj69ailg9lz /]# ll / | grep tmp
drwxrwxrwt. 11 root root    4096 Mar 3013:13 tmp
例2:创建⼀⽬录并设置t权限:
(1)root⽤户创建⽬录并设置权限为777+t权限
[root@iz2ze46xi6pjjj69ailg9lz test]# chmod 777 /mydir/
[root@iz2ze46xi6pjjj69ailg9lz test]# ll /|grep mydir
drwxrwxrwx  2 root root    4096 Mar 3013:32 mydir
[root@iz2ze46xi6pjjj69ailg9lz test]# chmod o+t /mydir/
[root@iz2ze46xi6pjjj69ailg9lz test]# ll /|grep mydir
drwxrwxrwt  2 root root    4096 Mar 3013:32 mydir
(2)root⽤户在此⽬录下创建⼏个⽂件
[root@iz2ze46xi6pjjj69ailg9lz mydir]# touch rootfle1
[root@iz2ze46xi6pjjj69ailg9lz mydir]# touch rootfle2
[root@iz2ze46xi6pjjj69ailg9lz mydir]# ll
total 0
-rw-r--r-- 1 root root 0 Mar 3013:35 rootfle1
-rw-r--r-- 1 root root 0 Mar 3013:35 rootfle2
(3)qlq在此⽬录下创建⽂件并删除⽂件(可以创建⽂件与删除⾃⼰创建的⽂件,删除root创建的⽂件被提⽰不允许)
[qlq@iz2ze46xi6pjjj69ailg9lz /]$ cd /mydir/
[qlq@iz2ze46xi6pjjj69ailg9lz mydir]$ touch qlqfile1
[qlq@iz2ze46xi6pjjj69ailg9lz mydir]$ touch qlqfile2
[qlq@iz2ze46xi6pjjj69ailg9lz mydir]$ rm rootfle1
rm: remove write-protected regular empty file ‘rootfle1’? y
rm: cannot remove ‘rootfle1’: Operation not permitted
[qlq@iz2ze46xi6pjjj69ailg9lz mydir]$ rm -f qlqfile1
[qlq@iz2ze46xi6pjjj69ailg9lz mydir]$ ll
total 0
-rw-rw-r-- 1 qlq  qlq  0 Mar 3013:35 qlqfile2
-rw-r--r-- 1 root root 0 Mar 3013:35 rootfle1
-rw-r--r-- 1 root root 0 Mar 3013:35 rootfle2
三、i与a权限解读
i:不可修改权限例:chattr u+i filename 则filename⽂件就不可修改,⽆论任何⼈,如果需要修改需要先删除i权限,⽤chattr -i filename就可以了。查看⽂件是否设置了i权限⽤lsattr filename。
a:只追加权限,对于⽇志系统很好⽤,这个权限让⽬标⽂件只能追加,不能删除,⽽且不能通过编辑器追加。可以使⽤chattr +a 设置追加权限。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。