Linux-账号与群组管理

169 阅读3分钟
  1. Linux 的账号与群组:

    • 使用者识别码: UID 与 GID: 每一个文件都会有所谓的拥有者 ID 与拥有群组 ID, 当我们有要显示文件属性的需求时, 系统会依据/etc/passwd/etc/group的内容, 找到 UID/GID 对应的账号与群组名称再显示出来.
    • 有效群组与初始化群组:
      • 初始群组: 在/etc/passwd第四栏的 GID 就是初始化群组(initial group), 当用户登陆系统, 立刻拥有这个群组的相关权限.
      • 有效群组: 使用groups命令显示的第一个群组, 用户创建的文件的拥有群组为有效群组.

    可以使用newgrp命令来变更有效群组, 这个命令是以另外一个 shell 来提供功能的, 若需要回到原本的 shell, 请使用 exit.

  2. 账号管理:

    • useradd 命令: 增加用户
      • 参数:
        • -u: 后面接的是 UID, 指定一个特定的 UID 给这个账号, 该 UID 为初始化群组的 UID.
        • -g: 后面接初始化群组的名称.
        • -G: 后面接这个账号还可以加入的群组.
        • -M: 不要创建使用者主文件夹.
        • -m: 创建使用者主文件夹.
        • -d: 指定某个目录为主文件夹.
        • -s: 后面指定一个 shell, 默认为/bin/shell
        • -e: 后面指定一个YYYY-MM-DD的日期, 该日期为账号失效的日期.
        • -f: 指定密码是否会失效. 0 为立即失效, -1 为永不失效.
    • passwd 命令: 更改密码
      • 参数:
        • -l: 使密码失效
        • -u: 使密码有效
        • -S: 列出密码相关参数
        • -n: 后接天数, 多久不可该密码的天数
        • -x: 后接天数, 多久内必须要更动密码
        • -w: 后接天数, 密码过期前的警告天数
        • -i: 后接日期, 密码失效日期
        • --stdin: 通过来自前一个管线的数据, 作为密码输入
          • 示例: echo "test" | passwd --stdin testUser
    • chage 命令: 更改密码
      • 参数:
        • -l: 列出该账号的详细密码参数
        • -d: 后面接日期, 最近一次更改密码的日期
        • -E: 后面接日期, 账号失效日期
        • -I: 后接天数, 密码失效日期
        • -m: 后接天数, 密码最短保留天数
        • -M: 后接天数, 密码多久需要进行变更
        • -W: 后接天数, 密码过期前警告日期
      • 实例: 让使用者第一次登陆后, 强制一定要更改密码后才能使用资源.
        useradd agetest
        echo "agetest" | passwd --stdin agetest
        chage -d 0 agetest
        
        该用户第一次登陆时, 可以使用与账号同名的密码登陆, 但登陆时就会被要求立刻更改密码.
    • usermod 命令: 更改用户信息
      • 参数
        • -c: 后面接账号的说明
        • -d: 后面接账号的主文件夹
        • -e: 后面接日期, 账号失效日期
        • -f: 后接天数, 密码失效日期
        • -g: 后面接初始群组
        • -G: 后面接该用户所在群组
        • -a: 与-G合用, 表示增加群组
        • -l: 后接账号名称, 用以修改账号名称
        • -s: 后接 Shell 实际文件, 用以修改 Shell
        • -u: 后接 UID, 更改初始群组的 UID
        • -L: 冻结用户密码
        • -U: 解锁用户密码
    • userdel 命令: 删除用户
      • 参数:
        • -r: 连同使用者主文件夹也一起删除
    • id 命令: 查询 UID/GID 等信息
    • chsh: 更改 shell
      • 参数:
        • -l: 列出系统可用 shell
        • -s: 设置自己的 shell
    • groupadd 命令: 新增群组
      • 参数:
        • -g: 后面接某个特定的 GID
        • -r: 创建系统群组
    • groupmod 命令: 修改群组
      • 参数:
        • -g: 修改 GID
        • -n: 修改群组名称
    • groupdel 命令: 删除群组
    • gpasswd 命令: 群组管理员
      • 参数:
        • -A: 将群组的主控制权交由后面的使用者管理
        • -M: 将某些账号加入这个群组
        • -r: 将群组的密码移除
        • -R: 让群组的密码栏失效
        • -a: 将某位使用者加入到群组中
        • -d: 将某位使用者移除出群组
      • 示例: 创建一个新的群组, 交由 testUser 管理
        groupadd testGroup
        gpasswd testGroup
        gpasswd -A testUser testGroup
        gpasswd -a testUser1 testGroup
        
  3. 参考:
    [1] : 鸟哥的Linux私房菜