关于setuid、setgid的区别

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