在这里,我们先由一个问题引出这个概念,每个普通用户为什么可以更改密码?当我们ls -l /etc/passwd /etc/shadow查看这两个文件的权限时候,我们可以发现只有root才对这两个文件有写权限,根据前面的配置文件我们知道,密码是保存在shadow文件中的,那么我们是怎样实现这个目的的?其实这就是今天我的笔记,我们查看ls -l /usr/bin/passwd 权限为中有一个s位。
这里引出一个概念SETuid,即常说的S位
SetUID=4
其意思为:当一个可执行程序具有SetUID权限,用户执行这个程序时,将以这个程序所有者的身份执行
授予setuid权限 必须是可执行文件,如果不是可执行的则为大写S
范例:
1.将touch命令授予setUID
touch 默认是755
切换到普通用户 创建一个文件 查看其所有者为普通用户
当我们授予SETuid 权限 我们再做同样的操作 查看其所有者为root
因为是通过root用户创建的 所以其所有者为root
授予方法:chmod u+s 或者4755
去掉权限:chmod u-s 或者755
2.当vi命令被授予setUID
当vi授予setuid权限,相当于给黑客留了一个后门,可以用这个命令编辑任何文件
3.查找setuid程序:
find / -perm -4000 -o -perm -2000
查找 0777 权限的文件也类似写
说到这里组也有setGID
SetGID=2
授予权限 chmod g+s 或者2755 同时授予UID和GID 可以用6755
还有一个特殊的权限:粘着位=1 用t代表
系统里缺省只有一个文件夹具有粘着位 tmp文件夹
查看其权限 有一个t
如果一个权限为777目录具有粘着位,每个用户都可以在这个目录下创建文件,但是只能删除自己是所有者的文件
授予方法:
chmod o+t 或者 chmod 1777
取消方法 o-t 或者0777