一、Linux用户基本概念
1、 3A认证机制
计算机如何区分不同的使用者呢 ? ---> 用户标识(用户名、GID)、密码;
认证信息:通过比对事先存储的,与登录时提供的信息是否一致
Authentication: 认证机制,通过某种方案来确认用户是其声称的用户,如密码、生物识别等
Authorization: 授权机制, 资源使用级别(Linux只有管理员和普通用户两级分配机制,权限)
Audition: 审计机制,监督权限的使用 ,log审计凭据---额外审计功能SELinuse
2、 用户分类
用户标识: UserID, UID, 16bits 二进制数表示,也就是: 0 - 65535
Linux内核(2.6.x)已经可以支持到2^32 - 1 个标识符。
root : 0
普通用户: 1 - 65535
系统用户: 1-499(CentOS 6) ; 1-999(CentOS 7)
登录用户: 500 - 60000(CentOS 6) ; 1000 - 60000 (CentOS 7)
3、 用户配置文件
(1) 用户信息库: /etc/passwd
格式(七段):account:password:UID:GID:GECOS:directory:shell
account: 用户名
password:占位符x;
UID:用户的ID号
GID:用户所属的主组的ID号;
GECOS:注释信息
directory:用户的家目录;
shell:用户的默认shell,登录时默认shell程序;
(2)密码存储位置: /etc/shadow
格式(九段):用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:过期宽限时间:账号失效日期:保留字段
login name:用户名
encrypted password:经过编码的密码
date of last password change:密码最近一次修改密码的时间
minimum password age:密码最短使用期限
maximum password age:密码最长使用期限:表示两次修改密码的最长间隔。
password warning period:警告时间:表示在密码快要过期之前的多少天开始警告用户修改密码。
password inactivity period:过期宽限时间:表示在密码过期以后,还允许用户登录的时间,只不过在这段时间里登录系统以后就必须要修改密码才能使用系统。
account expiration date:账号失效日期,该账号被禁用
reserved field:保留字段
(3)创建新用户默认属性: /etc/default/useradd
# useradd defaults file GROUP=100 # 创建组 HOME=/home # 默认家目录 INACTIVE=-1 EXPIRE= SHELL=/bin/bash # 默认shell SKEL=/etc/skel # 默认家目录的文件 CREATE_MAIL_SPOOL=yes # 自动创建mail
二、用户组
1. 用户组(用户容器)的分类
组标识:GroupID, GID
16bits二进制数字:0-65535
(1)系统视角:管理员用户组&普通用户组
管理员组:0
普通用户组:1-65635
系统用户组:1-499(CentOS6), 1-999(CentOS7)
登录用户组:500-60000(CentOS6), 1000-60000(CentOS7)
(2)用户视角:基本组&附加组
用户的基本组:用户本身所属组
用户的附加组:用户额外所支持的组
有效组:
## 查看用户所属的组,第一个为有效用户组 # groups ##切换有效组为其他辅组 # newgrp GROUP 其实这个命令导致创建了一个子shell。
三、密码相关策略
1. 加密算法
(1)对称加密算法:加密和解密使用同一个密码;
(2)非对称加密算法:加密和解密使用的一对儿密钥
密码对:公钥(pubic key)、私钥(private key),一个公钥对应一个私钥。公钥加密,私钥解密。私钥加密,公钥解密。
(3)单向加密:只能加密、不能解密,提取数据特征码
不可逆算法,常用语数据完整性校验,速度是非对称加密的1000倍
单向加密的特性:
1、定长输出:生成的加密密码长度是一定的
2、雪崩效应(蝴蝶效应):任何passwd或sallt微小改变,加密后结果发生巨大改变
3、不可逆
4、明文一致,加密后密文也一致
【单向加密算法】
MD5(Message Digest)消息摘要, 128bits(2^128种变化,16进制输出)
SHA(Secure Hash Algorithm )安全的哈希算法, 160bits
扩展: sha224、sha256、sha384、sha512
【SALT】添加的随机数:不同用户密码相同,随机数不同加密结果相差甚远
让我们来看一下 /etc/shadow
密码:!! ,表示此用户被禁用、锁定,禁止登陆系统
技巧:如果要临时禁止某个用户登陆,可以在其密码前面加上!!或其他字符。根据单向加密算法的特性,只要密码长度不一致,就无法匹配。
加密后的密码由三部分组成,由$分隔:
第一个$后的部分: 1-6的数字表示加密算法(md5,sha1,sha224,sha256,sha384,sha512),从左到右1-6。
第二个$后的部分: salt,加点盐。加了防止两个用户是一样的密码的情况,这样加密后的字符串也是一样的,一个用户看到另一个用户跟自己的字符串一样,也就知道那个用户的密码了。
密码与salt组合在一起加密所生成的字符串。
第三个$后的部分:就是用户输入的 key
Linux密码通常采用的是MD5方式加密,根据MD5加密特性(原始数据相同,加密后生成的密文也相同),就会出现以下情况:假设两个用户使用的密码都是123456,当甲发现乙加密的密码和自己的密码一样,那么他就可以知道乙的密码也是123456。
那么,为什么两个不同的用户,使用相同的密码,而/etc/shadow中的密码字段不同呢?
操作系统为用户的密码再加上salt。
key is a user's typed password.
salt is a two-character string chosenfrom the set [a-zA-Z0-9./]. This
string is used to perturb the algorithm in one of4096 different ways.
2.密码使用策略
(1) 使用随机密码;
(2) 最短长度不要低于8位;
(3) 应该使用大写字母、小写字母、数字和符号四类字符中至少三类;
(4) 定期更换;
(5) 循环周期足够长
可以 使用 名言、古诗等方式,缩写设定密码
四、密码相关命令
useradd、usermod、userdel、passwd
groupadd、groupmod、groupdel、gpasswd
id:显示用户的信息和有效ID;
su:switch user,切换用户
newgrp:临时切换指定的组为基本组,使用exit退出
手动创建一个用户:
编辑/etc/passwd,编辑/etc/group,编辑/etc/shadow, 创建/etc/username目录,
复制/etc/skel 到/home目录, 然后重命名为username
为什么这么操作呢?因为/etc/skel 目录下,都是隐藏文件,不好操作
# cp –a /etc/skel /home
# mv /home/skel /home/myuser
修改权限及属主信息, 利用passwd命令改变密码。
# chown –R myuser:myuser /home/myuser
# chmod 700 /home/myuser