当前位置: 首页 > 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.lryc.cn/news/583951.html

相关文章:

  • 时序数据库InfluxDB
  • 初学者对编译和链接的学习笔记(含预编译详解)
  • 量子计算能为我们做什么?
  • Linux之Tomcat WEB核心摘要
  • Unity3D iOS闪退问题解决方案
  • C++交叉编译工具链制作以及QT交叉编译环境配置
  • 安全访问云端内部应用:用frp的stcp功能解决SSH转发的痛点
  • 探索 Google NotebookLM:AI 驱动的效率提升新利器
  • MySQL事务实现原理
  • 低频低压减载装置
  • 构建分布式光伏“四可”能力:支撑新型电力系统安全稳定运行的关键路径
  • turbopack打包机制
  • 边缘计算与AI结合:为物联网设备带来智能决策能力
  • 对S32K144做的VCU安装快速开发Simulink库及VCU例程介绍
  • C#System.Runtime.InteropServices.ExternalException (0x80004005): GDI+ 中发生一般性错误。
  • JS实现页面实时时间显示/倒计时
  • Java 大视界 -- Java 大数据在智能交通智能停车诱导与车位共享中的应用(341)
  • selenium跳转到新页面时如何进行定位
  • 编写bat文件自动打开chrome浏览器,并通过selenium抓取浏览器操作chrome
  • 如何使用Java WebSocket API实现客户端和服务器端的通信?
  • Language Models are Few-Shot Learners: 开箱即用的GPT-3(二)
  • Android 应用常见安全问题
  • Windows Edge 播放 H.265 视频指南
  • 多模态大语言模型arxiv论文略读(156)
  • 论文阅读笔记:VI-Net: Boosting Category-level 6D Object Pose Estimation
  • web前端面试笔记
  • 微软365 PDF导出功能存在本地文件包含漏洞,可泄露敏感服务器数据
  • C#集合:从基础到进阶的全面解析
  • qemu vcpu的创建过程
  • Debian-10编译安装Mysql-5.7.44 笔记250706