Linux 用户管理实战指南:groupadd 到 sudo 的完整命令手册

发布时间:2026/9/17 6:55:22
Linux 用户管理实战指南:groupadd 到 sudo 的完整命令手册 Linux 用户管理实战指南groupadd 到 sudo 的完整命令手册【免费下载链接】linux-tutorial:penguin: Linux教程主要内容Linux 命令、Linux 系统运维、软件运维、精选常用Shell脚本项目地址: https://gitcode.com/GitHub_Trending/lin/linux-tutorial本文围绕 linux-tutorial 项目 Linux 用户管理 文档展开系统讲解 Linux 用户与用户组管理中的九大核心命令groupadd、groupdel、groupmod、useradd、userdel、usermod、passwd、su、sudo。读完本文你将掌握从创建用户组、创建用户、设置密码、修改用户信息到删除用户、切换身份、授权 sudo 的完整运维链路并能在真实项目脚本如本仓库中的 ELK 部署、系统用户管理脚本中直接复用这些命令。1. Linux 用户管理要点Linux 是一个多用户多任务的操作系统所有资源的访问权限都围绕用户与用户组展开。掌握以下命令即可完成绝大多数日常用户管理工作操作目标使用命令说明创建用户组groupadd新建一个用户组删除用户组groupdel删除指定的用户组修改用户组信息groupmod更改群组识别码GID或名称创建用户useradd建立用户帐号删除用户userdel删除用户及相关文件修改用户信息usermod修改用户基本信息设置用户认证信息passwd设置密码、密码过期时间等切换用户su切换当前用户身份以其他身份执行命令sudo当前用户以 root 等身份执行无权限命令2. 用户与用户组背后涉及的系统文件在深入命令之前先了解用户管理命令实际操作的几个核心系统文件这有助于理解每个命令的行为边界/etc/passwd保存用户帐号基本信息用户名、UID、GID、家目录、登录 Shell 等useradd建立的帐号就保存在此文件中/etc/shadow保存用户的密码散列与密码策略信息普通用户不可读/etc/group保存用户组信息组名、GID、组成员/etc/gshadow保存用户组的密码与管理员信息。本仓库的脚本中也大量通过读取这些文件来判断用户状态例如 删除用户脚本.sh 中使用cat /etc/passwd | grep -w $USER_ACCOUNT校验待删除用户是否存在系统快照报告 所在目录的 syscheck.sh 中通过awk -F: {if ($NF/bin/bash) print $0} /etc/passwd统计可登录系统的用户。3. 用户组管理命令3.1. groupadd创建用户组groupadd命令用于创建一个新的用户组新用户组的信息将被添加到系统文件中/etc/group、/etc/gshadow。常用参数参数说明-g GID指定新用户组的组标识号GID需唯一-r创建系统工作组GID 范围通常小于 1000-f若组已存在强制成功返回示例建立一个新组并设置组 ID 加入系统$ groupadd -g 344 jsdigname在真实项目中创建用户组往往是部署某个中间件的前置步骤。例如本仓库的 ELK 一键安装脚本 install-elk.sh 在文件头部明确提示安装前需先执行groupadd elk即先为 ELK 相关服务创建一个专用用户组elk随后创建同名的运行用户并绑定到该组。3.2. groupdel删除用户组groupdel命令用于删除指定的用户组本命令要修改的系统文件包括/etc/group和/etc/gshadow。注意若该群组中仍包含某些用户即该组是某些用户的主组则必须先删除这些用户后方能删除群组。示例$ groupadd damon # 创建 damon 用户组 $ groupdel damon # 删除这个用户组3.3. groupmod修改用户组信息groupmod命令用于更改群组识别码GID或名称。需要更改群组的识别码或名称时可用groupmod指令来完成这项工作。常用参数参数说明-g GID更改群组识别码-n 新组名更改群组名称示例$ groupmod -g 520 damon # 将 damon 组的 GID 改为 520 $ groupmod -n newdamon damon # 将组名 damon 改为 newdamon4. 用户管理命令4.1. useradd创建用户useradd命令用于在 Linux 中创建新的系统用户。帐号建好之后需要用passwd设定帐号的密码可用userdel删除帐号。使用useradd指令所建立的帐号实际上是保存在/etc/passwd文本文件中。常用参数参数说明-u UID指定用户 ID-g 组名指定用户的主组主要组-G 组1,组2指定用户的附加组次要组可多个逗号分隔-d 目录指定用户家目录-s Shell指定用户登录 Shell-p 密码指定用户密码明文传入注意安全性-m自动创建家目录示例# 新建用户加入组-g 加入主要组、-G 加入次要组 $ useradd -g sales jack -G company,employees # 建立一个新用户账户并设置 ID $ useradd caojh -u 544仓库实战佐证本仓库的 系统用户管理.sh 演示了创建用户组 → 创建用户并绑定组 → 移交目录归属的完整链路# 创建用户组 groupadd elk # 创建新用户-g elk 设置其用户组为 elk-p elk 设置其密码为 elk useradd elk -g elk -p elk # 更改 /opt 文件夹及内部文件的所属用户及组为 elk:elk chown -R elk:elk /optELK 安装脚本 install_elasticserch.sh 中的config_user()函数同样演示了工程化的用户创建方式——先useradd elasticsearch再通过$?判断命令是否执行成功并记录日志最后用chown ${1}.${1} ${install_path}elasticsearch/ -R将软件目录递归归属给该用户config_user() { useradd $1 /dev/null 21 if [ $? -eq 0 ]; then echo $1 user add success ${install_log_path}${install_log_name} else echo $1 user add fail ${install_log_path}${install_log_name} exit 1 fi chown ${1}.${1} ${install_path}elasticsearch/ -R }工程启示Elasticsearch 出于安全设计不允许以 root 身份运行因此安装脚本必须创建专用用户并chown归属软件目录——这就是用户管理命令在真实运维中的典型应用场景。4.2. userdel删除用户userdel命令用于删除给定的用户以及与用户相关的文件。若不加选项则仅删除用户帐号而不删除相关文件。常用参数参数说明-r删除用户的同时删除其家目录及邮件目录等-f强制删除即使该用户仍在登录示例假设现在有个用户 linuxde其 home 目录位于/var目录中现在来删除这个用户$ userdel linuxde # 删除用户 linuxde但不删除其家目录及文件 $ userdel -r linuxde # 删除用户 linuxde其 home 目录及文件一并删除仓库实战佐证本仓库的 删除用户脚本.sh 将userdel的工程化流程完整展开删除用户前依次完成四步确认用户帐号cat /etc/passwd | grep -w校验记录、查找该用户的运行进程ps -u $USER_ACCOUNT询问是否kill -9、生成该用户所有文件的清单find / -user $USER_ACCOUNT、最后才执行userdel $USER_ACCOUNT。这一脚本提醒我们生产环境删除用户前务必先确认其进程与文件归属避免误删数据。4.3. usermod修改用户信息usermod命令用于修改用户的基本信息。注意usermod命令不允许更改正在线上使用中的使用者帐号名称。当用usermod命令改变 user id 时必须确认该用户没在电脑上执行任何程序。此外你需手动更改该使用者的 crontab 档、at 工作档若采用 NIS server还须在 server 上更动相关的 NIS 设定。常用参数参数说明-g 组名修改用户的主组-G 组1,组2修改用户的附加组会覆盖原附加组列表-l 新用户名修改用户名称-L锁定用户帐号禁止登录-U解除用户帐号锁定-u UID修改用户 ID-d 目录修改用户家目录-s Shell修改用户登录 Shell示例# 将 newuser2 添加到组 staff 中 $ usermod -G staff newuser2 # 修改 newuser 的用户名为 newuser1 $ usermod -l newuser1 newuser # 锁定账号 newuser1 $ usermod -L newuser1 # 解除对 newuser1 的锁定 $ usermod -U newuser15. passwd用户认证信息管理passwd命令用于设置用户的认证信息包括用户密码、密码过期时间等。系统管理者能用它管理系统用户的密码。只有管理者可以指定用户名称一般用户只能变更自己的密码。常用参数参数说明-l锁定用户禁止其更改密码-u解除锁定-d清除用户密码变为空密码-S查询用户密码状态-e强制用户下次登录时修改密码-x 天数设置密码最大有效天数-n 天数设置密码最短有效天数示例 1为新建用户设置/修改密码需 root 权限$ passwd linuxde # 更改或创建 linuxde 用户的密码 Changing password for user linuxde. New UNIX password: # 请输入新密码 Retype new UNIX password: # 再输入一次 passwd: all authentication tokens updated successfully. # 成功示例 2普通用户修改自己的密码直接运行passwd即可$ passwd Changing password for user linuxde. # 更改 linuxde 用户的密码 (current) UNIX password: # 请输入当前密码 New UNIX password: # 请输入新密码 Retype new UNIX password: # 确认新密码 passwd: all authentication tokens updated successfully. # 更改成功示例 3锁定用户密码禁止其修改密码$ passwd -l linuxde # 锁定用户 linuxde 不能更改密码 Locking password for user linuxde. passwd: Success # 锁定成功 $ su linuxde # 通过 su 切换到 linuxde 用户 $ passwd # linuxde 来更改密码 Changing password for user linuxde. Changing password for linuxde (current) UNIX password: # 输入 linuxde 的当前密码 passwd: Authentication token manipulation error # 失败不能更改密码示例 4清除用户密码并查询密码状态$ passwd -d linuxde # 清除 linuxde 用户密码 Removing password for user linuxde. passwd: Success # 清除成功 $ passwd -S linuxde # 查询 linuxde 用户密码状态 Empty password. # 空密码也就是没有密码提示passwd -d清空密码后用户下次登录可能无需密码视系统 PAM 策略而定生产环境应谨慎使用。仓库中的 install-elk.sh 在创建elk用户后提示执行passwd elk正是为新用户补设密码的标准流程。6. su切换用户身份su命令用于切换当前用户身份到其他用户身份变更时须输入所要变更的用户帐号与密码。常用参数参数说明-或-l切换用户的同时切换环境变量并进入其家目录模拟登录-c 命令切换身份执行单条命令执行完后退出并回到原用户-s Shell指定要执行的 Shell-f传给新执行的 Shell 使用如 csh 的快速启动示例# 变更帐号为 root 并在执行 ls 指令后退出变回原使用者 $ su -c ls root # 变更帐号为 root 并传入 -f 选项给新执行的 shell $ su root -f # 变更帐号为 test 并改变工作目录至 test 的家目录 $ su -test提示su -与su的区别在于是否加载目标用户的环境变量与切换工作目录。日常推荐使用su - 用户名以获得完整的登录环境。7. sudo以其他身份执行命令sudo命令用来以其他身份来执行命令预设的身份为 root。在/etc/sudoers中设置了可执行 sudo 指令的用户。若未经授权的用户企图使用 sudo则会发出警告的邮件给管理员。用户使用 sudo 时必须先输入密码之后有 5 分钟的有效期限超过期限则必须重新输入密码。常用选项选项说明-u 用户名以指定用户身份执行命令默认 root-l列出当前用户可执行的权限sudo 授权明细-L显示 sudo 支持的设置Defaults 参数-k清除当前用户的 sudo 时间戳强制下次重新输密码-s以目标用户身份启动 Shell示例# 指定用户执行命令 $ sudo -u userb ls -l # 列出目前的权限 $ sudo -l # 显示 sudo 设置 $ sudo -L仓库实战佐证本仓库的 docker-install.sh 整段安装流程均以sudo前缀执行——sudo yum remove docker ...、sudo yum install -y yum-utils ...、sudo systemctl start docker这正是日常运维中普通用户 sudo 提权的典型写法避免直接使用 root 登录带来的安全风险。7.1. 给普通用户授权 sudo假设要给普通用户 mary 配置 sudo 权限/etc/sudoers文件存放了 sudo 的相关用户但默认没有写权限所以需要先设为可写chmod uw /etc/sudoers在该文件中添加授权行保存并退出让 mary 具有 sudo 的所有权限mary ALL(ALL) ALL将/etc/sudoers的权限恢复到默认状态chmod u-w /etc/sudoers安全提醒/etc/sudoers推荐使用visudo命令编辑会自动做语法检查并加锁避免直接chmod修改权限后误写导致 sudo 全线失效。如果坚持直接编辑务必像上述流程一样临时加写权限 → 修改 → 立即收回权限。7.2. 免密码授权 sudo与给普通用户授权 sudo 类似区别仅在于授权行的写法——使用NOPASSWD关键字后mary 执行 sudo 时不再需要输入密码mary ALL(ALL) NOPASSWD: ALL这种写法适合脚本自动化场景如无人值守的部署脚本、CI 任务避免脚本运行到sudo时因等待密码输入而挂起但从安全角度请仅在可信环境或受限命令集上使用。8. 实战串讲一个完整的用户管理流程结合本文全部命令给出一个从零开始的完整用户生命周期管理示例这也是本仓库 ELK 部署install-elk.sh、系统用户管理.sh所体现的标准模式# 1. 创建用户组 groupadd elk # 2. 创建用户并绑定主组 useradd elk -g elk -p elk # 3. 为新用户设置密码交互式 passwd elk # 4. 将软件目录归属给新用户 chown -R elk:elk /opt # 5. 切换到该用户验证环境 su - elk # 6. 为运维用户授权 sudo临时开写权限编辑后收回 chmod uw /etc/sudoers # 添加一行elk ALL(ALL) ALL 或免密elk ALL(ALL) NOPASSWD: ALL chmod u-w /etc/sudoers # 7. 校验 sudo 授权结果 sudo -l # 8. 清理删除用户先确认进程与文件再连同家目录删除 userdel -r elk groupdel elk9. 小结Linux 用户管理的本质是对/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow四个系统文件的正确操作。以useradd/userdel/usermod管理用户本体以groupadd/groupdel/groupmod管理用户组以passwd维护认证信息再以su与sudo完成身份切换与权限提升就构成了完整的用户与权限管理体系。在实际生产运维中建议遵循本仓库脚本展示的最佳实践为每个中间件创建独立用户与用户组如 ELK 的elk用户、Elasticsearch 的elasticsearch用户并用chown精确移交目录归属删除用户前先通过ps -u、find / -user确认进程与文件对sudoers的改动保持最小权限、及时恢复默认权限位。这样既能保障系统安全也能让多用户、多服务的服务器运维变得清晰可控。更完整的 Linux 命令体系可继续阅读同目录下的 Linux 文件目录管理、Linux 系统管理、Linux 网络管理 等文档或前往 codes/shell/系统管理 目录查看更多实战脚本。【免费下载链接】linux-tutorial:penguin: Linux教程主要内容Linux 命令、Linux 系统运维、软件运维、精选常用Shell脚本项目地址: https://gitcode.com/GitHub_Trending/lin/linux-tutorial创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考