1、用户权限管理

1)、资源分派一般使用3A原则:认证、授权、审计;

2)、Linux用户:

    Username/UID,用户名只是用户识别的表项,区别用户的根本是用户UID;
    管理员:root也即超级管理员的UID是0;
    普通用户:1-65535
       系统用户(为了让那些需要自动运行的后台进程或者服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,这些用户从来不需要登录系统;让许多系统程序以系统用户身份运行比以root身份运行安全性更好些):1-499 (CENTOS6 ), 1-999
           对守护进程获取资源进行权限分配

       登录用户:500+(CENTOS6 ), 1000+
3)、Linux组-用户组:

    Groupname/GID
    管理员组:root, 0
    普通组:
       系统组:1-499, 1-999
       普通组:500+, 1000+

4)、运行中的程序是进程 (process),进程所能够访问资源的权限取决于进程的运行者的身份;

5)、Linux组的类别:
    用户必须属于一个且只有一个主组,组名同用户名,且仅包含一个用户,这也是此用户的私有组;
    但是一个用户可以属于零个或多个辅助组也即是附加组;

6)、Linux 用户和组的主要配置文件:
    /etc/passwd :用户及其属性信息( 名称、UID 、主组ID等)
    /etc/group :组及其属性信息
    /etc/shadow :用户密码及其相关属性
    /etc/gshadow:组密码及其相关属性

其中passwd文件格式:

    login name:登录用名(例如wang)
    passwd:密码 (x)
    UID号:用户身份编号 (1000)
    GID:登录默认所在组编号 (1000)
    GECOS:用户全名或注释
    home directory录:用户主目录 (例如/home/wang)
    shell:用户默认使用的shell是 /bin/bash,其中若设置用户的shell为/bin/nologin,则用户将不能够进行登录系统;

其中shadow文件格式:

    登录用户名
    用户密码: 一般用sha512加密(对于新创建的用户没有设置密码时,此处显示两个!,表示不可登陆,删除一个!号剩余一个时也是不能登陆的,删除所有的两个!号,没有了密码时是可以登陆的)
    从1970 年1月1日起到密码最近一次被更改的时间
    密码更改后再过几天可以被变更(0表示随时可被变更)

    密码更改后再过几天必须被变更(99999 表示永不过期)
    密码过期前几天系统提醒用户(默认为一周)
    密码过期几天后帐号会被锁定
    从1970 年1月1日算起多少天后帐号失效

其中group文件格式:

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

其中gshadow文件格式:

    群组名称
    群组密码:centos7默认为两个 !号
    组管理员列表:组管理员的列表,更改组密码和成员
    以当前组为附加组的用户列表(分隔符为逗号

7)、文件操作

    vipw 和vigr,其中vipw=vi /etc/passwd,vigr=vi /etc/group
    pwck 和grpck,分别确认密码文件和组文件的健全和正确 

8)、单向加密:哈希算法,原文不同,密文必不同
    相同算法定长输出,获得密文不可逆推出原始数据
    雪崩效应:初始条件的微小改变,引起结果的巨大改变
加密算法种类:

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

2、用户和组管理命令

1)、用户创建命令 useradd [options] 用户名
    -u  UID :[UID_MIN, UID_MAX] 定义在/etc/login.defs
    -o  配合-u选项使用为 -ou,不检查UID的唯一性,创建同UID的用户,故而这两个用户的权限相同
    -g GID :指明用户所属基本组,可为组名,也可以GID,但是指明的基本组应该事先存在

    -G  GROUP1[,GROUP2,...]:为用户指明附加组,但是指明的附加组必须事先存在

    -c  "COMMENT"用户的注释信息
    -d  HOME_DIR:以指定的路径( 不存在的路径,不能为存在的路径) 为家目录
    -s  SHELL : 指明用户的默认shell程序,可用的shell列表在/etc/shells文件中
    -N  不创建私用组(既是同名基本组)做主组,而是自动使用users(GID为100)组做主组
    -r:  创建系统用户(CentOS 6:ID<500 ,CentOS 7:ID<1000 ,创建系统用户时不会自动在/home下生成家目录,虽然在/etc/passwd中相应用户有家目录存在)

          示例:# useradd -s /sbin/nologin -r httpd

    -L:上锁,既是在/etc/shadow文件相应用户密码处前加一个!号

    -U:解锁,既是在/etc/shadow文件相应用户密码处前删除一个!号

家目录中的隐藏配置文件是有作用的,删除后会导致用户不可登陆使用;

创建新用户时默认值设定来自于/etc/default/useradd 文件中
显示或更改默认设置:
    useradd -D
    useradd –D -s SHELL,即是修改配置文件中的shell类型

2)、# getent password 用户名,查看用户的passwd信息

     # groups 用户名,查看用户的所属组信息,第一个为主组,其后为附加组

     # newgrp 组名,临时切换主组,但是切换时需要组名的密码 

     例如[wang@centos7 ~]$ newgrp 组名,意思就是把wang用户的主组切换为组名,前提是组名位置的这个组是存在的

3)、/etc/passwd相关的配置文件是/etc/default/useradd

     /etc/shadow的相关配置文件是/etc/login.defs

     创建新用户时生成的家目录的配置文件是来源于/etc/skel

4)、# usermod -u 2001 -g shan -aG mas,msa -s /bin/csh -l ma -e 2020-08-01 -f 30 tom

    更改tom用户的uid号为2001,更改主组为shan,添加附加组mas和msa,更改用户名为ma,指明用户账号过期日期为2020-08-01,设定非活动期限为30天 

     清除附加组 # usermod -G "" 用户名,清除了用户的所有附加组

     注意:uid2001,shan、mas、msa应该事先存在