有效用户组和初始用户组的区别
时间:2010-09-06 来源:cup
实际用户(real user id):实际用户就是登陆到shell的时候的用户,也是最开始的用户。who am i所列出的就是实际用户。
有效用户(effective user id):就是用su或者su -所切换到的用户。用whoami所列出的就是这个有效用户。如果执行了一个命令产生了一个进程,那么此进程的USER就是有效用户ID
初始用户组:在/etc/passwd文件里的第4栏root:x:0:0:root:/root:/bin/bash(cat /etc/passwd),它表示GID,就是“用户组ID”,这个值称为“初始用户组”。当用户登陆系统时,立刻就拥有了这个用户组的相应权限。
/etc/group存储着所有的用户组名称以及相应的用户账号列表。这个用户账号列表原则上不存储“初始用户组名称”的,因为初始用户组名称在/etc/passwd里已经存储了,没必要在这里再重复存储了。
有效用户组:表示用户此时此刻所在的用户组是什么。依据newgrp命令,可以帮助用户转换到不同的用户组。比如newgrp test,就可以让用户转换到test用户组了。这种转换的背后原理是“创建一个新的子shell”,恢复到原来用户组的方法是用exit或ctrl-D来注销当前的shell。
有效用户组就是用newgrp命令,如果一次也没有使用newgrp命令,那么有效用户组就是初始用户组了。
可以用groups命令来列出当前用户所支持的所有用户组。有些系统中,第一个列出的就是有效用户组。
还应注意的是,建立一个文件时,此文件的所属用户组就是创建人当前的有效用户组。
结论
1 当用su或者su -切换用户时,其用户组都会随之改变,系统会根据所要切换的有效用户ID去/etc/passwd里寻找相对应的初始用户组,然后切换之。
2 建立一个文件时,系统会根据有效用户和有效用户组来创建。