一、Linux 3A+

 通过3A进行资源的分派,所谓3A即:

* Authentication:As the first process, authentication provides a way of identifying a user, typically by having the user enter a valid user name and valid password before access is granted. The process of authentication is based on each user having a unique set of criteria for gaining access. The AAA server compares a user's authentication credentials with other user credentials stored in a database. If the credentials match, the user is granted access to the network. If the credentials are at variance, authentication fails and network access is denied.
* Authorization:Following authentication, a user must gain authorization for doing certain tasks. After logging into a system, for instance, the user may try to issue commands. The authorization process determines whether the user has the authority to issue such commands. Simply put, authorization is the process of enforcing policies: determining what types or qualities of activities, resources, or services a user is permitted. Usually, authorization occurs within the context of authentication. Once you have authenticated a user, they may be authorized for different types of access or activity.
* Accounting: The final plank in the AAA framework is accounting, which measures the resources a user consumes during access. This can include the amount of system time or the amount of data a user has sent and/or received during a session. Accounting is carried out by logging of session statistics and usage information and is used for authorization control, billing, trend analysis, resource utilization, and capacity planning activities.

 除了3A,还引入了审计,作用如下:

* Audition:针对操作进行“合法性”检测

二、安全上下文

 A security context, or security label, is the mechanism used by SELinux to classify resources, such as processes and files, on a SELinux-enabled system. This context allows SELinux to enforce rules for how and by whom a given resource should be accessed. A security context is typically shown as a string consisting of three or four words. Each word specifies a different component of the security context, namely the user, role, type, and level of that file or process. Each word is separated by a colon. e.g.
 
 The security context for files is stored in the form of an extended file attribute. A file's security context may be viewed using ls(1) with the -Z option. It may be modified using chcon(1), whose syntax is intentionally similar to chmod. A file's security context is associated with the file's inode and not the location or directory; this ensures that security contexts will remain the same regardless of whether a file is moved or renamed.
 Some filesystems do not support extended file attributes. In these cases, the kernel provides a default security context for that filesystem. For example, all files on an NFS filesystem are labeled "system_u:object_r:nfs_t".

refer to: https://fedoraproject.org/wiki/Security_context https://blog.csdn.net/hongbochen1223/article/details/45176195

三、用户、组及权限相关文件详解

用户: 用户类型用户名称用户ID管理员用户root0普通用户 系统用户(针对守护进程获取资源进行权限分配) 登录用户(交互式登录) 1-499(CentOS6 ↓);1-999(CentOS7) 500+(CentOS6 ↓);1000+(CentOS7)

组: 组类型组名称组ID管理员组root0普通组 系统组 普通组 1-499(CentOS6 ↓);1-999(CentOS7) 500+(CentOS6 ↓);1000+(CentOS7)

组类别:

* 主组:

      用户有且仅有一个主组
           默认主组为创建用户时自动创建,组名与用户名相同,只包含该同名用户,且作为该用户的私有组
           如果创建用户时,使用-g指定主组,则该用户的主组为指定名称的组,且仅包含该用户(此时不会创建同名的组!!)

* 附加组:也称辅助组,一个用户可以属于零个或多个附加组

用户和组的配置文件

 /etc/passwd:用户及其属性信息(名称、 UID、主组ID等)
 /etc/group:组及其属性信息
 /etc/shadow:用户密码及其相关属性
 /etc/gshadow:组密码及其相关属性
 /etc/default/useradd:useradd defaults configuration file
 /etc/skel/*:用户home目录的默认配置文件
 /etc/login.defs:shadow password suite configuration,用户默认密码属性配置文件

 文件字段详解:

* /etc/passwd

①用户名:②密码占位符:③用户ID:④主组ID:⑤用户描述:⑥HOME目录:⑦SHELL类型

* /etc/shadow

①用户名:②用户密码(加密:a部分为使用的加密算法;b部分为加密密码):③最近一次密码更改时间(从1970年1月1日起计算的天数):④密码更改等待天数(0表示随时可改):⑤密码必须更改期限(密码过期期限,99999表示永不过期):⑥密码过期提醒天数(密码过期前几天提醒,默许为7天):⑦密码过期锁定(过期后几天锁定):⑧多少天后帐号失效(从1970年1月1日起计算的天数)

* /etc/group

①组名:②密码占位符:③组ID:④以当前组为附加组的用户列表(逗号分隔)

* /etc/gshadow

①组名:②组密码:③组管理员列表:④以当前组为附加组的用户列表(逗号分隔)

 密码文件工具

      密码文件快捷编辑
      vipw:= vi /etc/passwd
      vigr: = vi /etc/group
      密码文件检验
      pwck:检验/etc/passwd
      grpck:检验/etc/group

 密码加密

 加密机制: 加密:明文--> 密文 解密:密文--> 明文  单向加密:哈希算法,原文不同,密文必不同 相同算法定长输出,获得密文不可逆推出原始数据 雪崩效应:初始条件的微小改变,引起结果的巨大改变(蝴蝶效应)

md5: message digest, 128bits sha1: secure hash algorithm, 160bits sha224: 224bits sha256: 256bits sha384: 384bits sha512: 512bits(CentOS7默认)  更改加密算法: authconfig --passalgo=sha256 --update

 密码复杂度策略

* 使用数字、大写字母、小写字母及特殊字符中至少3种
* 足够长度
* 使用随机密码
* 定期更换,不使用近期曾用密码

四、用户、组及权限相关命令

useradd:添加用户(相同命令adduser) -u:UID,指定用户ID -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/passwd中有,但实际没有创建)

      -D:显示创建用户时,默认参数

passwd:修改用户口令 -d:删除指定用户密码 -l: 锁定指定用户 -u:解锁指定用户 -e:强制用户下次登录修改密码,等同于chage -d -f:强制操作 -n min days:指定最短使用期限 -x max days: 最大使用期限 -w warn days:提前多少天开始警告 -i inactive days:非活动期限 --stdin:从标准输入接收用户密码 echo "PASSWORD" | passwd --stdin USERNAME

usermod:更改用户属性 -u:UID: 新UID -g:GID: 新主组 -G:GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-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: 设定非活动期限

chage -d LAST_DAY,等同于passwd -e -E --expiredate EXPIRE_DATE -I --inactive INACTIVE -m --mindays MIN_DAYS -M --maxdays MAX_DAYS -W --warndays WARN_DAYS –l 显示密码策略 示例: chage -d 0 tom 下一次登录强制重设密码 chage -m 0 –M 42 –W 14 –I 7 tom chage -E 2016-09-10 tom

userdel:删除用户 -r: 一并删除用户家目录

finger:显示用户信息

chfn:更改已有用户相关信息(finger显示的)

chsh:更改已有用户的shell

su: 切换用户的方式: su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录 su - UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换 root su至其他用户无须密码;非root用户切换时需要密码

换个身份执行命令: su [-] UserName -c 'COMMAND'

选项: -l --login su -l UserName 相当于 su - UserName

newusers passwd格式文件:批量创建用户

chpasswd 批量修改用户口令

groupadd:添加新组 -g GID:指明GID号 -r:创建系统组 CentOS 6: ID<500 CentOS 7: ID<1000

groupmod:更改组属性 -n group_name: 新名字(更改组名称) -g GID: 新的GID

groupdel:删除组 groupdel GROUP_NAME

gpasswd:更改组密码(默认) -a user:将user添加至指定组中 -d user:从指定组中移除用户user -A user1,user2,... :设置有管理权限的用户列表

newgrp命令:临时切换主组 如果用户本不属于此组,则需要组密码

groupmems: -g:--group groupname 更改为指定组 (只有root) -a:--add username 指定用户加入组 -d:--delete username 从组中删除用户 -p:--purge 从组中清除所有成员 -l: --list 显示组成员列表 groups [OPTION].[USERNAME]... 查看用户所属组列表

id:显示用户和组ID -u: 显示UID -g: 显示GID -G: 显示用户所属的组的ID -n: 显示名称,需配合ugG使用