用户和用户组管理

165 阅读4分钟

用户配置文件

用户信息文件:/etc/passwd

影子文件:/etc/shadow

组信息文件:/etc/group和组密码文件:/etc/gshadow

  1. /etc/passwd
    1. 第一字段:用户名称
    2. 第二字段:密码标志
    3. 第三字段:UID(用户ID)
      1. 0:超级用户
      2. 1-499:系统用户(伪用户)
      3. 500-65535:普通用户
    4. 第四字段GID(用户初始组ID)
    5. 第五字段用户说明
    6. 第六字段家目录
      1. 普通用户:/home/用户名/
      2. 超级用户:/root
    7. 第7字段:登录之后的Shell

初始组和附加组

初始组:用户一登录就有这个用户组的相关权限

附加组:用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个.

  1. /etc/shadow
    1. 第一字段:用户名称
    2. 第二字段:加密密码
      1. 加密算法升级为SHA512散列加密算法
      2. 如果密码位是!!或*代表没有密码,不能登录
    3. 第三字段:密码最后一次修改日期
      1. 1970年1月1日作为标准时间,没过一天事件戳加1
    4. 第四字段:两次密码的修改间隔时间
    5. 第五字段密码有效期
    6. 第六字段:密码修改到期前的警告天数(和第五子段相比)
    7. 第七字段:密码过期后的宽限天数(和第5字段相比)
      1. 0:代表密码过期后立即失效
      2. -1:则代表密码永远不会失效
    8. 第8字段:账号失效时间
      1. 要用时间戳表示
    9. 第9字段:保留

把时间戳换算为日期

date -d "1970-01-01 16066 days"

把日期换算为时间戳

echo $(($(date --date="2021/02/09" +%s)/86400+1))

组信息文件/etc/group和组密码文件/etc/gshadow

  1. 组信息文件/etc/group

    1. 组名
    2. 组密码标志
    3. GID
    4. 组中附加用户

    2.组密码文件/etc/gshadow

    1. 组名
    2. 组密码
    3. 组管理员用户名
    4. 组中附加用户

用户管理相关文件

  1. 用户的家目录

    1. 普通用户:/home/用户名,所有者和所有组都是此用户,权限是700
    2. 超级用户:/root,所有者和所属组都是root用户,权限是550
  2. 用户的邮箱

    1. /var/spool/mail/用户名
  3. 用户模板目录

    1. /etc/skel

用户管理命令

用户

  1. 用户添加命令 useradd
    1. -u UID:手工指定用户的UID号
    2. -d 家目录:手工指定用户的家目录
    3. -c 用户说明:手工指定用户的说明
    4. -g 组名:手工指定用户的初始组
    5. -G 组名: 指定用户的附加组
    6. -s shell:手工指定用户的登录shell 默认是/bin/bash
    7. /etc/login.defs 可以改密码有效期
  2. 修改用户密码 passwd
    1. -s 查询用户密码的密码状态,仅root用户可用
    2. -l 暂时锁定用户,仅root用户可用
    3. -u解锁用户,仅root用户可用
    4. --stdin 可以通过管道符输出的数据作为用户的密码
      1. echo "123" |passwd --stdin userName
  3. 修改用户信息 usermod
    1. -u UID:手工指定用户的UID号
    2. -c 用户说明:手工指定用户的说明
    3. -G 组名: 指定用户的附加组
      1. usermod -G root userName
    4. -L: 临时锁定用户(Lock)
    5. -U:解锁用户锁定(Unlock)
  4. 修改用户密码状态 chage
    1. -l 列出用户的详细密码状态
    2. -d:日期: 修改密码最后一次更改日期 3字段
      1. change -d 0 userName
    3. -m天数:两次密码修改间隔 4字段
    4. -M 天数:密码有效期 5字段
    5. -W 天数:密码过期前警告天数 6字段
    6. -I 天数:密码过期后宽限天数 7字段
    7. -E 日期:账号失效时间 8字段
  5. 删除用户 userdel
    1. -r 删除用户的同时删除用户家目录
  6. 用户切换命令 su
    1. -:选项只使用"-"代表连带用户的环境变量一起切换
    2. -c命令:仅执行一次命令,而不切换用户身份
      1. su - root -c "useradd user3"

用户组

  1. 添加用户组 groupadd 组名
    1. -g GID: 指定组ID
  2. 修改用户组:groupmod 组名
    1. -g GID: 修改组
    2. -n 新组名: 修改组名
      1. groupmod -n testgrp group1
  3. 删除用户组
    1. groupdel 组名
      1. 这个组不允许有初始组存在,不然无法删除u该组
  4. 把用户添加入组或从组中删除
    1. gpasswd 选项 组名
      1. -a 用户名: 把用户加入组
        1. gpasswd -a user1 root
      2. -d 用户名: 把用户从组中删除
        1. gpasswd -d user1 root