9.1 用户与用户组基础
计算机科学还没有进展到让每一台电脑都能通过生物学特征识别人的程度。在绝大多数情况下,用户名是身份的唯一标志,计算机通过用户提供的口令来验证这一标志。这种简单而实用的方式被广泛应用于几乎所有的计算机系统中。遗憾的是,也是由于这种“简单”的验证方式,使得在世界各地,每一天都有无数的账号被盗取。因此选择一个合适的用户名和一个不易被破解的密码非常重要。
Linux也运用同样的方法来识别用户:用户提供用户名和密码,经过验证后登录到系统。Linux会为每一个用户启动一个进程,然后由这个进程接受用户的各种请求。在建立用户的时候,需要限定其权限,例如不能修改系统配置文件,不能查看其他用户的目录等。就像在一个银行安全系统中,每一个人只能处理其职权范围内的事情。另外,系统中有一个特殊的root用户,这个用户有权对系统进行任何操作而不受限制。关于root的详细介绍,参见3.1节。
所谓“人以群分”,可以把几个用户归在一起,这样的组被称为“用户组”。可以设定一个用户组的权限,这样,这个组里的用户就自动拥有了这些权限。对于一个多人协作的项目而言,定义一个包含项目成员的组往往是非常有用的。
在某些服务器程序安装时,会生成一些特定的用户和用户组,用于对服务器进行管理。例如,可以使用mysql用户启动和停止MYSQL服务器。之所以不使用root用户启动某些服务,主要是出于安全性的考虑。因为当某个运行中进程的UID属于一个受限用户的话,那么即使这个进程出了什么问题,也不会对系统安全产生毁灭性打击(关于进程的相关知识,可以参考第10章)。