四、Linux用户(组)管理
Linux 是多用户多任务操作系统, 换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响。
例如,某台 Linux 服务器上有 4 个用户,分别是 root、www、ftp 和 mysql,在同一时间内,root 用户可能在查看系统日志、管理维护系统;www 用户可能在修改自己的网页程序;ftp 用户可能在上传软件到服务器;mysql 用户可能在执行自己的 SQL 查询,每个用户互不干扰,有条不紊地进行着自己的工作。与此同时,每个用户之间不能越权访问,比如 www 用户不能执行 mysql 用户的 SQL 查询操作,ftp 用户也不能修改 www 用户的网页程序。
不同用户具有不问的权限,毎个用户在权限允许的范围内完成不间的任务,Linux 正是通过这种权限的划分与管理,实现了多用户多任务的运行机制。
因此,如果要使用 Linux 系统的资源,就必须向系统管理员申请一个账户,然后通过这个账户进入系统(账户和用户是一个概念)。通过建立不同属性的用户,一方面可以合理地利用和控制系统资源,另一方面也可以帮助用户组织文件,提供对用户文件的安全性保护。
每个用户都有唯一的用户名和密码。在登录系统时,只有正确输入用户名和密码,才能进入系统和自己的主目录。
用户组是具有相同特征用户的逻辑集合。简单的理解,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有 10 个用户的话,就需要授权 10 次,那如果有 100、1000 甚至更多的用户呢?
显然,这种方法不太合理。 最好的方式是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中。那么,所有用户就具有了和组一样的权限,这就是用户组。
将用户分组是 Linux 系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,很多程序上简化了对用户的管理工作。
Linux用户和组的关系
用户和用户组的对应关系有以下 4 种:
一对一:一个用户可以存在一个组中,是组中的唯一成员;
一对多:一个用户可以存在多个用户组中,此用户具有这多个组的共同权限
多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限
多对多:多个用户可以存在多个组中,也就是以上 3 种关系的扩展
Linux UID和GID(用户ID和组ID)
登陆 Linux 系统时,虽然输入的是自己的用户名和密码,但其实 Linux 并不认识你的用户名称,它只认识用户名对应的 ID 号(也就是一串数字)。Linux 系统将所有用户的名称与 ID 的对应关系都存储在 /etc/passwd 文件中。
- /etc/passwd文件:是Linux系统识别用户的重要文件,所有的用户都记录在该文件中。一行表示一个用户的账户信息,有7个段位,依次为用户名、密码、用户标识号UID、用户所属的主要群组标识号GID、用户名全称、用户主目录、用户使用的Shell类型。UID是用户的ID值,在系统中每一位用户的UID值都是唯一的。UID是确认用户权限的标识,用户登录系统所处的角色是通过UID来实现的,而不是用户名。
- /etc/shadow文件:是/etc/passwd的影子文件,与/etc/passwd是对应互补的,内容包括用户及被加密的密码以及其他/etc/passwd不能包括的信息,比如用户账户的有效期限等。该文件只有root用户可以读取和操作。
用户主组、附加组:一个用户账户可以属于多个组群,挑一个作为用户的主组,即用户登录系统后属于该组
-
/etc/group 注:用户组(group)配置文件;
-
/etc/gshadow 注:用户组(group)的影子文件;
用户 | 功能 |
---|---|
root | 超级用户,UID为0,其权限最高 |
系统用户 | 虚拟用户、伪用户、假用户,是系统自身拥有的用户,UID为1~999,比如bin、daemon、adm、f |