在linux,unix系统中权限分为rwx(421),这是普通权限,相信大家都明白,但是有一类特殊权限可能有些人不了解

注:登录用户是jack

执行命令:passwd jack,命令执行成功,修改了自己的密码

passwd 命令修改成功密码,其实是修改/etc/passwd这个文件成功了

查看一下/etc/passwd这个文件的权限如下:

-rw-r--r-- 1 root root 2379 04-21 13:18 /etc/passwd

该文件其他人是不可以读的。现在passwd jack这个命令执行成功了,这是怎么回事?

现在我们再执行一个which passwd,输出/bin/passwd,查看一下ls -al /bin/passwd输出:

 -r-s--x--x 1 root root 21944 02-12 16:15 /bin/passwd

发现 -r-s--x--x这里出现了一's',答案就在这里,文件passwd这个文件没有写权限,但是修改密码却成功了,这是因为

文件已经设置了setuid 权限位(也就是r-s--x--x中的s),所以普通用户能临时变成root,间接的修改/etc/passwd,以达到修改自己口令的权限