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

Linux 新建用户和组命令全解析

Linux 新建用户和组命令全解析

在 Linux 系统管理中,创建用户和用户组是一项基础且重要的操作。合理地管理用户和组,有助于系统的安全和高效运行。本文将详细介绍在 Linux 系统中新建用户和组的相关命令。

 

一、新建用户组命令 - groupadd

groupadd 命令用于创建一个新的用户组。

1. 基本语法

groupadd [选项] 组名

2. 常用选项

  • -g GID:指定新建组的 GID(组标识号)。例如,若要创建一个 GID 为 1001 的组 newgroup,可以使用以下命令:
groupadd -g 1001 newgroup

  • -r:创建一个系统组。系统组通常用于系统服务相关的用户,其 GID 一般在特定范围内(如小于 1000)。例如:
groupadd -r sysgroup

 

二、新建用户命令 - useradd

useradd 命令用于创建一个新的用户账号。

1. 基本语法

useradd [选项] 用户名

2. 常用选项

  • -u UID:指定新建用户的 UID(用户标识号)。例如,创建一个 UID 为 2001 的用户 newuser
useradd -u 2001 newuser

  • -g 组名:指定新建用户的初始组。该组必须已经存在。例如,将 newuser 添加到之前创建的 newgroup 组中:
useradd -g newgroup newuser
  • -G 组列表:指定新建用户的附加组。多个组之间用逗号分隔。例如,让 newuser 同时属于 group1 和 group2 组:
useradd -G group1,group2 newuser
  • -d 家目录:指定新建用户的家目录。如果不指定,系统会使用默认的家目录路径(通常是 /home/用户名)。例如,指定 newuser 的家目录为 /data/newuserhome
useradd -d /data/newuserhome newuser

  • -s 登录 shell:指定新建用户的登录 shell。常见的 shell 有 /bin/bash/bin/sh 等。如果不指定,系统会使用默认的 shell。例如,指定 newuser 使用 /bin/zsh 作为登录 shell:
useradd -s /bin/zsh newuser

  • -r:创建一个系统用户。系统用户通常用于运行系统服务,一般没有家目录且不会登录系统。例如:
useradd -r sysuser

 

三、设置用户密码 - passwd

在创建用户后,通常需要为其设置密码,passwd 命令用于完成此操作。

1. 基本语法

passwd [用户名]

如果不指定用户名,该命令将用于修改当前登录用户的密码。例如,要为 newuser 设置密码:

passwd newuser

执行该命令后,系统会提示输入新密码并确认。注意,在输入密码时,屏幕上不会显示任何字符,这是为了保证密码的安全性。

 

四、示例

假设我们要创建一个名为 dev 的组,然后创建一个属于该组的用户 developer,并为其设置密码,同时指定该用户的家目录为 /home/developer,登录 shell 为 /bin/bash。可以按以下步骤操作:

创建 dev 组

groupadd dev

创建 developer 用户并指定其所属组和家目录及登录 shell

useradd -g dev -d /home/developer -s /bin/bash developer

为 developer 用户设置密码

passwd developer

通过以上介绍,相信你已经对 Linux 系统中新建用户和组的命令有了较为深入的了解。在实际操作中,应根据系统的需求和安全策略,合理地创建和管理用户与组。

 

在 Linux 系统中,用户和用户组是实现资源管理与访问控制的核心机制,它们在系统的安全、管理及资源分配等方面发挥着关键作用:

用户的作用

  1. 资源访问与所有权
    • 文件与目录访问:每个用户都有自己特定的权限来访问系统中的文件和目录。例如,用户创建的文件默认归该用户所有,用户可以决定其他用户对这些文件的访问级别,如读取、写入或执行权限。这使得用户能够保护自己的私人数据,防止未经授权的访问。比如,用户 user1 创建了一个存储个人财务信息的文件 finance.txt,只有 user1 自己具有完整的读写权限,其他用户在未被授权的情况下无法访问该文件内容。
    • 设备访问:用户还可以基于其权限访问系统中的硬件设备。例如,普通用户可能仅能访问如鼠标、键盘等基本输入设备,而管理员用户可能有权限访问并管理磁盘驱动器、网络接口等关键设备。这有助于确保设备的使用符合系统的安全和管理策略。
  2. 进程与服务管理
    • 进程执行:用户可以启动、运行和管理属于自己的进程。每个进程都与特定的用户相关联,这意味着进程的权限继承自启动它的用户。例如,用户 user2 启动了一个文本编辑程序,该程序进程就以 user2 的权限运行,只能访问 user2 有权限访问的资源。这有助于防止进程越权访问系统资源,保障系统的稳定性和安全性。
    • 服务运行:一些系统服务可能以特定用户的身份运行。例如,Web 服务器(如 Apache)通常以一个专门的低权限用户(如 www - data)运行,这样即使 Web 服务器软件存在漏洞,攻击者也只能获得该低权限用户的权限,从而限制了对系统的潜在破坏。
  3. 个性化设置
    • 用户环境定制:每个用户都可以根据自己的需求和偏好定制自己的工作环境。这包括设置个性化的桌面背景、屏幕保护程序、终端颜色方案等。此外,用户还可以配置自己的 shell 环境,如设置别名、环境变量等,以提高工作效率。例如,用户 user3 可以将经常使用的命令设置为简短的别名,方便在终端中快速调用。

 

用户组的作用

  1. 简化权限管理
    • 批量权限分配:通过将用户划分到不同的用户组,可以对组内的所有用户批量分配相同的权限。例如,在一个软件开发项目中,所有开发人员都属于 developers 组,管理员可以为 developers 组设置对项目代码仓库目录的读写权限,这样组内的所有开发人员都自动获得这些权限,无需逐个为每个开发人员设置权限,大大简化了权限管理的工作量。
    • 权限继承与修改:当需要修改一组用户的权限时,只需对用户组的权限进行修改,组内所有用户的权限会随之改变。例如,如果项目需求变更,需要限制开发人员对代码仓库的写入权限,管理员只需修改 developers 组对代码仓库目录的写入权限,组内所有开发人员的相应权限就会自动更新。
  2. 资源共享与协作
    • 文件共享:同一用户组内的用户可以方便地共享文件和目录。例如,在一个部门内部,所有员工属于 department 组,他们可以将需要共享的文件放在一个专门为该组设置的共享目录中,组内成员都具有相应的访问权限,便于信息交流和协作。
    • 项目协作:在多用户协作的项目中,用户组可以明确界定不同角色和权限。例如,在一个大型数据库项目中,可能有 database - admins 组负责数据库的管理和维护,database - users 组负责使用数据库资源进行业务操作。不同组的用户具有不同的权限,确保项目的顺利进行和数据的安全。
  3. 系统管理与安全
    • 系统角色划分:用户组有助于将系统用户按照不同的角色进行划分,便于系统管理员进行管理。例如,admin 组包含具有系统管理权限的用户,users 组包含普通用户,这样管理员可以针对不同组制定不同的管理策略和访问控制规则。
    • 安全隔离:通过合理设置用户组,可以实现不同用户群体之间的安全隔离。例如,将敏感数据相关的用户划分到一个特定的组,并严格限制该组与其他组之间的交互,可以防止敏感数据泄露给未经授权的用户。

http://www.kler.cn/a/554016.html

相关文章:

  • 使用Python和OpenCV实现图像像素压缩与解压
  • 升级 SpringBoot3 全项目讲解 — 如何在 SpringBoot3 种用 JsonSchema 来验证 Json是否有效?
  • Jest单元测试
  • 拦截器VS过滤器:Spring Boot中请求处理的艺术!
  • 注意力机制中的QKV形象解释
  • Docker 部署 MySQL 8 详细图文教程
  • Vue 3 工程化打包工具:从理论到实践 (下篇)
  • 机器学习实战(8):降维技术——主成分分析(PCA)
  • 【Golang 面试题】每日 3 题(六十)
  • (LLaMa Factory)大模型训练方法--预训练(Qwen2-0.5B)
  • WebSocket(WS)协议系列(一)基本概念
  • DeepSeek等大模型功能集成到WPS中的详细步骤
  • StableDiffusion+ComfyUI
  • C#发送邮件
  • Linux 和 Windows 区别
  • DeepSeek解锁语言模型的未来:NSA稀疏注意力机制的革命性突破
  • 算法学习笔记之递推求解
  • 日做力扣题1--3. 无重复字符的最长子串
  • Spring Boot中API响应结构的最佳实践
  • petalinux高版本设置自动登录和开机自启动配置