linux 用户权限 SUID、SGID、SBIT...

Linux的特殊权限和应用


  • SUID:作用于用户

当文件设置了setuid位后,任何能够执行此文档的用户都有与文件属主相同的权限,即使得任意使用者在执行该文件时,都绑定了文件属主的权限。例如,某个程序为root拥有,又设置了setuid位,那即使是一个普通用户运行该程序,该程序的身份一样是root的身份,可以访问所有只有root可以访问的资源,设置setuid位的程序曾是被攻击的对象。setuid位典型的应用是/usr/bin/passwd,查看该文件权限显示-rwsr-xr-x,这里的s表示设置了setuid位且该文件可由文件属主执行,如果一般用户执行该文件,则在执行过程中可以获得root权限,从而更改用户密码。大写S表示文件本来没有可执行权限并且设置了setuid位

查看SetUID权限:占用原先“所有者”的x权限位。 rws r-x r-x
小写s: 表示原先是具有x权限的        
大写S:标识原先没有x权限
chmod u+s 或 u-s /file1
[root@deng-120 /etc]# chmod u+s passwd
[root@deng-120 /etc]# ll passwd
-rwsr--r-- 1 root root 6764 817 18:33 passwd
  • SGID:作用于所属组
查看SetUID权限:占用原先“所有者”的x权限位。 rwx r-s r-x
小写s: 表示原先是具有x权限的        
大写S:标识原先没有x权限
chmod g+s 或 g-s /file1
作用:继承属性用户组的属性
[root@deng-120 ~]# mkdir aa    #创建 aa 的文件夹
[root@deng-120 ~]# ls  
drwxr-xr-x  2 root root       6 824 23:04 aa     #最原始没有 s 的权限,所属组为 root
[root@deng-120 ~]# chgrp rosen aa/ #更改所属组为 rosen 
[root@deng-120 ~]# chmod g+s aa/   #给 aa 加上 s 权限
[root@deng-120 ~]# ll  
drwxr-sr-x  2 root rosen       6 824 23:04 aa    #拥有 s 权限
[root@deng-120 ~/aa]# touch abc        #在aa下创建文件都会继承 aa 文件夹的所属组
[root@deng-120 ~/aa]# ll
-rw-r--r-- 1 root rosen 0 824 23:10 abc  

当s权限作用于组的时候,就会起到对应的继承父文件的属性

  • Sticky:粘滞位。作用于其他人,只有自己才能删除自己的文件(root除外)
t 权限 :一般用于目录,用于公共的目录。 权限为777的目录
t 占用 x权限的位置
小写t:表示原先是具有x权限
大写T:标识原先是不具有x权限
[root@deng-120 ~]# chmod 777 aa/   #777权限任何人都可以aa文件夹对里面的文件进行创建删除和修改
[root@deng-120 ~]# ll
drwxrwsrwx  2 root rosen      17 824 23:10 aa    
[root@deng-120 ~]# chmod o+t aa/   #给aa文件夹加上 t 权限
[root@deng-120 ~]# ll  
drwxrwsrwt  2 root rosen      17 824 23:10 aa    
#拥有t权限的文件夹,其他普通用户在aa目录下职能对自己创的文件进行删除,对其他文件可以修改但是不能执行删除的操作

如何设置特殊权限

chmod u+s xxx # 设置setuid权限
chmod g+s xxx # 设置setgid权限
chmod o+t xxx # 设置stick bit权限,针对目录
chmod 4775 xxx # 设置setuid权限
chmod 2775 xxx # 设置setgid权限
chmod 1775 xxx # 设置stick bit权限,针对目录 

注意:有时你设置了s或t 权限,你会发现它变成了S或T,这是因为在那个位置上你没有给它x(可执行)的权限,这样的话这样的设置是不会有效的,你可以先给它赋上x的权限,然后再给s或t 的权限

特殊权限对我i们linux的文件或者对用户的限制起到了良好的作用,这样更有利于我们的管理维护~~~

你可能感兴趣的:(linux篇章)