在 Linux 系统上,/etc/passwd 文件包含每个用户的 UID 和 GID。GID 表示用户主要组的 ID。
但是我们也可以使用 /etc/group 文件为用户设置附加组。
对于一个用户来说,主要组和附加组之间有区别吗?
我们来看两个例子:
- 示例 1:
/etc/密码:
test:x:1000:151:test,,,:/home/test:/bin/bash
/etc/组
group1:x:151:
group2:x:152:test
group3:x:153:
在这个例子中,test 是 group1(作为主组,因为他的 gid 是 151)和 group2 的成员。
- 示例 2:
/etc/密码:
test:x:1000:152:test,,,:/home/test:/bin/bash
/etc/组
group1:x:151:test
group2:x:152:
group3:x:153:
在这个例子中,test 是 group1 和 group2 的成员(作为主组,因为他的 gid 是 152)。
这两个示例的有效用户权限有区别吗?
谢谢
答案1
检查使用调用进程的真实 UID 和 GID,而不是像实际尝试对文件执行操作(例如 open(2))时那样使用有效 ID。同样,对于 root 用户,检查使用允许的功能集而不是有效功能集;对于非 root 用户,检查使用空的功能集。
用户的主要组和附加组之间是否有区别
是的,如果 shell 启动时的有效用户(组)id 不等于实际用户(组)id,并且未提供 -p 选项,则不会读取任何启动文件,不会从环境中继承 shell 函数,如果 SHELLOPTS、BASHOPTS、CDPATH 和 GLOBIGNORE 变量出现在环境中,则它们将被忽略,并且有效用户 id 设置为实际用户 id。如果在调用时提供了 -p 选项,则启动行为相同,但不会重置有效用户 id。
这两个示例的有效用户权限有区别吗?
是的,
参考:https://linux.die.net/man/2/access和https://linux.die.net/man/1/bash