如何管理Linux用户和组?useradd、usermod和groupadd命令实战

掌握linux用户和组管理的核心命令(useradd、usermod、groupadd)能提升系统运维效率。1. 创建用户使用useradd,可指定uid、主组、附加组、家目录和登录shell,如:useradd -g developers -g sudo,docker -s /bin/bash john;2. 修改用户信息用usermod,支持更改登录名、主组、附加组、家目录及锁定/解锁账户,如:usermod -ag deployers john;3. 创建组使用groupadd,可指定gid或创建系统组,如:groupadd deployers。此外,可用passwd设置密码,id或groups查看用户组信息,userdel删除用户,结合脚本实现批量管理。注意区分系统用户(uid<1000)与普通用户,合理规划权限结构以保障系统安全。

如何管理Linux用户和组?useradd、usermod和groupadd命令实战

管理Linux用户和组是系统运维中非常基础但也非常关键的一项任务。无论你是设置服务器环境,还是维护本地开发机器,掌握几个核心命令能让你事半功倍。本文主要围绕 useraddusermodgroupadd 三个命令展开,讲讲怎么用它们来高效管理用户和组。

如何管理Linux用户和组?useradd、usermod和groupadd命令实战

创建用户:useradd 的常用操作

useradd 是用来创建新用户的命令,它有很多参数可以定制用户属性。默认情况下,执行 useradd username 会创建一个同名的主组,并分配一个家目录(通常是 /home/username)。

如何管理Linux用户和组?useradd、usermod和groupadd命令实战

常用参数:

-u UID:指定用户的 UID-g 组名或GID:指定用户的主组-G 组1,组2:指定用户的附加组-d /路径:自定义家目录位置-s /bin/bash:设置登录 shell

例如,创建一个属于 developers 主组,并且属于 sudodocker 附加组的用户:

如何管理Linux用户和组?useradd、usermod和groupadd命令实战

useradd -g developers -G sudo,docker -s /bin/bash john

注意:创建完用户后记得设置密码,使用 passwd john 命令即可。

修改用户信息:usermod 怎么用更灵活?

一旦用户创建完成,你可能还需要修改它的某些属性,这时候就要用到 usermod。它可以更改用户的主组、附加组、登录名、家目录等。

常用操作:

更改用户的登录名:

usermod -l newname oldname

更改用户的主组:

usermod -g newgroup username

添加附加组(保留原有附加组):

usermod -aG groupname username

锁定或解锁用户账户:

usermod -L username   # 锁定usermod -U username   # 解锁

一个小细节:如果你要给用户加多个附加组,别一次性写 -G group1,group2,建议分开两次加,避免误删已有附加组。

超能文献 超能文献

超能文献是一款革命性的AI驱动医学文献搜索引擎

超能文献 105 查看详情 超能文献

创建用户组:groupadd 不只是建个组那么简单

除了用户之外,我们也要经常管理用户组。groupadd 命令可以快速创建一个新的用户组。

基本用法很简单:

groupadd groupname

进阶选项:

-g GID:手动指定组的 GID-r:创建系统组(GID 范围较小)

创建完组之后,可以通过 usermod 把用户加进来,或者直接在 useradd 的时候就指定。

举个例子:你想创建一个专门用于部署项目的组,叫 deployers,然后把 johnanna 都加入进去:

groupadd deployersusermod -aG deployers johnusermod -aG deployers anna

这样他们就可以共享某些文件权限了。

用户和组管理的一些实用小技巧

查看用户所属组:可以用 groups username 或者 id username删除用户但保留家目录:使用 userdel username,加上 -r 参数会一并删除家目录批量管理用户:结合脚本自动化处理,比如循环创建多个用户并设置初始密码系统用户 vs 普通用户:UID 小于 1000 的通常是系统用户,创建时要注意区分用途

这些命令虽然简单,但组合起来能应对大多数日常管理需求。

基本上就这些。

以上就是如何管理Linux用户和组?useradd、usermod和groupadd命令实战的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/943439.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月29日 19:28:17
下一篇 2025年11月29日 19:28:43

相关推荐

  • Go应用程序分发策略:打包与部署指南

    本文旨在提供go应用程序的分发与部署策略,重点介绍如何处理外部依赖和资产。核心方法包括利用go的交叉编译能力生成平台特定二进制文件,以及针对配置、模板等外部资产的不同处理方案,如将其与二进制文件打包、嵌入到二进制中,或通过构建脚本自动化部署,旨在为用户提供简便的安装体验。 Go语言以其出色的跨平台编…

    好文分享 2025年12月16日
    000
  • 如何在Golang中实现容器健康检查逻辑

    在Golang中实现容器健康检查需暴露/healthz接口,区分liveness与readiness探针,支持依赖检测与超时控制,确保服务状态准确反映。 在Golang中实现容器健康检查逻辑,主要是通过暴露一个HTTP接口供Kubernetes或Docker等容器编排系统调用。这个接口用来反映服务当…

    2025年12月16日
    000
  • 深入理解Go语言的fmt.Stringer接口:实现自定义类型字符串表示

    本文将介绍go语言标准库中的`fmt.stringer`接口,该接口定义了`string() string`方法,允许开发者为自定义类型提供人类可读的字符串表示。通过实现此接口,go程序可以自动调用该方法来格式化输出自定义类型,从而提高代码的可读性和调试效率,是go语言中实现对象字符串化的标准机制。…

    2025年12月16日
    000
  • Go语言:健壮地从标准输入解析整数,兼顾EOF与格式错误处理

    本教程探讨go语言中从标准输入读取整数的健壮方法。针对`fmt.scan`在遇到非整数输入时静默失败的问题,文章详细介绍了如何区分`io.eof`以优雅退出,并演示了如何捕获并跳过格式错误(如非数字字符),从而实现对有效数字的持续解析,确保程序在面对不规范输入时仍能稳定运行并提供错误反馈。 在Go语…

    2025年12月16日
    000
  • Golang mgo 错误处理深度指南

    mgo 在 go 语言中与 mongodb 交互时,可能返回多种错误,远不止 queryerror 或 errnotfound。处理这些错误应遵循最佳实践:针对已知错误编写特定逻辑,对未知错误则应妥善封装并向上层传递,同时清理本地副作用。特别强调,不应将数据库连接等预期可能发生的网络错误视为异常情况…

    2025年12月16日
    000
  • Golang mgo 错误处理:深度解析与最佳实践

    `mgo` 在 go 语言中与 mongodb 交互时,除了常见的 `queryerror` 和 `errnotfound`,还会返回各种底层操作(如网络、dns、连接超时)产生的错误。本文将深入探讨 `mgo` 的错误类型,并提供一套专业的错误处理策略,强调应区分已知错误和未知错误,并避免将 `p…

    2025年12月16日
    000
  • Go语言条件判断:优化if-else逻辑与switch语句实践

    本文深入探讨go语言中条件判断语句的正确使用,着重分析`if-else`语句中常见的逻辑错误,特别是范围判断的陷阱。通过实际的学生成绩评级案例,演示如何修正`if-else`的条件表达式,并引入go语言更简洁高效的`switch`语句来处理多分支条件,旨在提升代码的可读性和健壮性。 引言:Go语言条…

    2025年12月16日
    000
  • Golang 实现大文件上传处理

    本文介绍了如何使用 Golang 的 net/http 包处理大文件上传,重点讲解了如何应对客户端发送 Expect: 100 Continue 请求的情况,以及如何使用 ParseMultipartForm 函数高效地处理上传的文件数据,并提供前端示例代码,帮助开发者实现完整的大文件上传功能。 使…

    2025年12月16日
    000
  • Golang HTTP 大文件上传处理详解

    本文档详细介绍了如何使用 Golang 的 net/http 包处理大文件上传。通过 ParseMultipartForm 函数,我们可以将上传的文件存储在内存或磁盘中,有效应对 Expect: 100 Continue 请求,并提供了前端 JavaScript 示例,帮助开发者构建稳定可靠的大文件…

    2025年12月16日
    000
  • Go语言中字符串到数字转换的陷阱与正确实践

    在Go语言中,将字符串转换为数字是常见操作,但选择正确的转换函数至关重要。`strconv.Atoi`仅适用于纯整数形式的字符串,若字符串包含小数点,即使其代表一个整数值,也会导致解析错误。本文将详细阐述`strconv.Atoi`与`strconv.ParseFloat`的区别,并提供正确处理浮点…

    2025年12月16日
    000
  • 理解Go语言中函数调用与函数指针的不同行为

    本文旨在阐明Go语言中直接调用函数与使用函数指针调用函数时,在闭包和状态维护方面的差异。通过一个斐波那契数列的示例,深入解析了两种调用方式导致的不同结果,并解释了其背后的原因,帮助读者更好地理解Go语言中函数作为一等公民的特性。 Go语言中函数调用与函数指针的差异详解 在Go语言中,函数是一等公民,…

    2025年12月16日
    000
  • Go语言中if-else和switch语句的条件判断与优化实践

    本文旨在深入探讨go语言中条件判断语句的常见逻辑错误及优化方法。通过分析一个学生成绩评分程序的案例,详细讲解了`if-else if`链中区间判断的正确写法,并引入了go语言中更简洁、高效的`switch`语句来处理多范围条件判断,同时提供了代码示例和最佳实践建议,以提升代码的准确性和可读性。 在编…

    2025年12月16日
    000
  • Go语言条件判断:优化if-else结构与switch语句的应用实践

    本文旨在指导go语言开发者如何正确且高效地使用条件语句进行范围判断。我们将首先分析if-else结构中常见的逻辑错误,提供正确的条件表达式写法,并进一步介绍go语言中更优雅的switch语句,尤其是在处理连续区间判断时的应用,以提升代码的可读性和维护性。 理解if-else语句中的常见逻辑错误 在编…

    2025年12月16日
    000
  • 如何使用Golang构建DevOps通知系统

    答案:使用Golang构建DevOps通知系统需实现Webhook接收、事件解析、规则匹配和多渠道推送。通过net/http创建HTTP服务接收Jenkins等工具的事件,解析JSON格式的部署或告警信息,依据配置规则判断通知策略,并并发调用Slack、邮件等API发送消息。系统采用发布-订阅模式,…

    2025年12月16日
    000
  • Golang如何使用reflect获取函数返回值_Golang reflect函数返回值获取实践

    使用reflect.ValueOf获取函数反射值,通过Call传参调用,返回[]reflect.Value切片;2. 按索引取返回值并用Int、String等方法转换,多返回值需依次处理;3. 调用方法时用MethodByName获取,注意接收者实例;4. 转换前用Kind判断类型避免panic;5…

    2025年12月16日
    000
  • 理解Go语言中函数式编程:直接调用与指针调用的差异

    本文旨在解释Go语言中函数式编程的一个常见困惑:直接调用返回函数的函数与使用指针调用返回函数的函数,在行为上的差异。通过分析一个斐波那契数列生成器的例子,我们将深入理解闭包的概念,以及如何在循环中正确地使用它来生成序列。 在Go语言中,函数可以作为一等公民,这意味着函数可以被赋值给变量,也可以作为其…

    2025年12月16日
    000
  • 如何使用Golang在Docker中构建开发镜像

    答案:使用 golang:1.21 为基础镜像,配置支持热重载与远程调试的 Dockerfile,并通过 docker-compose 挂载代码、映射端口,实现开发环境一致性与高效迭代。 在使用 Golang 开发应用时,将服务容器化是部署流程中的常见做法。构建一个适用于开发的 Docker 镜像,…

    2025年12月16日 好文分享
    000
  • 理解Go语言中的函数闭包:直接调用与指针使用的差异

    本文旨在帮助Go语言初学者理解函数闭包的概念,并深入探讨直接调用函数与使用函数指针调用函数时,在生成斐波那契数列等场景下可能出现的行为差异。通过示例代码分析,我们将揭示其背后的原理,并提供正确的实践方法。 在Go语言中,函数可以作为一等公民,这意味着函数可以被赋值给变量、作为参数传递给其他函数,也可…

    2025年12月16日
    000
  • 如何在Golang中实现并发任务限流_Golang并发限流实现方法汇总

    使用带缓冲channel可限制最大并发数,通过信号量控制goroutine数量,任务执行前后操作channel实现限流,避免资源耗尽。 在高并发场景下,如果不加控制地让大量任务同时执行,很容易导致系统资源耗尽、数据库压力过大甚至服务崩溃。Golang 提供了多种方式来实现并发任务的限流,既能保证系统…

    2025年12月16日
    000
  • Go语言中函数调用与函数指针的区别:斐波那契数列示例

    本文通过一个斐波那契数列生成器的例子,深入探讨了Go语言中直接调用函数和使用函数指针这两种方式的区别。理解这些差异对于编写高效且符合预期的Go程序至关重要,尤其是在处理闭包和状态保持等概念时。 在Go语言中,函数是一等公民,可以像其他任何数据类型一样被传递和使用。理解函数调用和函数指针之间的区别对于…

    2025年12月16日
    000

发表回复

登录后才能评论
关注微信