关于setuid、setgid的区别

February 26, 2018 0 条评论 2.96k 次阅读 0 人点赞

首先说明三个用户ID

  • 实际用户ID:当前登陆用户的ID
  • 有效用户ID:当前程序以哪个用户身份来运行的,和实际用户ID可能一样,也可能不一样
  • 保存的设置用户ID:是有效用户的副本

关于setuid函数,其作用如下:

  • 如果进程具有超级用户权限,则setuid将实际用户id、有效用户id和保存的设置用户id都设置为指定uid
  • 如果进程没有超级用户权限,但是uid等于 实际用户id 或者 保存的设置用户id,则setuid将 有效用户ID 设置为uid
  • 否则,则返回错误,errno设置为EPERM

另外,关于linux可执行文件的权限s,说明如下:

  • s权限可以作用于用户、用户组
  • 如果作用在用户上,则表示其他用户在执行该程序时,其有效用户ID会被设置为文件的所有者
  • 如果作用在用户组上,则表示其他用户在执行该程序时,其有效用户组被设置为文件的所有组

可以通过chmod来添加、删除s权限,具体如下:

  • 添加用户s权限: chmod u+s xxxx
  • 添加用户组s权限: chmod g+s xxxxx
  • 删除用户s权限: chmod u-s xxxxx
  • 删除用户组s权限: chmod g-s xxxxx

巨人肩上的矮子

互联网从业者

文章评论(0)