首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >真实用户ID、有效用户ID、保存用户ID的区别

真实用户ID、有效用户ID、保存用户ID的区别
EN

Stack Overflow用户
提问于 2015-09-08 18:43:54
回答 2查看 85.3K关注 0票数 135

我已经意识到

真实用户id

..。它是系统中用户的唯一编号。

在我的系统上,我的

代码语言:javascript
运行
复制
$ echo $UID
1014
$

另外两个ID代表什么?

有什么用呢?

有效用户id

已保存的用户id

那么我们在系统中的什么地方使用它们呢?

EN

回答 2

Stack Overflow用户

发布于 2015-09-08 19:38:19

区分真实用户id和有效用户id是因为您可能需要临时获取另一个用户的身份(大多数情况下,这将是

,但它可以是任何用户)。如果您只有一个用户id,那么以后就没有办法改回原来的用户id了。

,使用

更改为任何用户的权限)。

因此,真正的用户id是您的真实身份(拥有该进程的人),而有效的用户id是操作系统查看以决定是否允许您执行某项操作的内容(大多数情况下,有一些例外)。

当您登录时,登录shell将真实和有效的用户id设置为与密码文件提供的值(真实用户id)相同的值。

现在,您还可以执行setuid程序,并且除了以另一个用户身份运行之外(例如,

) setuid程序是

还有

应该为你做点什么。这是如何工作的?

在执行setuid程序之后,它将拥有您的真实id (因为您是进程所有者)和文件所有者的有效用户id (例如

),因为它是setuid。

这个程序使用超级用户权限做它需要做的任何事情,然后想要代表你做一些事情。这意味着,尝试做一些你不应该做的事情

应该失败

..。它是如何做到这一点的?显然,通过将其有效的用户id更改为真实的用户id!

现在setuid程序没有办法切换回来,因为内核只知道你的id和...

您的id

..。邦,你死定了。

这就是保存的set-user id的用途。

票数 179
EN

Stack Overflow用户

发布于 2021-02-28 19:40:50

这就是我对它的理解。用户执行的文件(相当于启动一个进程)将具有与该用户的id相等的RUID。这里需要注意的重要一点是,创建文件的uid与执行文件的uid不同。它们可以是相同的,也可以是不同的。因此,根据执行文件的UID,RUID可能会有所不同。如果文件具有setuid位,则每当uid执行该文件时,该uid将临时替换为文件所有者的uid。因此,如果我们有一个由uid 456拥有的文件,并且上面有setuid位,那么每当uid 123执行该文件时,该文件都将使用uid 456执行。在这种情况下,uid 123是RUID,uid 456是EUID。

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

https://stackoverflow.com/questions/32455684

复制
相关文章

相似问题

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