1. Linux 安全模型
资源分派:
- Authentication:认证,验证用户身份
- Authorization:授权,不同的用户设置不同权限
- Accouting|Audition:审计
当用户登陆成功时,系统会自动分配令牌token,包括:用户标识和组成员等信息
1.1 用户
Linux中每个用户是通过 User Id (UID)来唯一标识的
-
管理员:root ,0
-
普通用户:1-60000 自动分配
系统用户:1-499(Centos 6 以前 ),1-999(Centos 7以后)
对守护进程获取资源进行权限分配
登陆用户:500+(Centos6 以前), 1000+(Centos7以后)
给用户进行交互式登陆使用
1.2 用户组
Linux中可以将一个或多个用户加入用户组中,用户组是通过Group ID(GID)来唯一标识的。
-
管理员组:root,0
-
普通组:
系统用户:1-499(Centos 6 以前 ),1-999(Centos 7以后)
对守护进程获取资源进行权限分配
普通组: 500+(CentOS 6以前), 1000+(CentOS7以后), 给用户使用
1.3 用户和组的关系
- 用户的主要组(primary group):用户必须属于一个且只有一个主组,默认创建用户时会自动创建 和用户名同名的组,做为用户的主要组,由于此组中只有一个用户,又称为私有组
- 用户的附加组(supplementary group): 一个用户可以属于零个或多个辅助组,附属组
范例:
[root@uni-dev ~]# id postfix
uid=89(postfix) gid=89(postfix) groups=89(postfix),12(mail)
1.3 安全上下文
Linux 安全上下文Context:运行中的程序,即进程(process),以进程发起者的身份运行,进程所能够访问资源的权限取决于进程的运行者的身份
比如: 分别以root和wang的身份运行/bin/cat /etc/shadow,得到的结果是不同的,资源能否能 被访问,是由运行者的身份决定,非程序本身
范例:
[zeng@uni-dev ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
[root@uni-dev ~]# cat /etc/shadow
root:$6$MaLyBu1Z$ie5DSFIg2Ug7OUz9YYVnj7oFUvdBEMPLZdZqtCp/DTA70elnQMvDgFfi0XtsPwuAwhRHJLYCBrUuTTDZ322sC/:18698:0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
2.用户和组相关文件
2.1 用户和组的主要配置文件
- /etc/passwd: 用户及其属性信息(名称、UID、主组ID等)
- /etc/shadow: 用户密码及其相关属性
- /etc/group: 组及其属性信息
- /etc/gshadow: 组密码及其相关属性
2.2 passwd 文件格式
- login name:登录用名(wang)
- passwd:密码 (x)
- UID:用户身份编号 (1000)
- GID:登录默认所在组编号 (1000)
- GECOS:用户全名或注释
- home directory:用户主目录 (/home/wang)
- shell:用户默认使用shell (/bin/bash)
2.3 shadow文件格式
登录用名
用户密码:一般用sha512加密
从1970年1月1日起到密码最近一次被更改的时间
密码再过几天可以被变更(0表示随时可被变更)
密码再过几天可以被变更(0表示随时可被变更)
密码过期前几天系统提醒用户(默认为一周)
密码过期几天后帐号会被锁定
从1970年1月1日算起,多少天后帐号失效
更改密码加密算法:
authconfig --passalgo=sha256 --update
密码的安全策略
- 足够长
- 使用数字、大写字母、小写字母及特殊字符中至少3种
- 使用随机密码
- 定期更换,不要使用最近曾经使用过的密码
范例:生成随机密码
[zeng@uni-dev ~]$ tr -dc '[:alnum:]' < /dev/urandom | head -c 12
whBs9QdjXB8c[zeng@uni-dev ~]$ openssl rand -base64 9
hp9/BD/yGYoQ
2.4 group 文件格式
群组名称:就是群组名称
群组密码:通常不需要设定,密码是被记录在 /etc/gshadow
GID:就是群组的 ID
以当前组为附加组的用户列表(分隔符为逗号)
2.5 gshdow文件格式
群组名称:就是群的名称
群组密码:
组管理员列表:组管理员的列表,更改组密码和成员
以当前组为附加组的用户列表:多个用户间用逗号分隔
3.用户和组管理命令
用户管理命令
- useradd
- usermod
- Userdel
组账号维护命令
- groupadd
- groupmod
- grouped
3.1 用户创建
useradd 命令可以创建新的Linux用户
格式:
useradd [options] 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 不创建家目录,用于非系统用户
范例:
useradd -r -u 48 -g apache -s /sbin/nologin -d /var/www -c "Apache" apache
useradd 命令默认值设定由/etc/default/useradd定义
[root@centos8 ~]#cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1 #对应/etc/shadow文件第7列,即用户密码过期的宽限期 EXPIRE= #对应/etc/shadow文件第8列,即用户帐号的有效期 SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
显示或更改默认设置
useradd -D
useradd –D -s SHELL
useradd –D –b BASE_DIR
useradd –D –g GROUP
新建用户的相关文件
- /etc/default/useradd
- /etc/skel/*
- /etc/login.defs
批量创建用户
newusers passwd 格式文件
批量修改用户口令
echo username:passwd | chpasswd
3.2 用户属性修改
usermod命令可以修改用户属性
格式:
usermod [OPTION] login
常见选项:
-u UID: 新UID
-g GID: 新主组
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使 用-a选项
-s SHELL:新的默认SHELL
-c 'COMMENT':新的注释信息
-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使