Real User ID 和 Effective User ID 的区别

在 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...

相关推荐

  1. “==”“equals”区别

    2024-07-13 18:38:02       56 阅读
  2. == equals 区别

    2024-07-13 18:38:02       60 阅读
  3. #{}${}区别

    2024-07-13 18:38:02       33 阅读
  4. &&&区别

    2024-07-13 18:38:02       34 阅读
  5. 振动震动区别

    2024-07-13 18:38:02       170 阅读
  6. axiosajax区别

    2024-07-13 18:38:02       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 18:38:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 18:38:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 18:38:02       58 阅读
  4. Python语言-面向对象

    2024-07-13 18:38:02       69 阅读

热门阅读

  1. 初识C++

    初识C++

    2024-07-13 18:38:02      21 阅读
  2. 1. Linux系统概述

    2024-07-13 18:38:02       17 阅读
  3. Flume工具详解

    2024-07-13 18:38:02       18 阅读
  4. Linux Vim编辑器全攻略:从入门到精通

    2024-07-13 18:38:02       17 阅读
  5. npm install canvas失败

    2024-07-13 18:38:02       16 阅读
  6. 实现前端文件上传功能并存储到本地MySQL数据库

    2024-07-13 18:38:02       20 阅读
  7. jmeter文件下载接口处理

    2024-07-13 18:38:02       20 阅读
  8. python库 - modelscope

    2024-07-13 18:38:02       19 阅读
  9. C语言 求方程 ax^2 + bx + c = 0 的根

    2024-07-13 18:38:02       18 阅读
  10. 第一节 SHELL脚本中的常用命令(6)

    2024-07-13 18:38:02       19 阅读
  11. bert训练的一些技巧(rand() < self.skipgram_prb)

    2024-07-13 18:38:02       18 阅读