- 论坛徽章:
- 0
|
6.1 用户ID
口令文件登录项中的用户ID(user ID)是个数值,它向系统标识各个不同的用户。系统管理员在确定一个用户的登录名的同时,确定其用户ID。用户不能更改其用户ID。通常每个用户有一个唯一的用户ID。
用户ID为0的用户为根(root)或超级用户( superuser )。在口令文件中,通常有一个登录项,其登录名为root,我们称这种用户的特权为超级用户特权。如果一个进程具有超级用户特权,则大多数文件许可权检查都不再进行。某些操作系统功能只限于向超级用户提供,超级用户对系统有自由的支配权。
打印用户I D和组I D
printf("uid=%d,gid=%d\n",getuid(),getgid());
6.2 组ID
口令文件登录项也包括用户的组ID(group ID),它也是一个数值。组ID也是由系统管理员在确定用户登录名时分配的。一般来说,在口令文件中有多个记录项具有相同的组ID。在UNIX下,组被用于将若干用户集合到课题或部门中去。这种机制允许同组的各个成员之间共享资源(例如文件)。可以设置文件的许可权使组内所有成员都能存取该文件,而组外用户则不能。
组文件将组名映射为数字组ID,它通常是/etc/group。
对于许可权使用数值用户ID和数值组ID是历史上形成的。系统中每个文件的目录项包含该文件所有者的用户ID和组ID。在目录项中存放这两个值只需4个字节(假定每个都以双字节的整型值存放)。如果使用8字节的登录名和8字节的组名,则需较多的磁盘空间。但是对于用户而言,使用名字比使用数值方便,所以口令文件包含了登录名和用户ID之间的映射关系,而组文件则包含了组名和组ID之间的映射关系。例如UNIX ls-l命令使用口令文件将数值用户I D映射为登录名,从而打印文件所有者的登录名。
6.3 添加组ID
除了在口令文件中对一个登录名指定一个组ID外,某些U N I X版本还允许一个用户属于另外一些组。这是从4.2 BSD开始的,它允许一个用户属于多至16个另外的组。登录时,读文件/etc/group,寻找列有该用户作为其成员的前16个登记项就可得到该用户的添加组ID
(supplementary group ID)。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/34065/showart_276206.html |
|