setuid的优点:
1、 使用SetUID可以灵活的调整所有文件所有者权限 例如: 如果我们以普通用户 [root@localhost ~]# su xiweina 进入执行新建文件 [xiweina@localhost root]$ touch file 则出现 touch: 无法触碰 “fil“权限不够 而当我们执行查找touch所在的目录 [root@localhost ~]# ls -l `which touch` -rwxr-xr-x 1 root root 42284 2009-07-13 /bin/touch 设置uid [root@localhost ~]# chmod u+s /bin/touch 查看效果 [root@localhost ~]# ls -l `which touch` 显示s将x替换,现在的s即代表x也代表s有两者功能 -rwsr-xr-x 1 root root 42284 2009-07-13 /bin/touch 此时就可以建立了 [xiweina@localhost /]$ touch file 查询效果 [xiweina@localhost /]$ ls -l file 显示效果为 -rw-rw-r-- 1 root xiweina 0 12-15 19:05 file通过上面我们可以再诠释下SetUID的定义,
当一个可执行文件(命令touch)设置SetUID权限后,当普通用户xiweina执行touch创建新文件时,实际上是以touch命令所有者root的身份在执行此操作,既然是以root身份执行,当然新建文件的所有者为root ,这就是SetUID的作用setuid的缺点:
1 、为系统的安全性带来了隐患,如果Root用户为指定的程序文件配置过大的SetUID权限,那么就会为***或者非法用户打开了侵入系统的大门。 2、如果vi编辑器被设置了u+s,就更危险了,普通用户可以使用vi编辑/etc/shadow文件,因为具备root身份,可以进行任意读写操作(比如可以把任何一个用户密码位清空,则用户登录不需要输入密码)。但是使用more、cat等命令仍然无法查看文件/etc/shadow的内容,只有被授予了SetUID的vi可以查看和修改。同样,vi如果具有了SetUID权限,普通用户可以vi编辑/etc/passwd文件把自己的UID改为0 ,则他的权限就和root一样;可以vi编辑/etc/inittab文件把缺省运行级别改成6 ,则Linux会开机后不停的重启…,更可恶的是可以vi编辑/etc/inittab文件把缺省运行级别改成1,这时不太懂得人会以为机子坏了。 如果kill被授予setid权限,当普通用户执行kill时,因为kill被授予了SetUID权限,在执行的一瞬间具有了root权限,只要用户不爽想关闭任何服务都可以!原文出自