我已经意识到
真实用户id
..。它是系统中用户的唯一编号。
在我的系统上,我的
是
$ echo $UID
1014
$
另外两个ID代表什么?
有什么用呢?
有效用户id
和
已保存的用户id
那么我们在系统中的什么地方使用它们呢?
发布于 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的用途。
https://stackoverflow.com/questions/32455684
复制相似问题