当前位置: 首页 > news >正文

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • UCSD和MIT的华人学者最新成果展示:沉浸式远程遥操作机器人
  • 大模型推理:vllm多机多卡分布式本地部署
  • PySide(PyQt)判断QLineEdit的输入是否合规
  • 本人学习保存-macOS打开Navicat提示「“Navicat Premium”已损坏,无法打开。 你应该将它移到废纸篓。」的解决方法
  • neo4j 图数据库:Cypher 查询语言、医学知识图谱
  • 【C++】优先级队列(底层代码解释)
  • SpringApplication.java类
  • 【linux高级IO(二)】多路转接之select详解
  • 离线语音识别芯片在智能生活中的应用
  • liunx作业笔记1
  • Elasticsearch7.5.2 常用rest api与elasticsearch库
  • 昇思25天学习打卡营第9天|MindSpore静态图加速
  • 【MySQL基础篇】事务
  • RabbitMq,通过prefetchCount限制消费并发数
  • 排序之冒泡排序
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 03Go 类型总结
  • Django 博客开发教程 16 - 统计文章阅读量
  • ES6 ...操作符
  • HashMap ConcurrentHashMap
  • JAVA_NIO系列——Channel和Buffer详解
  • Javascript编码规范
  • Linux后台研发超实用命令总结
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Python_OOP
  • SOFAMosn配置模型
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 回流、重绘及其优化
  • 聊聊directory traversal attack
  • 聊聊flink的TableFactory
  • 前端
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 突破自己的技术思维
  • 我这样减少了26.5M Java内存!
  • 小程序开发中的那些坑
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • # Redis 入门到精通(七)-- redis 删除策略
  • # 计算机视觉入门
  • (C语言)球球大作战
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (三)Honghu Cloud云架构一定时调度平台
  • (四)鸿鹄云架构一服务注册中心
  • (转)创业的注意事项
  • .bat批处理(一):@echo off
  • .NET轻量级ORM组件Dapper葵花宝典
  • .net实现客户区延伸至至非客户区
  • @Transient注解
  • [ai笔记4] 将AI工具场景化,应用于生活和工作
  • [C++] 小游戏 斗破苍穹 2.11.6 版本 zty出品
  • [Cloud Networking] Layer3 (Continue)
  • [JavaWeb学习] tomcat简介、安装及项目部署
  • [linux] git lfs install 安装lfs