1、linux 用户和组
1.1 安全 3A
资源分派:
1 Authentication:认证 2 Authorization:授权 3 Accouting|Audition:审计
1.2 令牌(token)
用户一登录成功系统分配令牌 token,用户凭借该令牌访问该令牌可以访问的文件,用户想要得到最新的令牌必须重新登录
1.3 Linux UID与GID
Linux 用户:Username/UID Linux 组:Groupname/GID
#Linux 用户: 用户管理员:root,UID=0 普通用户 UID:1-65535 系统用户 UID:1-499(centos6),1-999(centos7) 系统用户:对守护进程获取资源进行权限分配 登录用户:500+(centos6),1000+(centos7) #Linux 组: 组管理员:root,GID=0 系统组 GID:1-499(centos6),1-999(centos7) 普通组 GID:500+(centos6),1000+(centos7)
1.4 Linux 安全上下文
运行中的程序:进程(process)
以进程发起者的身份运行:当用户执行程序的时候,用户的身份是程序的一个发起者即上下文:context(运行此程序的用户身份,用户组身份)
进程所能访问资源的权限取决于进程的运行者身份
1.5 Linux 组的类别
用户账号可以属于组1 组2 组3,权限为三组累加权限
(1)用户的主要组(primary group)
用户必须属于一个且只有一个主组
组名同用户名,且仅包含一个用户,私有组
(2)用户的附加组(supplementary group)
一个用户可以属于零个或多个辅助组
1.6 Linux 用户和组的主要配置文件
(1)/etc/default/useradd:与创建用户默认属性值(属于组、配置文件(/etc/skel/)…)有关
(2)/etc/passwd:用户及其属性信息(名称、UID、主组 ID 等)
用户 :密码 :UID :GID :描述信息 :家目录 :shell 类型 密码处使用 X 占位,使用命令 pwunconv 显示密码,使用命令 pwconv 占位 使用命令 chfn <用户名> 添加描述信息;使用 finger <用户名> 查看用户信息 如果要更改家目录,不只是要更改家目录还要更改配置,给更改的用户家目录权限 cp -r /etc/skel/.[^.]* /[用户新家目录] 支持的 shell 类型:/etc/shells;使用 chsh -s /bin/sh 账号名 更改 shell 类型 /sbin/nologin:不能登录,一般给服务使用
(3)/etc/group:组及其属性信息
gpasswd [用户名] 设置组口令 普通用户可以自己加入组(前提:得知道该组的口令) # 不建议
newgrp [组名] 输入密码,加入该组,加入后加入组临时成为主组,如果已经在该组里面使用 newgrp 暂时切换主组
(4)/etc/shadow:用户密码及其相关属性
用户名 :加密后的口令 :更改口令的时间 :口令最短更改期 :口令过期日期 :密码警告时间 :密码禁用期 :账户过期日期:保留字段 #在/etc/login.defs 更改默认口令有效期
(5)/etc/gshadow:组密码及其相关属性
root :口令(!锁定):组长:组成员(和 group 最后一个字段相同)
(6)文件操作:vipw 和 vigr(具有语法检查功能) pwck 和 grpck(检查格式)
1.7 Linux 用户管理命令
创建用户默认值设定在:/etc/default/useradd 中
#增加 useradd #修改 usermod #删除 userdel
#创建用户
useradd命令参数: -o # 配合-u,不检查 UID 的唯一性 -g # GID:指明用户所属基本组,可为组名,也可以为 GID -c # 用户的注释信息 -d # 以指定的路径(不存在)为家目录 -s # 指明用户的默认 shell 程序 -G # 为用户指明附加组,组必须事先存在 -N # 不创建私有组做主组,使用 users 组做主组 -r # 创建系统用户 CentOS6:ID<500,CentOS7:ID<1000 -m # 创建家目录,用于系统用户 -M # 不创建家目录,用于非系统用户 useradd -D # 显示默认设置 useradd -D -s shell # 更改 shell useradd -D -b BASE_DIR # 更改 BASE_DIR useradd -D -g GROUP # 更改 GROUP
#修改用户
usermod [OPTION] login -u UID:新 UID -g GID:新 GID -G :新附加组,原来的附加组被覆盖,若要保留同时使用-a 选项 -s SHELL:新 SHELL -c ‘COMMENT’ :新注释信息 -d HOME:新家目录不会自动创建,若要创建新家目录并移动原家数据,同时使用-m 选项 -l login_name:新的名字 -L:lock 指定用户,在/etc/shadow 密码栏的增加! -U:unlock 指定用户,将/etc/shadow 密码栏的!拿掉 -e YYYY-MM-DD:指明用户账号过期日期 -f INACTIVE:设定非活动期限
#删除用户
userdel -r login # 顺便删除家目录
# 只显示该用户的相关信息(/etc/passwd)
getent passwd [用户名]
#修改指定用户的密码 passwd [OPTIONS] login -d #删除指定用户密码 -l #锁定指定用户 -u #解锁指定用户 -e #强制用户下次登录修改密码 -f #强制操作 -n mindays #指定最短使用期限 -x maxdays #最大使用期限 -w warndays #提前多少天开始警告 -I inactivedays #非活动期限 -stdin #从标准输入接收用户密码 echo “password” | passwd --stdin username
用户管理之批量创建用户:
方法一:复制 /etc/passwd 中的用户信息,追加至 users.txt 文件里,通过newusers users.txt 批量创建用户(不限终端,跨终端使用 scp 远程拷贝再批量创建)
方法二:shell 脚本之 for 循环实现
用户管理之批量修改口令:
方法一:追加多个 "用户名:密码" 至 passwd.txt 文件,cat passwd.txt | chpasswd 批量修改密码
方法二:shell 脚本之 for 循环实现
用户管理之切换用户身份:
su user_name #不会改变当前工作目录以及HOME,SHELL,USER,LOGNAME。 su - user_name #改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,LOGNAME。也更改PATH变量。
1.8 Linux 组账号维护命令
#增加 groupadd #修改 groupmod #删除 groupdel
#创建组 groupadd [OPTION]… group_name -g GID:指定 GID -r 创建系统组(CentOS6:ID<500 CentOS7:ID<1000) #修改组 groupmod [OPTION]… group_name -n group_name:新名字 -g GID:新 GID #删除组(主组不能直接删,附加组可以) groupdel group_name
#添加或移除至指定组 gpasswd [OPTION] GROUP -a user #将 user 添加至指定组中 -d user #从指定组中移除用户 user -A user1,user2,… #设置有管理权限的用户列表
newgrp #临时切换主组,如果用户不属于此组,则需要组密码
groupmems -l -g 组名 # 查看组成员 groupmems -a 用户名 -g 组名 # 往组里添加用户(删除-d 全清-p) groups 用户名 # 查用户属于哪个组
1.8 密码加密
加密机制:加密:明文→密文 解密:密文→明文
单项加密:哈希算法,原文不同,密文必不同
相同算法定长输出,获得密文不可逆推出原始数据
雪崩效应:初始条件的微小改变,引起结果的巨大改变
加密算法:md5、sha1、sha224、sha256、sha384、sha512
更改加密算法:authconfig –passalgo=sha256 –update,其实更改了/etc/login.defs
密码的复杂性策略,生产中使用