1.用户及用户组存在的意义
- 用户是操作者在系统中的身份标识
- 组是逻辑概念,是用户的集合
- 用户的存在为了限制权限
- 组的存在为了归类用户便于管理权限
2.用户在系统中的存储方式
用户在系统中就是文件中的字符串 ,每个字符串映射了该用户所用到的系统资源 。
3.用户涉及到的配置文件及内容
文件 | 内容 |
---|---|
/etc/passwd
|
#用户信息库
|
/etc/group
|
#组信息库
|
/home/用户同名目录 |
#默认用户家目录
|
/etc/skel/所有文件
|
#用户环境配置文件模板
|
/etc/shadow
|
#用户认证信息
|
/etc/gshadow #组认证信息
|
#组认证信息
|
4.用户信息的查看
查看指定用户信息的正确命令: <id> 空格 <用户名称>
查看用户的指定信息:<id> 空格<参数> 空格 <用户名称>
参数 | 作用 |
---|---|
-u
| ##查看用户的uid (用户id) |
-g
|
##查看用户的gid(组id)
|
-G
|
##查看用户所在的所有组的id
|
-n
|
##显示名字而不显示id数字
|
root用户的uid为0, 1~499 为系统用户的uid, 普通用户的uid从500开始依次加1
命令效果:
groups:为用户的所有组,其中 10(wheel)为student的附加祖
5.用户身份的切换方式及环境变量
- 图形中的注销命令:
[root@localhost home]# gnome-session-quit --force ##注销当前用户
- su 和 su - :
su 只切换用户身份,不切换用户环境
su - 切换用户身份及用户环境
我们可以看到用su 切换到student用户,pwd查看当前路径还在先前root的桌面里;用su - 切换到student用户,也会切换用户 环境到student的家目录 。
!!!注意:每次su切换到其他用户操作之后必须退出,然后再次切换到其他用户,执行时高级用户切换到低级用户不需要密码,低级 用户切换到高级需要,平级用户切换也需要。可以用system monitor 看到,每切换一次用户身份,若不exit退出就会又产生一个shell的进程 ,因此su切换身份操作完成后必须退出!
6.用户及用户组的建立及删除
我们在做这个实验时,可以建立一个监控,对用户信息库,组信息库,用户家目录的信息实时查看,便于观察实验效果
[root@localhost home]# watch -n 1 'tail -n 3 /etc/passwd /etc/group;echo "======/home message"; ls -l /home/'
6.1、用户的建立及删除
- <useradd> 建立用户的,建立用户时,读取/etc/login.defs 文件内容确定规则
默认只有root用户可以进行用户的创建和删除,普通用户没有权限。
[root@localhost home]# useradd test ##创建一个名为test的用户
- useradd的常用参数
-u | 指定用户的 uid |
-g | 指定用户的 gid |
-G | 指定用户的附加组 |
-c | 指定用户的说明 |
-d | 指定用户的家目录 ,默认为 /home/username |
-s | 指定用户的默认shell |
- 删除用户的正确命令: <userdel>空格< -r > 空格<username> (-r 表示递归删除,删除用户目录及目录中的内容) !!! 注意:我们在用-s 指定用户的默认shell时,可以查看一下/etc中shell都有哪些文件,默认将shell改成一下几个文 件,否则添加用户后,无法切换到新用户!
示例:添加一个用户默认shell为/bin/shae(不是以上文件,随意指定)的用户test,用su - test切换用户,切换失败。
6.2、用户组的建立和删除
<groupadd> 和<groupdel> 示例:
[root@localhost home]# groupadd -g 666 test ##添加id为666的组
7.用户及用户组的信息管理
- 用户组信息修改:<groupmod -g>
[root@localhost home]# groupmod -g 1029 test ## 修改test的组id为1029
- 用户信息修改:<usermod>空格<参数>空格<username>
参数 | 作用 |
---|---|
-l | 修改用户名称 |
-u | 修改用户的 uid |
-g | 修改用户的 gid |
-aG | 指定用户的附加组 |
-c | 修改用户的说明 |
-md | 修改用户的家目录(默认为 /home/username) |
-s | 修改用户的 shell 类型(不可随意指定,应为有效shell文件) |
示例:为用户新加一个附加组
8.用户认证文件的内容分析
/etc/shadow 用户认证信息文件
- 内容:
9.用户认证管理
1、 passwd:
[root@localhost home]# passwd ##修改当前用户密码
root用户在修改密码时只需要输入两次新密码,而普通用户需要输入当前密码和2次新密码,root用户还可以修改普通用户密码
注意:在修改密码时最好使用不少于8位的无序数字字母符号的组合,普通用户设定的新密码若不符合要求,则修改不成功,而root用户只会提示密码长度过短,但仍可以修改成功。
2、修改用户认证信息的两种命令: <passwd> 空格<参数>空格<username>
passwd参数 | 作用 |
---|---|
-d | 关闭密码认证功能,登录时不用输密码,只有root用户有此权限 |
-l | 锁定密码,禁止登录 |
-u | 解锁账户 |
-e | 设定账号的密码期满,普通用户在下一次登录时需修改密码 |
-x | 密码最长有效期 |
-n | 密码最短有效期 |
-w | 密码到期前警告 |
-i | 密码非活跃天数 |
-S | 查看密码状态 |
<chage> 空格 <参数> 空格 <username>
chage参数 | 作用 |
---|---|
-d | 设定上次修改密码的时间 |
-E | 设定账号的到期日 |
-I | 密码的非活跃天数 |
-m | 密码最短有效期 |
-M | 密码最长有效期 |
-W | 密码到期前警告 |
-l | 列出当前的设置 |
3、示例:
同样,我们在做这个实验之前可以建立一个监控,实时查看用户的认证信息
[root@localhost home]#watch -n 1 tail -n 3 /etc/shadow
①:修改student用户的密码最短有效期为3天,最长有效期为40,密码到期前警告为3天,非活跃天数为1天。
下图中18269为1970年1月1日到上次修改密码的天数
②:执行passwd -e student ,将密码的最近一次修改时间清零,强制普通用户在下次登录时修改密码
③:用chage命令修改用户的认证信息
10.用户权力的下放
示例:
![](https://i-blog.csdnimg.cn/blog_migrate/9516835fc51d08611ab2b445bb85fade.png)
修改完成后,保存退出,切换到student用户,用sudo 执行用户的创建和删除,此时发现student可以成功执行。
我们还可以修改配置文件,使student创建用户时不用输入密码