不管是Windows操作系统还是Linux操作系统,想要登录系统必须要有合法的账户及密码。本篇博文主要介绍Linux系统下的账户信息。
博文大纲:
一、Linux系统的账号及群组
1.UID与GID;
2.使用者账号;
(1)/etc/passwd文件结构;
(2)/etc/shadow文件结构;
3.有效群组与初始群组;
(1)/etc/group文件结构;
(2)有效群组与初始群组;
(3)/etc/gshadow文件结构;
二、账号管理指令;
(1)useradd命令
(2)passwd命令
(3)chage命令
(4)usermod命令
(5)userdel命令
(6)groupadd命令
(7)groupmod命令
(8)groupdel命令
(9)gpasswd命令
(10)id指令
一、Linux系统的账号及群组
作为Linux系统管理员,相当重要的环节就是“管理账号”。因为整个系统都是你在管理,并且所有系统的合法用户的申请都需要你的同意以及分配相应的权限,来完成日常工作。这就能看出“管理账号”的重要性!
1.UID与GID
虽然我们用户登录Linux操作系统时,输入的是我们的合法账号,但是其实LInux操作系统并不会直接认识你的“账号名称”的,它仅仅认识账户所对应的ID。至于账户的存在是为了让人们可以更好地记忆。当你登录操作系统时,输入的账号信息,“Shell翻译官”负责将找到账户对应的ID号码,系统才能决定该账号是否可以登录操作系统。
关于登录时会有两个ID号码,来判断你的身份信息,是否可以登录操作系统。每个登录的使用者至少都会具有两个ID:一个是使用者ID(UID);一个是群组ID(GID)。
我们在对文件、目录进行查看属主、属组时,非常友好的显示出了用户名、组名,但是系统也是根据UID、GID来进行判断的。账户对应的UID、GID存放在/etc/passwd文件中。
2.使用者账号
Linux系统上的用户如果需要登录Linux操作系统来取得对应的Shell环境进行工作时,需要经过以下几步:
- 首先:查找/etc/passwd文件是否存在相应的账号信息,如果没有则跳出;如果存在的话,则将该账号对应的UID与GID在/etc/passwd、/etc/group中读取出来,另外,该账号的宿主目录及Shell环境也将一并读取出来;
- 其次:就是核对密码是否正确。这时Linux系统会进入/etc/shadow文件中找出对应的账户与UID,核对输入的密码是否正确;
- 最后:如果上述条件都没有问题的话,这是才会正常的登录到Linux系统中;
当用户登录Linux操作系统时,/etc/passwd、/etc/shadow文件是系统进行读取的(这也是为什么非法操作者将特殊账户写到/etc/passwd文件中的缘故)。所以如果想要备份Linux系统的账号时,这两个文件也一定需要备份!
下面中重点介绍一下/etc/passwd/(存放用户UID、GID)、etc/shadow(存放用户密码)的文件:
(1)/etc/passwd文件结构
/etc/passwd文件的构造是这样的:每一行都代表一个账号、有几行就表示系统中存在几个账号,里面很多账号都是系统正常运行所需使用的,我们将其成为系统程序用户。注意,这些账号不可以随意的进行删除、修改等操作。
/etc/passwd文件的架构是这样的:
我们以root用户为例,每段用“:”进行分隔,一共是7段。各段的含义如下:
- 第一段:账号名称;就是我们用来正常登陆操作系统的名称!需要对应UID;
- 第二段:密码占位符;早期的UNIX操作系统的密码就是存在在此的,但是因为这个文件一般的用户都可以读取,所以经过Linux的发展,密码信息后来存放在/etc/shadow文件中,但是此处会有一个“x”的标志;
- 第三段:账户所对应的UID;关于UID的取值范围如图:
- 第四段:用户所对应的GID;这段信息与/etc/group文件信息有关,用来规范组名与GID的对应关系;
- 第五段:用户信息说明栏;这段信息就是用来解释这个账号的意义而已;
- 第六段:用户的宿主目录;我们都知道,root用户宿主目录就是/root目录,则普通用户的宿主目录在/home/用户名;
- 第七段:用户登录系统时所使用的Shell环境;
(2)/etc/shadow文件结构
/etc/shadow文件结构也是一行对应一个用户信息,不过这个文件主要是用来存放用户密码信息的,同时这个文件中的内容不允许随意的进行修改、删除等操作。文件结构如下:
我们同样以root用户为例,每段用“:”进行分隔,一共是9段。各段的含义如下:
- 第一段:账号名称;必须与/etc/passwd文件中的名称对应即可!
- 第二段:密码;这个字段才是真正的密码,而且是经过加密后密码信息。这些加密信息也可以使用特殊的解密工具进行查看。所以/etc/shadow文件的权限一般是“-rw-------”或者“----------”,只有root用户才可进行读取、修改。注意这个文件的权限一般情况不建议乱动,否则可能会出现麻烦!
- 第三段:最近更改密码的日期;不过很奇怪,为什么是18167呢?这是因为计算Linux日期的时间是1970年1月1号作为1的累加日期,计算方法如下:
[[email protected] ~]# awk -F : ‘{print $1,$3}‘ /etc/shadow | grep root root 18167 [[email protected] ~]# date -d "1970-1-1 18167 days" "+%Y/%m/%d %H:%m:%s" 2019/09/28 00:09:1569600000
- 第四段:密码不可更改的天数;表示这个账号的密码在最近一次修改之后,需要经过多长时间才可以被修改。0表示随时,99999表示不允许被修改;
- 第五段:密码需要重新变更的天数(有效期);强制更改密码的天数。99999表示没有限制;
- 第六段:密码变更期限前的警告天数;如果是7的话,还有7天过期时,开始提醒;
- 第七段:密码过期后的账号宽限时间(失效期);如果是7的话,表示密码到期7天内仍然可以使用,如果过期时,登录操作系统,会强制提示修改密码;
- 第八段:账号失效日期;表示这个账号在规定的日期之后,将不可被使用;
- 第九段:保留;以备新功能的加入;
一般用户密码忘记之后,可以请系统管理员重新进行设置;但是root密码忘记之后,就必须进行系统急救模式,重新设置!
3.有效群组与初始群组
通过使用者账号,我们了解到了跟用户有关的两个文件:/etc/passwd、/etc/shadow文件,我们还需了解跟群组有关的两个配置文件:/etc/group、/etc/gshadow文件。
(1)/etc/group文件结构
/etc/group文件就是存放GID与组名的对应关系的文件,文件结构如下:
/etc/group文件同样是每一行代表一个群组,也是使用“:”进行分隔,共四段,每段的含义:
- 第一段:组名;与第三字段的GID相对应;
- 第二段:群组密码;同样是密码占位符,通常是系统管理员进行设置的;
- 第三段:GID;就是/etc/passwd第四个字段所对应的GID;
- 第四段:此群组支持的账号名称;就是包含哪些用户加入这个群组中;
我们来简单的了解一下UID/GID与密码之间的对应关系,如图:
(2)有效群组与初始群组
/etc/passwd文件中第四个字段对应的GID,就是所谓的初始群组;
使用“groups”命令可以查看其有效群组,如果一个用户同时加入多个群组,查看的第一个群组名便是用户的有效群组;可以使用“newgrp 群组名”进行有效群组的切换。使用“newgrp 群组名”命令时,会进入特殊的Shell环境中,设置完成之后,需要使用“exit”命令退出当前Shell环境中。
(3)/etc/gshadow文件结构
文件结构如图:
使用“:”分隔,也是四个字段,每个字段的含义:
- 第一段:组名;
- 第二段:密码栏,开头为“!”表示无合法面膜,所以无群组管理员;
- 第三段:群组管理员的账号;
- 第四段:加入群组支持的所属账号;
二、账号管理指令
(1)useradd命令
useradd命令,用于添加用户。常用的参数,如图:
我们平时添加账号时,如果没有太多的需求,直接“useradd 用户名”即可!这是因为系统已经设置了很多默认值。
我们使用“useradd 用户名”创建账号时,系统会默认给我们做以下事情:
- 在/etc/passwd文件中添加一行与账号相关的数据,包括建立UID/GID/宿主目录等;
- 在/etc/shadow文件中将此账号的密码相关参数写入,但是尚未有密码;
- 在/etc/group文件中加入一个以账号相同的组名;
- 在/home目录下建立一个与账号同名的用户家目录,且权限为700;
我们可以使用“useradd -D”命令来查看系统所设置的默认值,如图:
除了这些基本的账号设定值之外,UID/GID还有密码参数在/etc/login.defs文件中,如图:
(2)passwd命令
passwd命令主要用于给用户设置跟密码相关的内容,常用参数如图:
(3)chage命令
chage命令主要用于设置更加详细的密码参数功能。具体参数,如图:
(4)usermod命令
usermod命令主要用于设置账户相应的参数,常用的参数,如图:
(5)userdel命令
userdel命令就是为了删除用户,常用的选项只有一个:
-r:连同用户的宿主目录一起删除;
(6)groupadd命令
groupadd命令用于添加新的用户组,主要的参数有:
-g:后面接某个指定的GID;
-r:创建系统群组;
(7)groupmod命令
常用的参数有:
-g:修改既有的GID号;
-n:修改既有的群组名称;
(8)groupdel命令
groupdel命令用于删除群组!
(9)gpasswd命令
使用方法:“gpasswd 群组名”,常用的参数,如图:
关于群组管理员使用的参数:
(10)id指令
主要用于查询某人或自己的相关的UID/GID等信息。使用方法“id 用户名”即可!
———————— 本文至此结束,感谢阅读 ————————
原文地址:https://blog.51cto.com/14157628/2446117