我做了如下的实验:
/usr/bin/vim的权限默认是(默认设置是nosuid和nosgid):
-rwsrwsrwx. 1 root root 1967072 Feb 17 2012 /usr/bin/vim
通过使用chmod 6777 /usr/bin/vim,可以将vim程序文件启用setuid和setgid。
当是nosuid和nosgid时,使用一个普通用户daniel运行vim时,进程的UID属性是普通用户daniel。
但当启用setuid和setgid后,使用一个普通用户daniel运行vim时,进程的UID属性变成了vim程序文件所有者root。
daniel 1561 1560 0 15:27 tty1 00:00:00 bash (bash是daniel)
root 1574 1561 0 15:27 tty1 00:00:00 vim (但在daniel用户下运行的vim,其UID却是root)
以上就是setuid和setgid的作用。