当前位置: 代码迷 >> 综合 >> linux的特殊权限(SetUID、SetGID、Sticky、attr)
  详细解决方案

linux的特殊权限(SetUID、SetGID、Sticky、attr)

热度:19   发布时间:2023-12-13 17:24:04.0

SetUID

 说明:可以让用户执行这个  命令/程序   的时候,瞬间变为该文件所有者的身份,命令进程运行完成之后,立刻恢复原先的身份。一般程序所有者设置为root比较常见**重点内容**
》如果用户不是该程序所有者也不是所属组成员,该程序其他用户权限必须有x权限,
》如果用户不是该程序所有者   是所属组成员,该程序所属组权限必须有x权限
》执行该程序前提你要满足程序的基本权限u g o ,
》这样理解:先判断用户是否有该程序执行权限,如果有:就以该程序所有者所给权限去执行程序里面的内容;如果没有,不能执行该程序查看SetUID权限(ls -l):占用原先“所有者”的x权限位。 rws r-x r-x小写s: 表示原先是具有x权限的      大写S:标识原先没有x权限。设置SETUID方法:chmod u+s filename  #增加权限chmod u-s filename  #删除权限
数字设置方法:chmod 4755 filename  #4表示setuid权限,755表示对应的基础权限(u g o)

SetGID

说明:
类似setuid,运行文件的时候, 以文件的  “所属组”  身份运行。
占用原先“所属组”的x权限位。rwxr-sr-x**重点内容**
1、目录下创建所有   “文件和子目录”   的所属组都会继承该目录   “所属组” 属性  。    
2、创建的  “子目录”  将会继承  具有SetGID权限的 父目录的 SetGID 属性 。
3.理解:先判断用户是否满足对该文件或目录基本权限,满足:可以以文件所属组权限去操作文件内容,反之,不能进行操作查看方法:
ls -l 设置SETGID方法:chmod g+s filename  #增加权限chmod g-s filename  #删除权限数字设置方法:chmod 2755 filename  #2表示setgid权限,755表示对应的基础权限(u g o)

Sticky

t 权限。 一般用于目录,用于公共的目录。 权限为777的目录

**重点内容**
》用户在具有t权限的目录下,以自由的创建文件,但是只能删除所有者为自己的文件
》t 占用x权限的位置。  t表示原先具有x,    T表示 原先没有x,设置方法(一般给others加)       chmod o+t /test
数字字方法: chmod 1755 /test #1表示sticky权限,755代表普通权限(u g o)

特殊权限 数字对应含义

0 表示没有特殊权限
1 表示 Sticky   t
2 表示 SetGID  s
4 标识 SetUID    ssetuid   setgid    sticky4        2         1421码理解:1: 0+0+1 (sticky)2: 0+2+0  (setgid)3: 0+2+1  (sticky、setgid)4: 4+0+0 (setuid)5: 4+0+1 (setuid 、sticky)6: 4+2+0  (setuid 、setgid)7: 4+2+1   (setuid 、setgid、sticky)可以同时去设置多个权限
例如:
chmod 3755 file    #设置了特权限sticky  setgid,普通权限rwxr-xr-x

利用 find -perm 查看特殊权限的文件

#只要是“具有 SetUID ” 都列出来  -perm -4000  ,wc -l统计行数
find /bin  /sbin /usr/sbin  /usr/bin  -perm -4000  | wc -l

Attr 特殊权限:

设置权限chattr 【参数】 文件目录参数:-a  :只允许追加数据,不允许改动文件(vim内容,权限,所有者,所属组)甚至不能正常的删除文件,只能读取文件内容,只能用echo追加内容-i :系统不允许对这个文件进行任何的修改,包括大小,权限,所有者所属组,创建时间等。使用方法:chattr +a /home/new1/.bash_history       # 增加a权限chattr -a   /home/new1/.bash_history      #删除a权限chattr +i  /home/new1/.bash_history       #增加i 权限chattr  -i  /home/new1/.bash_history       #删除i 权限查看attr权限文件lsattr filename -a    # -a显示所有(包含隐藏文件)