程序使用suid应注意的策略

  安全要求程序应使用最小权限执行,然而有的程序因为特殊性,每每在执行某段代码的时候须要提升权限。程序员

因为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

相关文章
相关标签/搜索