Linux用户与权限管理从入门到实战零基础也能轻松掌握从“小白懵圈”到“熟练配置”一文搞定用户、组、权限那些事儿一、为什么我们要管用户和权限想象一下你租了一间合租房大门钥匙root密码每个人都能复制今天张三带朋友来明天李四搬走东西最后屋里丢了东西都不知道该找谁。Linux系统如果不做用户管理所有人共用 root 超级管理员后果就是这样没有操作日志——谁动了配置文件查不到人误操作风险极高——一个rm -rf /*可能让整个服务器瘫痪权限无边界——开发、测试、运维都用同一个账号数据库和网站代码随便删用户管理的核心目标让“谁、什么时候、做了什么”清清楚楚同时做到最小权限原则——每个账号只拥有完成自己工作所必须的权限。二、用户信息存在哪三座“档案库”Linux 把所有用户和组的信息存放在三个文本文件中它们就是系统账号管理的“户籍档案”文件存储内容用途/etc/passwd用户名、UID、主组ID、家目录、登录Shell基本账户信息密码已移走/etc/shadow加密后的密码、密码过期策略真正存放密码的地方权限极高/etc/group组名、GID、组成员列表组信息及成员关系⚠️新手注意千万不要用vim直接编辑这些文件必须用系统提供的命令如useradd、usermod来修改否则格式出错会导致无法登录。三、组管理——先把“部门”建好在创建用户之前通常先创建组好比公司先设部门再招人。3.1 创建组 ——groupadd# 创建一个名为 devops 的组sudogroupadddevops# 创建组并指定 GID组ID为 3000sudogroupadd-g3000dba新手常见报错如果你创建组时提示group xxx already exists说明组名已被占用。可以用-f强制忽略或换个组名。3.2 修改组 ——groupmod# 把组名 devops 改为 opssudogroupmod-nops devops# 修改组的 GID 为 4000sudogroupmod-g4000ops3.3 删除组 ——groupdelsudogroupdelops踩坑预警如果某个用户的主组primary group正是这个组那么无法删除该组你必须先把用户的主组改掉或删除用户才能删组。四、用户管理——招人、换岗、离职4.1 添加用户 ——useradd# 最简单的创建Rocky/CentOS 自动建家目录、指定 bashsudouseradddev_user# Ubuntu 必须加上 -m创建家目录和 -s指定Shellsudouseradd-m-s/bin/bash dev_user# 指定 UID、主组、附加组sudouseradd-u2000-gdevops-Gdba,developer app_admin关于主组 vs 附加组新手最晕的主组Primary Group每个用户必须有且只有一个新建文件时默认所属组就是它。附加组Supplementary Groups可以有 0 个或多个用于授予额外权限比如让开发人员临时加入运维组。创建用户时如果不指定-g系统会自动创建一个与用户名同名的组作为主组。常用选项一览选项含义备注-m创建家目录Rocky 可省Ubuntu 必加-s指定登录 Shell如/bin/bash或/sbin/nologin禁止登录-u指定 UID-g指定主组组必须已存在-G指定附加组多个组用逗号分隔-r创建系统用户无家目录不可登录用于运行服务进程4.2 修改用户 ——usermod# 修改用户的 Shellsudousermod-s/bin/bash dev_user# 修改家目录同时迁移数据sudousermod-d/opt/dev_user-mdev_user# 添加附加组千万注意 -a 选项sudousermod-aGdba dev_user# ✅ 追加 dba 组sudousermod-Gdba dev_user# ❌ 会覆盖掉之前所有的附加组新手翻车现场很多人忘记加-a结果用户只剩一个dba组原来在wheel等组里的权限全部丢失。记住-aG是标配-G单独用是重置。锁定和解锁用户# 锁定用户无法登录sudousermod-Ldev_user# 解锁sudousermod-Udev_user锁定后/etc/shadow中该用户密码字段前会多一个!符号。4.3 删除用户 ——userdel# 仅删除用户家目录和邮箱保留sudouserdeldev_user# 删除用户并同时删除家目录和邮箱-rsudouserdel-rdev_user 工作场景中通常建议先备份用户数据再用-r彻底清理避免遗留孤儿文件。4.4 设置密码 ——passwd与chpasswd交互式设置需要输入两次sudopasswddev_user非交互式适合脚本——Rocky 和 Ubuntu 通用echodev_user:MyPass123|sudochpasswdRocky 还支持echo MyPass123 | passwd --stdin dev_user但 Ubuntu 不支持所以推荐统一用chpasswd。五、Linux 权限模型 UGO —— 文件三权分立Linux 中每个文件/目录都有属主User、属组Group和其他人Other三类访问者各自拥有一套读r、写w、执行x权限。5.1 rwx 对文件和目录的“大不同”权限对文件的意义对目录的意义r读可以cat查看文件内容可以ls罗列文件夹内全部资源需配合 xw写可以vim修改内容可以在目录内创建、删除、重命名文件需配合 xx执行可以运行该程序/脚本可以cd进入目录是访问内部文件的前提新手容易犯的错误给目录只赋r权限而没有x导致无法cd进去只能看名字却进不去。5.2 权限表示法字符法rwxr-x---前三位属主rwx、中三位属组r-x、后三位其他人—。数字法将每组 rwx 视为二进制有权限为1无则为0转十进制。rwx 111 7r-x 101 5--- 000 0 → 750。六、修改权限与属主 —— 日常高频操作6.1 修改属主属组 ——chown/chgrp# 只改属主sudochowndev_user project.log# 只改属组sudochown:devops project.log# 等价于 chgrp devops project.log# 同时改属主和属组sudochowndev_user:devops project.log# 递归修改整个目录-Rsudochown-Rdev_user:devops /opt/app/6.2 修改权限 ——chmod字符模式# 给属主添加执行权限chmodux script.sh# 移除属组的读权限chmodg-r secret.conf# 精确设置其他人的权限为只读chmodor public.txt# 给所有人类别赋予读写执行chmodarwx tool数字模式更常用chmod755app.jar# 属主 rwx属组 rx其他人 rxchmod640config.yml# 属主 rw属组 r其他人无chmod750/opt/data# 属主 rwx属组 rx其他人无七、权限掩码 umask —— 新文件默认权限从哪来每次你创建新文件或目录系统都会根据umask值计算默认权限。计算公式文件默认权限 666 - umask目录默认权限 777 - umask查看当前 umaskumask# 输出 0022普通用户可能 0002当 umask 022 时新文件 → 666 - 022 644-rw-r--r--新目录 → 777 - 022 755drwxr-xr-x当 umask 027 时新文件 → 666 - 027 640-rw-r-----新目录 → 777 - 027 750drwxr-x---临时修改umask 027永久修改写入~/.bashrc或/etc/profile。 很多新手以为 umask 是“减掉”的权限实际是“屏蔽”的权限位。例如 umask 为 022就是屏蔽掉属组的写权限和其他的写权限。八、删除文件的本质 —— 为什么需要目录的写权限很多人误以为删除文件需要文件本身有写权限。其实不然删除文件实际上是在父目录中删除该文件的条目文件名与 inode 的映射所以真正要求的是父目录有写和执行权限。实验验证创建一个目录并给满权限里面的文件权限设为 000mkdir/opt/testechohello/opt/test/file.txtchmod777/opt/testchmod000 /opt/test/file.txt用普通用户尝试删除该文件需要普通用户对目录有写权限rm-f/opt/test/file.txt# 成功删除尽管 file.txt 本身是 000反过来如果目录没有写权限即使文件是 777 也删不掉chmod555/opt/test# 目录无写权限rm-f/opt/test/file.txt# 报错 Permission denied结论删除文件看的是目录的权限不是文件本身的权限。九、权限委派 —— su 与 sudo 的正确用法9.1 su —— 切换用户身份sudev_user# 切换用户但环境变量、当前目录保留原用户的su- dev_user# 切换用户并加载目标用户的环境推荐su- dev_user-cls -lh /home/dev_user# 切换并执行一条命令使用su - root需要知道 root 密码并且切换后没有任何审计日志不推荐在生产使用。9.2 sudo —— 临时提权推荐普通用户执行管理员命令时只需在自己密码前加sudo系统会检查/etc/sudoers是否授权。将用户加入管理员组最快速获得 sudo 权限发行版管理员组默认配置Rocky / RHELwheel%wheel ALL(ALL) ALLUbuntu / Debiansudo%sudo ALL(ALL) ALL# Rocky 中加入 wheelsudousermod-aGwheel dev_user# Ubuntu 中加入 sudosudousermod-aGsudodev_user9.3 精细控制 sudo —— 使用visudo编辑/etc/sudoers或单独文件/etc/sudoers.d/xxx推荐后者sudovisudo-f/etc/sudoers.d/custom配置格式用户/组 主机(运行身份) 命令示例# 允许 dev_user 执行任何命令需密码dev_userALL(ALL)ALL# 允许 devops 组成员重启 nginx 且无需密码%devopsALL(ALL)NOPASSWD: /usr/bin/systemctl restart nginx# 禁止某用户修改 root 密码bad_userALL(ALL)ALL,!/usr/bin/passwd root验证权限sudo-l# 查看当前用户被允许的命令sudo-l-Udev_user# 查看指定用户的 sudo 权限十、综合实战为若依项目创建标准化用户体系场景公司新部署了一套若依后台管理系统需要为不同角色分配专属账号和权限。角色账号所属组权限需求应用管理员ruoyi-admindevops可重启 Nginx数据库管理员ruoyi-dbadba可启停 MySQL开发人员ruoyi-devdeveloper可查看应用日志实施步骤1. 创建组sudogroupadddevopssudogroupadddbasudogroupadddeveloper2. 创建用户并加入附加组sudouseradd-Gdevops ruoyi-adminsudouseradd-Gdba ruoyi-dbasudouseradd-Gdeveloper ruoyi-dev# Ubuntu 需加 -m -s /bin/bash3. 设置统一密码非交互echoruoyi-admin:Ruoyi2026|sudochpasswdechoruoyi-dba:Ruoyi2026|sudochpasswdechoruoyi-dev:Ruoyi2026|sudochpasswd4. 配置 sudo 精细权限新建/etc/sudoers.d/ruoyi%devopsALL(ALL)/usr/bin/systemctl restart nginx, /usr/bin/systemctl status nginx %dbaALL(ALL)/usr/bin/systemctl start mysqld, /usr/bin/systemctl stop mysqld, /usr/bin/systemctl status mysqld %developerALL(ALL)/usr/bin/tail-f/var/log/ruoyi/*, /usr/bin/cat /var/log/ruoyi/*5. 验证sudo-l-Uruoyi-admin# 应显示可执行 restart 和 status十一、Rocky Linux 与 Ubuntu 差异速查表操作Rocky/CentOSUbuntu创建用户useradd dev_user自动家目录useradd -m -s /bin/bash dev_user非交互密码echo “123”passwd --stdin user管理员组wheelsudo查看 sudo 日志/var/log/secure/var/log/auth.log建议跨发行版时统一使用chpasswd和visudo确保兼容。十二、新手常见报错与解决报错信息原因解决useradd: group xxx does not exist附加组未提前创建先用groupadd建组usermod: group xxx does not exist同上检查组名拼写userdel: user xxx is currently used by process用户正在登录强制踢出或用-fsudo: command not found未安装 sudodnf install sudo/apt install sudopermission denied删除文件父目录缺少 w 权限chmod w父目录chmod: cannot access file文件路径错误或权限不足检查路径及当前身份总结用户管理三文件/etc/passwd、/etc/shadow、/etc/group命令操作是正道千万别手动改。组与主/附加组主组只有一个附加组可多个-aG是追加的好朋友。权限模型 UGOr、w、x 对文件和目录含义不同目录必须有 x 才能进入。删除文件看目录目录有 w 权限就能删和文件本身无关。sudo 胜过 susu 切换无审计sudo 临时提权并记录日志更安全可控。通过今天的实战练习你已经能独立完成用户体系搭建、权限分配和日常运维操作。接下来不妨在自己的虚拟机里动手演练一遍把每个命令敲出来遇到报错再看看本文的“踩坑指南”很快就能熟练于心