[s]:当一个具备执行权限的文件设置 [s](SetUID) 权限后,用户执行这个文件时将以文件全部者的身份执行。passwd 命令具备 SetUID 权限,全部者为 root(Linux 中的命令默认全部者都是 root),也就是说当普通用户使用 passwd 更改本身密码的时候,那一瞬间忽然 “灵魂附体” 了,实际在以 passwd 命令全部者 root 的身份在执行,root 固然能够将密码写入 /etc/shadow 文件(root 是一个 bug 的存在,在 Linux 中就没有它不能干的事),命令执行完成后该身份也随之消失。spa
0. SetUID 条件:code
必须具有如下几个条件(前提):blog
1. 设置和取消 SetUIDci
设置 SetUID:it
chmod 4xxx < file-name >chmod u+s < file-name >
取消 SetUID:class
chmod xxx < file-name >chmod u-s < file-name >
案例:

SetGIDtest
其实,SetGID 基本与 SetUID 相同,无非也就是一个设置全部者的权限,GID 为设置所属组的特殊权限!区别点在于:SetGID 也能够设置目录的相关 SetGID 权限!file
0. SetGID条件:权限
针对文件:bug
针对目录:
1. 设置和取消 SetGID
设置 SetGID
chmod 2xxx chmod g+s
取消 SetGID
chmod xxx chmod g-s
案例:
先用管理员身份在wang用户的家目录里建一个叫test1的目录 cd /home/wang mkdir test1 以后切换wang这个用户,进入test1目录建一个叫hello.txt的文件 会发现,全部者为wang用户,可是组为root全部的组 su wang cd /home/wang vi hello.txt 随便输入点东西,shift+: wq保存退出, 会看见下图
[t]: 任何用户都可以往此目录写入文件,能够删除本身所建立的文件,root 天然有权限删除
0.做用:
案例:
使用root创建文件helloworld
mkdir helloworld
chmod 1777 helloworld
切换wang用户进入其中建文件hello.txt
切换zhang用户进入其中建文件 world.txt
zhang能够删除world.txt可是没法删除hello.txt