一、用户及用户组存在的意义
-
用户存在的意义
系统中每个文件归一个特定的用户所有,对文件和目录的访问受到用户的限制。如果没有用户系统的文件和目录的访问将会杂乱无章,随着这些杂乱无章的访问,系统的安全将会受到很大威胁。所以设置用户可以维护系统的安全。用户概念在系统中是安全机制的一部分。
1 | 身份 | account |
2 | 授权 | author |
3 | 认证 | auth |
3A机制,3A机制组成系统中最底层的安全架构
-
用户组存在的意义
用户组是一个逻辑容器,对用户进行归类和统一授权。用户组分为主组和附加族。
主组:每个用户只有一个主组;通常用户创建的新文件只归主组所有,其他组的权限需要设置;一般情况下,新建用户的主组名称与其用户名称相同,用户是此用户专有组的唯一成员。
附加组:用户可以有0个或多个附加组。可以通过设置权限达到共享和开放权力的目的,方便系统的管理。
二、用户及用户组在系统中的存在方式
不论是用户还是用户组都要记录到文件中才能生效
用户就是/etc/passwd文件中的一行字符
用户组存在的方式就是/etc/group 文件中的一行字符
密码是/etc/shadow 文件中的一行字符
三、用户切换
-
用户查看
whoami ##查看当前用户
命令 | 含义 |
id | 查看当前用户信息 |
id -u westos | 查看用户的用户id |
id -g westos | 查看用户主组id |
id -G westos | 查看用户所有的组的id |
id -Gn westos | 显示所有组id的名称 |
id -gn westos | 显示主组id的名称 |
id -un westos | 显示用户id的名称 |
注:查看用户id
id 用户名
id -a 查看当前用户id
用户id范围:
0-65535
0: ##Linux超级用户ID
1-999: ##Linux系统自用ID
1000-65535: ##用户级ID
##以上ID设定规则都被记录在/etc/login.defs
-
用户切换
su - username:
##如果root ----> commonuser 不需要后者密码
##commonuser ----> root 需要密码
##commonuser ----> commonuser 需要密码
##注意:在做用户切换时当使用完毕用户身份及时退出
##不要在一个shell中反复执行su命令,执行一次就exit退出
##在一个shell中反复执行su命令会导致环境错乱
四、用户涉及到的系统配置文件
/etc/passwd ##用户身份信息文件
##用户名称:用户密码:用户id:用户组id:用户说明:用户家目录:用户默认shell
/etc/group ##组身份信息文件
##组名称:组密码:组id:组的附加成员
/etc/skel/.* ##用户环境配置文件模板
/etc/shadow ##用户认证信息文件
/home/username ##用户家目录
/var/spool/mail/username ##用户邮箱文件
五、用户和用户组的建立与删除
监控用户管理过程建立的命令
watch -n 1 "tail -n 3 /etc/passwd /etc/group;echo @@@@;ls -l /home"
##每秒钟执行一次,ctrl+c 退出
其他命令:
useradd(del) username 用户建立/删除
userdel -r username 用户删除 -r 删除用户的系统配置文件
useradd -u id username uid 2**16=0-65535
##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
groupadd groupname ##组建立
groupadd -g id groupname ##指定组的建立
groupdel groupname ##组删除
六、用户和用户组的信息管理
usermod -l #更改用户名称
usermod -u #更改用户id
usermod -g #更改主组id
usermod -G #更改用户附加组身份
usermod -aG #添加用户附加组身份
usermod -c #更改用户说明
usermod -d #更改家目录指向
usermod -md #更改家目录指向同时更改家目录名称
usermod -s #更改默认shell
usermod -L #冻结账号
usermod -U #解锁
groupmod -g #更改用户组id
具体操作:
七、用户认证信息管理
-
/etc/shadow 文件内容说明
##用户名称:用户密码的加密字符:用户密码最后一次被修改时间:密码最短有效期:密码最长有效期:密码过期前警告期:账号非活跃期:账号到期时间:用户自定义(未使用)
watch -n 1 "tail -n 3 /etc/shadow ; echo @@@@ ; passwd -S lee" ##密码监控
-
用户名称:passwd -S lee ##查看密码状态
- 用户加密字符:更改密码
passwd lee ##只有root可以执行 “echo 123 | passwd --stdin lee”
passwd ##普通用户改密码
Changing password for user lee.
Current password: #输入原始密码
New password: ##输入新密码(8位以上无序数字+无序字母组合)
Retype new password: ##重复输入
passwd: all authentication tokens updated successfully.
- 冻结账号与解锁账号
passwd -l lee ##冻结账号认证,-L也表示冻结账号
passwd -u lee ##解锁账号认证,-U也表示解除冻结账号
passwd -d lee ##密码删除
- 其他命令:
##密码使用天数(从1970-1-1算其到今天的时间)
passwd -e lee ##修改默认使用时间为0
chage -d 0 lee ##账号必须改密码才能登陆系统
-d 18656 lee ##修改最后一次被更改密码的时间
passwd -n 1 lee ##密码最短有效期修改 lee在1天内不能改密码
chage -m 2 lee ##lee在2天内不能改密码
passwd -x 30 lee #密码最长有效期修改
chage -M 30 lee ##30天内lee用户必须更新密码否则会被冻结
passwd -w 2 lee ##账号过期前警告时间
chage -W 1 lee
passwd -i 2 lee #认证非活跃天数更改
chage -I 1 lee ##账号认证最大时间超过后还能用多久
chage -E "2020-05-11" ##到2020-5-11这天账号会被冻结
密码到期会出现以下情况:
八、用户权力的下放
在系统中普通用户时无法执行系统管理命令的,如果需要普通用户执行系统管理动作那么需要root用户来进行授权。
普通用户授权方式 “sudo”
作用:可以使普通用户使用指定的用户身份去运行命令
授权方法: visudo ##此命令作用是编辑/etc/sudoers并提供语法检测
在文件的100行左右 ##代码规范性
username hostname=(newusername) [NOPASSWD:] /command, /command1
lee westoslinux.westos.com=(root) /usr/sbin/useradd , /usr/sbin/userdel
westos westoslinux.wesots.org=(root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/userdel
测试:
su - lee
sudo useradd test ##在lee第一次使用sudo命令时需要输入lee密码
exit ##退出lee
su - lee1
sudo userdel -r gyy ##westos可以免密执行userdel 命令
##练习汇总##
在系统中完成以下用户操作
1.建立用户组shengchan,caiwu,jishu并满足以下要求:
*shengcan组id 为8000,caiwu组id 为8001,jishu组id 为8002
2.建立westoslee,linux,lee,westosamdin用户完成以下要求:
*westoslee用户的附加组为shengchan和jishu
*lee主组为caiwu附加组为jishu,lee的uid和gid必须一致。
*linux为系统账号不能直接被操作者使用。
*westosamdin用户不属于以上三个部门,但是可以在系统中自由管理用户。
3.以上用户密码均为westoslee,并要求用户首次登陆时强制修改密码,设定以上用户密码必须在30天内进行修改,并在过期前2天发出警告。