程序使用suid应注意的策略

  安全要求程序应使用最小权限执行,然而有的程序由于特殊性,往往在执行某段代码的时候需要提高权限。

由于suid的容易使用特性,很多编程人员往往会直接使用它来实现提高权限的功能,而不是去做代码权限分离。这样子的代码被封装成一个可执行程序,且被设置了suid。从安全性上来看,这种代码是劣质的。但是有的时候处于某些原因(方便

性占大多数),这种程序还是会被创造出来。

  其实,稍微注意一下,可以使得使用了suid的代码更加安全。原理很简单,代码很少,也为了方便苦逼的程序员使用。

毕竟为了一段需要权限提升的代码,大动干戈的重新修改设计很麻烦。

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的程序要安全很多。

 

posted @ 2013-12-02 20:50  刘少东的博客  阅读(569)  评论(0编辑  收藏  举报