作者iman00b (I'm a n00b)
看板LinuxDev
标题Re: [问题] 使用者与群组
时间Sat Sep 6 00:08:26 2008
※ 引述《Xphenomenon (啦 )》之铭言:
: ※ [本文转录自 Linux 看板]
: 作者: Xphenomenon (啦 ) 看板: Linux
: 标题: [问题] 使用者与群组
: 时间: Thu Sep 4 19:58:42 2008
: 请问一下 UID 与 EUID, GID 与 EGID 有什麽差别吗?
: 不是很了解, 麻烦为我解答一下, 谢谢 :>
所谓的 EUID 与 EGID 是 effective user/group ID。
这东西就是指 process 在跑的时候,是用什麽身份在跑。
通常 EUID/EGID 会与现在的 UID/GID 相同,
但是当执行档有SUID/SGID(set-user-ID, set-group-ID)属性时,
则这个 process 在执行时,EUID/EGID 会变成档案 owner 的 ID。
举个最常见的例子,passwd 这只程式因为要存取 /etc/passwd 或 /etc/shadow,
所以这个档案在执行时必须要有 root 权限才能写入,
但是你一定会很纳闷,那为什麽我用一般 user 登入,
一样可以用 passwd 来改自己的密码呢?
答案就在於 passwd 有 SUID,
所以 passwd 在执行时,其 UID (或称 real user ID) 即使是一般 user,
但是 EUID 其实是 root,这样才能对 /etc/passwd 之类的档案有存取权。
SGID 也是一样的道理,因为早期系统没有 mkdir system call,
为了使用只有 root 才能呼叫的 mknod 来产生目录,就要利用到 SGID。
但是现代一些 UNIX-Like 的 implement 对 SGID 的继承方式其实是有微妙的差异的。
如 BSD 与 Linux 在某些系统呼叫上对这个 bit 的处理都不太一样。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.194.164.169
1F:推 Xphenomenon:多谢!受教了! :D 09/06 19:14