Linux进程权限
本文是Linux系统下讨论。注意Linux和Unix有很多不同的地方并且各个不同的Unix系统也有很多不同。本文讨论对象ruid: real user id即实际用户也即当前登录的用户euid: effective user id 即有效用户也即以哪个用户身份来执行脚本suid: set user id 设置执行用户fuid: file system user id, 即文件系统用户s权限位: 即 set user ID bit即除了rwx之外的那个s标志位查看这几个uid有2种方式使用ps命令ps-ax-oruid-oeuid-osuid-ofuid-opid-ofname查看进程的status文件cat/proc/{pid}/status|grepUid另查看用户的uid、gid等可以使用命令 id1. 普通场景下的uid情况实验1首先a.out程序属于用户test1和组test.然后su test1作为test1用户。然后执行a.out程序。此时使用方法1观察可见4个uidruid, euid, suid, fuid全部为test1.然后su test2作为test2用户。再执行a.out程序。再用方法1观察可见4个uid全部都变成了test2.结论1在普通场景下这4个uid等同于ruid, 即执行用户的uid而和文件的owner无关。2. 关于权限出让的情况实验2-1出让权限给其他用户注意只有root用户才能出让权限给其他用户首先a.out程序属于用户test1和组test;但是在a.out程序中使用系统调用setuid()将uid设置为test2的uid.然后让root用户来执行此程序使用方法1观察会发现4个uid都是 test2 的 uid实验2-2和实验2-1基本一致不同点在于在a.out程序中使用seteuid()系统调用将euid设置为test2的euid.此时用方法1观察会发现ruidrooteuidtest2suidrootfuidtest2结论2setuid和seteuid是有区别的:setuid是永久放弃了root用户权限转让给非root用户后无法再收回seteuid只是临时放弃root用户权限将来可通过seteuid(0)再回到root权限seteuid会同时改变euid和fuid都为所设置的euid的值只有root用户才能出让权限即只有root用户才能调用setuid.权限出让的常见场景比如apache和mysql启动的时候使用root用户启动设置一些root用户才能操作的系统配置而在创建子进程时通过setuid降级为nobody用户。3. s权限位对进程权限的影响实验3首先a.out属于test1用户和test用户组然后以test1用户的身份来运行chmod us a.out最后使用root用户来运行a.out使用方法1 ps命令来查看进程情况会发现ruidrooteuidsuidfuidtest1s权限位最经典的案例是passwd命令-rwsr-xr-x1root root45396may252012/usr/bin/passwd由上可见user2有权限执行passwd, 即rws里的s执行时ruid仍是user2而euid是root. 注意ruid总是实际执行者的uid而目前这个case下euid是文件所有者的uid.user2之所以能够改变他自己的密码是因为passwd内部会检查ruid是否是root若不是则其行为会局限于修改ruid的密码让euid变成root是必须的因为密码的改变必然要求写/etc/shadow文件而该文件权限位是 640即只有root能写所以euid必须是root.结论3euid和ruid什么时候不一样呢只有一种情况可执行文件设置了suid位然后由非owner用户来执行此时ruid为执行者而euid为owner.4. 对用户文件权限的影响实验4在程序中setfsuid({test2_uid}), 然后调用fopen(some file, a);该程序执行结束后使用 ls -l 会发现文件已经变成了属于test2的文件。结论4影响用户文件权限的是fuid不是euid.fuid是Linux特有的属性Unix系统是靠euid来判定用户权限。5. 进程权限的继承结论5当使用fork子进程的时候子进程全部继承父进程4个uid当使用exec系列函数时候会把suid置为euid参考文献http://blog.chinaunix.net/uid-27105712-id-3349522.htmlhttp://blog.csdn.net/nirendao/article/details/55549515(END)

相关新闻

HarmonyOS ArkTS 实战:实现一个校园证件照拍摄与预约应用

HarmonyOS ArkTS 实战:实现一个校园证件照拍摄与预约应用

HarmonyOS ArkTS 实战:实现一个校园证件照拍摄与预约应用 项目效果 本文使用 HarmonyOS 和 ArkTS 实现一个校园证件照拍摄与预约应用。 应用可以预约证件照拍摄,选择证件照尺寸,在线选片,查看拍摄样片,并提供拍摄预约、照片下载、打印配送等功能。 项目使用 DevEco Studio…

2026/7/23 1:20:44阅读更多 →
Tiva™ C系列外设管理:PP与SR寄存器实战指南

Tiva™ C系列外设管理:PP与SR寄存器实战指南

1. 从寄存器手册到实战:Tiva™ C系列外设管理的核心逻辑如果你和我一样,长期泡在嵌入式开发的一线,特别是基于ARM Cortex-M内核的MCU,那你肯定对“外设管理”这四个字深有感触。它远不止是初始化几个时钟、配置几个引脚那么简单。…

2026/7/23 1:20:44阅读更多 →
深入解析ADC转换组:从基础原理到Hercules MCU高级应用

深入解析ADC转换组:从基础原理到Hercules MCU高级应用

1. ADC转换组:从“单兵作战”到“协同作战”的进化在嵌入式系统,尤其是实时控制系统的开发中,模数转换器(ADC)的角色,就像是系统的“感官”。它负责将外部世界的连续模拟信号(如温度、压力、电压…

2026/7/23 1:20:44阅读更多 →
Qwen3.8-Max-Preview代码模型在Qoder平台的本地部署与实战指南

Qwen3.8-Max-Preview代码模型在Qoder平台的本地部署与实战指南

这次我们来看一个值得关注的更新:Qwen3.8-Max-Preview 模型正式上线 Qoder 平台。对于需要本地化代码生成、智能编程辅助的开发者来说,这提供了一个新的选择。Qwen3.8-Max-Preview 是通义千问团队推出的最新预览版代码模型,重点强化了代码理解…

2026/7/23 2:44:57阅读更多 →
TM4C123系统控制模块实战:时钟、中断、总线与复位深度解析

TM4C123系统控制模块实战:时钟、中断、总线与复位深度解析

1. 项目概述与核心价值如果你正在使用TI的Tiva™ C系列微控制器,比如TM4C123GE6PM这颗经典的Cortex-M4芯片,那么系统控制模块(System Control)绝对是你绕不开的“心脏”。这个模块不像GPIO或UART那样直接与外界交互,但…

2026/7/23 2:44:57阅读更多 →
Qwen3.8-max-Preview代码生成模型实战:从提示词到项目集成

Qwen3.8-max-Preview代码生成模型实战:从提示词到项目集成

1. 先搞清楚 Qwen3.8-max-Preview 到底解决了什么实际问题如果你经常需要写代码、改代码,或者处理一些重复性的编程任务,那 Qwen3.8-max-Preview 这个模型值得先看一眼。它不是那种只能聊天的通用 AI,而是专门在代码生成、代码补全、代码解释…

2026/7/23 2:44:57阅读更多 →
YOLO模型在工业视觉中的高效应用与优化策略

YOLO模型在工业视觉中的高效应用与优化策略

1. 大模型时代YOLO的工业级生存法则当GPT-4在云端吞吐万亿参数时,工业现场的摄像头仍在用不到10MB的YOLO模型数螺丝。这不是技术代差,而是成本、效率、可靠性三重约束下的最优解。去年帮某汽车厂部署缺陷检测系统时,产线主管给我算了一笔账&a…

2026/7/23 2:44:57阅读更多 →
Grok for Excel:AI驱动的金融建模与智能图表生成实战指南

Grok for Excel:AI驱动的金融建模与智能图表生成实战指南

最近在金融数据分析工作中,经常遇到需要快速构建复杂模型和生成专业图表的需求。传统Excel操作虽然功能强大,但在处理大规模数据和复杂计算时效率较低。Grok for Excel的推出正好解决了这一痛点,将AI能力直接集成到Excel环境中,让…

2026/7/23 2:44:57阅读更多 →
Python Playwright异步超时与资源清理实战(0722-2157)

Python Playwright异步超时与资源清理实战(0722-2157)

Python Playwright异步超时与资源清理实战(0722-2157) 背景与挑战在现代Web自动化中,Playwright凭借其跨浏览器支持和强大的异步能力成为首选工具。然而,实际项目中我们常遇到两大痛点:异步超时控制和资源清理。页面加…

2026/7/23 2:42:57阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/23 0:56:31阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 0:56:31阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:00:28阅读更多 →
从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:28阅读更多 →
油泥处理设备哪里能买到

油泥处理设备哪里能买到

油泥处理设备哪里有?这是许多从事油田、炼化、清罐业务的从业者最关心的问题。根据河南三丰环保设备有限公司的行业经验,选购油泥处理设备的核心在于设备能否适配当地环保法规与原料特性,而非单纯看价格。该公司总经理王钦田先生指出&#xf…

2026/7/23 0:00:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/22 22:56:18阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/22 18:55:50阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/22 18:55:50阅读更多 →