Linux中的用户和组管理

1.用户和组概述

定义

  • 用户存在的目的是为了实现资源的分配
  • Authentication:认证
  • Authorization:授权
  • Account:审计

用户分类

  • Linux 用户分为管理员普通用户两种:
  • 管理员的用户 ID 是 0
  • 普通用户的用户ID是1-65535
    • 系统用户:1-499(为守护类进程获取系统资源而完成权限指派的用户)
    • 登录用户:500-60000(为了完成交互式登录使用的用户)

Linux安全上下文

  • 运行中的程序叫做进程(Process)
    • 以进程发起者的身份运行
      • root:cat
      • tom:cat
      • 进程所能够访问的所有资源的权限取决于进程的发起者的身份
  • Linux通过安全上下文的概念完成用户权限的指派
    • 先判断用户是否是某个文件的属主
    • 再判断用户是否属于某个组
    • 最后定其为其他用户
  • 负责管理安全上下文的是SELinux,进程与文件的安全上下文必须同步才能成功执行操作

Linux用户类别

  • 私有组:创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名相同的组
  • 基本组:用户的默认组
  • 附加组(额外组):默认组以外的其他组

2.用户和组相关的配置文件

  • 各配置文件说明

    • /etc/passwd: 用户及其属性信息 (名称,UID, 基本组 ID 等等)
      • 用户名:占位符:用户ID:用户组ID:用户描述信息:用户Home目录:登录Shell
    • /etc/group:及其属性信息
      • 组名:占位符:组ID:[以当前组为附加组的用户列表,分隔符为逗号]
    • /etc/shadow: 用户密码及其相关属性
      • 登录名:加密后的密码:最近一次更改密码的日期:密码最小使用期限:密码最大使用期限;密码警告时间段:密码禁用期:账号过期日期:保留字段
    • /etc/gshadow:组密码及其相关属性, 在用户执行基本组切换时使用
      • 用户组: 用户组密码: 用户管理者 (用, 分割): 组成员(用, 分割)
    • /etc/login.defs:创建用户时的默认设置,优先级比 /etc/passwd 和 /etc/shadow
      • MAIL_DIR /var/spool/mail 创建默认用户邮箱
      • PASS_MAX_DAYS 99999 密码最长有效期
      • PASS_MIN_LEN 5 密码最小长度
      • UID_MIN 500 可指定的最小UID
      • UMASK 077 用户主目录的权限默认设置为 077
  • 加密方法

    • 对称加密: 加密和解密使用同一个秘钥
    • 公钥加密: 每个密码都成对出现, 一个为私钥 (Secret Key), 一个为公钥 (Public Key)
    • 单项加密: 也叫散列加密, 提取数据特征码, 能加密不能解密, 常用于做数据完整性校验
      • 雪崩效应(初始条件的微小改变,将会引起结果的巨大改变)
      • 定长输出
        • MD5为128位定长输出
        • SHA1为160位定长输出
        • SHA224为224位定长输出
        • SHA256为256位定长输出
        • ......
  • Linux用户密码加密方式

    • Linux密码使用的单向密码
    • 使用相同密码会导致加密后的密码显示也是一样的,给用户的密码加上一点杂质,再对这个杂质+用户密码一起单向加密,雪崩效应会导致结果截然不同
    • 密码复杂性策略:
      • 使用数字,大写字母,小写字母中的至少三种
      • 足够长
      • 使用随机密码 ,不要使用有意义的单词或数字
      • 定期更换,不要使用曾经使用过的密码

3.用户和组相关的管理命令

用户命令

  • useradd [option] (username):创建用户
    • -u 指定UID
    • -g 指定用户所属基本组 -G 添加附属组, 可以是多个, 用逗号隔开指定和添加组必须是事先存在
    • -c '注释信息'
    • -d (目录路径) 指定用户的 Home 目录, 此目录不能事先存在, 否则不会从/etc/skel 中复制环境设置文件
    • -s 指定使用的shell
      • /sbin/nologin 代表的是不允许登录
    • -M 创建用户时不给其创建Home目录
    • -r 添加一个系统用户
    • -D 直接打印/etc/default/useradd文件的内容或配合其他内容
  • userdel [option] (username):删除用户
    • -r 删除用户同时删除Home目录
  • id (username):显示用户的UID,GID,附属组ID
    • -u 查看UID
    • -g 查看GID -G查看Groups
  • usermod:修改用户
    • -u UID usermod -u uid 用户名
    • -g GID 即更改组ID,也更改了所属组
    • -a -G groupname 更改附加组,加-a会保留原有组
    • -l 修改用户名
    • -m -d 改变用户的 Home 目录, 并把原来目录的文件移动到新的 Home 目录中
    • -e YYYY-MM-DD 指明用户账号过期日期
    • -f INACTIVE 设置非活动期限
    • -L 锁定账号, 被锁定的账号在/etc/shadow 文件中密码前面会有一个 ! 感叹号
    • -U 解锁账号
    • -s 修改登录shell
  • su:切换用户
    • su (username): 非登录式切换,不会读取目标用户配置文件
    • su - (username): 登录式切换,会读取目标用户的配置文件, 完全切换
    • su - 不指定用户时默认切换至root用户
    • -c 切换身份执行命令,命令执行结束后又到原来的身份 su - (username) -c 'touch 123'
  • echo $?:检查命令执行是否成功, 如果返回结果为 0, 上一条命令执行成功, 否则为失败

4.Bash配置文件

  • 全局配置:/etc/profile /etc/profile.d/*.sh /etc/bashrc
  • 个人配置:~/.bash_profile ~/.bashrc
  • profile 类: 为交互式登录的 shell 提供配置, 用来设定环境变量, 运行命令或脚本
  • bashrc 类: 为非交互式登录的 shell 提供配置, 用来设定本地变量, 定义命令别名

5.密码管理

密码管理命令

  • passwd [option] [username]
    • --stdin:从标准输入获取密码
      • echo 'Password123' | passwd --stdin (username)
    • -l 锁定用户
    • -u 解锁用户
    • -d 删除用户密码
    • -n 指定最短使用期限
    • -x 指定最长使用期限
    • -w 提前多少天开始警告
    • -i 非活动期限,密码过期后到禁用前的这段时间

密码生成工具Openssl

  • openssl command [command_opts] [comman_args]
  • command 包含标准命令,消息摘要命令,加密命令
    • version 查看程序版本号
    • dgst 提取特征码
    • passwd 生存密码
    • rand 生成伪随机数
  • 提取特征码:openssl dgst -md5 路径
  • 生成密码: openssl passwd -1 -salt 随机八个以内字符
  • 生存随机数:openssl rand -base64 随机数字,数字越大密码长度越长

6.组管理

  • groupadd [option] 组名:创建组
    • -g 指定GID
    • -r 创建系统组
  • groupmod [option] 组名:修改组
    • -g 修改GID
    • -n 修改组名字
  • groupdel [option] 组名:删除组
  • gpasswd [option] groupname :不带任何参数代表给组设置密码
    • -a 将用户添加到组
    • -d 将用户从组中删除
    • -r 删除组密码
  • newgrp groupname:临时切换到某个组去, 可以使用 exit 退出
posted @ 2023-03-02 16:32  RilyLC  阅读(640)  评论(0编辑  收藏  举报