ruid和euid的区别

译自:http://unix.stackexchange.com/questions/191940/difference-between-owner-root-and-ruid-euid

root用户的权限

root总是具有对文件和目录的完全访问权限。文件主人一般来说也是这样,但有时候不是。如下:
-r-xr----- 1 user1 users 199 Oct 14 18:42 otherfile.bin
user1是主人,但是他只能读和执行;而root仍然拥有完全访问权限(读、写和执行)。

RUID

real user ID,永远不会变:当一个用户登录系统之后,该shell的ruid就是改用户了。从该根shell产生的所有进程都会继承ruid,即该用户。

EUID

effective user id,如果user1的可执行文件设置了suid位,且该文件可被user2执行,那么user2执行时,该进程的euid是user1,而ruid是user2.

因为user2登录后去执行,所以ruid是user2;
因为user1设置了suid位且该文件是user1的,所以euid是user1.

那么,euid和ruid什么时候不一样呢?
答:只有上述的这一种情况,即,某可执行文件设置了suid位,然后由非owner用户来执行。

经典例子:passwd

-rwsr-xr-x 1 root root 45396 may 25 2012 /usr/bin/passwd

  • user2有权限执行passwd,user2登录后执行passwd
  • 执行时,ruid仍是user2,而euid是root
  • user2之所以能够改变他自己的密码,是因为passwd内部会检查ruid是否是root,若不是,则其行为会局限于修改ruid的密码
  • 让euid变成root是必须的,因为密码的改变必然要求写 /etc/shadow 文件,而该文件权限位是 640,即只有root能写,所以euid必须是root.

另:

  • 特权进程(即euid=0,即euid=root)可以设置euid和ruid为非0值(正如login,su和sudo所做的那样)。一般,一个特权进程一旦将其ruid和euid变成非0值,它就变不回root了。
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值