首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setgid(2)用于什么?

setgid(2)用于什么?
EN

Server Fault用户
提问于 2013-09-17 19:00:31
回答 1查看 188关注 0票数 0

我很难理解POSIX权限,特别是setgid(2)。我理解setuid(2)更改了调用进程的用户ID,使其获得了新用户的特权。这是有意义的,因为用户只有一个UID,所以进程也可能只有一个UID。

我不明白的是,为什么一个进程只能有一个GID?毕竟,用户可以是任意数量的组的成员,那么是什么决定了进程作为哪个GID运行呢?我意识到每个用户都有一个“主”GID,这就是由用户运行的进程默认承担的GID。但是,如果应用程序必须访问属于用户主组以外的组(因此,进程的GID)的文件,该怎么办?尝试设置与文件的GID匹配是应用程序的责任吗?还是内核只是检查进程的UID是否是属于该文件的组成员的用户,并根据文件的组权限允许或拒绝访问?在后一种情况下,似乎不需要setgid。

例如:我是"adm“组的成员,但我的主要组是"griffin”。不知怎么的,我仍然可以在"adm“组中对文件进行cat。在访问文件之前,猫是否使用setgid将其GID更改为"adm“?还是内核在返回文件描述符之前检查用户"griffin“是否是"adm”的成员(在本例中,不需要setgid )?进程的GID与作为所需组成员的用户的UID有什么根本区别?

我们非常感谢对这一问题的任何澄清。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2013-09-17 19:09:16

它主要与创建新的文件和目录有关。

默认情况下,文件将作为主组创建。如果希望使用不同的组ID创建文件,则需要setgid()。在创建新的文件/目录之前使用setgid()。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/539657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档