linux - 进程可以拥有的每个不同 UID 的目的是什么?

真实的UID、有效的UID,有些系统甚至还有“保存的UID”。所有这些的目的是什么,尤其是最后一个?

最佳答案

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

真实的 UID

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

有效的 UID

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

已保存的 UID

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

https://stackoverflow.com/questions/205070/

相关文章:

linux - tr 命令 - 如何将字符串 "\n"替换为实际的换行符 (\n)

python - 带有隐藏窗口的跨平台子进程

linux - 从 rpm 包中提取规范文件

linux - cron 如何在内部安排作业?

linux - 除了使用 Ctrl + C 之外,如何在 linux 中停止正在运行的 R 命令?

python - 如何关闭被杀死的程序打开的套接字?

c - 关于 putenv() 和 setenv() 的问题

c - bzero() & bcopy() 与 memset() & memcpy()

linux - 使用命令或 bash 脚本清理环境?

linux - 解释导出 LANG、LC_CTYPE 和 LC_ALL 的效果