安全要求程序应使用最小权限执行,然而有的程序因为特殊性,每每在执行某段代码的时候须要提升权限。程序员
因为suid的容易使用特性,不少编程人员每每会直接使用它来实现提升权限的功能,而不是去作代码权限分离。这样子的代码被封装成一个可执行程序,且被设置了suid。从安全性上来看,这种代码是劣质的。可是有的时候处于某些缘由(方便编程
性占大多数),这种程序仍是会被创造出来。安全
其实,稍微注意一下,能够使得使用了suid的代码更加安全。原理很简单,代码不多,也为了方便苦逼的程序员使用。ui
毕竟为了一段须要权限提高的代码,大动干戈的从新修改设计很麻烦。设计
uid_t e_uid_initial; uid_t r_uid; int main(int argc, char * argv[]) { /*saves the different UIDS */ e_uid_initial = geteuid(); r_uid = getuid(); /*limits access rights to the ones of the * user launching the program*/ seteuid(r_uid); ... privileged_function(); .... } void privileged_function(void) { /* Gets initial priveleges back */ seteuid (e_uid_initial); ... /* portion needing priveleges */ ... seteuid (r_uid); }
很简单的代码,可是加上这段代码比直接使用suid的程序要安全不少。blog