因为passwd 这个命令是一个允许执行者临时拥有root权限的命令。
[root@localhost ~]# ls -al /usr/bin/passwd
-rwsr-xr-x 1 root root 27768 Jan 7 2007 /usr/bin/passwd
[root@localhost ~]#
第4位是s ,代表other用户如果有x权限的话,执行该命令时被当做root看待。
但仅限于运行这个命令,有人说了,那这样我可以干任何事,这是不可能的,首先这个命令只有root可以修改,是755权限,组用户和other用户是不能修改的。第二,这个命令是二进制格式,即便你能修改你也看不懂,它是封装好的。用cat 看一下就知道了,修改不了的。
所以只有你运行这个命令的时候,他里面的内容可以随意使用系统资源,把自己当root看待,但仅限于该命令内部。
这有牵出一个问题,就是如果某个root管理员比较2,弄出一个脚本文件,并且赋予4777权限,也就是上面看到那个有s的权限,并且让其他用户也能写和执行,那么随便什么人都能控制root了,所以+s是禁止随便使用的,因为用不好就会产生漏洞。