1.用户及用户组的意义
在Linux中,用户(User)和用户组(Group)是管理系统权限和资源访问的重要概念。
(1)用户
用户是指系统中的一个身份标识,每个用户都有自己的用户名和密码。每个用户可以拥有自己的文件、进程和权限,通过用户名和密码进行身份验证后可以登录系统并执行各种操作。通过建立不同权限的用户,一来可以合理的控制和运用系统的资源,二来可以帮助用户构建自己的私人空间,更好的组织和管理自己的文件。
用户是系统中最底层的一种安全机制,3A机制组成系统中最底层的安全架构。3A机制由 “身份 account ,授权 author,认证 auth”组成。
(2)用户组
用户组是指一组用户的集合,对用户进行归类和统一授权。每个用户可以属于多个用户组,而每个用户组可以拥有多个用户。用户组通常用于授权管理和文件访问控制,比如一个用户组可以有权限访问某个目录或文件,而其他用户组则没有。
Linux使用了一种称为“访问控制列表”(Access Control List,简称ACL)的权限控制机制。每个文件和目录都有一个ACL,包含了对该文件或目录的访问权限设置,包括用户和用户组等信息。当一个用户尝试访问某个文件或目录时,系统会根据该用户所属的用户组和ACL中的权限信息来判断是否允许访问。
2.用户查看的方法
# whoami : 查看当前用户
#id :查看当前用户id信息
#id 用户:查看指定用户的id信息
#id -u 用户 : 查看用户的用户id
#id -g 用户 : 查看用户的主组id
#id -G 用户 : 查看用户的所有组的id
#id -n : 显示名称,不可以单独使用。必须联合以上一起使用,例如:
#id -n -g 用户:显示用户所有组的名称

3.切换用户
(1)图形切换

(2)gnome命令切换
# gnome-session-quit --force :输入命令后直接退出系统,重新登陆。


(3)su 命令切换
# su username : 切换用户 ,不切换用户环境
# su - username:切换用户,切换了用户环境
两者区别:“ - ” 代表切换用户环境
超级用户----->  普通用户 :不需要密码
普通用户-----> 超级用户:需要密码
普通用户------>普通用户:需要密码

 注意:在做用户切换时当使用完毕用户身份及时退出,利用exit命令
 #不要在一个shell中反复执行su命令
#在一个shell中反复执行su命令会导致环境错乱

4.用户涉及到的系统配置文件
/etc/passwd ##用户身份信息文件
#用户名称:用户密码:用户id:用户主组id:用户说明:用户家目录:用户默认shell

/etc/group ##组身份信息文件 #组名称:组密码:组id:组的附加成员
/etc/skel/.*            ##用户环境配置文件模板

/etc/shadow ##用户认证信息文件

/home/username ##用户家目录
/var/spool/mail/username ##用户邮箱文件
5.监控及用户和组建立的基本方法
(1)监控
# watch 命令 : 隔两秒执行一次命令
# watch -n 1 命令 : 隔一秒执行一次命令
<ctrl> + <C > 即可退出监控界面


由于本次实验需要监控用户和组的建立及删除,因此我们设立以下监控界面。
# watch -n 1 "tail -n 3 /etc/passwd /etc/group ; ls -l /home" :查看etc/passwd etc/group 后三行的内容,并且展示家目录的属性。
“ ;” : 表示命令的间隔

(2)用户和组建立的基本方法
# useradd 用户 :建立用户

# userdel 用户 : 删除用户,只删除用户的信息,不删除配置文件,比如家目录。

#userdel -r 用户 : 删除用户及其系统配置文件

 # groupadd 组 :建立组
 # groupdel  组:组删除
6.指定信息建立用户及组
(1)建立组---指定id
# groupadd -g id 组 : 建立指定id 的组

(2)指定信息建立用户
#useradd -u id 用户 :建立指定id的用户 (默认主组id与用户id一致)
ps:本次实验建立用户后及时删除

注意:用户id不能随意取,用户建立默认规则储存在:/etc/login.defs
# 0 : 超级用户
# 1 - 200 :系统预留id
# 201 - 999 :系统用户
# 1000 - 60000 :用户级用户

# useradd -g id 用户名 : 建立指定主组id的用户 ps:前提是这个组要存在!
注意:指定主组id 不影响用户id  

 # useradd   -G   id   用户 : 建立指定附加组id的用户 (该附加组必须要存在)
# useradd -c 说明 用户名 : 建立指定用户说明的用户

 # useradd  -d  家目录  用户名 :建立指定家目录的用户
 # useradd  - M  用户名 :建立用户时不建立家目录
# useradd -s shell 用户名 :建立用户时指定shell

ps: 默认shell有 /bin/sh /bin/bash sbin/nologin
但sbin/nologin 是系统预留的,不对外开放!

7.用户信息的更改
(1)修改用户名称
# usermod -l 新名称 旧名称 : 修改用户名称

(2)修改用户id
# usermod -u 新id 用户名 :修改用户id

(3)修改用户主组id
# usermod -g 新主组id/名称 用户名 : 修改用户的主组id
ps:新主组必须存在!
(4)更改用户附加组的身份
# usermod -G 附加组id/名称 用户 : 修改用户的附加组身份
ps:附加组必须存在!

注意:新附加组身份会覆盖原附加组,因此可以利用该特性清空用户的附加组。
# usermod -G "" 用户名:清空用户的附加组

(5)添加用户附加组身份
# usermod -aG 附加组id/名称 用户 :添加附加组身份
注意:新附加组身份不会覆盖原附加组
(6)更改用户说明
# usermod -c 用户说明 用户名 :更改用户说明

(7)更改家目录指向
# usermod -d 新家目录 用户 :更改家目录指向
ps:只是更改了家目录指向,该指向不一定存在。真正的家目录名称并为改变

(8) 更改家目录指向同时更改家目录名称
# usermod -md 新家目录 用户名:修改家目录指向并更改家目录名称

(9)修改用户的默认shell
# usermod   -s  新shell  用户名:修改用户的默认shell
8.用户认证信息管理
(1)/etc/shadow : 文件内容说明
#用户名称:用户密码的加密字符:用户密码最后一次被修改时间:密码最短有效期:密码最长有效期:密码过期前警告期:账号非活跃期:账号到期时间:用户自定义(未使用)

(2)查看用户密码状态
# passwd -S 用户名:查看用户密码状态

(3)root修改密码
# passwd 用户 :修改用户密码
ps:超级用户可以直接修改任何用户的密码,不用输入原密码。
# echo 123  | passwd  --stdin  westos  : 修改westos用户的密码为123 ,非交互式修改密码,只有root可以执行
 
(4)普通用户修改密码
# passswd : 只用输入passwd即可修改自己的密码
注意:修改密码前要输入原密码且密码要8位以上,要求严格

(5)用户冻结和解冻
ps:监控界面:
#watch -n 1 "tail -n 1 /etc/shadow ; echo @@@@@; passwd -S lee"
#passwd -l 用户 : 用户密码被冻结,则该用户无法登陆。
冻结的原理,密码前加了两个感叹号!!
ps:root切换该用户成功,普通用户无法切换该用户。

# passwd  -u  用户 :用户密码解锁 
# usermod -L 用户:也可对账号进行冻结,在密码前加了一个感叹号!

# usermod -U 用户 :对账号进行解冻

(6)修改用户密码最后一次被修改的时间
# passwd -e 用户 : 修改默认时间为0,必须修改该账号的密码。
适用场景:拿到新银行卡时必须修改密码。
修改前:

修改后:

再次登陆该用户时,强制要求修改密码

再次登陆系统后,时间又恢复了

# chage -d 0 用户 : 修改用户默认时间为0

修改密码后,恢复!

(7)修改密码最短有效期:该期限内不能改密码
# passwd -n 1 用户 :该用户一天不能改密码
# chage -m 1 用户:该用户一天不能改密码


(8)修改密码最长有效期限:过了该日期必须修改密码
# passwd -x 30 用户:修改用户的最长期限为30天
# chage -M 99999 用户 :修改用户的最长期限为9999天


(9)修改密码过期前警告时间
# passwd -w 2 用户:修改警告时间为2天,即到期前两天提示密码即将过期。
# chage - W 7 用户:修改警告时间为7天。


(10)修改认证非活跃天数:过期后还能用多久
# passwd -i 1 lee :过期后还能登陆该账号一天,并且会强制改密码(因为过期了)。
# chage -I -1 lee :不设置非活跃天数。


(11)修改账号到期时间
# chage -E “2024-01-23" 修改账号过期时间为2024-01-23

9.用户权力下放
普通用户默认无法建立新用户

 #在系统中普通用户时无法执行系统管理命令的
 #如果需要普通用户执行系统管理动作那么需要root用户来进行授权
授权方法:
 visudo                             ##此命令作用是编辑/etc/sudoers并提供语法检测
# visudo : 只输visudo 回车就可以

ps:一般写在100行

因此首先要获取主机名和执行命令的绝对路径
# hostname : 获取主机名
# which useradd : 获取命令的绝对路径

输入visudo开始授权,在100行写
lee 主机名=(root) 命令的绝对路径 :lee用户在该主机上以root身份执行useradd命令

切换至lee用户测试
# sudo : 授权方法
# sudo useradd test
第一次需要密码,后续不需要。
发现普通用户也可成功建立新用户, 普通用户删除用户怎么办?
继续在visudo里面添加执行命令即可,命令之间用逗号空格隔开

lee用户利用权力下放删除test,test1用户成功!
如果想第一次也不输入密码。
即免密的话,在/etc/sudoers文件添加NOPASSWD:就可以。

 则第一次也不需要密码,实现了免密操作!


















