文件特殊权限
文章目录
- 一、SetUID
- 二、Sticky BIT
一、SetUID
SetUID 也叫 SUID,它的特点如下:
- 只有可以执行的二进制程序才能设定 SUID 权限
- 命令执行者要对该程序拥有 x(执行)权限
- 命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
- SetUID 权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
SetUID 的典型应用场景是 passwd 命令。普通用户可以用 passwd 命令修改自己的密码,修改密码实际上是修改 /etc/shadow
文件,而该文件的权限是 000,那么这时就需要普通用户暂时获得 root 用户的身份,来修改 /etc/shadow
文件,以达到修改密码的目的。我们来看一下 passwd 命令的权限:
箭头指向的部分,出现了一个 s,这就代表 passwd 命令具有 SUID 权限。
设定 SUID 权限的方法:
chmod 4755 文件名 #755是文件的普通权限,4代表文件的SUID权限
#或者用下面这个命令:
chmod u+s 文件名
取消 SUID 权限的方法:
chmod 755 文件名 #755并不是固定的,具体是多少取决于你想为该文件赋予什么权限
#或者:
chmod u-s 文件名
SUID 权限极其危险,若使用不当,可能会给系统带来灭顶之灾。举个例子,若你给 vim 命令设定了 SUID 权限,那么普通用户在使用 vim 的时候就会变成 root 用户的身份,那他可以用 vim 修改任何系统配置文件,比如,修改 /etc/passwd
文件,把自己也变成超级用户。这无疑是很可怕的。
二、Sticky BIT
因为 sticky 在英文里面是「粘着」的意思,而 bit 是「位」的意思,所以 Sticky BIT 也叫做粘着位。
- 粘着位目前只对目录有效
- 普通用户对该目录拥有 w 和 x 权限,即普通用户可以在此目录拥有写入权限
- 如果没有粘着位,因为普通用户拥有 w 权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一但赋予了粘着位,除了 root 可以删除所有文件,普通用户就算拥有 w 权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件
典型如 /tmp/
,任何人都可以在这个目录下进行读写,但是只能删除自己创建的目录或文件。
设置粘着位:
chmod 1755 目录名
chmod o+t 目录名
取消粘着位:
chmod 777 目录名
chmod o-t 目录名
还没有评论,来说两句吧...