Linux下的用户管理
1.Linux帮助
2.用户及用户组存在的意义
1.我们为什么要对用户进行管理?
因为Linux系统是一个多用户多任务的系统,管理好用户,系统才能有条不紊的执行任务!
2.用户存在的意义
- 用户是操作者在系统中的身份标识
- 用户的存在是为了限制权限(比如我的水杯的使用权,你要想用我的水杯需要看你具有什么样的用户身份)
- 用户是linux系统最底层的安全设备,属于权限问题,系统要回收权力
- 系统用户即系统的使用者,用户管理其实就是对文件进行管理,用户的存在是为了回收权力
- 更好的利用资源
3.用户组存在的意义
- 用户组是用户的集合
- 组的存在是为了归类用户便于管理权限
- 更好的管理资源
- 初始组 : 相当于人一生下来,你就降落在这个家庭,这个家就是你的初始组。(家是唯一的,初始组只有一个)
- 附加组 : 慢慢地你开始上学了,你所属的班级是你的附加组。你参加了舞蹈班,这个班级也是你的附加组。(你在不同的社群活动,你可以有多个不同的附加组)
- 组的存在 可以共享权力(例如我是班级一员,我可以去学校以班级的身份去领取自资料)
初始组:用户刚建立时就加入的组
附加组:用户在后期加入的组
3.用户涉及到的配置文件及内容
用户信息库 | /etc/passwd |
---|---|
组信息库 | /etc/group |
默认用户家目录 | /home/用户名 |
用户环境配置文件模板 | /etc/skel/所有文件 |
用户认证信息文件 | /etc/shadow |
用户组认证信息 | /etc/gshadow |
用户环境配置文件模板:例如配置关机时出现byebye字样。
4.用户信息的查看
1.如何查看当前正在使用的用户
[root@workstation Desktop]# whoami
root
2.查看指定用户id信息
id 用户名 | 查看指定用户id信息 |
---|---|
id -u 用户名 | 查看用户的uid |
id -g | 查看用户的gid(查看用户的初始组id) |
id -G | 查看用户的Gi(查看用户的附加组id) |
id -n | 查看时,显示名字而不是id数字 |
实验解析
(1)查看指定用户id信息
[root@workstation Desktop]# id student
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
(2)查看指定用户uid(用户id号)
[root@workstation Desktop]# id -u student
1000
(3)查看指定用户的初始组id 即gid
[root@workstation Desktop]# id -g student
1000
(4)查看指定用户的附加组id 即Gid
[root@workstation Desktop]# id -G student
1000 10
(5)查看用户id信息时显示名字,而不是显示数字的形式
[root@workstation Desktop]# id -Gn student
student wheel
(6)若没有指定用户,则查询的时当前用户的id信息
[student@workstation Desktop]$ id -Gn
student wheel
5.用户身份的切换方式及环境变量
1.注销当前用户,想用其他用户进行登陆(返回到登陆页面,相当于layout,只不过是用命令实现)
[student@workstation Desktop]$ gnome-session-quit --force
注意:–force和quit之间有一个空格
2.su命令切换用户身份
su 用户名 | 仅仅切换用户身份,不切换用户环境 |
---|---|
su - 用户名 | 切换用户身份,并且切换用户环境 |
[root@workstation Desktop]# su student
(1)当su切换之后,查看所在的环境,虽然用户名已经切换为student,但是用户环境(当前所处的绝对路径)没有切换(仍然在root/Desktop)
扩充:Linux pwd命令用于显示工作目录。
执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称。
[student@workstation Desktop]$ pwd
/root/Desktop
(2)如果想在切换中,不仅实现用户的切换,同时用户所处的环境(当前所在的工作路径)也进行切换。需要用到su - 命令。
[root@workstation Desktop]# su - student
Last login: Wed Jan 1 11:50:13 EST 2020 on pts/0
[student@workstation ~]$ pwd
/home/student
su - 切换到普通用户(student),用户所处的环境(用户环境)切换到普通用户的家目录!
由超级用户切换到普通用户不需要输入密码
但是普通用户切换到超级用户,需要输入密码
也就是 执行高级用户切换到低级目录不需要密码,低级用户切换到高级用户需要密码,平级切换也需要密码。
6.用户及用户组的建立删除
前言:知识点巩固和扩充
(1)当一个命令想控制多个目标文件时,目标文件之间用空格 隔开
[root@workstation Desktop]# cat file1 file2
[root@workstation Desktop]# ls -ls file1 file2
(2)想接受命令控制的目标范围,用“;”隔开
[root@workstation Desktop]# cat file1 file2 ; echo hahaha
(3)tail -数字 和 tail -n 数字 的区别
显示一个文件的后5行
[root@workstation Desktop]# tail -5 file1
[root@workstation Desktop]# tail -n 5 file1
显示两个文件的后五行
[root@workstation Desktop]# tail -n 5 file1 file2
(3)查看普通户用家目录下的详细信息
[root@workstation Desktop]# ls -l /home/
(4)监视命令 watch ,若监视的命令不止一个,应当用双引号“”包住!
进入监视后,按ctrl+c可以退出监视
[root@workstation Desktop]# watch -n 1 "tail -n 5 /etc/passwd /etc/group"
根据上述知识点的普及,首先搭建实验环境,监视用户信息库/用户组信息库/普通用户家目录的情况
[root@workstation Desktop]# watch -n 1 "tail -n 5 /etc/passwd /etc/group;echo =====;ls -l /home/"
1.用户组的建立和删除
groupadd 组名 | 建立组(组id系统自动分配) |
---|---|
groupadd -g ID号 组名 | 指定组号(特定组)建立 |
groupdel 组名 | 删除指定组 |
[root@workstation Desktop]# groupadd westosgroup1
[root@workstation Desktop]# groupadd -g 666 westosgroup2
[root@workstation Desktop]# groupdel westosgroup1
注意:
(1)当这个组的ID是用户的初始组的时候,是不能进行删除的
(2)若想删除该组,要么更改用户初始组gid,要么删除该用户,或者/etc/group配置文件中手动删除
(3)理论上,不能建立同名的用户和组,但是配置文件中能写入。但是!!!轻易不要写配置文件
(4)删除时,groupdel + 用户名 必须时指定组名,若指定组ID,则删除失败
(5)echo hahaha注意echo命令后面需要有个空格
2.用户的建立和删除
useradd 用户名 | 用户的建立 |
---|---|
userdel -r 用户名 | 用户的删除 |
useradd -u 666 用户名 | 指定uid建立 |
useradd -g 40 用户名 | 指定gid建立,40组必须存在 |
useradd -G 40 用户名 | 指定用户组,40组必须存在 |
useradd -c “xxxxx” 用户名 | 指定用户的说明 |
useradd -d /home/lee 用户名 | 指定用户的家目录 |
useradd -s /bin/sh 用户名 | 指定用户的默认shell |
useradd -M 用户名 | 建立用户时,不建立家目录 |
实验解析:
(1)用户建立和删除
[root@workstation Desktop]# useradd westos1
[root@workstation Desktop]# userdel -r westos1
注意:建立和删除用户时,用户/组/家目录都发生变化。因为在建立用户时,会自动建立用户的初始组
(2)建立用户常用参数
1.指定用户uid
[root@workstation Desktop]# useradd -u 666 westos1
2.指定用户gid
[root@workstation Desktop]# useradd -g 40 westos1
3.指定用户附加组(gid或者组名都可以)
[root@workstation Desktop]# useradd -c "westos user" westos1
4.指定用户的说明
[root@workstation Desktop]# useradd -c "westos user" westos1
5.指定用户的家目录
[root@workstation Desktop]# useradd -d /home/jia westos1
6.指定用户的默认shell类型
首先查看 系统支持的 和系统对话的 所有shell类型
[root@workstation Desktop]# vim /etc/shells
[root@workstation Desktop]# useradd -s /bin/sh westos1
7.不建立家目录的情况下 建立用户(因为无-M时,建立用户时系统自动建立家目录)
[root@workstation Desktop]# useradd -M westos1
8.同时指定多个参数建立用户
[root@workstation Desktop]#useradd -u 666 -c "westos user" -d /home/jia -s /bin/bash westos1
7.用户及用户组的信息管理(usermod)
用户和用户组的建立实验过程中,不能更改用户的信息,若想更改,需要先进行删除再新建。本节讲述了如何对已经建好的用户和用户组进行更改。
usermod -l 新名称 用户名 | 修改用户的名称 |
---|---|
usermod -u uid 用户名 | 修改用户的uid |
usermod -g gid 用户名 | 修改用户的gid |
usermod -G gid 用户名 | 修改用户的附加组(删除原有的附加组,添加新的附加组) |
usermod -aG id 用户名 | 指定用户的附加组(在已有的附加组基础上进行添加) |
usermod -G “” 用户名 | 删除所有附加组的身份 |
usermod -c “XXX” 用户名 | 修改用户的说明 |
usermod -d /home/lee 用户名 | 更改用户的家目录的指向(只是修改的指向,家目录地址不变化) |
usermod -md /home/lee 用户名 | 修改用户家目录(更改指向,也更改真实目录名称) |
usermod -s /bin/sh 用户名 | 修改用户的shell类型 |
家目录指向:登陆后告诉用户应该去哪 (用户家目录的指向,但并一定真实存在)
实验解析:
(1)修改用户名
[root@workstation Desktop]# usermod -l jiajia westos1
(2)修改用户uid
[root@workstation Desktop]# usermod -u 666 jiajia
(3)修改用户gid
[root@workstation Desktop]# usermod -g 1002 jiajia
(4)指定用户附加组
[root@workstation Desktop]# usermod -G dip jiajia
[root@workstation Desktop]# usermod -G westos2 jiajia
[root@workstation Desktop]# usermod -aG westos1 jiajia
(6)删除所有附加组的身份双引号之间无空格
[root@workstation Desktop]# usermod -G "" jiajia
(7)修改用户说明
[root@workstation Desktop]# usermod -c "westos user" jiajia
(8)修改用户家目录的指向
[root@workstation Desktop]# usermod -d /home/dangshan jiajia
(9)修改用户家目录指向+更改家目录
首先还原实验环境
[root@workstation Desktop]# usermod -d /home/westos1 jiajia
[root@workstation Desktop]# usermod -md /home/dangshan jiajia
(10)修改用户shell类型
[root@workstation Desktop]# usermod -s /bin/sh jiajia
(11)一次修改多个参数
8.用户认证文件的内容分析
前言知识:
(1)用户的认证信息文件 /etc/shadow
注意:
此文件记录用户的认证信息
此文件只有root用户可以查看
[root@workstation Desktop]# vim /etc/shadow
例如:
bin:*:17784:0:99999:7:::
vim /etc/shadow文件中每一行都有9列内容,查看这9列分别是什么意思 所使用的命令是:
[root@workstation Desktop]# vim /etc/shadow
含义分别是:
1用户名称 | 用户名称 |
---|---|
2用户密码 | 用户密码的加密字符串,默认用的加密方式为sha512对称加密,如果加密字符串前出现“!”,则该用户的帐号被冻结。 |
3密码已经使用的时间 | 用户密码最后一次被修改的时间,此时间的计算是从1970-1-1日起累计的总天数。当设置为0时,首次登陆需要设定密码,密码要符合一定的俄规则 |
4 密码最短有效期 | 用户密码最短有效期限(用户在这个数字天数之内不能修改密码)如果此位有设定数字,那么在此数字范围内的天数内是不能更改用户的密码的 |
5密码最长有效期 | 用户密码最长有效期限,用户必须在此有效期内更新密码,如果超时会被冻结 |
6密码到期前警告 | 密码警告期限,在过期前指定天数内会发送警告信息给用户 (还有几天过期 赶紧该密码) |
7密码非活跃天数 | 用户的非活跃天数(加的期限),此位默认为空,如果设定数值,那么在密码最长有效期过后仍然可以使用的天数(过期后还能到用几天 不设定到期就冻结) |
8密码到期日 | 用户到期日,默认为空,表示帐号一定会被冻结的时间点,此时间计算是从1970-1-1开始计算的累计天数 (类似于会员) |
9 | 用户自定义列,目前没有启用 |
解析名词:
密码规则:
(1)密码不能类似与用户名 (2)无序字符+无序数字 (3)字符和数字组合
对称加密:(加密解密相同字符串) 例如指纹和人脸识别
9.用户认证管理
前言知识
passwd不具备账号到期时间更改
change 不能更改/查看/删除密码 可以改账号到期时间
更改用户密码 passwd 用户名 | – |
---|---|
查看用户密码信息 passwd -S 用户名 | – |
删除设定密码 passwd -d 用户名= | – |
冻结用户密码(密码前面加了!!)passwd -l 用户名 | – |
解密码 passwd -u 用户名 | – |
最后一次修改时间 passwd -e 天数 用户名 | d |
最短有效期 passwd -n 天数 用户名 | m |
最长有效期 passwd -x 天数 用户名 | M |
警告期 passwd -w 天数 用户名 | W |
非活跃天数 passwd -i 天数 用户名 | I |
- | 修改密码到期日 chage -E 天数 用户名 |
把超级用户密码改为linux (非交互式更改密码)
usermod -L 用户名 冻结用户
usermod -U 用户名 解锁用户
实验搭建
实验仍需要进行监视,监视的文件是用户认证信息文件/etc/shadow
【root@workstation Desktop]# watch -n 1 tail -n 5 /etc/shadow
(1)更改用户密码信息
[root@workstation Desktop]# passwd jjy
修改jjy用户密码为8028482jjy
(2)查看用户密码信息
[root@workstation Desktop]# passwd -S jjy
其中,ps(密码被设置过) NP(没有设置密码)
(3)删除用户密码信息
[root@workstation Desktop]# passwd -d jjy
(4)passwd 冻结&解锁 用户密码(冻结密码,密码前加!!)
[root@workstation Desktop]# passwd -l jjy
[root@workstation Desktop]# passwd -u jjy
(5)usermod 冻结&解锁用户密码(冻结密码,密码前加!)
[root@workstation Desktop]# usermod -L jjy
[root@workstation Desktop]# usermod -L jjy
(6)最后一次修改时间
[root@workstation Desktop]# chage -d 0 jjy
(7)最短有效期
[root@workstation Desktop]# passwd -n 30 jjy
(8)最长有效期
[root@workstation Desktop]# chage -M 100 jjy
(9)警告期
[root@workstation Desktop]# passwd -w 3 jjy
(10)非活跃天数
[root@workstation Desktop]# chage -I 7 jjy
(11)修改密码到期日
[root@workstation Desktop]# chage -E "2020-01-31" jjy
[root@workstation Desktop]# chage -E 2000000 jjy
扩充 非交互式更改密码
[root@workstation Desktop]# echo linux | passwd --stdin root
10.用户权力的下放
前言引入:
1.什么叫用户权力的下放?
- 超级用户的权力大于普通用户的权力,因此普通用户有些命令不能执行。譬如:用户的建立/删除/管理等。为了是普通用户具有某些超级用户才能够行使的权力,因此用到了权力的下放。
- 一般情况下普通用户是不能新建用户或者新建用户组,只有超级用户有这个权力
- 现在想让普通用户使用超级用户的权力来建立用户或者用户组
- 此时需要把超级用户的权力给普通用户,这就叫用户授权
- 超级用户把自己的权力分享给普通用户,也可以叫权力共享
2.具体内容:
- 权力下放文件为/etc/sudoers
- 此文件可以直接用vim编辑,但是不提供语法检测
- 也可以使用visudo编辑此文件,visudo是提供语法检测的
3.具体操作步骤
step1:(保证普通用户环境的干净)新建普通用户
[root@workstation Desktop]# useradd westos2
step2: 试验普通用户没有这个权力添加新用户
[westos2@workstation ~]$ useradd jia
useradd: Permission denied.
step3: 切换到root用户
[westos2@workstation ~]$ su - root
step4: 在root用户下执行visudo命令
[root@workstation ~]# visudo
step5:编辑这个vim文件(ctrl+t 在一个终端打开两个shell脚本)
(1)查找useradd的绝对路径
[root@workstation Desktop]# which useradd
/usr/sbin/useradd
(2)查看主机名
[root@workstation Desktop]# hostname
workstation.lab.example.com
图1
(3)编辑配置文件(/etc/sudoers)
进入配置文件的方式是在root用户下,直接visudo
[root@workstation Desktop]# visudo
配置文件100行写入:
westos2 workstation.lab.example.com=(root) NOPASSWD: /usr/sbin/useradd,/usr/sbin/userdel
step6:切换到westos2用户,使用useradd/userdel命令
[root@workstation Desktop]# su - westos2
[westos2@workstation ~]$ sudo useradd jia2
[westos2@workstation ~]$ sudo userdel jia2
注意运行命令一定在开头添加sudo