命令介绍

Linux系统中的用户和用户组管理是系统管理员日常工作的重要组成部分。通过对用户和用户组的合理管理,可以有效地控制系统资源的访问权限,保障系统安全。本文将详细介绍Linux系统中常用的用户和用户组管理命令,并通过实例进行说明。

1. 用户管理命令
1.1 创建用户
  • 命令: useradd
  • 语法:```
    useradd [选项] 用户名
  • 常用选项:```
      # 创建用户user1,并设置家目录为/home/user1,主组为users
      useradd -m -d /home/user1 -g users user1
  • 示例:
  • -m: 自动创建用户的家目录
  • -d: 指定用户的家目录
  • -g: 指定用户的主组
  • -G: 指定用户附加组
  • -s: 指定用户的登录shell
  • -u: 指定用户的UID
1.2 修改用户信息
  • 命令: usermod
  • 语法:```
    usermod [选项] 用户名
  • 常用选项:
  • 示例:```
     # 将用户user1的用户名改为user2
    usermod -l user2 user1
  • -u: 修改用户的UID
  • -g: 修改用户的主组
  • -G: 修改用户的附加组
  • -d: 修改用户的家目录
  • -s: 修改用户的登录shell
  • -l: 修改用户名
1.3 删除用户
  • 命令: userdel
  • 语法:
userdel [选项] 用户名
  • 1.
  • 常用选项:
  • 示例:```
      # 删除用户user1及其家目录
     userdel -r user1
  • -r: 删除用户的同时删除其家目录
2. 用户组管理命令
2.1 创建用户组
  • 命令: groupadd
  • 语法:```
    groupadd 组名
  • 示例:```
    # 创建一个名为admins的用户组
    groupadd admins
2.2 修改用户组
  • 命令: groupmod
  • 语法:```
    groupmod [选项] 组名
  • 常用选项:
  • 示例:```
    # 将组名admins修改为administrators
    groupmod -n administrators admins
  • -n: 修改组名
2.3 删除用户组
  • 命令: groupdel
  • 语法:```
    groupdel 组名
  • 示例:```
    # 删除组administrators
    groupdel administrators
3. 用户和组的关联
  • 将用户添加到组:```
    usermod -G 组名 用户名
  • 查看用户所属组:```
    groups 用户名
4. 运维案例
4.1 创建一个新用户,并将其添加到wheel组(sudo组)
useradd -m -g users -G wheel user3
passwd user3
  • 1.
  • 2.
4.2 将用户user2从组admins中移除
usermod -G '' -G admins user2
  • 1.
4.3 删除一个不再使用的用户组
groupdel oldgroup
  • 1.
5. 其他相关命令
  • passwd: 修改用户密码
  • id: 显示用户和组的UID和GID
  • su: 切换用户
  • sudo: 以其他用户身份执行命令

Ansible Playbook创建用户并配置umask

1. Playbook结构
---
- name: Create users and set umask
  hosts: all
  become: yes

  tasks:
    - name: Create audit user
      user:
        name: audit_user
        group: audit_group
        createhome: yes
        comment: Audit user
        shell: /bin/bash
        uid: 1001
        gid: 1001

    - name: Create read-only user
      user:
        name: read_only_user
        group: read_only_group
        createhome: yes
        comment: Read-only user
        shell: /bin/bash
        uid: 1002
        gid: 1002

    - name: Create read-write user
      user:
        name: read_write_user
      group: read_write_group
      createhome: yes
      comment: Read-write user
      shell: /bin/bash
      uid: 1003
      gid: 1003

    - name: Set umask for all users
      lineinfile:
        path: /etc/profile
        regexp: 'umask'
        line: 'umask 024'
        insertafter: EOF
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
2. Playbook解释
  • hosts: all: 表示该Playbook作用于所有配置的主机。
  • become: yes: 以root权限执行任务。
  • user模块: 用于创建用户。
  • name: 用户名
  • group: 用户所属组
  • createhome: 创建用户家目录
  • comment: 用户注释
  • shell: 用户登录shell
  • uid: 用户ID
  • gid: 用户组ID
  • lineinfile模块: 用于修改/etc/profile文件,设置umask。
  • regexp: 匹配已有umask行
  • line: 新的umask设置
  • insertafter: 在文件末尾插入
3. 执行Playbook
  1. 保存上述内容为一个YAML文件,例如create_users.yml
  2. 执行Playbook:
ansible-playbook create_users.yml
  • 1.
4. Playbook功能
  • 创建三个用户: 分别是audit_user、read_only_user和read_write_user,并为每个用户创建同名组。
  • 设置umask: 将所有用户的umask设置为024,这意味着新创建的文件默认权限为644(-rw-r–r–),新创建的目录默认权限为755(drwxr-xr-x)。
5. 注意事项
  • umask设置位置: 将umask设置在/etc/profile文件中,确保所有登录用户都生效。
  • 用户组: 可以根据实际需求创建不同的用户组,并赋予不同的权限。
  • UID和GID: 可以自定义UID和GID,但要注意避免与系统用户冲突。
  • 其他配置: 可以根据需要在user模块中添加更多参数,例如home, password等。
  • 测试环境: 建议在测试环境中先运行Playbook,确保配置正确。
总结

本文详细介绍了Linux系统中常用的用户和用户组管理命令,并通过实例进行了说明。通过掌握这些命令,可以方便地管理系统用户和用户组,保障系统安全。