首页 > 代码库 > 进程控制(十一)---更改进程的用户ID和组ID

进程控制(十一)---更改进程的用户ID和组ID

  Linux提供了setuid函数和seteuid函数来更改与进程相关的用户ID,和进程相关的用户ID有“实际用户ID、有效用户ID和保存的设置用户ID”
======================================================
函数原型:
技术分享
技术分享
函数参数:
  • uid:要设置的用户ID
返回值:
  • 调用成功时返回 0
  • 调用失败时返回 -1
====================================================
  • 当进程的有效用户ID是root的时候,调用setuid函数可以将进程的实际用户ID、有效用户ID和保存的设置用户ID都设置成 uid
  • 当进程的有效用户ID是普通用户的时候,而且setuid函数的参数 uid 和进程的实际用户 ID或者保存的设置用户ID 相等时,此函数会将进程的有效用户ID设置为 uid,而实际用户ID和保存的设置用户ID不会变
  • 上面两种情况都不满足的时候,调用此函数失败。
seteuid函数和setuid函数的情况类似,区别就是在root用户下只会修改 进程有效用户ID 一项,不会像setuid 函数一样修改三项用户ID。
====================================================
这里说明保存的设置用户ID的作用:
  • 保存的设置用户ID 是在创建进程时用来保存有效用户ID 的副本的,如果执行程序期间使用setuid 函数改变了有效用户ID,则可以利用此ID来恢复原来的有效用户ID。
  • 用户程序是获取不到保存的设置用户ID的,当使用setuid函数来恢复有效用户ID的时候,必须给出具体的 euid 的值。

技术分享

技术分享
 

进程控制(十一)---更改进程的用户ID和组ID