本章内容
Linux的安全模型
用户和组
用户和组管理命令
文件权限
默认权限
特殊权限
ACL访问控制
一:3A认证
Authentication :认证
Authorization :授权
Audition 审计
Authentication(认证):验证用户的身份(账号和密码)与可使用的网络等一系列服务
Authorization (授权):依据认证结果开放网络等各种服务给用户,对用户的资源访问权限进行集中控制。
Audition (审计):将用户所有的操作日志集中记录管理和分析,不仅可以对用户行为进行监控,并且可以通过集中的审计数据进行数据挖掘,以便于事后的安全事故责任的认定。
形象的说就是用户通过用户名和密码认证,认证后获得令牌token(identity),令牌是已经被授权过的“身份卡”,拥有令牌之后就可以访问或者操作系统了,但是活动内容是被授权时赋予的权限限制的,规定了你能做什么;而审计是一种监督管控的措施,它保留日志等一切有关系统、用户活动的事物,可以管控用户是否有非正常操作等不合理的地方。
而linux系统在此过程中,用到的有:
用户名(USERID即UID)
密码(passwd)
主组(GID)
附加组(辅助组)(other)
文件和目录权限
ACL访问控制列表
通过上述各项,对用户的系统活动进行初步的管理
二、用户和组
1、用户user和用户ID(UID)
在linux系统中每一个用户都有自己用户名,但是linux在识别时,并不是识别我们登陆时键入的用户名,而是用户名所对应的UID,而UID才是真正的身份证号码,就好比我们的身份证一样,最后用于核实身份的是身份证号码就是这个道理。因此用户名与用户ID(UID)的关系如下
用户名:类此姓名 方便用户记忆操作登录
用户ID:类此身份证号码 系统识别身份的真正依据
比如我们在系统正常新建一个用户User1,指定UID号码是1111,然后
在linux中用户(UESRNAME和UID)分为
管理用户(管理员root UID=0)
普通用户(UID=1-65535)
系统用户(如nologin)CentOS6.8默认UID=1-499;CentOS7.2默认UID=1-999
作用:对为了能够让后台进程或服务类进程以非管理员的身份运行,通常系统或应用程序需要为此创建多个普通用户,这类用户从不用登录系统,仅仅用来让其他进程以它的身份运行,从而仅能获取普通权限的;用户自己也可以常见系统用户。
登录交互用户(我们日常登陆工作的账户))CentOS6.8默认UID=500-60000;CentOS7.2默认
UID=1000-60000
作用:我们日常工作所用的交互账户,也是我们正常推荐所用的账户(root权限太大,操作有风险),有普通的权限,能够正常操作维护系统。
OK,我们来看一下示例,来看看UID如何影响用户名(账号)的
示例(1)
我们正常新建一个普通登录用户user1,并且指定UID=1111
useradd -u 1111 user1
然后在/etc/passwd中查看user1用户信息
getent passwd user1
查看普通用户家目录/home下的用户家目录列表存在的user1家目录的信息
ll /home
然后删除user1账户,但是保留家目录
userdel user1
查看普通用户家目录/home下的用户家目录列表存在的user1家目录的信息的变化
ll /home
添加用户user2,但是指定其uid=1111,与原来的user1相同
useradd -u 1111 user2
查看/etc/passwd中查看用户信息变化以及家目录中的变化
getent passwd ll /home
示例2
作此示例请做好备份快照
我们用nano或vim文本编辑工具编辑修改/etc/passwd中的root uid=2222,并将user2的 uid=0
首先我们先要激活user2的密码,否则无法登陆
passwd user2
然后编辑配置/etc/passwd的信息,将root uid改为2222 将user2 uid改为0
vim /etc/passwd
¥
我们以前提到过管理员的命令提示符默认是 # ,而普通用户为 $
然后我们重新登录一下系统,系统会重新读取/etc/passwd文件
exit
重新登录
登录user2会发现命令提示符变为 # 而默认管理员的命令提示符就是 # 而且切换用户root并不需要密码
而反观root用户原先只有管理员能够查看的/etc/shadow文件竟然不能访问查看,而且命令提示符号变为默认的普通用户 $ ;切换回user2账号竟然需要密码!而且能够查看/etc/shadow文件了
由此我们可以看出系统中的识别机制:是以用户ID即UID为依据的,并不是我们所用的用户名。
所以linux中的uid可以决定用户的身份,并影响其所属关系及权限。
注意:以上恢复原状,把root和user2的uid改回原值即可
用户uid是可以重复的(用命令创建和修改),但是一般不建议如此做
/etc/passwd 是全局配置文件之一 是数据库文件 记录的是用户账户的相关信息,可以用
man 5 passwd
了解相关参数的含义
2、密码
账户密码是用户登录认证的关键,我们在这里初步了解一下linux中用户密码,在系统中存储位置,和密码组成以及加密算法
在linux密码在早期版本中存储在数据库文件/etc/passwd中的第二个参数位置上,但是后期存储在/etc/shadow中,从现在的机制来说了,由于系统运作所需,passwd是所有用户都可以查看的,而shadow文件只能是root管理员查看来看,是为了安全因素所以给转移存储位置了,如果想要回到原来的存储模式,方法如下:
pwunconv #关闭影子密码,是密码重新存储到/etc/passwd,而非/etc/shadow中 pwconv #打开影子密码
上图我们可以看到,当关闭影子密码后,密码已经存储得到/etc/passwd中了,而且我们会发现/etc/shadowwen文件没有了!!!重现开启回到系统默认的影子密码模式,/etc/shadow文件又有了,密码又不存储在/etc/passwd中了,而是又存储到/etc/shadow中了
密码的组成:在系统中正常的密码组成由三部分构成
第一个$后是加密算法,数字与加密算法对应关系如下:
1:MD5 128位
2:sha1 160位
3:sha224 224位
4:sha256 256位
5:sha384 384位
6:sha512 512位
也因此我们可以看出上图user2的加密算法是sha512的
而早期密码算法多用MD5和sha1,位数没有上图显示的那么长,在当时虽然已经有更复杂的密码,但是考虑到加密和解密验证,都是要消耗系统资源的,同时还没有人能破解这种加密算法,所以为了让系统系统资源利用率更高,而没有使用更复杂算法;但是,在2005年由我国数学家王小云女博士!女博士!女博士!成功破解,也因此导致其后所有重要领域的密码加密算法改变。
天朝威武霸气,女博士天下无敌!!!!
加密机制:
加密:明文--> 密文
解密:密文--> 明文
单向加密:相同算法定长输出,获得密文不可逆推出原始数据
哈希算法,原文不同,密文必不同
雪崩效应:初始条件的微小改变,引起结果的巨大改变
更改加密算法 authconfig --passalgo=sha256 -- update
注意:
此命令是修改/etc/login.defs文件中的参数来实现的,所以对所有人有效,已经创建的用户加密模式不变,但是修改会变化,新建用户则使用修改后的加密算法,且重新登录也依然有效
第二$后是salt(盐):可以抽象理解为调料的作用,就是相同的密码,加入salt产生的随机数之后依据雪崩效应,产生的密文就不一样,这样就避免如果别人的密码密文与自己的一样,继而推算我们的密码。
第三$之后才是真正的密码密文,很根据加密算法位数的不同,而呈现不同长度,但是在相同算法下,不同长度的密码,密码密文长度相同,是等长的,所以,密码密文的长度由密码的加密算法决定。
3、组(主组、附加组)
在linux系统中用户的组我们可以抽象理解为所属部门,主组就是主职部门(也就是我们的关系所在地),而附加组则是兼职部门(比如技术部的主职技术员,本身又兼职公关部的形象大使),