setuid作用的总结
每个进程都有两种不同方法分类的UID。一种是“真实的”UID,另一种是“有效的”UID。真实UID是开启进程的用户账户的UID,有效UID是用户特权附加到进程后的用户UID。一般情况下,真实UID和有效UID是相同的。
要修改文件的权限,首先是一个可执行的文件,用户通过passwd命令来修改密码,在返回所有者执行权限位上可以看到显示“S”字样,这就表示普通用户是以root的身份来执行,执行完后root身份就会消失,setuid的设置使用chmod命令来给用户修改对文件的修改。
setuid的安全性
使用setuid可以灵活的调整所有文件所有者权限,但是如果设置了过大的setuid权限就会带来不安全,就好比是一扇敞开的大门,任何人都可以进来。例如在linux中使用vi命令来编辑文件,对于普通用户来说会提示警告信息,从而阻止对文件的编辑,但是如果在root用户环境中执行which vi命令,vi命令的别名其实是vim,它的真实路径是/usr/bin/vim,这样执行chmod 6755 /usr/bin/vim,就可以将vi命令的所有者改为root身份,这样在普通用户环境中,就可以使用vi命令来编辑任何文件,这样就对系统安全就带来了很大的危险,所以还是建议不设置setuid权限。