在 Unix 和 Linux 系统中,每个进程都有多个用户标识符(UID),其中最重要的是“真实用户 ID”(real UID)和“有效用户 ID”(effective UID)。
它们的区别和用途如下:
真实用户 ID (Real User ID)
真实用户 ID (RUID) 是启动进程的用户的 ID。
它标识了该进程的所有者,通常是执行进程的用户的 ID。
真实用户 ID 不会随进程的执行改变,除非进程特意改变它。
它用于访问控制和资源限制。例如,系统可以使用 RUID 来决定用户可以执行哪些操作。
有效用户 ID (Effective User ID)
有效用户 ID (EUID) 是当前执行进程的用户 ID。
它用于决定进程在访问文件或资源时的权限。
EUID 可以与 RUID 不同,特别是在使用 Set-UID 程序时。Set-UID 程序允许用户以文件所有者的权限运行程序,而不是以启动程序用户的权限运行。
例如,如果一个文件的 Set-UID 位被设置,并且文件由 root 拥有,那么执行该文件的用户将暂时获得 root 的权限。此时,进程的 EUID 会被设置为 root,但 RUID 仍然是原来的用户 ID。
区别和用途
RUID 决定了进程的所有者,通常用于系统审计和跟踪。
EUID 决定了进程在系统资源和文件访问上的权限,是操作系统用来决定权限检查的关键。
在某些情况下(例如使用 Set-UID 程序),EUID 会被提升以提供更多权限,而 RUID 保持不变,这种机制允许临时提升权限而不改变进程的真实身份。
示例
假设有一个 Set-UID 程序 /usr/bin/setuid_program
,它的所有者是 root,且设置了 Set-UID 位:
-rwsr-xr-x 1 root root 12345 Jan 1 00:00 /usr/bin/setuid_program
当用户 alice
执行这个程序时:
1.真实用户 ID (RUID):alice
的用户 ID。
2.有效用户 ID (EUID):root
的用户 ID,因为该程序设置了 Set-UID 位。
这样,虽然alice
是启动程序的用户,但在执行setuid_program
时,她拥有 root 的权限,可以执行一些通常需要 root 权限的操作。
总结
真实用户 ID 标识了谁启动了该进程。
有效用户 ID 决定了进程的当前权限。
这两者的设计使得 Unix 和 Linux 系统能够灵活地管理权限,确保安全性与功能性的平衡。
— Linux热门文章推荐 —
END
微思网络,始于2002年
专业IT认证培训22年,面向全国招生!
微思-主要课程有:
*网络技术:华为HCIA/ HCIP/HCIE;思科CCNA/CCNP/CCIE
*Linux技术:红帽 RHCE/RHCA
*K8S&容器:CKA/CKS
*数据库:ORACLE OCP/ OCM ;MySQL ;达梦数据库
*虚拟化:VMware VCP/VCAP
*安全认证:CISP体系/CISSP/ CISA;CCSK;CISAW体系
*管理类:PMP 项目管理;软考中/高项;ITIL体系;Togaf
其他课程如:ACP;Azure...