当前位置: 首页 > news >正文

linux-用户与用户组管理

用户与用户组管理

    • 1. `/etc/passwd` 文件
      • **作用**
      • **格式**
      • **示例**
      • **面试问题及答案**
    • 2. `/etc/shadow` 文件
      • **作用**
      • **格式**
      • **示例**
      • **面试问题及答案**
    • 3. `/etc/group` 文件
      • **作用**
      • **格式**
      • **示例**
      • **面试问题及答案**
    • 4. `/etc/gshadow` 文件
      • **作用**
      • **格式**
      • **示例**
      • **面试问题及答案**
    • 5. `useradd` 命令
      • **作用**
      • **常用参数**
      • **示例**
      • **面试问题及答案**
    • 6. `usermod` 命令
      • **作用**
      • **常用参数**
      • **示例**
      • **面试问题及答案**
    • 7. `userdel` 命令
      • **作用**
      • **常用参数**
      • **示例**
      • **面试问题及答案**
    • 8. `groupadd` 命令
      • **作用**
      • **常用参数**
      • **示例**
      • **面试问题及答案**
    • 9. `groupmod` 命令
      • **作用**
      • **常用参数**
      • **示例**
      • **面试问题及答案**
    • 10. `groupdel` 命令
      • **作用**
      • **示例**
      • **面试问题及答案**
    • 综合案例
      • 场景描述
      • 操作步骤
      • 1. 创建用户组
        • 命令
        • 参数解释
        • 作用
      • 2. 创建用户并分配到相应的组
        • 命令
        • 参数解释
        • 作用
      • 3. 设置组权限
        • 命令
        • 参数解释
        • 作用
      • 4. 为特定用户分配额外权限
        • 命令
        • 参数解释
        • 作用
      • 5. 审计和监控
        • 命令
        • 参数解释
        • 文件内容
        • 作用
      • 验证和测试
        • 验证用户和组的创建
        • 参数解释
        • 作用
        • 验证文件夹权限
        • 参数解释
        • 作用
        • 验证用户访问权限
        • 参数解释
        • 作用
      • 注意事项


1. /etc/passwd 文件

在这里插入图片描述

作用

/etc/passwd 文件存储了系统中所有用户的基本信息,包括用户名、用户 ID(UID)、用户组 ID(GID)、用户主目录、登录 Shell 等。

格式

每行代表一个用户,字段之间用冒号(:)分隔,格式如下:

用户名:密码占位符:UID:GID:用户描述:主目录:登录Shell

示例

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin

面试问题及答案

问题 1:/etc/passwd 文件中的 x 表示什么?

  • 答案x 是一个占位符,表示密码信息已经移动到 /etc/shadow 文件中,以增强安全性。

问题 2:如何查看 /etc/passwd 文件中所有用户的主目录?

  • 答案:可以使用 awk 命令提取第 6 列:
    awk -F: '{print $6}' /etc/passwd
    

2. /etc/shadow 文件

在这里插入图片描述
在这里插入图片描述

作用

/etc/shadow 文件存储了用户密码的加密信息以及其他与用户登录相关的信息,如密码过期时间等。

格式

每行对应一个用户,字段之间用冒号(:)分隔,格式如下:

用户名:加密密码:最后一次修改时间:最小修改间隔:最大修改间隔:警告天数:不活动天数:失效日期:保留字段

示例

root:$6$...:18482:0:99999:7:::
daemon:*:18482:0:99999:7:::

面试问题及答案

问题 1:如何查看 /etc/shadow 文件中某个用户的密码是否过期?

  • 答案:可以查看 max 字段(第 5 列),如果为 99999 表示密码永不过期。可以通过以下命令查看:
    awk -F: '$1 == "username" {print $5}' /etc/shadow
    

问题 2:如何强制用户在下次登录时更改密码?

  • 答案:可以将用户的 last_change 字段(第 3 列)设置为 0,例如:
    chage -d 0 username
    

3. /etc/group 文件

在这里插入图片描述

作用

/etc/group 文件存储了系统中所有用户组的基本信息,包括组名、组密码(通常为空)、组 ID(GID)和组成员列表。

格式

每行代表一个用户组,字段之间用冒号(:)分隔,格式如下:

组名:组密码:GID:组成员列表

示例

root::0:root
daemon::1:daemon
bin::2:bin

面试问题及答案

问题 1:如何查看 /etc/group 文件中某个组的所有成员?

  • 答案:可以使用 awk 命令提取第 4 列:
    awk -F: '$1 == "groupname" {print $4}' /etc/group
    

问题 2:如何将用户添加到某个组?

  • 答案:可以使用 usermod 命令:
    usermod -aG groupname username
    

4. /etc/gshadow 文件

在这里插入图片描述

作用

/etc/gshadow 文件存储了用户组的密码信息和其他与组管理相关的信息,类似于 /etc/shadow 文件,但针对用户组。

格式

每行对应一个用户组,字段之间用冒号(:)分隔,格式如下:

组名:组密码:管理员列表:成员列表

组密码默认值
用户组的密码信息。如果设置为 *,表示该组没有密码。! 表示该组的密码功能已被禁用。

示例

root:::root
daemon:::
bin:::

面试问题及答案

问题 1:如何查看 /etc/gshadow 文件中某个组的管理员列表?

  • 答案:可以使用 awk 命令提取第 3 列:
    awk -F: '$1 == "groupname" {print $3}' /etc/gshadow
    

问题 2:如何设置某个组的密码?

  • 答案:可以使用 gpasswd 命令:
    gpasswd groupname
    

5. useradd 命令

作用

useradd 命令用于创建新用户。

常用参数

  • -u UID:指定用户的 UID。
  • -g GID:指定用户的初始登录组。
  • -G GID1,GID2,...:指定用户的附加组。
  • -d HOME:指定用户的主目录。
  • -s SHELL:指定用户的登录 Shell。
  • -c COMMENT:指定用户的注释信息。

示例

useradd -u 1001 -g users -G wheel -d /home/newuser -s /bin/bash -c "New User" newuser

面试问题及答案

问题 1:如何创建一个没有登录 Shell 的用户?

  • 答案:可以将登录 Shell 设置为 /sbin/nologin
    useradd -s /sbin/nologin username
    

问题 2:如何为新用户设置初始密码?

  • 答案:可以使用 passwd 命令:
    passwd username
    

6. usermod 命令

作用

usermod 命令用于修改现有用户的属性。

常用参数

  • -u UID:修改用户的 UID。
  • -g GID:修改用户的初始登录组。
  • -G GID1,GID2,...:修改用户的附加组。
  • -d HOME:修改用户的主目录。
  • -s SHELL:修改用户的登录 Shell。
  • -c COMMENT:修改用户的注释信息。
  • -l NEW_LOGIN:修改用户的登录名。

示例

usermod -u 1002 -g users -G wheel -d /home/newuser -s /bin/bash -c "Updated User" newuser

面试问题及答案

问题 1:如何将用户从一个组移动到另一个组?

  • 答案:可以使用 usermod 命令修改用户的初始组:
    usermod -g newgroup username
    

问题 2:如何锁定一个用户账户?

  • 答案:可以使用 usermod 命令锁定用户:
    usermod -L username
    

7. userdel 命令

作用

userdel 命令用于删除用户。

常用参数

  • -r:删除用户的同时删除其主目录。

示例

userdel -r username

面试问题及答案

问题 1:如何删除用户但保留其主目录?

  • 答案:不使用 -r 参数:
    userdel username
    

问题 2:如何确保删除用户时不会出现错误?

  • 答案:确保用户没有正在运行的进程,并且用户没有登录。

8. groupadd 命令

作用

groupadd 命令用于创建新用户组。

常用参数

  • -g GID:指定组的 GID。

示例

groupadd -g 1001 newgroup

面试问题及答案

问题 1:如何创建一个具有特定 GID 的用户组?

  • 答案:可以使用 -g 参数指定 GID:
    groupadd -g 1001 newgroup
    

问题 2:如何查看系统中所有用户组的 GID?

  • 答案:可以使用 awk 命令提取 /etc/group 文件的第 3 列:
    awk -F: '{print $1, $3}' /etc/group
    

9. groupmod 命令

作用

groupmod 命令用于修改现有用户组的属性。

常用参数

  • -g GID:修改组的 GID。
  • -n NEW_GROUP:修改组名。

示例

groupmod -g 1002 -n newgroupname oldgroupname

面试问题及答案

问题 1:如何修改用户组的 GID?

  • 答案:可以使用 groupmod 命令:
    groupmod -g 1002 groupname
    

问题 2:如何修改用户组的名称?

  • 答案:可以使用 -n 参数:
    groupmod -n newgroupname oldgroupname
    

10. groupdel 命令

作用

groupdel 命令用于删除用户组。

示例

groupdel groupname

面试问题及答案

问题 1:如何删除一个用户组?

  • 答案:可以使用 groupdel 命令:
    groupdel groupname
    

问题 2:删除用户组时需要注意什么?

  • 答案:确保没有用户属于该组,否则删除会失败。

综合案例

场景描述

假设你负责管理一个公司的 Linux 服务器,公司有多个部门,每个部门需要访问不同的资源。为了提高管理效率和安全性,你需要为每个部门创建独立的用户组,并为每个用户分配相应的权限。

操作步骤

1. 创建用户组

命令
sudo groupadd marketing
sudo groupadd finance
sudo groupadd it
参数解释
  • groupadd:用于创建新的用户组。
  • marketingfinanceit:分别是新创建的用户组名称。
作用

这些命令分别创建了三个用户组:marketing(营销部门)、finance(财务部门)和 it(IT 部门)。

2. 创建用户并分配到相应的组

命令
sudo useradd -m -g marketing -s /bin/bash alice
sudo useradd -m -g marketing -s /bin/bash bobsudo useradd -m -g finance -s /bin/bash charlie
sudo useradd -m -g finance -s /bin/bash dianasudo useradd -m -g it -s /bin/bash eve
sudo useradd -m -g it -s /bin/bash frank
参数解释
  • useradd:用于创建新的用户。
  • -m:自动创建用户的主目录,默认路径为 /home/username
  • -g:指定用户的初始登录组。
  • -s:指定用户的登录 Shell,默认为 /bin/bash
  • alicebobcharliedianaevefrank:分别是新创建的用户名。
作用

这些命令分别创建了六个用户,并将他们分配到相应的用户组:

  • alicebob 分配到 marketing 组。
  • charliediana 分配到 finance 组。
  • evefrank 分配到 it 组。

3. 设置组权限

命令
sudo mkdir /data/marketing
sudo mkdir /data/finance
sudo mkdir /data/itsudo chown -R :marketing /data/marketing
sudo chown -R :finance /data/finance
sudo chown -R :it /data/itsudo chmod -R 770 /data/marketing
sudo chmod -R 770 /data/finance
sudo chmod -R 770 /data/it
参数解释
  • mkdir:用于创建目录。
  • /data/marketing/data/finance/data/it:分别是为每个部门创建的文件夹路径。
  • chown:用于更改文件或目录的所有者或组。
    • -R:递归更改文件夹及其子目录和文件的所有者。
    • :marketing:finance:it:分别指定新的组所有权。
  • chmod:用于更改文件或目录的权限。
    • -R:递归更改文件夹及其子目录和文件的权限。
    • 770:设置权限为 rwxrwx---,即组内用户有读写执行权限,其他用户无权限。
作用

这些命令创建了三个文件夹,并将它们分别分配给三个部门的用户组,同时设置了适当的权限,确保只有本部门的用户可以访问相应的文件夹。

4. 为特定用户分配额外权限

命令
sudo usermod -aG marketing eve
sudo usermod -aG finance eve
sudo usermod -aG marketing frank
sudo usermod -aG finance frank
参数解释
  • usermod:用于修改现有用户的属性。
  • -aG:将用户添加到指定的附加组。
    • -a:追加模式,不会覆盖用户现有的组成员关系。
    • -G:指定附加组。
作用

这些命令将 evefrank 添加到其他部门的组中,使他们能够访问其他部门的文件夹。

5. 审计和监控

命令
sudo visudo
参数解释
  • visudo:用于编辑 /etc/sudoers 文件,该文件定义了哪些用户或组可以以超级用户权限执行命令。
文件内容

/etc/sudoers 文件中添加以下内容:

audit_user ALL=(root) ALL
audit_user ALL=(root) !/usr/bin/sensitive_command
作用
  • audit_user ALL=(root) ALL:允许 audit_userroot 用户权限执行所有命令。
  • audit_user ALL=(root) !/usr/bin/sensitive_command:禁止 audit_user 执行特定的敏感命令。

验证和测试

验证用户和组的创建
getent group marketing
getent group finance
getent group it
id alice
id bob
id charlie
id diana
id eve
id frank
参数解释
  • getent group:显示指定组的信息。
  • id:显示用户的 UID 和 GID 信息。
作用

这些命令用于验证用户和组是否正确创建,并且用户是否正确分配到相应的组。

验证文件夹权限
ls -ld /data/marketing
ls -ld /data/finance
ls -ld /data/it
参数解释
  • ls -ld:列出指定目录的详细信息,包括权限、所有者和组。
作用

这些命令用于验证文件夹的权限是否正确设置。

验证用户访问权限
sudo -u alice ls /data/marketing
sudo -u charlie ls /data/finance
sudo -u eve ls /data/marketing
sudo -u eve ls /data/finance
sudo -u eve ls /data/it
参数解释
  • sudo -u:以指定用户的身份执行命令。
作用

这些命令用于验证用户是否能够正确访问其所属组的文件夹。

注意事项

  1. 权限最小化:为每个服务创建独立用户组,避免权限过度集中。
  2. 组策略管理:通过 /etc/sudoers 配置用户组的 sudo 权限。
  3. 安全加固:禁用空密码组,限制用户修改主组权限,审计用户组变更操作。
  4. 文档管理:建立用户组与业务系统的对应关系文档。
http://www.dtcms.com/a/272399.html

相关文章:

  • serialVersionUID
  • 配置 msvsmon.exe 以无身份验证启动
  • 力扣打卡第23天 二叉搜索树中的众数
  • 算法题(171):组合型枚举
  • Shusen Wang推荐系统学习 --召回 矩阵补充 双塔模型
  • 深度探索:实时交互与增强现实翻译技术(第六篇)
  • Win10用camke+gcc编译opencv库报错error: ‘_hypot‘ has not been declared in ‘std‘
  • 什么是 领域偏好学习(DPO)与多目标强化学习(PPO)
  • 在 Ubuntu 22 部署 vLLM + Qwen3 32B 模型
  • EPLAN 电气制图(六):电机正反转副勾主电路绘制
  • STM32第十九天 ESP8266-01S和电脑实现串口通信(2)
  • 代理模式——Java
  • 机器学习14——线性回归
  • 前端项目vue3项目集成eslint@9.x跟prettier
  • android TabLayout 标题栏切换 事件拦截
  • 【前端】jQuery动态加载CSS方法总结
  • 2025Datawhale AI夏令营第一期-(1)用AI预测新增用户
  • 01-RabbitMQ消息队列
  • ResolvableType 解密Java泛型反射
  • day01 - 数组part01
  • 【高等数学】第三章 微分中值定理与导数的应用——第二节 洛必达法则
  • 关闭实时防护
  • Qt Creator控件及其用途详细总结
  • LeetCode经典题解:49、字母异位词分组
  • 游戏开发问题记录
  • 数字孪生技术为UI前端赋能:实现产品设计的快速原型验证
  • 小程序开发平台,自主开发小程序源码系统,多端适配,带完整的部署教程
  • Day57
  • 从零开始搭建深度学习大厦系列-2.卷积神经网络基础(5-9)
  • Redis性能基准测试