实际的UID,有效的UID和某些系统甚至具有“已保存的UID”。所有这些的目的是什么,尤其是最后一个?

最佳答案

每个UNIX进程都有3个与之关联的UID。 super 用户特权是UID = 0。

实际UID

这是创建此流程的用户/流程的UID。仅当正在运行的进程的EUID = 0时才可以更改。

有效UID

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

已保存的UID

如果您将set-UID位置1来运行可执行文件,则最终的运行过程将以运行它的真实用户的真实UID以及可执行文件所有者的有效且已保存的UID开始。如果该过程随后调用setuid()或seteuid()来更改其有效UID,则由于保存了UID,它们仍然可以再次取回其原始特权。如果未设置set-UID,则SUID将成为RUID。

10-06 09:03