随笔 - 18  文章 - 0  评论 - 0  阅读 - 3545

Linux系统的uid和euid

Linux内核为每个进程维护三个uid值,分别是ruid(real uid, 实际用户ID),euid(effective uid,有效用户ID),suid(saved set-user-id,保存的设置用户ID)

uid:真实的用户ID,进程的uid就是其创建者的用户

ruid:用于在系统中标识一个用户是谁,当用户使用用户名和密码成功登录一个Linux系统后就唯一确定了他的ruid

euid:用于系统决定用户(进程)对系统资源的访问权限,通常情况下等于ruid/uid

suid:用于对外权限的开放,跟ruid以及euid是用一个用户绑定不同,它是跟文件而不是跟用户绑定

 

p.s:

  1. 只有进程的创建者和root用户才有权力对该进程进行操作,所以记录一个进程的创建者就显得非常必要
  2. euid用来确定进程对某些资源和文件的访问权限,在大多数情况下,进程的euid和uid是一样的(除非使用了setuid对当前资源或者文件设置了特殊权限)

什么是setuid,passwd命令,这个命令允许用户修改自己的登录口令。但是密码保存在/etc/shadow文件中,这个文件对普通用户是不可读的,那么用户怎么能够通过修改shadow文件来修改自己的口令呢?这就是setuid的用处了。setuid通过使passwd在执行阶段具有文件所有者(也就是root)的权限,让用户临时有了修改shadow文件的能力(当然这种能力是受到限制的)。因此,passwd就是一个经典的setuid程序,其UID是当前执行这个命令的用户ID,而EUID则是root用户的ID(也就是0)。当非root用户调用passwd修改密码时,此时的euid将会变为passwd的拥有者用户,即root用户,这样就可以修改密码了。

 

gid和egid同理

 

posted on   yyyd~  阅读(279)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示