* 用户管理的重要性:

    * root用户拥有超级权限

        * 进程控制(要把详细的命令查出来)

            * 改变进程优先级(NI)renice -n 优先级 -p 进程号
            * 向进程发送信号。
            * 修改系统硬限制--(最大CPU时间,最大打开文件句柄数)
            * 调试任何进程--(使用strace)
            * 向运行中的内核动态加载,卸载模块???
            * 把所有用户踢下线并阻止其再次登录
        * 设备控制

            * 访问任何在线设备
            * 格式化硬盘
            * 关机和重启服务
            * 设置日期和时间
            * 读取和修改任何内存区域
        * 网络控制

            * 在受信任的端口(1-1024)上运行网络服务
            * 配置和重新配置网络(比如讲静态配置修改成动态配置、修改ip地址、修改路由控制)
            * 把网卡修改成混杂模式,并抓取网络接口上的所有数据包????
            * 进行网络防火墙设置
        * 文件系统控制

            * 读取修改删除程序和文件
            * 运行任何程序
            * 修改磁盘标签???
            * 挂载和卸载文件系统
            * 启用和禁止磁盘配额
        * 用户控制

            * 增加和删除用户、用户组
            * 修改密码
    * 普通用户也可能变成root用户--利用弱命令漏洞,之后可以自己好好操作
* 用户管理的基本操作:

    * 增加用户

        * 用户和用户组什么???
        * groupadd -g 501 Z
        * useradd -g 501 -u 501 'Z1' Z1
    * 用户密码的设置

        * passwd Z1
    * 删除用户

        * userdel -r  Z1
    * 修改用户属性

        * usermod -L  Z1--锁定用户不能登录,但是root还是能登录
        * usermod -U Z1--解除
        * usermod -d  /home/Z1_new  -m  Z1 --改变用户的家目录
* 存储linux用户信息的关键文件详解

    * /etc/passwd -- 记录了所有用户的信息

        * X:表示该用户的密码参照/etc/shadow
        * 第三个字段是用户ID ,第四个字段是用户组ID
        * 第五个字段是备注信息
        * 第六个字段是用户的家目录
        * 第七个字段是记录用户的SHELL --用户登录后要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定程序,即shell,shell是用户与Liunx系统之间的接口
        * 该文件里面还有一个伪用户,因为他们的登录shell为空
        * 使用stat(查看文件或文件系统的状态)查看Access字段(代表权限)和UID字段(代表属主)

            * stat -C 格式化
    * /etc/shadow --liunx系统中的用户密码记录

        * 第二个字段是复合字段,用$分隔

            * 第一个字段是散列算法,6表示使用SHA512。---后续再了解
            * 第二个字段是是散列算法使用的salt。Salt的使用是为了避免相同的原始密码散列出相同的值
            * 第三个字段就是散列值
        * 第四个字段是0表示该用户的密码随时可修改一
        * 第五个字段是99999表示该用户密码可以长期不更改
        * 第六个字段是7表示密码过期前7天内会受到通知
        * 第七个表示密码过期后多少天被禁用账号,为空表示密码过期立即禁用账号
        * 第八个表示自1970后的多少天被禁用账号,为空表示未被禁用
        * 第九个保留字段
* linux用户密码管理

    * 密码复杂度设置

        * minlen:密码必须不少于12位
        * minclass:密码中必须同时包含4类字符,包含大小写,数字和其他字符
        * maxrepeat:每个字符最多能重复的次数2次
    * 生成复杂密码

        * keepass
        * OpenSSL:openssl rand -base64 12
        * pwgen -c -n -y 12 1 

            * -c 大写字母
            * -n 数字
            * -y 特殊字符
            * 生成12位长度,每种类型最少包含一个
    * 弱密码检查方法

        * 使用john the ripper

            * 未成功
        * 使用Hydra

            * make出现C99错误
* 用户特权管理

    * 限定可以使用su的用户

        * 在/etc/pam.d/su 文件中 第一行的位置添加 

            * auth required pam_wheel.so group=wheel
    * 安全的配置sudo

        * wheel用户直接sudo成root而不需要密码则,在/etc/sudoers加入 

            * %wheel   ALL=(ALL)   NOPASSWD:ALL
* 关键环境变量和日志管理

    * 关键环境变量设置为只读,记录日志执行时间戳

        * 执行 export HISTTIMEFORMAT="%F %T " ,history显示时间戳
        * 执行 export HISTTIMEFORMAT="%F %T `who am i` " ,history显示执行ip
        * 生效的话在/etc/profile增加export HISTTIMEFORMAT="%F %T `who am i` "这句话

                      也可以在/etc/bashrc中加入HISTTIMEFORMAT="%Y%m%d %T"  然后重启

linux用户管理