假设用户 user1 属于 group1,并且存在由 user1 和组 group2 拥有的 setuid 可执行文件,则 user1 不是 group2 的成员。
我发现可执行文件无法访问 root 和 group1 拥有的文件(其他人无权访问,(550, root, group1))。为什么会这样?setuid 用户的组是如何确定的?
答案1
setuid 位发生改变仅有的uid,没有其他内容。
(此外,内核不知道user1 属于哪些组,并且没有标准方法从用户空间获取该信息。对于特定用途,如 NFS,守护进程(如 rpc.idmapd)或各种滥用 request_key 的方式可以处理此类请求,但尚未添加通用方法。)