首先说明三个用户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)