一、用户以及用户组存在的意义
用户是操作者在系统中的一个身份标识,主要分为超级用户和普通用户,组是一个逻辑的容器,是用户的集合,用户的存在是为了更好的分配资源而组的存在是为了更好的共享资源。
二、用户在系统中的存储方式
用户在系统中就是文件中的字符串,每个字符串映射了该用户所用到的系统资源,在系统中对用户的管理就是对文件的管理。
三、用户涉及到的配置文件以及内容
/etc/passwd | 用户信息库 |
---|---|
/etc/group | 组信息库 |
/home/用户同名目录 | 默认的用户的家目录 |
/etc/skel/所有文件 | 用户环境配置文件模板 |
/etc/shadow | 用户认证信息 |
/etc/gshadow | 组信息认证 |
- /etc/passwd
表示用户的信息库,在这个文件中每一行都包含7列,列与列之间用冒号隔开,这7列内容表示的含义如下:
1 | 用户名称 |
---|---|
2 | 用户密码 |
3 | 用户ID(UID) |
4 | 组ID(GID) |
5 | 对用户的说明 |
6 | 用户所在的家目录 |
7 | 系统中对话时默认使用的软件 |
四、用户信息的查看
id #查看指定用户的id信息
id命令常用的参数主要有:
-u | 查看用户的UID |
---|---|
-g | 查看用户的GID |
-G | 查看用户所在的所有组的ID |
-Gn | 查看用户所在的所有组的名字 |
-n | 显示名字而不显示ID数字 |
用户所在的组分为两类:初始组和附加组,用户的GID指的是用户所在的初始组的ID
五、用户身份的切换以及环境变量
-
1、图像方式
在界面右上角找到图像界面点击当前用户选项中的Log Out退出当前用户 -
2、命令行方式注销当前用户
输入指令
gnome-session-quit --force #注销当前用户
- 3、命令行方式切换用户
su | 只切换用户身份而不改变用户环境 |
---|---|
su - | 切换用户身份以及用户环境 |
示例:当用指令su student
从root用户(当前位置为/root/Desktop)切换到student用户时,如果用pwd
查看当前路径,仍然显示为/root/Desktop,当用su - student
切换用户时再用pwd
查看当前位置时显示/home/student
只有从高级用户向低级用户切换时不用输入密码,而从低级用户向高级用户切换或者平级用户之间的切换都是需要输入密码的
六、用户以及用户组的建立、删除以及更改
已知用户以及用户组的建立和删除会体现在第三部分中写到的用户涉及到的配置文件中,为了更加直观的监测到建立和删除的过程,我们可以打开一个新的Shell输入如下代码进行观察:
watch -n 1 "tail -n 5 /etc/passwd /etc/group ; echo ===; ls -l /home"
其中echo ===
插入分割标识可以更加清楚的观测
- 组的建立以及删除
groupadd | 建立组 |
---|---|
groupdel | 删除组 |
groupmod -g | 更改组ID |
直接用groupadd 组名
来添加组时,系统会自动分配一个ID给这个组,组的ID的范围为0-65535之间
- 用户的建立及删除
用户的建立所用的指令为useradd
,常见的参数如下
-u | 指定用户的ID |
---|---|
-g | 指定用户的初始组ID(初始组ID必须已存在) |
-G | 指定用户的附加组(附加组必须存在) |
-c | 指定用户的说明 |
-d | 指定用户的家目录 |
-M | 不在/home中建立家目录 |
-s | 指定用户的默认shell |
用户的ID范围也为0-65535,其中0代表超级用户,1-999代表系统用户一般是保留的,1000-65535是普通用户,可用cat /etc/shell
查看 系统中shell的类型
用户删除的指令为userdel
当只用userdel 用户名
删除用户时,在/home下此用户并没有被删除并且当再次添加该用户时会报错,显示在家目录中这个子目录已经存在,所以删除用户时应该用
userdel -r #系统中该用户的所有信息都被删除
- 用户信息的更改
当想要修改用户的一些信息可以不用删除用户再重新建立用户,而可以使用usermod
来更改用户信息,常见的参数如下:
-l | 更改用户名称 |
---|---|
-u | 更改用户的UID |
-g | 更改用户的GID |
-aG | 指定用户的附加组 |
-c | 修改用户的说明 |
-md | 修改用户的家目录 |
-s | 修改用户的shell类型 |
-d | 修改用户家目录的指向 |
-L | 用户密码上锁 |
-U | 用户密码解锁 |
注意:(1)用-g
修改用户的初始组ID时,这个组必须是存在的,指定用户的附加组时用的是-aG
而当用-G
添加附加组时,会将原有的附加组删除只留添加的这个组
(2)参数-d
只能够改变家目录的指向,即在/etc/passwd文件中显示家目录指向的变更而/home中目录的名称不变
七、用户认证文件的内容分析
用户认证文件就是管理用户密码的文件,路径为/etc/shadow,只有超级用户才能查看,这个文件的每一行都分为9列,列与列之间用冒号隔开,每一列代表的含义如下:
1 | 用户名称 |
---|---|
2 | 用户密码 |
3 | 密码已经使用的时间 |
4 | 密码最短有效期 |
5 | 密码最长有效期 |
6 | 密码到期前警告 |
7 | 密码非活跃天数 |
8 | 密码到期日期 |
9 | 用户自行开发 |
用户修改密码根据用户等级执行如下命令
1、超级用户
passwd #修改自身密码
passwd 普通用户 #修改普通用户密码
2、普通用户
passwd #修改自身密码
普通用户只能修改自己的密码而不能修改root用户或者与自己平级的用户的密码
想要修改/etc/shadow文件中用户密码的信息可以通过passwd
命令来执行,该命令常见的参数如下:
-l | 为密码上锁 |
---|---|
-u | 为密码解锁 |
-S | 查看密码状态 |
-e | 让密码的使用时间改为0 |
-n | 修改密码的最短有效时间 |
-x | 修改密码的最长有效时间 |
-w | 修改密码到期前警告时间 |
-i | 修改密码非活跃时间 |
-d | 删除密码 |
注意:(1)用usermod - L
对用户密码上锁时,在/etc/shadow文件中密码前显示一个!而用passwd - l
时会显示两个!
(2)用passwd
指令不能够修改密码的到期时间
指令chage
只能够更改密码期限,常见的参数如下:
-d | 修改密码的使用时间 |
---|---|
-m | 修改密码的最短有效期限 |
-M | 修改密码的最长有效期限 |
-W | 修改密码的警告时间 |
-I | 修改密码的非活跃天数 |
-E | 修改密码到期的时间 |
注意:(1)与passwd不同,chage可以更改密码到期的时间,并且在修改账号的使用时间时,passwd只能够将使用时间改为0而不能指定使用时间而chage可以指定要修改的时间
八、用户权力的下放
用户权力的下放是说可以让指定的用户去做超过自己权限的事情,需要以超级用户的身份在配置文件/etc/sudoers中来授权给指定的用户
当用指令
vim /etc/sudoers
来进入配置文件并进行修改时很可能会由于一些语法错误来使得修改之后的配置文件无法运行,故一般使用visudo
来修改配置文件,这个指令具有检测语法的功能,可以避免一些问题
示例:使得系统中的普通用户yyqx具有添加用户的功能
一般在配置文件中进行授权时都写在文件的第100行左右
格式为
下放的用户名称 主机名称=(root) 授予权力的文件绝对路径
student 主机名=(root) /usr/sbin/useraddl
主机名称可以通过hostname
来查看,useradd的路径可以通过which useradd
来查看
将配置文件更改完成以后切换至student用户,执行sudo useradd
来实现用户的添加,但要注意,普通用户执行权限之外的指令时只能完成授权的指令,当我们只让student用户有添加用户的功能时,想要删除添加的用户将不会实现