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

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    s

setuid   setgid    sticky
  4        2         1

421码理解:
    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显示所有(包含隐藏文件)

你可能感兴趣的:(linux)