不论是Windows操做系统仍是Linux操做系统,想要登陆系统必需要有合法的帐户及密码。本篇博文主要介绍Linux系统下的帐户信息。安全
博文大纲:
1、Linux系统的帐号及群组
1.UID与GID;
2.使用者帐号;
(1)/etc/passwd文件结构;
(2)/etc/shadow文件结构;
3.有效群组与初始群组;
(1)/etc/group文件结构;
(2)有效群组与初始群组;
(3)/etc/gshadow文件结构;
2、帐号管理指令;
(1)useradd命令
(2)passwd命令
(3)chage命令
(4)usermod命令
(5)userdel命令
(6)groupadd命令
(7)groupmod命令
(8)groupdel命令
(9)gpasswd命令
(10)id指令 架构
做为Linux系统管理员,至关重要的环节就是“管理帐号”。由于整个系统都是你在管理,而且全部系统的合法用户的申请都须要你的赞成以及分配相应的权限,来完成平常工做。这就能看出“管理帐号”的重要性!ide
虽然咱们用户登陆Linux操做系统时,输入的是咱们的合法帐号,可是其实LInux操做系统并不会直接认识你的“帐号名称”的,它仅仅认识帐户所对应的ID。至于帐户的存在是为了让人们能够更好地记忆。当你登陆操做系统时,输入的帐号信息,“Shell翻译官”负责将找到帐户对应的ID号码,系统才能决定该帐号是否能够登陆操做系统。工具
关于登陆时会有两个ID号码,来判断你的身份信息,是否能够登陆操做系统。每一个登陆的使用者至少都会具备两个ID:一个是使用者ID(UID);一个是群组ID(GID)。加密
咱们在对文件、目录进行查看属主、属组时,很是友好的显示出了用户名、组名,可是系统也是根据UID、GID来进行判断的。帐户对应的UID、GID存放在/etc/passwd文件中。操作系统
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系统的帐号时,这两个文件也必定须要备份!3d
下面中重点介绍一下/etc/passwd/(存放用户UID、GID)、etc/shadow(存放用户密码)的文件:code
/etc/passwd文件的构造是这样的:每一行都表明一个帐号、有几行就表示系统中存在几个帐号,里面不少帐号都是系统正常运行所需使用的,咱们将其成为系统程序用户。注意,这些帐号不能够随意的进行删除、修改等操做。blog
/etc/passwd文件的架构是这样的:
咱们以root用户为例,每段用“:”进行分隔,一共是7段。各段的含义以下:
- 第一段:帐号名称;就是咱们用来正常登录操做系统的名称!须要对应UID;
- 第二段:密码占位符;早期的UNIX操做系统的密码就是存在在此的,可是由于这个文件通常的用户均可以读取,因此通过Linux的发展,密码信息后来存放在/etc/shadow文件中,可是此处会有一个“x”的标志;
- 第三段:帐户所对应的UID;关于UID的取值范围如图:
- 第四段:用户所对应的GID;这段信息与/etc/group文件信息有关,用来规范组名与GID的对应关系;
- 第五段:用户信息说明栏;这段信息就是用来解释这个帐号的意义而已;
- 第六段:用户的宿主目录;咱们都知道,root用户宿主目录就是/root目录,则普通用户的宿主目录在/home/用户名;
- 第七段:用户登陆系统时所使用的Shell环境;
/etc/shadow文件结构也是一行对应一个用户信息,不过这个文件主要是用来存放用户密码信息的,同时这个文件中的内容不容许随意的进行修改、删除等操做。文件结构以下:
咱们一样以root用户为例,每段用“:”进行分隔,一共是9段。各段的含义以下:
- 第一段:帐号名称;必须与/etc/passwd文件中的名称对应便可!
- 第二段:密码;这个字段才是真正的密码,并且是通过加密后密码信息。这些加密信息也可使用特殊的解密工具进行查看。因此/etc/shadow文件的权限通常是“-rw-------”或者“----------”,只有root用户才可进行读取、修改。注意这个文件的权限通常状况不建议乱动,不然可能会出现麻烦!
- 第三段:最近更改密码的日期;不过很奇怪,为何是18167呢?这是由于计算Linux日期的时间是1970年1月1号做为1的累加日期,计算方法以下:
[root@localhost ~]# awk -F : '{print $1,$3}' /etc/shadow | grep root root 18167 [root@localhost ~]# 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密码忘记以后,就必须进行系统急救模式,从新设置!
经过使用者帐号,咱们了解到了跟用户有关的两个文件:/etc/passwd、/etc/shadow文件,咱们还需了解跟群组有关的两个配置文件:/etc/group、/etc/gshadow文件。
/etc/group文件就是存放GID与组名的对应关系的文件,文件结构以下:
/etc/group文件一样是每一行表明一个群组,也是使用“:”进行分隔,共四段,每段的含义:
- 第一段:组名;与第三字段的GID相对应;
- 第二段:群组密码;一样是密码占位符,一般是系统管理员进行设置的;
- 第三段:GID;就是/etc/passwd第四个字段所对应的GID;
- 第四段:此群组支持的帐号名称;就是包含哪些用户加入这个群组中;
咱们来简单的了解一下UID/GID与密码之间的对应关系,如图:
/etc/passwd文件中第四个字段对应的GID,就是所谓的初始群组;
使用“groups”命令能够查看其有效群组,若是一个用户同时加入多个群组,查看的第一个群组名即是用户的有效群组;可使用“newgrp 群组名”进行有效群组的切换。使用“newgrp 群组名”命令时,会进入特殊的Shell环境中,设置完成以后,须要使用“exit”命令退出当前Shell环境中。
文件结构如图:
使用“:”分隔,也是四个字段,每一个字段的含义:
- 第一段:组名;
- 第二段:密码栏,开头为“!”表示无合法密码,因此无群组管理员;
- 第三段:群组管理员的帐号;
- 第四段:加入群组支持的所属帐号;
useradd命令,用于添加用户。经常使用的参数,如图:
咱们平时添加帐号时,若是没有太多的需求,直接“useradd 用户名”便可!这是由于系统已经设置了不少默认值。
咱们使用“useradd 用户名”建立帐号时,系统会默认给咱们作如下事情:
- 在/etc/passwd文件中添加一行与帐号相关的数据,包括创建UID/GID/宿主目录等;
- 在/etc/shadow文件中将此帐号的密码相关参数写入,可是还没有有密码;
- 在/etc/group文件中加入一个以帐号相同的组名;
- 在/home目录下创建一个与帐号同名的用户家目录,且权限为700;
咱们可使用“useradd -D”命令来查看系统所设置的默认值,如图:
除了这些基本的帐号设定值以外,UID/GID还有密码参数在/etc/login.defs文件中,如图:
passwd命令主要用于给用户设置跟密码相关的内容,经常使用参数如图:
chage命令主要用于设置更加详细的密码参数功能。具体参数,如图:
usermod命令主要用于设置帐户相应的参数,经常使用的参数,如图:
userdel命令就是为了删除用户,经常使用的选项只有一个:
-r:连同用户的宿主目录一块儿删除;
groupadd命令用于添加新的用户组,主要的参数有:
-g:后面接某个指定的GID;
-r:建立系统群组;
经常使用的参数有:
-g:修改既有的GID号;
-n:修改既有的群组名称;
groupdel命令用于删除群组!
使用方法:“gpasswd 群组名”,经常使用的参数,如图:
关于群组管理员使用的参数:
主要用于查询某人或本身的相关的UID/GID等信息。使用方法“id 用户名”便可!
———————— 本文至此结束,感谢阅读 ————————