linux setuid函数_setuid函数的学习笔记

75      run_setuid_fun(503);

76      //[5]此时 real uid= login user id

77      //     effective uid = login user id

78      //     saved uid = login user id

79      test_read_file(file);

80

81      cout<82      //[6]此时 real uid= login user id

83      //     effective uid = login user id

84      //     saved uid = login user id

85      // 运行setuid(0)是将返回错误值-1.

86      run_setuid_fun(0);

87      test_read_file(file);

88      return 0;

89  }

90

91

$ vi Makefile

1  src=setuid_ex.cpp

2  exe=setuid_ex

3  cc=g++

4  flags=-g

5

6  all:${src}

7          ${cc} ${flags} -o ${exe}

8          chown root:root ${exe}

9          ### 实际上chmod 4111改变了effective id 和saved uid的值.

10          ### 这也是setuid setruid函数在不同权限间正常切换的前提.

11          chmod 4111 ${exe}

$ sudo make #使用root进行Make.

$ ls -l setuid_ex

---s--x--x  1 root root 58579 Jan 15 11:27 setuid_ex

$ ./setuid_ex

TEST 1:

-----Current states--------------------------

real uid        503

effective uid   0

---------------------------------------------

=[OK]: read successful.

TEST 2: seteuid(getuid())

-----Current states--------------------------

real uid        503

effective uid   503

---------------------------------------------

=[ERROR]: read failed.

TEST 3: seteuid(0)

-----Current states--------------------------

real uid        503

effective uid   0

---------------------------------------------

=[OK]: read successful.

TEST 4: setuid(0)

-----Current states--------------------------

real uid        0

effective uid   0

---------------------------------------------

=[OK]: read successful.

TEST 5: setuid(503)

-----Current states--------------------------

real uid        503

effective uid   503

---------------------------------------------

=[ERROR]: read failed.

TEST 6: setuid(0)

=[ERROR]: setuid(0) error

-----Current states--------------------------

real uid        503

effective uid   503

---------------------------------------------

=[ERROR]: read failed.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值