目录
用户及用户组存在的意义
用户存在的意义
系统资源是有限的,需要合理分配系统资源。
3A机制:
- 身份(Account)
- 授权(Author)
- 认证(Auth)
3A机制组成系统中最底层的安全架构。
用户组存在的意义
用户组是一个逻辑容器,对用户进行归类和统一授权。
用户组分为两类:初始组和附加族、
用户及用户组在系统中的存在方式
- 计算机对数字敏感 即id
- 人类对字符串敏感 即文字或名称
id <------------------------> 名称
必须要记录到文件当中用户才能存在
用户就是/etc/passwd文件中的一行字符
用户组的存在方式就是 /etc/passwd 文件中的一行字符
用户切换
用户查看
whoami #查看当前用户
id #查看用户id信息
id -u #查看用户的用户id
id -g #查看用户主组id
id -G #查看用户所有组的id
id -n #显示名称,不能单独使用,需要和其他参数一起配合使用
用户id范围:
0-65535
0: #超级用户ID
1-999: #系统自用ID
1000-65535 #用户级ID
#以上ID设定规则都被记录在/etc/login.defs
将参数合并与单独显示的作用相同
-n参数不能单独使用
用户切换
图形切换:
图形切换浪费资源且速度很慢
gnome-session-quit --force 强制登出
命令切换:
su - username #切换到username并切换到用户环境下
username 如果root---->commonuser不需要密码
commonuser---->root需要密码
commonuser---->commonuser需要密码
su username #切换到用户,但是还是当前的环境下
注意:在做用户切换时当使用完毕用户身份及时使用exit命令退出,不要在一个shell中反复执行su命令,否则会造成环境错乱
su命令有无- 的区别:-代笔进入该用户的家目录环境,没有的话则会进入相应用户的当前目录中,使得环境错乱
实例:
在root用户下可以打开gedit
两次切换用户到root时发现gedit命令因为连接拒绝无法执行
原因分析:
ps axu查看进程信息发现,在从westos用户切换到root用户时执行的命令需要先通过上层的westos用户才能执行,但gedit命令westos用户无法执行,所以导致即使在root用户下也无法执行。
祸根:没有Ctrl+d退出当前用户
注意:
每切换一次用户就会增加一个bahs进程,即会占用系统资源,所以每次切换用户完毕后应及时Ctrl+d退出当前用户
用户涉及到的系统配置文件
文件名称 | 目录 | 内容 |
用户身份信息文件 | /etc/passwd | 包括用户名称,用户密码,用户ID,用户主组ID,用户说明,用户家目录,用户默认shell |
组身份信息文件 | /etc/group | 包括组名称,组密码,组ID,组的附加成员 |
用户环境配置文件模板 | /etc/skel/.* | - |
用户认证信息文件 | /etc/shadow | 用户密码 |
用户家目录 | /home/username | - |
用户邮箱文件 | /var/spool/mail/username | - |
/etc/passwd
/sbin/nolgin是指用户使用shell时是免密登陆
/bin/bash
用户和用户组建立及删除
监控用户及用户组建立删除的命令
监控的作用:使得命令的效果可视化
watch -n 1 "tail -n 4 /etc/passwd /etc/group"
每隔一秒执行一次“”中的命令
Crtl + c退出监控界面
用户及用户组的建立
useradd Donnie #建立名为Donnie的用户
useradd -u id Donnie #建立指定用户ID的用户Donnie
useradd -g id Donnie #建立指定主组ID的用户Donnie
useradd -G id Donnie #建立指定附加组ID的用户Donnie
useradd -M Donnie #建立用户Donnie时不建立家目录
useradd xxxxx Donnie #建立指定用户说明xxxxxx的用户Donnie
useradd -s 指定目录 Donnie #建立指定shell的用户Donnie
groupadd Jobbin #建立组名为Jobbin的主组
groupadd -g id Jobbin #建立指定ID的主组Jobbin
创建用户并设置其组的时候,该组必须存在才能添加
同样附加组必须存在才能将其作为新用户的附加组
添加组并设置组的id
系统自用账号,不对外开放交互界面
/sbin/nologin/
用户及用户组的删除
userdel -r Donnie #删除名为Donnie的用户(同时删除他的用户和组)
groupdel Jobbin #删除名为Jobbin的用户组
用户和用户组的信息管理
修改用户信息
usermod -l westos Donnie #修改Donnie的名称为westos
usermod -u id Donnie #修改Donnie的用户ID
usermod -g id Donnie #修改Donnie的主组
usermod -G id Donnie #修改Donnie的附加组
usermod -aG id Donnie #添加Donnie的附加组
usermod -c xxxxxx Donnie #更改用户说明
usermod -d /xx/xxx Donnie #更改家目录指向
uerrmod -s xxxxx Donnie #更改默认shell
usermod -L Donnie #冻结Donnie账号
usermod -U Donnie #解锁Donnie
修改用户组信息
groupmod -g id Jobbin #修改Jobbin的用户组ID
注意:这里的id应该是不存在的
用户认证信息管理
/etc/shadow
用户名称:用户密码的加密字符;用户密码最后一次被修改的时间;密码左端有效期;密码最长有效期;密码过期前警告期:账号非活跃期:账号到期时间:用户自定义
passwd -S Jobbin #查看密码状态
passwd Jobbin #修改用户Jobbin的密码,只有超级用户可以
echo 123 | passwd --stdin Jobbin
passwd -l Jobbin #冻结账号认证
passwd -u Jobbin #解锁账号认证
passwd -d Jobbin #删除密码
passwd -e Jobbin #修改默认使用时间
chafe -d 0 Jobbin #账号必须修改密码才能登录系统
passwd -n 1 Jobbin #密码最短有效期
chage -m 1 Jobbin #修改密码最短有效期
passwd -x 40 Jobbin #用户必须更新密码否则会被冻结
chage -M 30 Jobbin #密码过期警告
passwd -w Jobbin #账号过期前警告时间
chage -W 1 Jobbin #修改账号过期前警告时间
passwd -i 2 Jobbin #账号认证最大时间超过后还能使用多长时间
chage -I 1 Jobbin #修改账号认证最大时间超过后还能使用多长时间
chage -E "yyyymmdd" Jobbin #账号冻结时间
用户权利下放
在系统中普通用户时无法执行系统管理命令,如果需要普通用户执行系统管理操作那么需要超级用户来授权。
普通用户授权方式:使用“sudo”作用:可以使普通用户使用指定的用户身份运行命令
授权方法:
visudo:此命令作用是编辑/etc/sudoers并提供语法检测,而vim不会提供语法检测,如果有错误会导致文件出错,权力下放失败
出错时会显示:
此时按下e表示继续编辑
在文件的100行左右
:100跳转到文件的第100行
实例:想要在bing用户下使用useradd命令
1、确定用户想要执行命令的主机的主机名称:hostname
2、确定该命令的位置:which useradd
3、使用visudo将权力写进文件中
注:
a)、后续需要再添加命令,再第一个命令位置后+,和space空格即可,再多的命令以此类推
b)、后续需要让该用户免密执行命令可在命令的位置前添加NOPASSWD: 空格(后期执行命令则不会再输入密码)
该行表示的是: bing用户可以在主机vm1中以root用户身份执行useradd命令
4、读取visudo文件中权力下放的内容并使其生效
第一次登陆为了安全起见,需要输入该用户(bing)的密码,再次使用该命令则不用再输入密码了
测试: 用户test创建成功!