第五章 LINUX 用户管理

5.1 用户和组概念

1 主要命令:

用户增删查改 useradd userdel id 或 cat/etc/passwd usermod

组增删查改 groupadd groupdel cat/etc/group groupmems 或 gpasswd

id				## 查看当前用户的 uid   gid   附属组(G)
-u				## 显示用户的唯一标识符(UID)。
-g				## 显示用户所属组的标识符(GID)。
-G				## 显示用户所属的所有组的标识符。

2 什么是用户和组:

在linux系统中

用户指的是对操作系统实现不同功能身份的人。
组表示一个或多个用户合成的一个群体。

3 用户和组的关系:

组中可以没有用户、也可以有一个或者多个用户。
用户只有一个主要组,可以同时属于多个组,除了主组以外的其他组称为附属组。

4 linux用户分为三大类

1.超级用户 : root uid=0 系统中唯一的超级管理员 ,拥有最大权限!
2.系统用户 : rhel6 系统 uid=1~499 centos系统 uid=1-999 不需要登录系统!维护系统正常运行。
3.普通用户 : rhel6 系统 uid>=500 centos系统 uid>=1000 可以登录操作系统

5.2 用户账户 user

5.2.1 用户账户属性要素

用户账户名(姓名) 必选

★ 密码(登录口令) 可选,视<用户类型>而定,可后期设置<密码>

★ 用户UID(身份证号码) 必须,会自动生成,也可自定义

★主要组(第一国籍) 必须,会自动生成,也可自定义

★ 附加组(第N国籍) 可选,可后期添加

★ 辅助信息(记录其他的描述性信息) 可选,可后期添加

★ 家目录(用户私密空间)) 可选,视<用户类型>而定

★ 登录Shell(使用什么兵器) 可选,视<用户类型>而定

★ 密码时限策略 可选,采用<默认的密码时限策略>,可后期修改

★ 账户有效期(工作时限) 可选,视<人事要求>而定,可后期添加

5.2.2 管理用户账户

用户增删查改 useradd userdel id 或 cat/etc/passwd usermod

重要文件:

/etc/passwd 			## 保存:<用户>的<账户信息>
/etc/shadow 			## 保存:<用户>的<密码信息>
/etc/skel/ 				## 定义:<用户home目录>的<模板内容>,可用来恢复家,复制就行
						## 假如用户cl没有家了         可以使用cp /etc/skel/.*  /home/cl
/etc/default/useradd 	## 定义:创建<用户>的<默认参数>

1 创建用户

语法:useradd 选项… 用户名

注意:一次只能创建一个用户

选项:

-u							## 指定 uid ,普通用户uid大于1000,填数字 ,默认自动创建
-g							## 指定 gid ,可写主组名称或者gid数字,确保主组存在,默认自动创建
-G							## 加入指定的附加组

-U							## 创建与用户同名的组,默认就同名 ##没卵用
-N, --no-user-group			## 不创建同名的组

-m							## 创建用户的主目录	常和 -d 一起使用,搬家
-M							## 不创建用户的主目录,常和 -s 指定不登录时一起使用

-s, --shell SHELL			## 新账户的登录 shell 如 useradd  -s /bin/bash  cl 或 useradd  -s /sbin/nologin

-r, --system                ## 创建一个系统账户

-d, --home-dir HOME_DIR     ## 指定新账户的主目录 常和 -m一起使用  搬家

-c, --comment COMMENT      	## 新账户的 GECOS 字段

-o, --non-unique			## 允许使用重复的 UID 创建用户
-f, --inactive INACTIVE     ## 新账户的密码不活动期

## -m -d   搬家      -s /sbin/nologin 	不需要登录的用户

例子:

举例1:创建一个普通用户(其他属性均采用默认设置)
useradd user01

举例2:创建一个系统用户,不允许其Shell登录、不需要家目录(其他属性均采用默认设置)
useradd -s /sbin/nologin -r user02  或者  useradd -s /sbin/nologin -M user02

举例3:创建一个普通用户,指定其家目录为</tmp>(其他属性均采用默认设置),本来就有 /tmp,所以不用 -m
useradd -d /tmp user03

设置/清除:用户密码
passwd                                ## 交互式设置:当前用户的<用户密码>
passwd user01                         ## 交互式设置:指定用户的<用户密码>
echo 'root:a123456!' | chpasswd       ## 非交互式设置:指定用户的<用户密码>
echo 'user01:a123456!' | chpasswd     ## 非交互式设置:指定用户的<用户密码>
passwd -d user01                      ## 清除指定用户的<用户密码>

删除:用户账户
userdel user01      ## 删除<用户账户>,保留<用户家目录>
userdel -r user02   ## 删除<用户账户>,删除<用户家目录>  (重要常用)

查看:用户账户
id user01

加入/退出:用户账户的附加组
groupadd g01
groupadd g02
useradd -G g01 user01      	## 在创建用户账户的同时,加入指定的附加组
useradd user02
usermod -G g01 user02     	## 针对已经创建的用户账户,退出当前的附加组,然后加入新的附加组
usermod -aG g02 user02   	## 针对已经创建的用户账户,不退出当前的附加组,然后加入新的附加组  重要
usermod -G "" user02        ## 针对已经创建的用户账户,退出当前的附加组

修改:用户账户的主要组
useradd user01
groupadd g01
usermod -g g01 user01      ## 针对已经创建的用户账户,修改其主要组

5.2.3 修改用户账户其他属性

语法:usermod [选项]… <用户账户名> 和useradd用的选项基本一致,一个是创建一个是修改

选项:

-l, --login LOGIN             	## 新的登录名称
-u								## 设置用户的新 uid
-g								## 强制使用 GROUP 为新主组
-G								## 加入指定的附加组,原附加组会退出,常和 -a一起使用##useradd不需要-a
-a, --append GROUP      		## 将用户追加至上边 -G 中提到的附加组中,并且保留原附加组
例如     usermod  -aG lz,ikun GROUP

-U								## 创建与用户同名的组,默认就同名 ##没卵用
-N, --no-user-group				## 不创建同名的组

-m								## 创建用户的主目录	常和 -d 一起使用,  建家
-d, --home-dir HOME_DIR      	## 指定新账户的主目录 常和 -m一起使用      搬家
-M								## 不创建用户的主目录,常和 -s 指定不登录时一起使用

-s, --shell SHELL			    ## 修改新账户的登录 shell 如 useradd  -s /bin/bash  cl 或 useradd  -s /sbin/nologin

-r, --system                  	## 创建一个系统账户

-c, --comment COMMENT      		## 新账户的 GECOS 字段,如 usermod -c "厕所长" zs

-o, --non-unique				## 允许使用重复的 UID 
-e, --expiredate EXPIRE_DATE	## 设定帐户过期的日期为 EXPIRE_DATE
-f, --inactive INACTIVE       	## 过期 INACTIVE 天数后,设定密码为失效状态

-L, --lock                   	## 锁定用户帐号 ,即在shadow文件密码那里的前面多了一个 ! 								   ## 解锁用 -U 或者去shadow文件把 ! 删掉
-U, --unlock                  	## 解锁用户帐号   

## -m -d   搬家      -s /sbin/nologin 	不需要登录的用户

例子:

修改:用户账户的其他属性
usermod -c "张总" user01      	   ## 针对已经创建的用户账户,修改其<辅助性描述信息>
usermod -e "2021-12-31" user01		## 针对已经创建的用户账户,修改其<账户有效期>
usermod -l "zhangzong" user02 		## 针对已经创建的用户账户,更改其<用户账户名> ,将 user02 改为 zhangzong

更改:账户过期策略
chage -l root                         ## 显示:<root用户>当前的<密码更改和过期策略>
chage -E 2020-03-28 root              ## 设置:<用户账户>的<帐户过期日期=2020-03-28>
chage -E $(date -d +180days +%Y-%m-%d) root   ## 设置:<用户账户>的<帐户过期日期=180天之后>

锁定/解锁:用户账户
锁定:用户密码
usermod -L user01  
解锁:用户密码
usermod -U user01  
或者 
vim /etc/shadow
把 user01 那一行的密码前面的 ! 删掉 保存即可

5.2.4 用户账户配置文件

  1. 简介:用户账户的相关配置文件
/etc/passwd 文件			## 保存:<用户>的<账户信息>
/etc/shadow 文件			## 保存:<用户>的<密码信息>
/etc/skel/ 目录			## 定义:<用户home目录>的<模板内容>,可用来恢复家,复制就行
假如用户cl没有家了         
		mkdir -p /home/cl
		cp /etc/skel/.*  /home/cl/  	或 cd /home/cl    cp /etc/skel/.* .

/etc/default/useradd 文件	## 定义:创建<用户>的<默认参数>,可修改
[root@server ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
  1. 详解:/etc/passwd 配置文件
格式:<:冒号>分隔,一共为7段,每一行记录一个用户账号信息
root:x:0:0:root:/root:/bin/bash

字段1:用户账号的名称
字段2:用户账号的用户密码,此字段值为 x,而真正的组密码则存储在</etc/shadow>中
字段3:用户账号的<UID>
字段4:用户账号所属的主要组GID,即:用户登录时,一开始就属于这个组
字段5:用户账号的注释信息  -c 指定写入的内容,辅助性描述信息
字段6:用户账号的家目录
字段7:用户账号的登录shell
  1. 详解:/etc/shadow 配置文件
格式:<:冒号>分隔,一共为8段,每一行记录一个用户账号信息
user01:$6$aK9cnC......WcPL0HF0:18865:0:99999:7:1:18992:
字段1:用户账号的名称
字段2:默认MD5加密的用户密码,如果此字段值以 ! 开头,则表示:密码被 usermod -L 锁定 ,可删去 ! 号或者用 -U 解锁,不区分大小写
字段3:用户密码的最后一次的更改日期(天数,以1970.1.1为参照点)
字段4:用户密码的最短使用期限(天数)
字段5:用户密码的最长使用期限(天数)
字段6:提前警告密码过期的天数,即:临近密码过期时,可以提前多少天予以警告(天数)
字段7:密码到期之后的宽限期(天数)
字段8:用户账号的账号过期日期(天数,以1970.1.1为参照点)
字段9:保留

提问1:两个用户的密码都是 123456 一样的, 那么 shadow 中加密的 hash 值一样吗?

​ 答: 不一样。 因为 salt(撒盐加密)不一样

提问2:把 2 段加密的互换还能登陆吗?salt 什么时候指定的?

​ 答:可以登录,salt 在加密过程中随机生成,保护了加密密码的机密性。

如果忘记root的密码,假如我们不是 root 用户,而是普通用户提权了

我们可以进去shadow文件,进行密码替换

useradd dj  ;  echo "dj:1" | chpasswd   
vim /etc/shadow   
将 dj 那一行哈希加密 的密码复制到 root 那一行密码里面,root的密码会被替换成 1

或者 vim /etc/passwd 
将 root 登录的shell环境删掉,即 把 x删掉,登录root在修改密码即可

5.3 组账户 group

5.3.1 组账户属性要素

★ 组名称 必须

★ 组密码 可选,不常用

★ 组GID 必须,会自动生成,也可自定义

★ 组成员 可选,可后期添加

5.3.2 管理组账户

增删查改 groupadd groupdel cat /etc/group groupmems | gpasswd

以下都是对组里面的附加用户操作,因为如果是主要用户,这个组相当于他的主要组,只能用用户操作,不能用组操作,而且查看组只会显示这个组的附加用户,不会显示主要用户。

注意:使用 groupmems 命令 要使用 -g 指定组名 , gpasswd 不需要 -g 直接接组名即可

命令 groupmems

语法:groupmems 选项… -g 组名

注意:一次只能创建一个用户

-g, --group groupname         ## 更改组 groupname,而不是用户的组(只 root)
-R, --root CHROOT_DIR         ## chroot 到的目录

动作:
-a, --add username            ## 将用户 username 添加到组成员中
-d, --delete username         ## 从组的成员中删除用户 username
-h, --help                    ## 显示此帮助信息并推出
-p, --purge                   ## 从组中移除所有成员
-l, --list                    ## 列出组中的所有成员

例子

1. 创建:组账户
groupadd g01
groupadd g02

2. 删除:组账户
groupdel g02

3. 添加:组成员 -a -g
useradd user01
useradd user02

groupmems -a user01 -g g01      ## 添加:单个组成员 把user01 加入 g01 组   一次只能添加一个成员
gpasswd -a user02 g01           ## 添加:单个组成员

4. 删除:组成员 -d
groupmems -d user01 -g g01     ## 删除:单个组成员 把user01 移除 g01 组
gpasswd -d user02 g01          ## 删除:单个组成员

5. 重置:组成员 -M  ,给g01组恢复出厂,并把 user03  user04 添加进 g01 组
useradd user03
useradd user04
gpasswd -M user03,user04 g01   ## 重置:组成员(可一次性设置:一个或多个组成员)
								## 注意:是重置组账户的组成员,而不是重置用户账户的附加组
								
6. 清空:组成员 -p
groupmems -p -g g01

7. 列出:组成员  -l  注意:只会列出附加成员,主要成员(该组是该用户的主要组)不会列出
groupmems -l -g g01

8. 修改:组账户  
语法:groupmod -n <新组名称> <老组名称>      ## 更名:组账户
           ## 选项备注:
           ##        -n    ☚ 改名为 NEW_GROUP
语法:groupmod [-o] -g <新GID> <组名称>      ## 更改:组GID
           ## 选项备注:
           ##        --g   ☚ 将组 ID 改为 GID
           ##        --o   ☚ 允许使用重复的 GID

5.3.3 组账号配置文件

/etc/group 文件 组账户文件,主要包含:组账户名称、组账户GID号、附加的组成员名称。

/etc/gshadow 文件 组账户密码文件,主要包含:组账户名称、组密码、附加的组成员名称。

5.4 管理用户密码策略

5.4.1 修改密码方式

useradd dj

echo "123456" | passwd --stdin cephadm
或
echo "dj:123456" | chpasswd

需要 sudo 加在管道符后面比如 echo "dj:1223456" | sudo chpasswd

5.4.2 管理用户密码时限策略

方式1 全局性设置

★ 了解:/etc/login.defs 文件内容 ☚ 对root 账户及root 操作无效

cat /etc/login.defs|egrep -v “^\s*(#|$)”

PASS_MAX_DAYS   99999   # 用户密码的最长使用期限(天数)
						# 99999  表示:密码永不过期
						# N      表示:当天+N天之后,密码将会过期,须更新密码
						# 1      表示:当天+1天之后,密码将会过期,须更新密码
						# 0      表示:当天之后,密码将会过期,须更新密码
						
PASS_MIN_DAYS    0		# 用户密码的最短使用期限(天数)
						# 0      表示:可以立即修改
						# 非0	 表示:N 天之后,方可修改
						
PASS_MIN_LEN      5     # 密码最小长度
PASS_WARN_AGE     7     # 提前警告密码过期的天数
						# 0	 表示:不提前警告
						# 非0	 表示:提前 N 天,当用户登录时,提醒用户修改密码
注意:由于Linux 系统以<UTC格林格林威治统一时间 00:00 点>作为天数的计时点
因此中国时区的Linux 系统就显现为:以<CST 8:00 点>作为天数的计时点
						 	
UID_MIN                  1000	## 全局性定义:用户ID号的生成策略
UID_MAX                 60000
SYS_UID_MIN               201	## 系统用户的最小 ID
SYS_UID_MAX               999
GID_MIN                  1000	## 全局性定义:组ID号的生成策略 普通用户 最小 和 最大GID
GID_MAX                 60000
SYS_GID_MIN               201	
SYS_GID_MAX               999
CREATE_HOME	yes					## 全局性定义:是否创建用户home家目录、用户home家目录的umask 值
UMASK           077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512			## 设置:用户密码的加密算法				 
方式2 单个用户设置
chage 命令

功能: 更改用户的密码过期信息和账户相关的参数。

语法:chage [options]
常用的选项包括:

-d				设置最后一次更改密码的日期(yyyy-mm-dd 格式)。
-E      	    设置账户的到期日期(yyyy-mm-dd 格式)。
-I 				设置账户处于不活动状态后多少天才会被禁用。
-m 				设置两次更改密码之间的最短天数。   ## 没到时间不能修改
-M  			设置用户密码的有效期限制,超过这个天数需要更改密码。
-W	  			在密码过期之前给出警告的天数。
-l				列出用户的密码过期信息和账户相关的参数。 ## 重要
-i				显示账户的不活动状态时间。
-R				更改指定目录下的用户密码过期信息,而不是默认的 /etc/shadow 文件。

例子

chage -d 2019-03-28 root  		## 更改:最近一次密码修改日期为指定的日期
chage -m 0 root           		## 设置:密码最短使用期限(天数=0,可随时更改密码)
chage -M 7 root   				## 设置:密码最长使用期限(天数=7) 7天后就过期
chage -W 3 root          		## 设置:密码过期之前提前警告期限(天数=3)
chage -I 1 root     			## 设置:密码过期宽限期为1天
[root@server appendonlydir]# chage -l root
最近一次密码修改时间			 从不			-d
密码过期时间					 从不			-M
密码失效时间					 从不			-M
帐户过期时间					 从不			-E
两次改变密码之间相距的最小天数	  0				-m
两次改变密码之间相距的最大天数	99999			  
在密码过期之前警告的天数		  7				-W
  1. 设置用户 it02 第一次登陆时强制修改密码且密码在 2023/12/12 失效
 chage -d 0 -E 2023-12-12 it02

5.4.3 管理用户密码复杂性策略

方式1:/etc/login.defs 文件(用于 CentOS 6)

和上面的方式一是一样的,全局设置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值