Linux系统中的用户管理

  • Post author:
  • Post category:linux




一、用户及用户组存在的意义

用户存在的最大意义就是在于能够使系统资源得到合理的分配,因为系统资源是有限的,如果没有用户这个概念,在系统分配资源时会产生混乱导致系统崩溃(所有人都可以随便使用系统资源)。用户组是一个逻辑容器,方便对用户进行归类和统一授权,分配系统资源时可以减少逐个用户授权的繁琐。合理分配系统资源时需要下面几个资源配合。

身份认证 account
授权 author
认证 auth

上面即为3A机制,3A机制组成系统中最底层的安全架构。



二、用户及用户组在系统中的存在方式

用户就是 /etc/passwd文件中的一行字符

westos:x:1000:1000::/home/westos:/bin/bash

就是记录在passwd文件中的westos用户。

用户组存在的方式就是/etc/group 文件中的一行字符,比如”westos 😡 :1000:”是记录在/etc/group中的一个组。



三、用户切换



1.用户查看

[westos@westos_student73 Desktop]$ whoami		#查看当前用户
[westos@westos_student73 Desktop]$ id 			#查看当前用户id信息
[westos@westos_student73 Desktop]$ id user		#查看用户user信息
[westos@westos_student73 Desktop]$ id -u user  	#查看用户user的用户id,没有user参数时默认当前用户
[westos@westos_student73 Desktop]$ id -g user  	#查看用户组id
[westos@westos_student73 Desktop]$ id -G user  	#查看用户所有组的id
[westos@westos_student73 Desktop]$ id -ng userid  #显示用户组的信息,-n参数不能单独使用,要与"-g""-G""-u"一块用
用户id范围 0-65535(



2

16

2^{16}







2











1


6













)

0 Linux超级用户id
1-999 Linux系统自用id
1000-65535 用户级ID



2.用户切换


图形界面切换

[westos@westos_student73 Desktop]$ gnome-session-quit 		#图形界面登出当前用户,需要点击确认
[westos@westos_student73 Desktop]$ gnome-session-quit --force 		#强制登出当前用户,无需确认


非图形切换

su - username	#切换到username环境,“-”与usename之间必须有空格
-				#切换用户环境
username		#如果	root ---> commonuser	超级用户切换到任何系统中存在的普通用户不需要密码
				#root ---> commonuser	需要密码
				#commonuser	---> commonuser	需要密码


注意:在做用户切换时当使用完毕用户身份及时退出

不要在一个shell中反复执行su命令

在一个shell中反复执行su命令会导致环境错乱

请添加图片描述
请添加图片描述



四、用户设计到的系统配置文件

1)  /etc/passwd  用户身份信息文件

westos:x:1000:1000::/home/westos:/bin/bash
#用户名称:用户密码:用户id:用户主祖id:用户说明:用户家目录:用户默认shell

请添加图片描述

2)  /etc/group  组身份信息文件

westos:x:1000:		#组名称:组密码:组id:组的附加成员

请添加图片描述

3)  /etc/skel/.*  用户环境配置文件模板

请添加图片描述

4) /etc/shadow   用户认证信息

westos:$6$xaN1UuB00Sq44/rX$Hue37.8W2jRkBl/.GFBl5UbaBse2UBLI4NcAFwELGDJdnmLV1fkqV9NIC8XEI2.dbYDQ7L7AqknQvzdRTtIU4/:18802:0:99999:7:::

用户名称:用户密码的加密字符:用户密码最后一次被修改的时间:密码最短有效期:密码最长有效期:密码过期前警告期:账号非活跃期:账号到期时间:用户自定义(未使用)

请添加图片描述


用户认证信息文件普通用户无法查看,要用超级用户


5) /home/username #用户家目录

请添加图片描述



五、用户和用户组建立及删除

[westos@westos_student73 Desktop]$ watch -n 1 "tail -n 4 /etc/passwd /etc/group;echo ========;ls -l /home/"
#监控用户建立的命令

请添加图片描述



1.用户建立  useradd

[root@westos_student73 ~]# useradd		username	#用户建立,
[root@westos_student73 ~]# #主组(初始组)直接建立,初始组名字和id默认和用户一致,家目录直接建立,默认在/home/username


注意:建立用户需要在超级用户下,普通用户无权限

[westos@westos_student73 Desktop]$ -u id	username	#建立指定用户id的用户,uid	2**16=0-65535
uid范围 说明
0 表示超级用户
1-200 系统预留Id
201-900 系统用户
1000-60000 用户级用户

以上ID设定规则都被记录在/etc/login.defs

-g id	username	#主组id,主组必须先存在或先建立,一个组不一定只为一个用户的主组,
					#当一个组只为一个用户的主组时,主组为用户拥有,用户删除,其所属主组也随之删除
					
-G id	username	#附加组id,用户删除时,附加组不被删除

-d dir	username	#指定用户家目录,会在/home下建立一个目录

-M	username		#建立用户时不建立家目录

-c word username	#指定用户说明

-s shel username	#指定用shell

cat /etc/shells 查看shell;/sbin/nologin 为不可交互的shell

请添加图片描述

请添加图片描述

请添加图片描述



2.用户删除 userdel

[root@westos_student73 ~]#userdel -r 	username	##用户删除 -r 删除用户的系统配置文件,包括用户的家目录
[root@westos_student73 ~]#userdel username #删除用户,但用户的家目录仍然存在



3.用户组建立与删除

groupadd	groupname		#组的建立
	-g id 	groupname		#指定组的id

groupdel	groupname		#组删除,只能指定组名,且不能删除作为用户的主组


用户和用户组删除时可以指定用户及用户组名,也可以指定用户id或组id



六、用户及用户组的信息管理


usemod  修改用户信息

usermod
	-l		#更改用户名称
	-u		#更改用户id
	-g		#更改主组id
	-G		#更改用户附加组身份,会覆盖原来附加组信息
	-aG		#添加用户附加组信息,不会覆盖原来附加组信息

请添加图片描述

请添加图片描述

请添加图片描述

usermod
	-c		#更改用户说明
	-d		#更改家目录指向,但原用户家目录不会改变
	-md		#更改家目录指向,同时更改家目录名称-c		#更改用户说明
	-d		#更改家目录指向,但原用户家目录不会改变
	-md		#更改家目录指向,同时更改家目录名称
	-s		#更改默认shell
	-L		#冻结账户,与passwd相比冻结程度不一样
	-U		#解锁

请添加图片描述

请添加图片描述

请添加图片描述

groupmod -g		#更改用户组id,当用户的主组id改变时,用户信息中的初始组id也会随之修改

请添加图片描述

请添加图片描述



七、用户认证信息管理

/etc/shadow  文件内容说明


westos用户认证信息及对应说明如下:

westos:$6$xaN1UuB00Sq44/rX$Hue37.8W2jRkBl/.GFBl5UbaBse2UBLI4NcAFwELGDJdnmLV1fkqV9NIC8XEI2.dbYDQ7L7AqknQvzdRTtIU4/:18802:0:99999:7:::

用户名称:用户密码的加密字符:用户密码最后一次被修改的时间:密码最短有效期:密码最长有效期:密码过期前警告期:

账号非活跃期:账号到期时间:用户自定义(未使用)


1)用户名称

passwd -S lee		#查看用户密码状态

请添加图片描述

密码位置有”!“表示账号被冻结,”!!“表示时passwd命令冻结的,”!“是usermod命令冻结,冻结程度不同,另外,仅有”!!”说明账户被冻结,且未给账户设定登陆密码


2)用户加密字符



更改密码

[root@westos_student73 ~]# passwd lee		#只有root用户可以修改其他用户密码
#只有root用户可以执行 "echo 123 | passwd --stdin lee"

普通用户只能修改自己的密码执行:passwd

下为普通用户修改密码流程

passwd            普通用户修改密码,只能修改自己的密码

Changing password for user lee

Current password:       输入原始密码

New password:         输入新密码(8位以上无序数字+无序字母组合)

Retype new password:     重新输入

passwd: all authentication tokens updated successfully

请添加图片描述


3)冻结认证

passwd -l lee		#冻结账号认证
passwd -u lee		##解锁账号认证

请添加图片描述
请添加图片描述


和”usermod -L lee”都能执行冻结,但是冻结程度不同。


4)密码删除

passwd -d lee		#删除lee用户的密码,只能root用户执行,密码位置为空

请添加图片描述


5)密码使用天数


从1970-1-1算到今天的时间

passwd -e lee		##修改默认使用时间为0
chage -d  0 lee		##两个命令效果一样,切记命令是chage,账户必须修改密码才能登陆系统

请添加图片描述

请添加图片描述


6)密码最短有效期


#密码最短有效期

paswd -n l lee		#lee在一天内不能改密码
chage -m 1 lee

请添加图片描述


7)密码最长有效期

passwd -x 40 lee	#40天内lee用户必须更新密码否则会被冻结
chage -M 30 lee

请添加图片描述


8)认证非活跃天数

passwd -i 2 lee		#账号认证最大时间超过后还能用多久
chage -I 1 lee		


9)认证到期时间

chage -E "2020-05-11"	#到2020-5-11这天账号会被冻结


10)未启用功能



八、权力下放

在系统中普通用户是无法执行系统管理命令的

如果需要普通用户执行系统管理动作,那么需要root用户来进行授权

普通用户授权方式 “sudo”

作用:

可以使用普通用户使用指定的用户身份运行命令,切记运行命令时,先加上sudo,相当于连接文件etc/sudoers


授权方法

授权方法:
visudo		#此命令作用时编辑/etc/sudoers并提供语法检测
			#直接vim进入时,不提供语法检测
			#visuo异常退出时,比如"ctr + z"挂入后台时,按fg重新进入


文件修改位置

在文件100行左右(:100#转到文件100行) 代码规范性

username	hostname=(newusername)	[NOPASSWD:] /command, /command
											(切记此处l两个命令之间有空格)

相关辅助命令

hostname    查看当前主机的名字

which useradd 查找useradd命令的位置,可以查找相关系统管理命令的位置


权力下放代码解释

westos用户	在linux.westos.com主机上	使用超级用户	免密		执行useradd和userdel 命令
westos		linux.westos.com   =	(root)	NOPASSWD: /usr/sbin/useradd, /usr/sbin/useradel


测试:

su - lee
sudo useradd linux		#在lee中第一次使用sudo命令需要输入lee密码
exit	#退出lee
su - westos
sudo userdel -r linux	#westos可以免密执行userdel命令

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述



版权声明:本文为qq_42343557原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。