1、setuid法
(1)登录root用户,将程序设置成root:root所有者(等价于:登录root用户编译程序)。也可直接将普通用户加入root组中,那么编译程序不用来回切换用户。
(2)登录root用户设置程序的UID,#chmod u+s 源文件。
(3)程序中使用:
uid_t uid = getuid(); 普通用户的uid
if (setuid(0)) { 设置为普通用户和超级用户一样的权限
return -1;
}
//...
if (setuid(uid)) { //恢复uid 恢复到只有普通用户的权限
}
通过上面步骤则该用户不管在普通用户还是在root用户下都能获取root权限。
注意:
(1)复制时要想连同其UID位一同复制,cp加参数-a,scp加参数-p。
(2)若复制到其他Linux主机上要保证程序属于root:root所有者。