当前位置:  开发笔记 > 编程语言 > 正文

与流程可以拥有的所有不同UID有什么关系?

如何解决《与流程可以拥有的所有不同UID有什么关系?》经验,为你挑选了2个好方法。

真正的UID,有效的UID,以及一些系统甚至有一个"保存的UID".所有这些的目的是什么,特别是最后一个?



1> Barth..:

每个UNIX进程都有3个与之关联的UID.超级用户权限是UID = 0.

真正的UID

这是创建此过程的用户/进程的UID.仅当正在运行的进程具有EUID = 0时才能更改它.

有效的UID

此UID用于评估进程执行特定操作的权限.如果EUID!= 0,则可以将EUID更改为RUID或SUID.如果EUID = 0,则可以将其更改为任何内容.

保存的UID

如果运行set-UID位设置的可执行文件,则生成的运行进程将以运行它的真实用户的真实UID以及可执行文件所有者的有效且保存的UID开始.如果进程调用setuid()或seteuid()来更改其有效UID,则由于保存的UID,它们仍然可以再次恢复其原始权限.如果未设置set-UID位,则SUID将是RUID.


保存的UID是一个进程可以将其有效UID切换到其真实UID,然后再返回; 否则这将是一个单向操作.

2> tzot..:

真正的uid是启动进程的用户的id.

有效的uid通常与真实的uid相同.仅在以下情况下有所不同:

可执行文件设置了set-uid位,可执行文件所有者与调用它的用户不同

或者如果set-uid进程调用setuid(2).如果进程具有超级用户权限,则允许setuid(2)的任何参数(但是所有*-uids都设置为相同的值); 否则,可以使用real-uid或effective-uid或saved-uid调用setuid(2).

saved-uid是进程启动时的有效uid,它被保存以便作为各种set*uid系统调用的参数被允许.

请注意,具有超级用户权限的进程调用setuid(2)来更改其有效uid也将使实际uid和已保存的uid更改为相同的值,因此应使用非POSIX seteuid(2).

以上所有也适用于(实际有效的)组ID.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有