写在前面:

    博客书写牢记5W1H法则:What,Why,When,Where,Who,How。


用户、组和权限:

◆ 用户类别与用户标识

◆ 组类别与组标识

◆ 认证机制与密码存储

    加密算法

    随机数简介

◆ 安全上下文

◆ 用户和组管理

    groupadd

    groupmod

    groupdel

    /etc/passwd

    useradd

    /etc/login.defs与/etc/default/useradd

    /etc/shadow

    usermod

    userdel

    passwd

    id

    su

    gpasswd

    newgrp

    chage

    chfn

    finger

    chsh

    pwck

    grpck



linux是多用户多任务的系统

    多用户:多人同时使用系统资源;

    多任务:同时运行多个进程;

linux AAA机制

    Authentication #认证

    Authorization  #授权

    Account #账号

用户类别与用户标识:

    管理员:root

    普通用户:

        系统用户:仅用户运行系统程序;

        登录用户:系统资源的正常使用者;

    用户标识(UID):

    linux系统一般用16bits的二进制数字表示,即0-65535。也有些系统用32bits的二进制数字表示。

    管理员:0

    普通用户:

        系统用户:

            centOS5,6:1-499

            centOS7:1-999

        登录用户:

            centOS5,6:500+

           centOS7:1000+

    补充:linux系统存储二进制数字更加高效,所有用户都是以UID来标识的,但对于用户来说,这样的数字并不好记忆,所以linux对用户和UID做了关联文件(/etc/passwd),以使用户和系统都能快速识别用户。


组类别与组标识:

    管理员组

    普通用户组:

        系统组

        登录组

    组标识(GID):

        管理员组:0

        普通用户组:

            系统用户组:

                centOS5,6:1-499

                centOS7:1-999

            登录用户组:

                centOS5,6:500+

                centOS7:1000+

    补充:与用户类似,组同样有一个组名与GID对应的文件:/etc/group


认证机制与密码存储:

    通过对比登录时提供的信息与事先存储的信息是否一致来判断。

    用户认证信息文件:/etc/shadow

    组认证信息文件:/etc/gshadow

    密码存储方式:

        加密存放,单向加密。仅加密,无法解密,通过提取数据特征码计算,具有以下特征:

        数据相同,加密结果相同;

        定长输出;

        雪崩效应;(数据中有一点儿改变,则计算结果大不相同)

    加密算法:(以下加密算法在/etc/shadow文件的密码字段分别以1-6表示)

        md5:128bits

        sha1:160bits

        sha224

        sha256

        sha384

        sha512

    补充:

        /etc/shadow和gshadow文件存储加密密码时,并不是通过密码字符串直接使用加密算法计算结果来存储,而是先在密码字符串中添加不定长随机数(salt),然后再进行计算并将salt与加密结果一并存储。

    随机数简述:

        熵池:真正随机产生的随机数

        伪随机数:软件模拟产生

        /dev/random:仅从熵池返回随机数,随机数耗尽时会阻塞进程;

        /dev/urandom:先从熵池返回随机数,熵池耗尽时,则从伪随机数生成器返回随机数;


安全上下文:

    进程:以某个用户的身份运行,进程对资源的操作权限取决于它所代表的用户;

    文件:权限模型

    属主:owner

    属组:group

    其它:other

    权限模型生效的机制:

        进程的运行者:

    是否与文件的属主相同,如果是,则以文件属主的身份来访问此文件;否则

            是否属于文件的属组,如果是,则以文件属组的身份来访问此文件;否则

            以文件的其它用户的身份来访问此文件;


用户和组管理:

    主要命令如下:

        组:groupadd、groupmod、groupdel

        用户:useradd、usermod、userdel

        密码认证:passwd

    组管理:

        组文件:/etc/group

        文件格式:

            group_name:password:GID:user_list

            密码行只是密码占位符,密码真实存储位置在/etc/gshadow

    groupadd:

        create a new group

        groupadd [options] group

            -g, --gid GID:设置GID

            -r, --system:创建系统组

    groupmod:

        modify a group definition on the system

        groupmod [options] GROUP

            -g, --gid GID:修改GID

            -n, --new-name NEW_GROUP:修改组名

    groupdel:

        delete a group

        groupdel group

    用户管理:

        用户文件:/etc/passwd

        文件格式:

            account:password:UID:GID:GECOS:directory:shell

            GECOS:用户注释信息

    useradd:

        create a new user or update default new user information

        useradd [options] LOGIN

            -c, --comment COMMENT:用户注释信息

            -d, --home HOME_DIR:家目录

            -g, --gid GROUP:设置基本组

            -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:设置附加组

            -m, --create-home:强制创建家目录

            -M:不创建家目录

            -r, --system:创建系统用户

            -s, --shell SHELL:用户登录的shell名

            -u, --uid UID:设置UID

        useradd -D

            显示创建用户时的默认设置;

        useradd -D [options]

            设置默认选项;

            -e, --expiredate  EXPIRE_DATE:用户账号的过期期限;过期后会被锁定;日期以 YYYY-MM-DD 格式指定

            -f, --inactive INACTIVE:密码过期后,账户被彻底禁用之前的天数。0 表示立即禁用,-1 表示禁用这个功能

        补充:/etc/login.defs文件设置了新建用户的默认控制信息(邮箱目录、密码过期设置、UID及GID默认取值范围、家目录、umask、密码加密方式);

         /etc/default/useradd文件设置了新建用户的默认家目录、shell、邮箱创建与否。

    补充:

        影子口令文件:/etc/shadow

        文件格式:

    login name:encrypted password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field

    登录名:密码:密码最近一次的修改时间:密码最短使用期限:密码最长使用期限:警告天数:非活动期限:账号禁用日期:保留字段

    密码是以“$加密算法$salt$加密的密码字符串”格式存储的


    用户密码过期图示:

wKiom1bdbSTiqfo2AAA2p3sraLU100.png

    usermod:

    modify a user account

    usermod [options] LOGIN

        -d, --home HOME_DIR

            usermod -m -d HOME_DIR修改家目录的同时,将原家目录文件复制到新目录

        -g, --gid GROUP

        -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:设置附加组,会覆盖原有附加组!与-a选项一起使用,添加附加组而不覆盖

        -l, --login NEW_LOGIN:修改用户名

        -s, --shell SHELL

        -u, --uid UID

        -L, --lock:锁定用户,会在密码文件/etc/shadow密码字段前加“!”

        -U, --unlock:解锁用户,去掉密码字段前!

    userdel:

    delete a user account and related files

    userdel [options] LOGIN

        -r, --remove:一并删除用户家目录和用户邮箱

    passwd:

    update user’s authentication tokens

    passwd   [-l]  [-u  [-f]]  [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [--stdin] [username]

    (1)passwd:修改自己的密码;

    (2)passwd USERNAME:修改其他用户密码,仅root用户可用

        -l:锁定密码

        --stdin:从标准输入读取密码

        -u:解除锁定

        -d:快速清除密码;

    密码复杂度:

        不少于8位字符

        不可与旧密码太相似

        应该包含4类字符(小写字母、大写字母、数字、特殊符号)中的3种

    id

    print real and effective user and group IDs

    id [OPTION]... [USERNAME]

        -u:仅查看uid

        -g:仅查看gid

        -G:查看所属的所有组的ID;

        -n:显示名称,而非ID

    su

    run a shell with substitute user and group IDs

         -, -l, --login:以登录方式切换,完全切换

        -c, --command=COMMAND:仅以指定用户身份运行此命令,而不切换用户

    gpasswd

    administer /etc/group and /etc/gshadow

    gpasswd [option] group

        -a, --add user:添加用户到组

        -d, --delete user:从组中将用户移除

    newgrp

    log in to a new group

    newgrp [-] [group]

    临时切换登录用户的基本组,使用exit退出

    chage

    change user password expiry information修改用户密码终止信息

    chage [options] [LOGIN]

        -d, --lastday LAST_DAY:设置密码最近一次修改时间。使用距1970年1月1日的天数或设置YYYY-MM-DD格式的日期

        -E, --expiredate EXPIRE_DATE:设置账号禁用日期,设置-1移除禁用日期功能

        -I, --inactive INACTIVE:设置非活动期限,设置-1移除非活动期限

        -l, --list:显示密码信息

        -m, --mindays MIN_DAYS:密码最小改动期限

        -M, --maxdays MAX_DAYS:密码最大使用期限

        -W, --warndays WARN_DAYS:密码过期前提醒天数

    chfn

    change your finger information

    chfn  [-f full-name] [-o office] ,RB [ -p office-phone] [-h home-phone] [-u] [-v] [username]

    修改用户附加信息,即/etc/passwd文件的第5字段

    finger

    user information lookup program

    finger [-lmsp] [user ...] [user@host ...]

    chsh

    change your login shell

        -s, --shell shell:修改登录shell

        -l, --list-shells:显示/etc/shells列出的shell

    pwck

    (passwd chack)verify integrity of password files

    检查/etc/passwd和/etc/shadow文件格式及信息可用

    grpck

    (group check)verify integrity of group files

    检查/etc/group和/etc/gshadow文件格式及信息可用