1.用户及用户组存在的意义
1)用户存在的意义
系统资源是有限的,那么如何合理分配系统资源
系统底层安全的3A机制:
身份 account
授权 author
认证 auth
只有有用户身份才能对用户身份进行资源分配和授权,这样才能保证系统资源得到合理分配,从而确保系统稳定
2)用户组存在的意义
用户组是一个逻辑容器
对用户进行归类和统一授权
2.用户及用户组在系统中的存在方式
电脑对数字敏感 id
人类对字符串敏感 名称
id <---------> 名称 必须要记录到文件当中用户才能存在
用户就是/etc/passwd文件中的一行字符
3.用户切换
1)用户查看
whoami ##查看当前用户
id ##查看用户id信息
id -u ##查看用户的用户id
id -g ##查看用户主组id
id -G ##查看用户所有组的id
id -n ##显示名称
用户id范围:
0-65535
0: ##Linux超级用户id
1-999: ##Linux系统自用id
1000-65535 ##用户级id
##以上id设定规则都被记录在/etc/login.defs
2)用户切换
su - username
注意:切换用户后只有在当前的shell中你的用户身份得到切换,如果登陆图形,其他位置仍然使用的是登陆系统的用户身份
-
##切换用户的同时切换当前用户所在系统的环境
username
##root -----> commonuser 不需要后者密码
##commonuser -----> root 需要密码
##commonuser -----> commonuser 需要密码
注意:
#在做用户切换时当使用完毕用户身份及时退出,未退出不要直接关闭shell
#不要在一个shell中反复执行su命令
#这样会导致系统开启多个shell,造成资源浪费
#还会导致环境错乱
4.用户涉及到的系统配置文件
/etc/passwd ##用户身份信息文件
##用户名称:用户密码:用户id:用户主组id:用户说明:用户家目录:用户默认shell
/etc/group ##组身份信息文件
##组名称:组密码:组id:组的附加成员
/etc/skel/.* ##用户环境配置文件模板
/etc/shadow ##用户认证信息文件
/home/username ##用户家目录
/var/spool/mail/username ##用户邮箱文件
5.用户和用户组建立及删除
监控用户建立的命令
watch -n 1 "tail -n 4 /etc/passwd /etc/group;echo =========;ls -l /home "
useradd username ##用户建立
useradd -u id username ##uid
##0 表示超级用户
##1-200 系统预留id
##201-999 系统用户
##1000-60000 用户级用户
##/etc/login.defs 记录用户建立的默认规则
useradd -g id username
## 主组id,该组必须是已经存在的组
useradd -G id username
##附加组id,必须是已经存在的组
useradd -d dir username
##指定用户家目录
useradd -M username
##建立用户时不建立家目录
useradd -c word username
##指定用户说明
useradd -s shell username
##指定用shell,默认/bin/bash
##/sbin/nologin 非交互式shell,系统账号使用
userdel -r username ##用户删除 -r 删除用户的配置文件
#若不加-r 则只删除用户无法删除用户家目录
groupadd groupname ##组建立
groupadd -g id groupname ##指定组名称
groupdel groupname ##组删除
6.用户和用户组的信息管理
usermod
usermod -l newname username #更改用户名称
usermod -u newid username #更改用户id
usermod -g newgroupid username #更改主组id
usermod -G id username #更改用户附加组身份
usermod -aG id username #添加用户附加组身份
usermod -G "" username #删除用户附加组
usermod -c "word" username #更改用户说明
usermod -d dir username #更改家目录指向
usermod -md dir username #更改家目录指向同时更改家目录名称
usermod -s shell username #更改默认shell
-L #冻结账号
-U #解锁
groupmod -g id groupname #更改用户组id
7.用户认证信息管理
/etc/shadow 文件内容说明
此时更改监控命令为 watch -n 1 tail -n 3 /etc/shadow
#用户名称:用户密码的加密字符:用户密码最后一次被修改时间:密码最短有效期:密码最长有效期:密码过期前警告期:账号非活跃期:账号到期时间:用户自定义(未使用)
密码最后一次被修改时间:从1970年1月1号算起的天数
1)用户名称
passwd -S username ##查看密码状态
2)用户加密字符
#更改密码
passwd username
##只有root可以执行“echo 123 | passwd --stdin username”非交互式修改
passwd
##普通用户改密码,不能指定用户名称,只能修改自己密码
Changing passwd for user username.
Current passwd: #输入原始密码
New passwd: #输入新密码(8位以上无序数字+无序字母组合)
Retype new passwd: #重复输入
passwd:all authentication tokens updated successfully.
#冻结认证
passwd -l username
冻结账号认证
passwd -u username
解锁账号认证
#密码删除
passwd -d username
#密码使用天数
从1970-1-1算起到今天的时间
passwd -e username
##修改默认使用时间为0,登录用户会被强制修改密码
chage -d 0 username
##账号必须修改密码才能登陆系统
#密码最短有效期
passwd -n 1 username
chage -m 1 username
#在一天内不能修改密码
#密码最长有效期
passwd -x 40 username
chage -M 40 username
##40天内必须更新密码否则会被冻结
#密码过期警告
passwd -w 1 username
chage -W 1 username
#账号过期前1天警告
#认证非活跃天数
passwd -i 2 username
chage -I 2 username
#账号认证最大时间超过后还能用多久
用命令更改相应参数,监控内容也随之改变
#账号认证到期时间
chage -E "YYYY-MM-DD" username
#到期账号将会被冻结
chage命令不能更改密码
8.用户权力下放
在系统中普通用户无法执行系统管理命令,如果需要普通用户执行系统管理动作那么需要root用户来进行授权
普通用户授权方式“sudo”
作用:可以使普通用户使用指定的用户身份运行命令
授权方法:
visudo
##此命令作用是编辑/etc/sudoers并提供语法检测
在文件的100行左右,输入:100查找
##代码规范性
username hostname=(newusername) [NOPASSWD:] /command, /command1
#westos用户在westos.westos.org主机=(超级用户身份) 执行useradd命令
westos westos.westos.org=(root) /usr/sbin/useradd
#westos用户在westos.westos.org主机=(超级用户身份) 免密执行useradd和userdel命令
westos westos.westos.org=(root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/userdel