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 用户:显示用户所有组的名称
![](https://img-blog.csdnimg.cn/a757c0c1da2f498abe87715c96ed0fc1.png)
3.切换用户
(1)图形切换
![](https://img-blog.csdnimg.cn/f80eb9501d4b434693b036accd965f21.png)
(2)gnome命令切换
# gnome-session-quit --force :输入命令后直接退出系统,重新登陆。
![](https://img-blog.csdnimg.cn/99c44e2a559244d78f285aa17b697794.png)
![](https://img-blog.csdnimg.cn/a021c43e57e141eeb405b67de545fb95.png)
(3)su 命令切换
# su username : 切换用户 ,不切换用户环境
# su - username:切换用户,切换了用户环境
两者区别:“ - ” 代表切换用户环境
超级用户-----> 普通用户 :不需要密码
普通用户-----> 超级用户:需要密码
普通用户------>普通用户:需要密码
![](https://img-blog.csdnimg.cn/9d294764f4b2468698a1461045db2f43.png)
注意:在做用户切换时当使用完毕用户身份及时退出,利用exit命令
#不要在一个shell中反复执行su命令
#在一个shell中反复执行su命令会导致环境错乱
![](https://img-blog.csdnimg.cn/3dd1b96c79154f439f3e449a7bf485f0.png)
4.用户涉及到的系统配置文件
/etc/passwd ##用户身份信息文件
#用户名称:用户密码:用户id:用户主组id:用户说明:用户家目录:用户默认shell
![](https://img-blog.csdnimg.cn/22184266cf5647599a296755b6c31308.png)
/etc/group ##组身份信息文件 #组名称:组密码:组id:组的附加成员
/etc/skel/.* ##用户环境配置文件模板
![](https://img-blog.csdnimg.cn/9fd195a0d0d543398ef6306a078e416b.png)
/etc/shadow ##用户认证信息文件
![](https://img-blog.csdnimg.cn/b12dab06c2b842f489f31ae47649cd0b.png)
/home/username ##用户家目录
/var/spool/mail/username ##用户邮箱文件
5.监控及用户和组建立的基本方法
(1)监控
# watch 命令 : 隔两秒执行一次命令
# watch -n 1 命令 : 隔一秒执行一次命令
<ctrl> + <C > 即可退出监控界面
![](https://img-blog.csdnimg.cn/232138f8be46420386984262178531ea.png)
![](https://img-blog.csdnimg.cn/513643c7d1294b598fa0bcf2081ccd71.png)
由于本次实验需要监控用户和组的建立及删除,因此我们设立以下监控界面。
# watch -n 1 "tail -n 3 /etc/passwd /etc/group ; ls -l /home" :查看etc/passwd etc/group 后三行的内容,并且展示家目录的属性。
“ ;” : 表示命令的间隔
![](https://img-blog.csdnimg.cn/a131ad13c8a140fca56dc039ea9d45a6.png)
(2)用户和组建立的基本方法
# useradd 用户 :建立用户
![](https://img-blog.csdnimg.cn/a5fadeb74d6248ebaca41b27a843cc58.png)
# userdel 用户 : 删除用户,只删除用户的信息,不删除配置文件,比如家目录。
![](https://img-blog.csdnimg.cn/49a2cfda8c9c45d6bffc57434aefcf64.png)
#userdel -r 用户 : 删除用户及其系统配置文件
![](https://img-blog.csdnimg.cn/f13506a72e4141b98a3cd212981e1ad6.png)
# groupadd 组 :建立组![](https://img-blog.csdnimg.cn/11c1ca1d517646e0976ec46331006c5f.png)
# groupdel 组:组删除![](https://img-blog.csdnimg.cn/cdd5b806b87c484e8a7b3d38383c17e6.png)
6.指定信息建立用户及组
(1)建立组---指定id
# groupadd -g id 组 : 建立指定id 的组
![](https://img-blog.csdnimg.cn/5cb33bc4fcea455a83987a35e1ce130d.png)
(2)指定信息建立用户
#useradd -u id 用户 :建立指定id的用户 (默认主组id与用户id一致)
ps:本次实验建立用户后及时删除
![](https://img-blog.csdnimg.cn/ee27259515de41f6a4de7b1b590b1e64.png)
注意:用户id不能随意取,用户建立默认规则储存在:/etc/login.defs
# 0 : 超级用户
# 1 - 200 :系统预留id
# 201 - 999 :系统用户
# 1000 - 60000 :用户级用户
![](https://img-blog.csdnimg.cn/aa58d6bf7aa54ecbaaa4e570e19f6cab.png)
# useradd -g id 用户名 : 建立指定主组id的用户 ps:前提是这个组要存在!
注意:指定主组id 不影响用户id ![](https://img-blog.csdnimg.cn/ad624818e2744644b69133c0a45fe2ac.png)
![](https://img-blog.csdnimg.cn/a8c67af72d5a4e1aa034cf30eabd6a77.png)
# useradd -G id 用户 : 建立指定附加组id的用户 (该附加组必须要存在)![](https://img-blog.csdnimg.cn/9be4ac0f27574adb86f0db454f857c60.png)
# useradd -c 说明 用户名 : 建立指定用户说明的用户
![](https://img-blog.csdnimg.cn/6a401f74d6e94126ad7f3304d70bb6f8.png)
# useradd -d 家目录 用户名 :建立指定家目录的用户![](https://img-blog.csdnimg.cn/a9f741cd1a254b93a9d441e5a235815c.png)
# useradd - M 用户名 :建立用户时不建立家目录![](https://img-blog.csdnimg.cn/226d6c56cf9344579ae63bf608ebdf8f.png)
# useradd -s shell 用户名 :建立用户时指定shell
![](https://img-blog.csdnimg.cn/f30cca7de42e4758a8e2d520e89bace1.png)
ps: 默认shell有 /bin/sh /bin/bash sbin/nologin
但sbin/nologin 是系统预留的,不对外开放!
![](https://img-blog.csdnimg.cn/25eacc93a40e4723a625fc6590026ef2.png)
7.用户信息的更改
(1)修改用户名称
# usermod -l 新名称 旧名称 : 修改用户名称
![](https://img-blog.csdnimg.cn/ec1977b67383461aa6e8593a3cff65e0.png)
(2)修改用户id
# usermod -u 新id 用户名 :修改用户id
![](https://img-blog.csdnimg.cn/b01ab8ebd335407fb8585819a9849290.png)
(3)修改用户主组id
# usermod -g 新主组id/名称 用户名 : 修改用户的主组id
ps:新主组必须存在!![](https://img-blog.csdnimg.cn/18f1ad8f50ec46d19d71d45ed2f3c466.png)
(4)更改用户附加组的身份
# usermod -G 附加组id/名称 用户 : 修改用户的附加组身份
ps:附加组必须存在!
![](https://img-blog.csdnimg.cn/c596fed45ca84d30af524584600d1541.png)
注意:新附加组身份会覆盖原附加组,因此可以利用该特性清空用户的附加组。
# usermod -G "" 用户名:清空用户的附加组
![](https://img-blog.csdnimg.cn/662e29ea8a3d47d28077f79a0419d180.png)
(5)添加用户附加组身份
# usermod -aG 附加组id/名称 用户 :添加附加组身份
注意:新附加组身份不会覆盖原附加组![](https://img-blog.csdnimg.cn/c8317b5d1e044c55b60410e7b9b8e11e.png)
(6)更改用户说明
# usermod -c 用户说明 用户名 :更改用户说明
![](https://img-blog.csdnimg.cn/eb116d03cb9c46f595b0860853ad3b5e.png)
(7)更改家目录指向
# usermod -d 新家目录 用户 :更改家目录指向
ps:只是更改了家目录指向,该指向不一定存在。真正的家目录名称并为改变
![](https://img-blog.csdnimg.cn/a3c9b33a44024084b27feaf131eb99f3.png)
(8) 更改家目录指向同时更改家目录名称
# usermod -md 新家目录 用户名:修改家目录指向并更改家目录名称
![](https://img-blog.csdnimg.cn/5c21fae8a22440979e74d0458f32ea3c.png)
(9)修改用户的默认shell
# usermod -s 新shell 用户名:修改用户的默认shell![](https://img-blog.csdnimg.cn/fa9a5b35e2fe4322b15dad3bd1c33709.png)
8.用户认证信息管理
(1)/etc/shadow : 文件内容说明
#用户名称:用户密码的加密字符:用户密码最后一次被修改时间:密码最短有效期:密码最长有效期:密码过期前警告期:账号非活跃期:账号到期时间:用户自定义(未使用)
![](https://img-blog.csdnimg.cn/c4bc687bdabc44de897c3a159e3b0a09.png)
(2)查看用户密码状态
# passwd -S 用户名:查看用户密码状态
![](https://img-blog.csdnimg.cn/271ca3c4aa894374afe4f6fcbbbfcad4.png)
(3)root修改密码
# passwd 用户 :修改用户密码
ps:超级用户可以直接修改任何用户的密码,不用输入原密码。
# echo 123 | passwd --stdin westos : 修改westos用户的密码为123 ,非交互式修改密码,只有root可以执行
![](https://img-blog.csdnimg.cn/280179e590254ef59916876f9a9a91d4.png)
(4)普通用户修改密码
# passswd : 只用输入passwd即可修改自己的密码
注意:修改密码前要输入原密码且密码要8位以上,要求严格
![](https://img-blog.csdnimg.cn/4081a3e4c62b4204a69a9abc4d484a79.png)
(5)用户冻结和解冻
ps:监控界面:
#watch -n 1 "tail -n 1 /etc/shadow ; echo @@@@@; passwd -S lee"
#passwd -l 用户 : 用户密码被冻结,则该用户无法登陆。
冻结的原理,密码前加了两个感叹号!!
ps:root切换该用户成功,普通用户无法切换该用户。
![](https://img-blog.csdnimg.cn/db7c73710308442a92bbd71de8618937.png)
# passwd -u 用户 :用户密码解锁 ![](https://img-blog.csdnimg.cn/072d0ea828834046a1c9c8bff4dc9dbc.png)
# usermod -L 用户:也可对账号进行冻结,在密码前加了一个感叹号!
![](https://img-blog.csdnimg.cn/73c09a526840449394f4a369950205d2.png)
# usermod -U 用户 :对账号进行解冻
![](https://img-blog.csdnimg.cn/75060fc3eb854ad7afc71655dca09630.png)
(6)修改用户密码最后一次被修改的时间
# passwd -e 用户 : 修改默认时间为0,必须修改该账号的密码。
适用场景:拿到新银行卡时必须修改密码。
修改前:
![](https://img-blog.csdnimg.cn/2fbc5c4be7de46ffa1e54b6ebcd6e7b1.png)
修改后:
![](https://img-blog.csdnimg.cn/b4c9287a68fd4a9684fa2af5bfbd1fd8.png)
再次登陆该用户时,强制要求修改密码
![](https://img-blog.csdnimg.cn/36ac9f83f3284fd1aedd9192dc1a3d64.png)
再次登陆系统后,时间又恢复了
![](https://img-blog.csdnimg.cn/744ccb1ddd8e45d9acd8bcc1031d2180.png)
# chage -d 0 用户 : 修改用户默认时间为0
![](https://img-blog.csdnimg.cn/addc445d813f448fa1185ec15a6e017b.png)
修改密码后,恢复!
![](https://img-blog.csdnimg.cn/5dff0aee9a674d5cbeca97b9dbc39a69.png)
(7)修改密码最短有效期:该期限内不能改密码
# passwd -n 1 用户 :该用户一天不能改密码
# chage -m 1 用户:该用户一天不能改密码
![](https://img-blog.csdnimg.cn/a0c814882d1c4e1d80da12e47cfa9957.png)
![](https://img-blog.csdnimg.cn/d3894eea8d6742f58d7de2ffc4cba12a.png)
(8)修改密码最长有效期限:过了该日期必须修改密码
# passwd -x 30 用户:修改用户的最长期限为30天
# chage -M 99999 用户 :修改用户的最长期限为9999天
![](https://img-blog.csdnimg.cn/b651cd123d1e4dfbba76b70270764e3b.png)
![](https://img-blog.csdnimg.cn/8d7d632a22084246a8cbe68ed0f73dd5.png)
(9)修改密码过期前警告时间
# passwd -w 2 用户:修改警告时间为2天,即到期前两天提示密码即将过期。
# chage - W 7 用户:修改警告时间为7天。
![](https://img-blog.csdnimg.cn/e52e3d7667164be386998844c4791850.png)
![](https://img-blog.csdnimg.cn/4ec09768ea9745839789c478dc7a1ce0.png)
(10)修改认证非活跃天数:过期后还能用多久
# passwd -i 1 lee :过期后还能登陆该账号一天,并且会强制改密码(因为过期了)。
# chage -I -1 lee :不设置非活跃天数。
![](https://img-blog.csdnimg.cn/e5c6863fecf645c4b2229b32613918c1.png)
![](https://img-blog.csdnimg.cn/1f4ff659fa574e6faee8f1a1b573d510.png)
(11)修改账号到期时间
# chage -E “2024-01-23" 修改账号过期时间为2024-01-23
![](https://img-blog.csdnimg.cn/d3ef31833d5e4841b05eac7519a222c0.png)
9.用户权力下放
普通用户默认无法建立新用户
![](https://img-blog.csdnimg.cn/2835a6257dc444ea8f0764b7ecc78606.png)
#在系统中普通用户时无法执行系统管理命令的
#如果需要普通用户执行系统管理动作那么需要root用户来进行授权
授权方法:
visudo ##此命令作用是编辑/etc/sudoers并提供语法检测
# visudo : 只输visudo 回车就可以
![](https://img-blog.csdnimg.cn/83821fbe29974546a48b4a259f4ded15.png)
ps:一般写在100行
![](https://img-blog.csdnimg.cn/243caf139ebc44dd81d591f4003efec5.png)
因此首先要获取主机名和执行命令的绝对路径
# hostname : 获取主机名
# which useradd : 获取命令的绝对路径
![](https://img-blog.csdnimg.cn/ecdb4bfa440e4e208798b369fd8fcf3c.png)
输入visudo开始授权,在100行写
lee 主机名=(root) 命令的绝对路径 :lee用户在该主机上以root身份执行useradd命令
![](https://img-blog.csdnimg.cn/d38907ab57dc4030ac7bf9643708cd56.png)
切换至lee用户测试
# sudo : 授权方法
# sudo useradd test
第一次需要密码,后续不需要。![](https://img-blog.csdnimg.cn/943ba0c5c9dd40348e36d157c68d3c18.png)
发现普通用户也可成功建立新用户, 普通用户删除用户怎么办?
继续在visudo里面添加执行命令即可,命令之间用逗号空格隔开
![](https://img-blog.csdnimg.cn/f97106c12acf43a785bb22527805961c.png)
lee用户利用权力下放删除test,test1用户成功!
如果想第一次也不输入密码。
即免密的话,在/etc/sudoers文件添加NOPASSWD:就可以。
![](https://img-blog.csdnimg.cn/11adfa1d4db9482dafe5977344508df7.png)
则第一次也不需要密码,实现了免密操作!![](https://img-blog.csdnimg.cn/2e9c906472f1406cba591dc91f7e0c87.png)