Linux平台及应用
潘小玲 郑国华 丁敏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

账户管理概述

发布时间:2020-03-14 21:40   发布人:潘小玲   浏览次数:585

(1)账户管理概述

(1.1)账户实质

Linux操作系统是多用户的操作系统,它允许多个用户同时登录到系统上,使用系统资原。当多个用户能同时使用系统时,为了使所有用户的工作都能顺利进行,保护每个用户的文件和进程,也为了系统自身的安全和稳定,必须建立起一种秩序,使每个用户的权限都能得到规范。为此,首先需要区分不同的用户,这样就产生了用户账户。

账户实质上就是一个用户在系统上的标识,系统依据账户ID来区分每个用户的文件、进程、任务,给每个用户提供特定的工作环境(如用户的工作目录、Shell 版本以及X Window环境的配置等),使每个用户的工作都能独立不受干扰地进行。

(1.2)用户和组

广义上讲, Linux的账户包括用户账户和组账户两种。

Linux系统下的用户账户(简称用户)有两种,普通用户账户和超级用户账户(或管理员账户)。普通用户在系统上的任务是进行日常工作,管理员在系统上的任务是对普通用户和整个系统进行管理。管理员账户对系统具有绝对的控制权,能够对系统进行一切操作,如操作不当很容易对系统造成损坏。因此即使系统只有一个用户使用,也应该在管理员账户之外建立一个普通用户账户,在用户进行日常工作的时候以普通用户账户登录系统。

除了用户账户之外,在Linux 下还存在组账户(简称组)。组是用户的集合。在RHEL/CentOS中组有两种类型:私有组和标准组。当创建一个新用户时,若没有指定其所属的组,RHEL/CentOS 就建立一个和该用户同名的私有组,此私有组中只包含这个用户自己。

标准组可以包含多个用户,若使用标准组,在创建一个新的用户时就应该指定其所属的组。

从另一方面讲,同一个用户可以同属于多个组,如某单位有领导组和技术组等,Tom是该单位的技术主管,所以他既应该属于领导组又应该属于技术组。当一个用户属于多个组时,其登录后所属的组称为主组,其他的组称为附加组。

(1.3) Linux 环境下的账户系统文件

Linux下的账户系统文件主要有/etc/passwd、/etc/shadow、/etc/group和/etc/gshadow 4个文件。

1)/etc/passwd文件中每行定义一个用户账户,一行中又划分为多个字段定义用户账号的不同属性,各字段间用“:”分隔。例如:

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

……(此处省略n行)

下表中描述了这些字段的意义。

/etc/passwd文件中各字段的含义

字 段

说 明

用户名

这是用户登录系统时使用的用户名,在系统中是唯一的

口令

此字段存放加密的口令。在此文件中的口令是X,表示用户的口令是被/etc/shadow文件保护的,所有加密的口令以及和口令有关的设置都保存在/etc/shadow中

用户标识号

是一个整数,系统内部用它来标识用户。每个用户的UID都是唯一的。root用户的UID是0,从1~499是系统的标准账户。普通用户的UID从500开始

组标识号

是一个整数,系统内部用它来标识用户所属的组。每个用户账户在建立好后都会有一个主组。主组相同的账户其GID相同。在默认情况下,每一个账户建立好后系统都会建立一个和账户名同名的组,作为该账户的主组,这个组只有用户本人这一个成员,即此组是私有组

GECOS

例如存放用户全名、地理位置等信息

宿主目录

用户登录系统后所进入的目录

命令解释器

指示该用户使用的Shell,默认为bash

2)/etc/passwd文件对任何用户均可读,为了增加系统的安全性,CentOS默认使用shadow passwords保护,将经过加密的用户口令保存在/etc/shadow文件里,它只对root用户可读且提供了一些口令时效字段。/etc/shadow文件的内容形式如下:

root:$6$6OWB.8Dhhw179jID$syizd99UMbV2z.CWhR3Z52CzHUhtXRo51IizZgAtaRqTUuNYlCszISFyLX0BizXEbT6L3i5ybwnnXxeY9cJLQ0::0:99999:7:::

bin:*:17110:0:99999:7:::

daemon:*:17110:0:99999:7:::

adm:*:17110:0:99999:7:::

lp:*:17110:0:99999:7:::

sync:*:17110:0:99999:7:::

shutdown:*:17110:0:99999:7:::

halt:*:17110:0:99999:7:::

……(此处省略n行)

其中各字段的意义如下表所示。

 

/etcsbadow 文件中各字段的含义

栏       位

说      明

用户名1

用户的账户名

口令

用户的口令,是SHA512加密过的

最后一次修改的时间

从1970年1月1日起,到用户最后一次更改口令的天数

最小时间间隔

从1970年1月1日起,到用户可以更改口令的天数

最大时间间隔

从1970年1月1日起,到用户必须更改口令的天数

警告时间

在用户口令过期之前多少天提醒用户更新

不活动时间

在用户口令过期之后到集用账户的天数

失效时间

从1970年1月1日起,到账户被禁用的天数

标志

保留位

3) /et/group文件,将用户分组是Linux中对用户进行管理及控制访问权限的一种手段。每个用户都属于某一个组;一个组中可以有多个用户,一个用户也可以属于不同的组。当一个用户同时是多个组的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的主组,而其他组称为附加组。用户要访问附加组的文件时,必须首先使用newgrp 命令使自己成为所要访问的组的成员。组的所有属性都存放在/etc/group文件中。etc/group 文件对任何用户均可读。下面是一个/etc/group文件的例子。

   root:x:0:

bin:x:1:

daemon:x:2:

sys:x:3:

adm:x:4:

……(此处省略n行)

   与/etc/passwd文件类似,其中每一行记录了一个组的信息。每行包括4个字段,不同字段之间用冒号隔开。各字段的内容说明如下表所示。

/etc/group文件中各字段说明

栏 位

说 明

组名

该组的名称

组口令

组口令,由于安全性原因,已不使用该字段保存口令,用x占位

GID

组的识别号,和UID类似,每个组都有自己独有的识别号,不同组的GID不会相同

组成员

属于这个组的成员,多个成员间用”,”分隔

   

4)/etc/gshadow文件用于定义用户组口令、组管理员等信息,该文件只有root用户可以读取。下面是一个/etc/gshadow文件的例子:

root:::

bin:::

daemon:::

sys:::

adm:::

tty:::

disk:::

lp:::

mem:::

kmem:::

wheel:::localhost

cdrom:::

……(此处省略n行)

与/etc/group文件类似,其中每一行记录了一个组的信息。每行包括4个字段,不同字段之间用冒号隔开。其中各字段的内容说明如下表所示。

/etc/gshadow文件中各字段说明

栏 位

说 明

组名

组名称,该字段与group文件中的组名称对应

组口令

组口令,该字段用于保存已加密的口令

组的管理员账号

组的管理负账号,管理员有权对该组添加、删除账号

组成员

属于该组的用户成员列表,列表中多个用户间用“,”分隔

注意:

账户管理的实质就是管理上述的4个账户系统文件,可以使用图形界面工具进行,也可以使用命令行工具进行,甚至还可以使用Web工具进行。