Linux用户和组

  1. 资源分派(3A):
    Authentication 认证
    Authorization 授权
    Accouting|Audition 审计

  2. 用户:(系统通过UID来判断用户信息)
    令牌token identity:用于验明身份
    Linux用户:username/UID
    管理员:root 0
    普通用户:1-65535
    系统用户:1-499(6) 1-999(7)
    对守护进程获取资源进行权限分配
    登录用户:500+(6) 1000+(7)
    交互式登录

  3. 组 group
    linux组:GroupID /GID
    管理员组: root 0
    普通组:
    系统组:1-499 1-999(7)
    普通组:500+ 1000+(7)

  4. 安全上下文:
    linux安全上下文
    运行中的程序:进程
    以进程发起者的身份运行
    root:/bin/cat
    mage: /bin/cat
    进程所能访问资源的权限取决于进程运行者的身份

  5. 组的类别
    用户的主要组(primary group)
    用户必须属于一个且只有一个主组
    组名同用户名,且仅包含一个用户。私有组
    用户的附加组
    一个用户可以属于0个或者多个辅助组

  6. 用户和组的配置文件
    /etc/passwd 用户以及其属性信息(名称 UID 主组ID)
    name 用户名
    passwd 密码(pwunconv可以恢复口令到passwd pwconv恢复到shadow)
    UID
    GID 主组
    gecos 描述信息 chfn命令 change finger (finger可以直接看描述)
    家目录 /etc/skel 在创建用户时系统会复制这个文件下的的文件到用户目录
    shell类型 cat /etc/shell 显示系统支持的shell类型 shsh -s 改shell类型
    /sbin/nologin 不允许登陆
    /etc/group 组及其属性信息
    组名:
    组口令:普通用户可以通过获取组口令自己主动加入组(不建议)

    组ID
    组成员:,分割不同成员 一般是附加组

    /etc/shadow 用户密码及其相关属性
    login name
    密码字段 $$之前的salt字段,随机字段保证相同口令加密之后结果不同
    最近改口令时间 距离1970 1.1计算天数,当设为0必须下次登陆更改口令
    最短密码使用时间
    最长密码使用时间(改口令之后计算,不能超过这个时间)
    提前通知密码更改时间
    密码宽限期 超过宽限期则密码锁定
    账号使用有限期
    保留字段

    ###################################
    没有口令的账号显示!!账号锁定
    5的系统使用 usermod -U 可以解锁账号,取消一个!
                        -L 加锁
    6之后不允许这样操作,不能登录,但是可以su
    ##################################
    
    passwd -e username 选项可以实现下次登陆必须改口令
    chage username 直接进行修改用户的口令配置信息
          -d 0 username 同理
          -l  username 显示用户口令策略
          -I --inactive INACTIVE  
          -m --mindays MIN_DAYS  
          -E --expiredate EXPIRE_DATE
          -M --maxdays MAX_DAYS  
          -W --warndays WARN_DAYS 
            ps:chage -m  -M 12 -W 14 -I 17 username

    vim /etc/login.defs 文件进行修改默认系统配置密码,邮件等信息
    /etc/default /useradd 创建用户的默认配置信息

    /etc/gshadow 组密码及其相关属性
    组名
    组口令 通常也是!!
    组内成员关系 可以设置多个组管理员
    组成员 和group相同

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

    更改加密算法:authconfig --passalgo=sha256 --update

  8. 密码的复杂性策略:
    使用数字,大写字母,小写字母及特殊字符中的至少3种
    足够长
    使用随机密码
    定期更换,不要使用最近曾经使用过的密码

    可以采用分级方式去设置密码难度

  9. 命令:
    id username 显示用户id 主组id 附加组id 这个是读取配置文件的
    不加username的话,一般是显示旧信息,当重新登录才会刷新信息
    -u: 显示UID
    -g: 显示GID
    -G: 显示用户所属的组的ID
    -n: 显示名称,需配合ugG使用
    groups username 显示用户的组信息 主组 附加组

    ################################
    id不变用户权限不变
    ################################

    gpasswd username 给组加口令
    -a user 将user添加到指定的组中
    -d user 从指定组中移除用户
    -A user1 user2 。。。 设定有管理权限的用户列表哦
    newgrp gname 主动加入组 要输入组密码
    这种方式会改变自己的主组
    newgrp也可以用来临时切换主组,若已经是组成员则无需输入口令

    useradd
    -u UID 可以超过60000
    -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(default) 显示默认配置选项 
            useradd –D -s SHELL  
            useradd –D –b BASE_DIR  
            useradd –D –g GROUP

    newusers passwd格式的文件,可以实现批量创建文件
    chpasswd 批量实现用户口令的更改

    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: 设定非活动期限 账号宽限期
    userdel
    -r 删除用户家目录
    ps:正在登录的用户无法删除
    passwd 修改指定用户的密码
    -d:删除指定用户密码
    -l:锁定指定用户
    -u:解锁指定用户
    -e:强制用户下次登录修改密码
    -f: 强制操作
    -n mindays: 指定最短使用期限
    -x maxdays:最大使用期限
    -w warndays:提前多少天开始警告
    -i inactivedays:非活动期限
    --stdin:从标准输入接收用户密码
    echo "PASSWORD" | passwd --stdin USERNAME

    groupadd 添加用户组
    -g GID
    -r 创建系统组
    6 ID<500
    7 ID<1000
    groupmod 修改组的属性
    -n new_groupname
    -g new_GID
    groupdel
    删除主组之前要先将组内用户移动到其他组

    groupmems
    -g, --group groupname 更改为指定组 (只有root)
    Actions:
    -a, --add username 指定用户加入组
    -d, --delete username 从组中删除用户
    -p, --purge 从组中清除所有成员
    -l, --list 显示组成员列表 

    groups [OPTION].[USERNAME]... 查看用户所属组列表

  10. 文件操作:不推荐改配置文件
    vipw vigr 在编辑passwd 和group文件时候具有语法格式检测功能
    pwck grpck 用于检测语法

  11. 切换用户或者以其他用户身份执行命令
    su username:以非登录方式去切换,不会读取目标用户的配置文件,不改变当前的工作目录
    su - username:登录式切换,会读取目标用户的配置文件,切换至家目录,可以实现完全切换。

    root用户在su其他用户时候不需要输入密码,但是非root用户su要密码
    换身份执行指令
    su [-] username -c '指令'

    su -l username 相当于su - username