当前位置:嗨网首页>书籍在线阅读

19-用户和组

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

1.4.3 用户和组

Linux中通过用户和组进行权限认证,每个用户和一个唯一的正整数关联,该整数称为用户ID(uid)。相应地,每个进程和一个uid关联,用来识别运行这个进程的用户,称为进程的真实uid(real uid)。在Linux内核中,uid是用户的唯一标识。但是,用户一般通过用户名而不是id来表示。用户名及其对应的uid保存在/etc/passwd中,而系统库会把用户名映射到对应的uid上。

在登录过程中,用户向login程序提供用户名和密码。如果提供的用户名和密码都正确,login程序会根据/etc/passwd为用户生成login shell,并把用户id作为该shell进程的uid。子进程继承父进程的uid。

超级用户root的uid是0。root用户有特殊的权限,几乎可以执行所有的操作。举个例子,只有root用户可以修改进程的uid。因此,login进程是以root身份运行的。

除了真实uid以外,每个进程还包含有效的uid(effective uid),保留uid(saved uid)和文件系统uid(filesystem uid)。真实uid总是启动进程的用户uid,有效的uid在不同情况下会发生变化,从而支持进程切换成其他用户权限来执行。保留uid保存原来的有效uid,其值决定了用户将切换成哪个有效uid。文件系统uid通常和有效uid等效,用于检测文件系统的访问权限。

每个用户属于一个或多个组,包括在/etc/passwd中给出的基础组(primary group)或登录组(login group),也可能是/etc/group中给出的很多其他附加组(supplemental group)。因此,每个进程和相应的组ID(gid)关联,也包括真实gid、有效gid、保留gid、文件系统gid。进程通常是和用户的登录组关联,而不是和附加组关联。

一些安全机制只允许进程在满足特定标准时才执行某些操作。对于这一点,UNIX的安全机制非常简单:uid为0的进程可以访问,而其他进程不能访问。最近,Linux采用更通用的安全系统来取代UNIX这种安全机制。通过安全系统,不是做简单的二元判断,而是允许内核执行更细粒度的访问控制。