L40.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- useradd和usermod

7.1 useradd:创建用户

7.1.1 命令详解

【命令星级】 ★★★★★

【功能说明】

​ useradd命令可用于创建新的用户或者更改用户的信息。

【语法格式】

useradd [options] [login]
useradd [选项] [用户名]
useradd -D [options]

​ **说明:**在useradd命令以及后面的选项和用户名里,每个元素直接都至少要有一个空格。

【选项说明】

​ 1)使用useradd常规添加用户工作原理流程

​ 在使用useradd命令时,若不加任何参数选项,后面直接跟所添加用户名,那么首先会读取配置文件/etc/login.defs(用户定义文件)和/etc/default/useradd(用户默认配置文件)文件中所定义的参数和规则,然后根据设置的规则添加用户,同时还会向/etc/passwd(用户文件)和/etc/group(组文件)文件内添加新用户和新用户组记录,向/etc/shadow(用户密码文件)和/etc/gshadow(组密码文件)文件里添加新用户和组对应的密码信息的相关记录。同时系统还会根据/etc/default/useradd文件所配置的信息建立用户的家目录,并将/etc/skel中所有文件(包括隐藏的环境配置文件)都复制到新用户的家目录中。

​ 2)useradd不加选项-D的参数选项及说明

​ 表7-1 useradd不加选项-D的参数选项及说明

在这里插入图片描述
​ 3)useradd加-D选项参数说明:改变新建用户的预设值

​ 当执行useradd带-D参数时,可以更改新建用户的默认配置值(/etc/default/useradd)或者由命令行编辑文件更改预设值。可简单理解该参数(-D)就是用于修改/etc/default/useradd配置文件的内容的,若这个文件的内容被修改,则添加新用户不加参数时默认就会从该/etc/default/useradd中读取。表7-2针对该useradd命令的-D参数选项进行了说明。

​ 表7-2 useradd加选项-D的参数选项及说明
在这里插入图片描述

7.1.2 使用范例

​ **范例7-1:**不加任何参数添加用户的例子。

[root@centos7 ~]# useradd ett
[root@centos7 ~]# ll -d /home/ett/
drwx------. 2 ett ett 62 Oct 25 18:28 /home/ett/

​ **提示:**创建用户的同时还会创建一个与用户名相同的组。

​ 在这个例子中,我们添加了一个名为ett的系统用户,当查看/home/目录时,会发现系统自动建立了一个ett的目录,其就是用户等人后的起始目录,即家目录。

​ 下面再来看看/etc/passwd文件中有关新用户ett的记录:

[root@centos7 ~]# grep -w ett /etc/passwd
ett:x:1001:1001::/home/ett:/bin/bash	#这里的1001:1001就是根据/etc/login.defs内容预设的。

​ 从上文过滤出的ett用户记录来看,用户的UID和GID分别为1001,并且ett的家目录为/home/ett,所对应的Shell是/bin/bash。

​ 接下来,我们再看看/etc/shadow、/etc/group和/etc/gshadow文件,是不是也存在与ett用户有关的记录:

[root@centos7 ~]# grep -w ett /etc/shadow
ett:!!:18560:0:99999:7:::	#虽然没有创建密码,但是密码文件还是会增加一行相关信息。
[root@centos7 ~]# grep -w ett /etc/group
ett:x:1001:	#创建用户是,默认会创建与用户同名的用户组,并体现在用户组配置文件中。
[root@centos7 ~]# grep -w ett /etc/gshadow
ett:!::		#组密码文件中也会有一行相关记录。

​ **提示:**根据上文的结果,我们将会发现/etc/shadow、/etc/group和/etc/gshadow几个文件都存在与ett用户相关的记录。

​ 这里我们还可以查看/etc/default/useradd和/etc/login.defs两个文件的规则,看一下ett用户的增加是否符合这两个配置文件预设的值。最后还可以查看/home/ett目录下的文件,是否与/etc/skel目录中的一样。
​ **范例7-2:**useradd的-g、-u参数,执行useradd [参数] username添加用户。

[root@centos7 ~]# groupadd -g 801 sa	#创建用户组sa并指定gid为801,这个是groupadd命令的用法,后面会讲到。
[root@centos7 ~]# useradd -g sa -u 901 younggirl	#创建用户younggirl属于sa组,uid为901。
[root@centos7 ~]# id younggirl	#查看用户和用户组的基本信息。
uid=901(younggirl) gid=801(sa) groups=801(sa)

​ **范例7-3:**useradd的-M、-s参数的例子。

[root@centos7 ~]# useradd -M -s /sbin/nologin tingting	#-M不创建家目录,-s指定用户登录后的Shell,这里是/sbin/nologin,表示禁止登录。此例在生产场景中部署Nginx、MySQL等服务时经常会用到。
[root@centos7 ~]# ll -d /home/tingting
ls: cannot access /home/tingting: No such file or directory		#家目录不存在(-M的作用)。
[root@centos7 ~]# grep -w tingting /etc/passwd
tingting:x:1002:1002::/home/tingting:/sbin/nologin
#登录Shell也改为了/sbin/nologin。

​ **范例7-4:**useradd的-c、-u、-G、-s、-d、-m、-e、-f等多个参数组合的综合例子。

​ 需求如下:添加用户inaca,并设置用户注释信息为“SysUser”,Uid指定为806,归属为用户组root、sa成员,其Shell类型为/bin/sh,设置家目录为/data/inca,用户过期时间为2020/11/25,过期后两天停权。

[root@centos7 ~]# useradd -u 806 -s /bin/sh -c SysUser -G root,sa -e "2020/11/25" -f 2 -d /data/inca inca	#每个参数的作用清查询7.1.1节的表格,如果用户组sa不存在,则需提前创建。
[root@centos7 ~]# tail -1 /etc/passwd	#查看账号文件的最后一行,以获取新用户的信息。
inca:x:806:1003:SysUser:/data/inca:/bin/sh

​ **提示:**上述/etc/passwd文件行inca的用户信息。

​ 表7-3 /etc/passwd文件行中inca的用户信息说明

inca :x :806 :1003 :SysUser :/data/inca :/bin/sh
账号名称 :账号密码 :账号UID :账号组UID :用户说明 :用户家目录 :shell解释器
[root@centos7 ~]# id inca	#id命令可以查看用户的uid和gid等信息,后面会讲解。
uid=806(inca) gid=1003(inca) groups=1003(inca),0(root),801(sa)	#用户组以及附加组信息。
[root@centos7 ~]# chage -l inca		#chage命令可以查看用户的有效期,后面会讲解此命令。
Last password change					: Oct 25, 2020
Password expires					: never
Password inactive					: never
Account expires						: Nov 25, 2020
#通过-e指定的用户过期时间。
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7
[root@centos7 ~]# tail -1 /etc/shadow	#查看密码文件/etc/shadow的最后一行。
inca:!!:18560:0:99999:7:2:18591:	#数字2即用户过期停权的结果(-f参数)。

​ **范例7-5:**useradd -D参数的使用说明及案例实践。

​ 前文已经讲解过,使用useradd -D参数的结果实际上就是修改用户的初始配置文件/etc/default/useradd,下面先来看看该文件的样子和内容说明:

[root@centos7 ~]# cat /etc/default/useradd 
# useradd defaults file
GROUP=100	#依赖于/etc/login.defs的USERGROUPS_ENAB参数,如果为no,则此处控制。
HOME=/home	#把用户的家目录建在/home中。
INACTIVE=-1		#是否启用用户过期停权,-1表示不启用。
EXPIRE=		#用户终止日期,不设置表示不启用。
SHELL=/bin/bash		#新用户默认所用的Shell类型。
SKEL=/etc/skel		#配置新用户家目录的默认文件存放路径。前文提到的/etc/skel,就是在这里配置生效的,即当我们用useradd添加用户时,用户家目录下的文件,都是从这里配置的目录中复制过去的。
CREATE_MAIL_SPOOL=yes	#创建mail文件。

​ 修改实践:

[root@centos7 ~]# cp /etc/default/useradd{,.bak}	#做个备份。 ※
[root@centos7 ~]# useradd -D -s /bin/sh		#修改默认登录Shell。
[root@centos7 ~]# diff /etc/default/useradd{,.bak}	#将修改后的文件和备份的源文件进行对比。
6c6	
< SHELL=/bin/sh		#更改后的结果。
---
> SHELL=/bin/bash	#更改前的结果。
[root@centos7 ~]# useradd -D -e "2020/11/25"	#修改用户默认的有效期。
[root@centos7 ~]# diff /etc/default/useradd{,.bak}	#与备份的修改之前的文件进行对不。
5,6c5,6
< EXPIRE=2020/11/25	#更改后的结果,即为以后创建所有账户的有效期设置的时间。
< SHELL=/bin/sh
---
> EXPIRE=	#更改前的结果,预设值为空,即不限定账户的有效期。
> SHELL=/bin/bash

​ 添加一个新用户zuma:

[root@centos7 ~]# useradd zuma	#添加一个新用户zuma。
[root@centos7 ~]# tail -1 /etc/passwd	#查看新用户zuma的Shell解释器。
zuma:x:1003:1004::/home/zuma:/bin/sh	#添加用户后,解释器就默认是sh了。
[root@centos7 ~]# chage -l zuma		#查看zuma的用户有效期。
Last password change					: Oct 25, 2020
Password expires					: never
Password inactive					: never
Account expires						: Nov 25, 2020
#添加用户默认的有效期。
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7
[root@centos7 ~]# \cp /etc/default/useradd{.bak,}	#练习完后还原系统默认的配置文件。※

​ **提示:**useradd -D的功能完全可以使用vim /etc/default/useradd编辑修改后来替代。

7.2 usermod:修改用户信息

7.2.1 命令详解

【命令星级】 ★★★★★

【功能说明】

​ usermod命令可用于修改系统已经存在的用户的账户信息。

【语法格式】

usermod [options] [login]
usermod [选项] [用户名]

​ **说明:**在usermod命令以及后面的选项和用户名里,每个元素直接都至少要有一个空格。

【选项说明】

​ 表7-4针对该命令的参数选项进行了说明。

​ 表7-4 usermod命令的参数选项及说明

在这里插入图片描述
​ usermod的作用是修改用户,而useradd的作用是添加用户,本质上都是对用户进行操作,因此,这两个命令大部分的参数作用都是一样的,只不过命令不同而已,功能上的区别就是一个是添加,一个是修改。

7.2.2 使用范例

​ **范例7-6:**usermod 的-c、-u、-G、-s、-d、-m、-e、-f等多个参数组合的例子。

​ 需求如下:将范例7-3添加的用户inca的用户注释信息修改为“TmpUser”,UID修改为1999,归属修改为用户组root、sa、tech成员,其Shell类型为/sbin/nulogin,设置家目录为/home/inca,用户过期时间为2020/11/25,过期后30天停权。

[root@centos7 ~]# groupadd tech	#添加组tech。
[root@centos7 ~]# usermod -u 1999 -s /sbin/nologin -c TmpUser -G root,sa,tech -e "2020/11/25" -f 30 -d /home/inca inca	#各个参数的作用请查询7.2.1节的表格。
[root@centos7 ~]# grep -w inca /etc/passwd	#过滤inca账户信息。
inca:x:1999:1003:TmpUser:/home/inca:/sbin/nologin	#已按要求修改。
[root@centos7 ~]# id inca	#id命令可以查看用户的uid和gid等信息,后面会讲解。
uid=1999(inca) gid=1003(inca) groups=1003(inca),0(root),801(sa),1005(tech)	#用户组以及附加组信息。
[root@centos7 ~]# grep -w inca /etc/shadow
inca:!!:18560:0:99999:7:30:18591:	#数字30即为过期停权的结果(-f参数)。
[root@centos7 ~]# chage -l inca		#chage命令可以查看用户有效期,后面会讲解此命令。
Last password change					: Oct 25, 2020
Password expires					: never
Password inactive					: never
Account expires						: Nov 25, 2020	#账户有效期已改。
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7

猜你喜欢

转载自blog.csdn.net/qq_25599925/article/details/125686690