用户和组配置文件
解释Linux的安全模型
解释用户帐号和组群帐号的目的
用户和组管理命令
理解并设置文件权限
默认权限
特殊权限
ACL
介绍安全3A
资源分派:
Authentication:认证
Authorization:授权
Accounting|Audition:审计
认证:验证你的身份,用户名,密码,指纹,人脸识别
授权:
审计:
用户user
- 令牌token,identity
- Linux用户:Username/UID
- 管理员:root,0
- 普通用户:1-60000 自动分配
系统用户:1-499,1-999(CentOS7)
对守护进程获取资源进行权限分配
登录用户:500+,1000+ (CentOS7)
交互式登录
组group
- Linux组:Groupname/GID
- 管理员组:root,0
- 普通组:
- 系统组:1-499,1-999(CentOS7)
- 普通组:500+,1000+(CentOS7)
组相当于多个用户的集合,只要对组授权,就相当于组里的成员都有了这个权限
组的目的:就是为了简化授权
Windos里:
windos 里不允许 用户名和组名相同
uid gid
多对多:一个账号可以有多个组,一个组里可以有多个用户
li zhao zhang > sales
li > admins
当一个用户属于多个组,是会累加权限
安全上下文
上下文:context 说的是环境
- Linux安全上下文
运行中的程序:进程(process)
以进程发起者的身份运行:
root:/bin/cat
chaitc:/bin/cat
进程所能够访问资源的权限取决于进程的运行者的身份
组的类别**
- Linux组的类别
用户的主要组(primary group)
用户必须属于一个且只有一个主组
组名同用户名,且仅包含一个用户,私有组
用户的附加组(supplementary group)
一个用户可以属于零个或多个辅助组
用户和组的配置文件
- Linux用户和组的主要配置文件:
/etc/passwd:用户及其属性信息(名称、UID、主组ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及相关属性
/etc/gshadow:组密码及其相关属性
pwunconv 把口令换回到/etc/passwd下
pwconv 把口令用x替换
chfn 改passwd里的描述,注释
finger 查看用户信息
安装finger: yum install finger
finger chaitc
Login: chaitc Name: ctc
Directory: /home/chaitc Shell: /bin/bash
Office: yx, x1-0086 Home Phone: x1-0010
Last login Thu Mar 5 14:07 (CST) on pts/1
No mail.
No Plan.
usermod 改用户属性
/sbin/nologin 用户帐号不能登录
chsh -s /sbin/nologin chaitc 使chaitc帐号不能登录
su - chaitc
Last login: Thu Mar 5 14:07:05 CST 2020 on pts/1
This account is currently not available.
看所有的帐号或者挑选性的看一个或多个帐号
gentent passwd == cat /etc/passwd
只看一个人:gentent passwd chaitc
密码期限
$6 对应的:sha512 加密算法
$1 对应的:md5的加密算法
生成MD5密码:grub-md5-crypt
minimum password age 最短口令更改时间(eg:3 3天内不能改)
Windos:
C:\Users\28710>net accounts
强制用户在时间到期之后多久必须注销?: 从不
密码最短使用期限(天): 0
密码最长使用期限(天): 42
密码长度最小值: 0
保持的密码历史记录长度: None
锁定阈值: 从不
锁定持续时间(分): 30
锁定观测窗口(分): 30
计算机角色: WORKSTATION
命令成功完成。
chage chaitc 更改口令有效期
chage -l chaitc
chage -l chaitc
Last password change : Mar 05, 2020
Password expires : Apr 16, 2020
Password inactive : Apr 26, 2020
Account expires : Mar 05, 2021
Minimum number of days between password change : 3
Maximum number of days between password change : 42
Number of days of warning before password expires : 14
使口令立即过期:
chage -d0 chaitc
密码地复杂性策略
- 使用数字、大写字母、小写字母及特殊字符中至少3种
- 足够长
- 使用随机密码
- 定期更换,不要使用最近曾经使用过地密码
密码:
12位以上。 P@ssw)rd1
生成一些随机口令:
openssl rand -base64 12
[root@chaitc ~]#openssl rand -base64 12
/5SKG+zNY4niUq8Z
[root@chaitc ~]#openssl rand -base64 12
8js0sLsvw7FBStCu
[root@chaitc ~]#openssl rand -base64 12
NWO/+O4z/E9ZOJOd
[root@chaitc ~]#openssl rand -base64 12
pqeNKza870pLicGq
密码加密
- 加密机制:
加密:明文—>密文
解密:密文—>明文
- 单向加密:哈希算法,原文不同,密文必不同
相同算法定长输出,获得密文不可逆推出原始数据
雪崩效应:初始条件地微小改变,引起结果地巨大改变
md5:message digest,128bits
sha1:secure hash algorithm,160bits
sha224:224bits
sha256:256bits
sha384:285bits
sha512:512bits
- 更改加密算法:
authconfig —passalgo=sha256 —update
查看口令的加密算法:
cat /etc/login.defs
shadow文件格式
- 登录用户
- 用户密码:一般用sha512加密
- 从1970年1月1日起到密码最近一次被更改的时间
- 密码再过几天可以被变更(0表示随时可被变更)
- 密码再过几天必须被变更(99999表示永不过期)
- 密码过期前几天系统提醒用户(默认为一周)
- 密码过期几天后帐号会被锁定
-
passwd文件格式
login name:登录用户(wang)
- passwd:密码(x)
- UID:用户身份编号(1000)
- GID:登录默认所在组编号(1000)
- GECOS:用户全名或注释
- home directory:用户主目录(/home/wang)
-
group文件格式
群组名称:就是群组名称
- 群组密码:通常不需要设定,密码是被记录再/etc/gshadow
- GID:就是群组地ID
-
gshdow文件格式
群组名称:就是群组名称
- 群组密码:
- 组管理员列表:组管理员地列表,更改组密码和成员
-
文件操作
vipw和vigr
-
用户和组管理命令
用户管理命令
useradd
usermod
userdel
- 组帐号维护命令
groupadd
groupmod
groupdel
[root@Centos6 ~]#rpm -q —scripts httpd
preinstall scriptlet (using /bin/sh):
# Add the “apache” user
getent group apache >/dev/null || groupadd -g 48 -r apache
getent passwd apache >/dev/null || \
useradd -r -u 48 -g apache -s /sbin/nologin \
-d /var/www -c “Apache” apache
exit 0
postinstall scriptlet (using /bin/sh):
# Register the httpd service
/sbin/chkconfig —add httpd
/sbin/chkconfig —add htcacheclean
preuninstall scriptlet (using /bin/sh):
if [ $1 = 0 ]; then
/sbin/service httpd stop > /dev/null 2>&1
/sbin/chkconfig —del httpd
/sbin/service htcacheclean stop > /dev/null 2>&1
/sbin/chkconfig —del htcacheclean
fi
posttrans scriptlet (using /bin/sh):
test -f /etc/sysconfig/httpd-disable-posttrans || \
/sbin/service httpd condrestart >/dev/null 2>&1 || :
cat /etc/group
cat /etc/gshadow
!! 锁定,禁用
newgrp 组名 临时切换主组
groupmems -a wang -g mage
把wang帐号加入到mage组
gpasswd 组名 给组添加口令
rpm -q —scripts httpd
useradd -u 1234 wang 创建用户指定uid
-o 忽略id的一致性检查
useradd -u 1234 liang -o -d /data/liang
-d 指定家目录
系统用户默认不会生成家目录
useradd -r app
-s 指定shell类型
useradd -r app2 -s /sbin/nologin
-c 加上描述信息
useradd -c ‘web user’ -r -s /sbin/nologin webuser
-g 指定主组 useradd -g app app3
-N 使组加入users组
存放默认添加用户的信息
cat /etc/default/useradd
cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
用户创建:useradd
- useradd [option] LOGIN
-u UID
-o 配合-u选项,不检查UID的唯一性
-g GID:指明用户所属基本组,可为组名,也可以GID
-c “COMMENT”:用户的注释信息
-d HOME_DIR:以指定的路径(不存在)为家目录
-s SHELL:指明用户的默认shell程序,可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,…]:为用户指明附加组,组须事先存在
-N 部创建私用组做为主组,使用users组做主组
-r 创建系统用户 CentOS 6: ID < 500,CentOS 7: ID<1000
-m 创建家目录,用于系统用户
-M 不创建家目录,用于非系统用户
- 默认值设定:/etc/default/useradd文件中
- 显示或更改默认设置
useradd -D
useradd -D -s SHELL
useradd -D -b BASE_DIR
useradd -D -g GROUP
练习
1、创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为”Gentoo Distribution”
useradd -G bin,root -s /bin/csh -c ‘Gentoo Distribution’ gentoo
2、创建下面的用户、组和组成员关系
名字为webs的组
groupadd webs
用户nginx使用webs作为附属组 用户varnish,也使用webs作为附属组
useradd -G webs nginx
useradd -G webs varnish
用户mysql,不可交互登录系统,且不是webs的成员,nginx,varnish,mysql的密码都是chaitc
useradd -s /sbin/nologin mysql
passwd nginx 要输入两边密码
echo chaitc | passwd —stdin nginx
echo chaitc | passwd —stdin varnish
echo chaitc | passwd —stdin mysql
eg:echo chaitc | passwd —stdin nginx
Changing password for user nginx.
passwd: all authentication tokens updated successfully.
新建用户的相关文件和命令
- /etc/default/useradd
- /etc/skel/*
- /etc/login.defs
- newusers passwd格式文件 批量创建用户
- chpasswd 批量修改用户口令
删除用户
userdel [OPTION]… login
-r 删除用户家目录
查看用户相关的ID信息
id [OPTION]… [USER]
-u:显示UID
-g:显示GID
-G:显示用户所属的组ID
-n:显示名称,需配合ugG使用
切换用户或以其他用户身份执行命令
- su [options…] [-] [user [args…]]
- 切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户地配置文件,不改变当前工作目录
su - UserName:登录式切换,会读取目标用户地配置文件,切换至家目录,完全切换
- root su至其他用户无须密码;非root用户切换时需要密码
- 换个身份执行命令:
su [-] UserName -c ‘COMMAND’
- 选项:-l —login
su -l UserName 相当于 su - UserName
设置密码:
passwd [OPTIONS] UserName:修改指定用户的密码
常见选项:
-d:删除
修改用户密码策略
用户相关的其他命令
- chfn 指定个人信息
- chsh 指定shell
- finger
创建组
groupadd [OPTION]… group_name
-g GID:指明GID号;[GID_MIN,GID_MAX]
-r:创建系统组
CentOS 6:ID<500
CentOS 7:ID<1000
修改和删除组
- 组属性修改:groupmod
groupmod [OPTION]… group
-n group_name:新名字
-g GID:新的GID
- 组删除:groupdel
groupdel GROUP
更改组密码
更改和查看组成员
authconfig
finger
useradd
usermod
userdel
groupadd
groupmod
groupdel
groups
gpasswd
grpck
getent passwd shadow group gshadow
newgrp
newusers
chfn
chsh
chpasswd
vipw
vigr
su [-]