linux用户及组管理
1、前序
对有限区域内,有限资源的合规使用的3A标准
Authentication:认证
相当于拿到了一个登录linux的账号,这叫认证了,但是这不表明拿到一个账号你就能为所欲为,还需要进行授权
Authorization:授权
任何一个系统,认证完以后都有系统指派的一些权限供这个账号使用。linux怎么完成用户输入账号密码认证成功后怎么能够完成资源获取呢?事实上,linux的哲学思想是一切皆文件,当用户成功登陆linux主机,一切以这个用户为属主的文件,他应该就具备属主访问的权限
组是能够将用户和权限建立关系的一个容器,他可以接受授权,同时也可以接受用户的加入。从而能够将权限与多个用户建立起相应关系。
Accounting:审计
Audition
linux用户分类:用户具有用户名+UID组成
管理员:root UID为0
普通用户:USERNAME UID范围1-65535
系统用户:UID范围是1-499
登录用户:UID安慰是500以上
这两者的区别:系统用户主要为系统的守护类进程获取系统资源而完成权限分配。登录用户主要是为了交互式登录
linux的组分类:组由组名+GID组成,组是一个容器,组主要作用:将多个用户与某一类权限建立关系,实现权限指派的另一种方式
管理员组:组名为root 组GID0
普通组:
系统组:组GID范围1-499
普通组:组GID范围500以上
linux安全上下文
我们对计算机的操作,其实是运行程序来完成的,我们叫做进程。进程的运行是以发起者的身份运行,一个发起者具有什么权限,那么他执行的命令就具有什么权限,即发起者的权限决定了命令的权限
linux组的类别:(站在用户所属组的类别来讲)
用户基本组,也称为主组
组名通与用户名相同,且仅包含一个用户,成为私有组
用户的附加组,也称为额外组
linux用户和组相关的配置文件
/etc/passwd:保存用户及其相关属性信息(名称、UID、基本组ID等等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
/etc/passwd内容解释
name:password:UID:GID:GECOS:DIRECTORY:shell 这段内容对应为的解释:
用户名:密码:UID:GID:用户的完整信息(用户电话、地址等信息):主目录:默认shell
/etc/group内容解释
group_name:password:GID:User_list这段内容解释:
组名:组密码:GID:以当前组委附加组的用户列表(每个以逗号分隔)
/etc/shadow内容解释
jerry:$6$rVNi9i5.$1yyPBDswYy1vw2eyHOq5wnmQU6wXo56bowYbOgoo/ZReAtuZXnekl4oWE1l3OGnEsBzq.yYfPTU8Ci7QXIuMl1:17959:0:99999:7:::
用户名:加密了的密码:最近一次更改密码的日期:密码的最小使用期限:密码的最大使用期限:密码的警告时间段:密码宽限期:账号的过期日期
注意:最近一次更改密码的日期是一个相对时长,是相对于linux诞生到你上一次修改密码的天数
密码的最小使用期限如果为0,表示你可以改了密码再改密码
密码的最大使用期限如果99999,表示你的账户永久有效
加密机制(明文转化为密文)
单向加密:提取数据指纹(指纹叫做微特征码,只要有一个改变,那么整个加密后的字符串发生重大改变,这个效应也叫雪崩效应。但是这些算法加密不同长度的明文,它的输出结果长度是一样的,这叫定长输出)
linux上的加密算法
md5:message digest中文名叫消息摘要,输出结果是128bit
sha1:secure hash algorihm 中文叫安全的hash算法,输出结果是160bit
sha224:secure hash algorihm 中文叫安全的hash算法,输出结果是224bit
sha386:secure hash algorihm 中文叫安全的hash算法,输出结果是386bit
sha512:secure hash algorihm 中文叫安全的hash算法,输出结果是512bit
linux各个算法对应的命令
md5sum
ha1sum
sha224sum
sha256sum
sha384sum
sha512sum
加密:明文转化为密文
解密:密文转化为明文
关于linux6.7密码内容解释
$6$0TYPpFIXKw/73xmT$Z3N457EIbNjEl9KbiMLl/xSkYNIQOuqPY22myoeKJyWYAhH/bNGj8uLx9SCnOSSB6gvo7r3mCBiNAzF6GvmaC1
这个密码分为三个字段内容,每个字段内容用$符号隔开,第一分字段表示使用的加密方式,6表示使用的sha512算法加密,第二个字段表示为密码添加的杂质。为什么要添加杂质呢?为了避免两个用户输入了同一个密码后加密的内容相同,目的是混淆视听。第三个字段才是真正的密码
密码的复杂性策略
1、使用数字、大小写字母、及特殊字母至少3种
2、足够长
3、使用随机密码
4、定期更换密码,不使用最近曾使用过的密码
2、useradd命令
基本介绍
增加一个用户或者更新一个用户的信息
基本语法
useradd [options] LOGIN
useradd -D
useradd -D [options]
常用选项
-u UID:手动指定用户的UID。在linux6.x中UID最小不低于500,最大不超过60000,在linux7.x中UID最小不低于1000,最大不超过60000。而这个最小最大不超过那个值是在/etc/login.defs文件中定义的
-g GID|Gname:指明用户所属基本组,-g选项后面可以接组名或者也可以接GID
-c str:指明用户的一些基本的描述,str就表示基本的描述
-d path:指明用户的家目录,path为家目录路径。可以不指定,不指定则为/home+用户名组成家目录,比如,oldboy用户,不指定家目录,则默认是/home/oldboy。
注意:如果这个路径已经存在,即家目录已经存在,那么创建用户指定这个已经存在的目录为家目录时,不会从/etc/skel拷贝任何文件。不拷贝任何文件意味着,当我们使用su命令切换到这个用户上的时候,不能够正常显示,因为这个/etc/skel文件包含一些环境变量值的定义
-s shell:指定用户的默认shell
-m:创建用户的家目录
-M:不创建用户的家目录
-r:创建系统用户
CentOS6.x的系统用户UID小于500
CentOS7.x的系统用户UID小于1000
-p password:创建用户并且给定密码(不推荐使用,因为在历史记录中间存在这条记录)
-G GID|Gname,GID|Gname,GID|Gname...:指定用户的附加组,可以指定多个,每个用逗号隔开,但是这些组必须事先存在
-f num:修改账户彻底禁用的宽限时间
-e datetime:修改账户过期时间
-D:修改创建用户使用的默认值,创建用户使用的默认值定义在/etc/default/useradd文件中,修改也是修改这个文件的值。但是这个选项要结合其它选项一起使用,如下:
-s shell:修改默认shell
-f num:修改默认账户过期的宽限时间
-e num:修改默认账户过期时间
-b path:修改默认家目录
-g Gname:修改默认用户的基本组
3、groupadd命令
基本介绍
创建一个组
基本语法
groupadd [options] groupName
常用选项
-g num:手动指定组的GID
-r:创建一个系统组
CentOS6.x的系统组GID小于500
CentOS7.x的系统组GID小于1000
4、id命令
基本介绍
打印有效用户或者组的id
基本语法
id [OPTION]... [USERNAME]
常用选项
-u:显示用户的UID
-g:显示用户的基本组
-G:显示用户所有的组包括基本组和附加组
-n:显示组或者用户的名字,这个选项要结合-u、-g、-G选项使用
5、su命令
基本介绍
切换用户或者以其他用户身份执行命令
基本语法
su [OPTION]... [-] [USER [ARG]...]
常用选项
-c COMMAND:切换身份执行命令。命令执行结束回到原来的用户下
案例演示
su -c “cat /etc/fstab” - odloy
-l:切换登录的意思,这个选项与 -、--login用法一致
su - oldboy 与 su -l oldboy 与 su --login oldboy是一样的
-s shell:切换到目标用户以后使用指定的shell,而不是使用目标用户的默认shell
su命令切换用户的方式
su username:非登录式切换,不会加载目标用户即这里的username的配置文件
su - username:登录式切换,会加载目标用户即这里的username的配置文件,这个也叫完全切换
注意:管理员切换至其他用户无需密码,其他用户切换时需要密码
6、usermod命令
基本介绍
修改用户账户信息
基本语法
usermod [options] LOGIN
常用选项
-u New_UID:修改原来的UID,修改为New_UID
-g New_GID|New_name:修改原来的基本组,修改为New_GID或者New_name
-G Group1[,Group2,.....[,Groupn]]:修改附加组,原来的附加组会被新的附加组覆盖,若想保留原来的附加组联合使用-a选项
-s shell:修改用户的默认shell
-c new_comment:修改用户的注释或者基本描述信息
-e date:修改账户过期时间,date的格式YYYY-MM-DD,它会自动换算
-f days:修改账户警用的宽限时间
-d path:修改用户的家目录为path
注意:默认原来的家目录下面的文件不会同时移动至新的家目录下。如果要移动,则使用-m选项
-l login_name:修改的登录名
-L:lock锁定指定用户
这个有什么现象呢?
当我们锁定一个用户时,会在/etc/shadow文件中的密码字段前面加一个感叹号。锁定以后的用户没法切换也没法登录,但是管理员可以切换过去
-U:unlock解除锁定
7、passwd命令
基本介绍
给用户添加密码
基本语法
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n min-
days] [-x maxdays] [-w warndays] [-i inactive-
days] [-S] [--stdin] [username]
常用选项
-l:锁定指定用户
-u:解锁指定用户
-n days:你的密码最短使用期限
-x days:你的密码最大使用期限
案例演示
[root@oldboy ~]# tail -n 1 /etc/shadow www:!!:17959:0:99999:7::: [root@oldboy ~]# passwd -x 10 www Adjusting aging data for user www. passwd: Success [root@oldboy ~]# tail -n 1 /etc/shadow www:!!:17959:0:10:7:::
-e days:设置密码过期时间
-d:删除密码
--stdin:从标准输入接受用户密码
案例演示
[root@oldboy ~]# echo 123|passwd --stdin www Changing password for user www. passwd: all authentication tokens updated successfully.
使用注意
如果一个账户没有设置密码,那么他自己没法改密码,只能通过管理员添加密码后你在修改。同时如果普通用户设置密码没有满足linux设置密码的策略,那么不会设置成功
未完,待续....