文章目录
用户的定义
用户和组分别是什么
关于用户:
- 用户是操作者在系统中的身份。
- 用户是系统最底层的安全机制的一部分
- 用户在系统中以字符和文件的形式存在
关于组:
在一个系统中许多权限相同的用户就组成了一个组。一个组内可以有多个用户,一个用户也可以加入多个组。它是逻辑的容器。
举例:
比如 有A B C D 4个人 在linux主机上作业, A B C 3个人 在做同一个项目 建了一个文件夹
这个文件只能A B C 3个人进入,不能让其他用户进入 ,所有就出来用户组,
那么那个D 就 是非用户组。
=注意:
Linux系统是多用户多任务。
多任务是指许多工作同时做,当然这是在用户看来,因为时间短,用户无法察觉而已,比如你在运行qq的时候,后台播放网易云音乐听歌软件。(实际是把cpu的时间分成若干小片,然后分给不同的进程按照优先级进行运行,即按照优先级排队占用cpu资源)。
多用户是指同时有多用户登录系统,windows中不可能两个用户同时运行,必须先注销当前用户,才能登录另一个用户,但是unix和linux不同,可以N多用户同时通过不同终端登录,同时使用,也是按照用户优先权进行cpu分配的。
用户和组存在的意义
用户存在的意义:
对于不同用户权力的限制
组存在的意义:
对不同用户进行分类归组,实现对权力的集中管理。
用户和组的分类
用户的分类:
超级用户(root):管理系统中的所有资源
普通用户:
- 系统用户 系统预留的 不能登陆
- 登录用户
组的分类:
-
按照是不是超级用户组分类
超级用户组
普通用户:系统组和登录组 -
按照是不是用户的主组
主组和附加组 -
按照组中有的用户的个
私有组(组名同用户名,且只包含一个用户)
公共组(组内包含了多个用户)
注意:
系统用户存在的意义?
什么是3A机制
- Account 帐号管理 useradd usermod userdel groupadd等
- Authentication 帐号认证
- Authorization 用户授权 passwd chage 等
用户的查看
查看当前用户
whoam i #查看当前用户是什么
查看系统用户
id # 查看指定用户id信息
id -u #查看用户的userid
id -g #查看用户的主组id
id -G # 查看用户的所有组的id
id -n #显示名字而不显示id数字 此参数必须和其他 u g G等配和使用 不可单独使用
图示:
用户的切换
gnome-session-quit -- force # 注销当前用户
su - username # 切换到某个用户
su - # 切换到超级用户
su - - c "命令串" # 仅执行一次root命令
exit # 退出su 环境
图示:
=注意:=
- 切换用户时,需要exit或ctrl+d 否则占用资源 ,可能会且造成身份混乱。
- "-"表示在切换用户时,同时切换用户环境
su - westos 切换/etc/bashrc 和/etc/profile(系统环境配置)(loginshell)
su westos 只切换/etc/bashrc 软件本身的配置 (nologinshell)
图示:
- 高切至低级用户,不需要密码,低至高、平级之间需要密码
用户在系统中的存在方式
/etc/passwd 用户信息文件
用户名称 :密码:uid:gid:说明:家目录:默认shell
说明:默认shell的指定有哪些可以查看系统中/etc/shells文件
/etc/group 用户信息组文件
组的名字:组密码:组id :组成员
/etc/shadow 用户认证信息文件
/etc/skel/.* 用户的骨文件
默认开启shell的配置
/home/username 用户的家目录
图示:
用户的管理
用户的建立和删除
用户信息监控命令
watch -n 1 'tail -n 3 /etc/passwd /etc/group ;ls -l /home '
图示:
用户
useradd 用户名 #建立用户时,读取etc/login.defs文件内容,确定规则
useradd -u 9999 redhat # 建立用户时,指定用户uid
useradd -g 21 redhat #建立用户时,指定用户的初始组id 21用户组必须是存在的
useradd -G 21 redhat #建立用户时,指定用户的附加组id 21用户组必须存在
useradd -c "hi" redhat #建立用户时,指定用户的说明
useradd -d /home/yx/redhat #指定用户的家目录
useradd -s /bin/sh redhat #指定用户的默认shell
userdel 用户名 #删除用户但不删除用户的配置文件
userdel -r 用户名 #删除用户同时删除用户的配置文件
图示:
1.
2.
3.
4.5.
注意:
- 建立的用户名字 不一定和主组名字相同
- root 用户的uid 默认为0
- 系统用户一般为 1-499
- 登录用户500-65530(可登录账号)
- 当删除某个用户时,出现用户不能删除,正在被某个进程使用,则使用pkill -9 -u 用户名,结束进程,-9 表示不可抗击
用户组
groupadd 组名 #建立用户组
groupadd -g 666 redhat #建立用户组并指定用户组的id为666
groupdel 组名 #删除用户组
chagrp redhat /sc #改变用户组
更改用户信息
usermod -l 新名称 原名称(redhat) #更改用户名称
usermod -u 6666 redhat #更改用户uid
usermod -g 21 redhat #更改用户的初始组
usermod -G 21 redhat # 更改用户的附加组
usermod -aG 72 redhat #==添加==用户的附加组
usermod -G "" redhat #删除用户所有附加组的身份
usermod -c "haha" redhat #指定用户说明文字
usermod -d /home/leo redhat #更改用户家目录的指向
usermod -md /home/leo redhat #更改用户家目录
usermod -s /bin/sh redhat #更改用户的shell
usermod -L redhat #冻结用户
usermod -U redhat #解锁用户
图示:
==
使用-aG更改附加组时,原来的附加组不会被删除==
2.
3.
注意:
- -G更改附加组 会删掉原来的组
- 用户家目录不一定真实存在 所以找到找不到不不一定
- -d更改家目录指向时, 具体更改的对不对,不一定 且系统中真实的目录不改
- -md 同时会更改系统中真实存在的目录 (移动目录)
=注意:=
- etc/shells 文件中 两个nologin结尾的shell 不能够提供交互界面给用户 不能登陆系统
用户认证信息
用户认证信息记录在 /etc/shadows 文件中
图示;
一条记录由9列字段组成:
第几列 | 代表含义 | 备注 |
---|---|---|
1 | 用户名称 | |
2 | 用户密码 | 加密字符串,默认采用sha512对称加密 ,加密字符串前出现"!" 证明用户被冻结 "!!"代表强度更强 |
3 | 用户密码最后一次被修改的时间 | 此时间是从1970年1月1日开始计算的累计天数 |
4 | 密码的最短有效期 | 如果此位有设定数字,那么在此数字范围内的天数内不能修改用户密码 |
5 | 密码的最长有效期 | 用户必须在此有效期内更新密码,如果超时账号会被冻结 |
6 | 密码警告期限 | 在过期前指定天数内会发送警告信息给用户 |
7 | 用户非活跃天数 | 此位默认为空,如果设定数值,代表在密码最长有效期过后仍然可以使用的天数 |
8 | 用户到期日 | 默认为空,代表账号一定会被冻结的时间点 |
9 | 用户自定义列 | 目前没有启用 |
用户密码管理
passwd redhat #更改redhat密码
passwd -S redhat #查看用户密码信息
passwd -l redhat #在用户密码前加入" ! ! "
usermod -L redhat #在用户密码前加入" ! "
passwd -u redhat #
usermod -U redhat #在密码不为空时使用
passwd -d redhat #清空westos密码 无密码登录
chage -l redhat #列出该账号的详细密码参数
图示:
1.2.3.4.
5.
6.
注意:
-
超户改密码,没有限制
-
普通用户改密码时
1.必须知道当前用户原始密码
2.密码不能和帐号名称相似
3.密码不能是有序的数字或字母
4.密码个数要大于8 -
在建立系统用户时才会使用 把/etc/shadow 中最后一次修改密码的时间 改为0 再次登陆时,强制改密码
-
加密方式有对称加密和非对称加密等,一般保存在/etc/login/defs文件里
设置用户密码最后一次被修改的时间
passwd -e redhat #改变用户最后一次更改密码时间为0 ,用户再次登陆时,会被强制更改密码
chage -d 0 redhat #同上
图示:
设置用户密码的最短有效期
passwd -n 1 redhat #设置用户在1天之内不能修改密码
chage -m 1 redhat #同上
设置用户密码的最长有效期
passwd -x 20 redhat #用户在20天之内必须修改密码
chage -M 20 redhat
设置用户密码的警告期限
passwd -w 7 redhat #设定密码过期前7天有警告提示
chage -W 7 redhat #同上
设置用户非活跃天数
passwd -i 3 redhat #密码过期后仍登陆系统的天数
chage -I 3 redhat #同上
设置用户到期日
chage -E "2019-12-24" redhat # redhat用户会在2019-12-24被冻结,改了之后不会以日期显示,而是显示距离1970年的天数
图示:
例题解释
解答:
用户权力的下放
1.文件位置
权力下放文件为 /etc/sudoers 直接用vim编辑时,不提供语法检测
可直接在命令行键入visudo 编辑此文件 它提供语法检测
2.下放方式
visudo
专门编辑 /etc/sudoers 文件
由于规范性 一般是在文件100行左右下放权利
用户 主机名称 = (得到的用户身份) 权限命令
3.此时的所有命令必须用sudo来执行
图示:
注意:
- 使用hostname来查看主机名称
- 使用which 命令名字 来查看命令所在的文件
- 使用find -name 文件名 查看某个文件所在的位置
- 使用NOPASSWD:/usr/sbin/useradd实现第一次无密码执行命令
3.使用集合的方式来下放权力