所有者/根和 RUID/EUID 之间的区别

所有者/根和 RUID/EUID 之间的区别

我对问题中提到的概念相对较新,从不同来源阅读它们只会让它们更加混乱。这就是我到目前为止的理解:

当我们获得文件的权限时,它们看起来像这样:

-rwsr-xr-- 1 user1 users 190 Oct 12 14:23 file.bin

user2我们假设该组中的用户users尝试执行file.bin.如果未设置 setuid 位,则意味着 的 RUID 和 EUID 都file.bin等于 的 UID user2。但由于设置了 setuid 位,这意味着 RUID 现在等于 的 UID user2,而 EUID 是文件所有者的 UID user1

我的问题是:

  1. 文件所有者 和 之间有什么区别root?是否root拥有与所有者相同的权限?或者我们需要在权限列表中单独输入一个条目吗root
  2. RUID 和 EUID 之间的区别?
    • 据我了解,RUID 和 EUID 仅适用于进程。如果是这样的话,为什么他们有用户 ID 的值?
    • 如果RUID是创建进程的用户,EUID是当前运行进程的用户,那么这个第一个答案的第一句问题对我来说没有任何意义。
    • 我是否正确理解了 setuid 位的作用?

答案1

答案如下:

  1. root一直满的访问文件和目录。文件的所有者通常也拥有它们,但情况并非总是如此。例如:

     -r-xr----- 1 user1 users 199 Oct 14 18:42 otherfile.bin
    

user1是个所有者;然而他们只能执行,但root仍然具有完全访问权限(读写) 到文件。

  1. RUID 是真实用户ID而且它(几乎)永远不会改变。如果user2登录到系统,则会启动 shell,其真实 ID 设置为user2。它们从 shell 启动的所有进程都会继承真实 IDuser2作为它们的真实 ID。

EUID 是有效用户ID,它会针对用户执行的已设置setuid位

如果user2执行file.bin,则 RUID 为user2,启动进程的 EUID 为user1

让我们使用以下情况passwd

-rwsr-xr-x 1 root root 45396 may 25  2012 /usr/bin/passwd
  • user2想要更改他们的密码,他们执行/usr/bin/passwd

  • RUID 将为 ,user2但该进程的 EUID 将为root

  • user2可以用来passwd改变仅有的他们自己的密码,因为内部passwd会检查 RUID,如果不是root,其操作将被限制为真实用户的密码。

  • EUID 是必要root的,passwd因为该过程需要/etc/passwd和/或/etc/shadow

相关内容