在 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热门文章推荐 —
【资料领取】200个Linux常用命令手册
《鸟哥Linux私房菜》全新完整中文版PDF
40 个简单又有效的 Linux Shell 脚本示例
linux运维必备,100道常见面试题
超强linux学习笔记,值得一看(附PDF下载)
红帽认证有什么优势?速看本文
5 种 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...