Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5708478
  • 博文数量: 675
  • 博客积分: 20301
  • 博客等级: 上将
  • 技术积分: 7671
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-31 16:15
文章分类

全部博文(675)

文章存档

2012年(1)

2011年(20)

2010年(14)

2009年(63)

2008年(118)

2007年(141)

2006年(318)

分类: C/C++

2007-10-12 16:56:18

在程序中需要执行root操作的地方调用seteuid函数获取root权限,在程序初始化时、执行完root操作之后再seteuid回普通ID--安全起见
然后把生成的程序设为root所有,并设置“set-user-id”位。
fisherman:/home/wangyao/tempcode# cat t_euid.c
#include
#include
#include

int main()
{
        int oldeuid = geteuid();
        printf("oldeuid=%d\n",oldeuid);
        seteuid(0);
        printf("seteuid(0)\neuid=%d\n",geteuid());
        /*Do somthing*/
        unlink("/root/a");

        seteuid(oldeuid);
        printf("uid=%d\n",geteuid());

        return 0;
}

fisherman:/home/wangyao/tempcode# gcc -o t_euid t_euid.c
fisherman:/home/wangyao/tempcode# chmod +s t_euid
fisherman:/home/wangyao/tempcode# touch /root/a
fisherman:/home/wangyao/tempcode# ll /root/a
-rw-r--r-- 1 root root 0 2007-10-12 17:01 /root/a

wangyao@fisherman:~/tempcode$ ll /root/a
-rw-r--r-- 1 root root 0 2007-10-12 17:01 /root/a
wangyao@fisherman:~/tempcode$ ./t_euid
oldeuid=0
seteuid(0)
euid=0
uid=0
wangyao@fisherman:~/tempcode$ ll /root/a
ls: /root/a: 没有那个文件或目录

阅读(1546) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~