用户和组配置文件

解释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)

组相当于多个用户的集合,只要对组授权,就相当于组里的成员都有了这个权限
组的目的:就是为了简化授权
image.png

Windos里:
windos 里不允许 用户名和组名相同
image.png
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

密码期限

image.png

$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表示永不过期)
  • 密码过期前几天系统提醒用户(默认为一周)
  • 密码过期几天后帐号会被锁定
  • 从1970年1月1日算起,多少天后帐号失效

    passwd文件格式

  • login name:登录用户(wang)

  • passwd:密码(x)
  • UID:用户身份编号(1000)
  • GID:登录默认所在组编号(1000)
  • GECOS:用户全名或注释
  • home directory:用户主目录(/home/wang)
  • shell:用户默认使用shell(/bin/bash)

    group文件格式

  • 群组名称:就是群组名称

  • 群组密码:通常不需要设定,密码是被记录再/etc/gshadow
  • GID:就是群组地ID
  • 以当前组为附加组地用户列表(分隔符为逗号)

    gshdow文件格式

  • 群组名称:就是群组名称

  • 群组密码:
  • 组管理员列表:组管理员地列表,更改组密码和成员
  • 以当前组为附加组地用户列表:(分隔符为逗号)

    文件操作

  • vipw和vigr

  • pwck和grpck

    用户和组管理命令

  • 用户管理命令

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 批量修改用户口令

image.png

删除用户

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

设置密码:

image.png
passwd [OPTIONS] UserName:修改指定用户的密码
常见选项:
-d:删除

修改用户密码策略

image.png

用户相关的其他命令

  • 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

更改组密码

image.png

更改和查看组成员

image.png

authconfig
finger
useradd
usermod
userdel
groupadd
groupmod
groupdel
groups
gpasswd
grpck
getent passwd shadow group gshadow
newgrp
newusers
chfn
chsh
chpasswd
vipw
vigr
su [-]