分类: 系统运维
2012-03-27 17:29:47
用户ID(User ID)作为一个数值定义在password文件里,用来为我们向系统提供身份证明。这些用户ID由系统管理员在为我们分配用户名的时候分配,而且我们不能修改这个ID。用户ID一般对每个用户都是独一无二的。
我们称用户ID为0的用户为根用户(root)或超级用户(superuser)。我们可以在password文件里看到登录名为root的一行记录。一些操作系统函数只允许超级用户访问。超级用户可以掌管整个系统。
组ID(Group ID)同样作为一个数值定义在password文
件里,同样也是在系统管理员为我们分配用户名的时候分配。一般在password文件里会有多行记录来描述同一个组ID。组(Groups)通常用来把多
个用户集中到一个项目或一个部门,这样就可以在同一个组里共享资源,比如文件。我们可以设置一个文件的权限,使得它只能被一个组的成员访问,而组外的用户
则不访问该文件。
还有一个组文件用来把组名(group names)映射到数值化的组ID,这个文件通常为/etc/group。
用户ID和组ID之所以用数值表示,是有历史原因的。对于每个文件,文件系统都要为它存储它的属主(owner)的用户ID和组ID,如果每个ID存储为
2个字节的整型,则只要4个字节就够了,但完整的ASCII码登录名和组名需要更多的磁盘空间。此外,当检查权限时,比较字符串相对于比较整型数而言花费
更大。
尽管如此,用户更喜欢名字而不是数字,所以password文件维护了登录名到用户ID的映射,而组文件提供了组名到组ID的映射。函数getuid和getgid可以用来得到用户ID和组ID。
补充组ID(Supplementary Group IDs)
自从4.2BSD开始,多数的UNIX系统版本都允许用户除了在password文件里指定的组ID外,还可以同时属于其它的组。4.2BSD允许用户同
时有至多16个补充组ID。这些补充组ID在登录时通过文件/etc/group得到。POSIX要求系统至少支持8个补充组ID,而多数系统支持至少
16个。