首页 > 代码库 > Linux系统学习之用户与用户组
Linux系统学习之用户与用户组
在Linux中,每个用户都拥有一个唯一的用户名和与之相关的用户标识符(UID,数值型)。一个用户可以属于多个用户组,每个用户组都拥有唯一一个名称和一个用户组标识符(GID,数值型)。
UID和GID的主要用途有:一,确定各种系统资源的所有权;二,对赋予进程访问资源的权限进行控制。
说起用户和用户组,就必须谈谈相关的系统文件:/etc/passwd、/etc/shadow和/etc/group。这些文件在Linux系统上都是以纯文本的形式存储。我们可以使用编辑器来修改它,也可以使用专有的命令来更改它。我们通过对这些文件进行增加、删除和修改的方式来对用户和用户组进行管理。
/etc/passwd
针对系统的每个用户账号,系统密码文件/etc/passwd都会列出一行来进行描述。描述信息包含7个字段,之间用冒号分隔,格式如下:
登录名:密码:UID:GID:注释:主目录:Shell
如下图所示:
说明:
1. 登录名:登录系统时,用户必须输入的唯一名称(即用户名)。
2. 密码:该字段包含的是经过加密处理的密码,长度一般为13个字符。若为”x”,说明密码经过了shadow的保护,经过加密处理的密码实际上存储到shadow密码文件中了。如果用户没有设置密码,则该项为空。
3. UID:用户的ID,数值型。如果该字段为0,则表示该用户是特权用户,一般为root。UID为16位值,范围在0~65535。1~500是系统预留ID,500以上则是普通用户使用。
4. GID:用户组标识,数值型。
5. 注释:用户的描述性信息。
6. 主目录:用户登录后所处的初始路径。一般以该字段设置HOME环境变量。
7. Shell:一旦用户登录,就交由该程序控制。若该字段为空,那么Shell默认为/bin/sh。一般以该字段设置SHELL环境变量。
/etc/shadow
任何用户对passwd文件都有读的权限,虽然密码已经加密,但具有安全风险(比如,有人使用密码破解工具)。为了规避这些风险,shadow密码文件/etc/shadow就出现了。经过加密的密码由shadow密码文件单独维护,仅供有特权(特权用户)的程序读取。
shadow密码文件中包含有登录名、经过加密的密码,以及其他若干与安全性先关的字段。它包含9个字段,之间用冒号分隔,格式如下:
登录名:密码:上次密码改动日期:密码不可被改动的天数:戏码需要重新更改的天数:密码变更期限到期前的警告期:账号失效期:账号取消日期:保留字段
/etc/group
Linux的用户组有私有组、系统组、标准组之分。
建立帐户时,若没有指定帐户所属的组,系统会建立一个和用户名相同的组,这个组就是私有组,这个组只容纳一个用户。
系统组是系统自动建立的。
标准组可以容纳多个用户,组内用户具有组所拥有的权利。
一个用户可以属于多个组,用户所属的组又有基本组和附加组之分。在用户所属组中的第一个组成为基本组,基本组在/etc/passwd文件中指定;其他组为附加组,附加组在/etc/group中指定。属于多个组的用户所拥有的权限是它所在的组的权限之和。
/etc/group中的每一行记录了一个组的信息。它包含4个字段,之间用冒号分隔,格式如下:
组名:组的密码:GID:组的成员
说明:
1. 组名:组的名称,如bin、nobody等。
2. 组的密码:经过加密的密码。一般情况下不使用组密码。
3. GID:组的ID,数值型。
4. 组的成员:组内包含的成员,用逗号分隔。