“用户名 不是 sudoers 文件”这个提示,没见过的人看第一遍大概率有点懵:什么叫“不是 sudoers 文件”?我明明是个人,怎么跟文件比起来了。见过的人则往往已经在终端前出了一身汗——尤其第一次在 Debian 桌面上撞见这句时,我的第一反应是“难道系统把我忘了”。英文原话其实是 “xxx is not in the sudoers file. This incident will be reported.”,翻译成中文后更拧巴了,但意思很明确:当前这个用户账号,不在 sudo 的授权名单里,所以 sudo 不仅拒绝执行,还会把这次未经授权的尝试记进系统日志。
这个报错在 Debian 系里出现频率高得离谱,几乎每个从 Ubuntu 转过来的新手都会踩一次,因为 Ubuntu 默认给第一个用户发 sudo 权限,而 Debian 的默认行为更保守一些。这篇文章我把问题从原理到实操拆开来讲,覆盖桌面版 Debian、WSL、虚拟机、云镜像等常见场景的修复方法,也把那些容易让 root 都被锁在门外的坑一并交代清楚。你按自己手头的环境照着做就行,不需要背命令,理解逻辑之后举一反三很容易。
1. 先搞清楚:这个报错到底卡在哪一环
1.1 “sudoers 文件”是个什么东西
sudoers 是/etc/sudoers这个配置文件的简称,它是 sudo 命令的“授权名单”。sudo 的工作流程说白了就三步:用户敲下sudo,系统去翻/etc/sudoers(以及/etc/sudoers.d/目录下的碎片文件)看看有没有匹配的规则,有则放行、调起一条临时 root 权限的命令;没有则拒绝,并甩出那句经典提示。
你可以把 sudoers 想象成小区门禁系统的白名单。你的门禁卡(用户名)得先被登记进系统(sudoers),刷卡时闸机才会开;没登记的人刷卡,闸机不仅不开,还会在保安室留一条记录。Debian 下“没登记”最常见的表现,就是当前用户压根不在 sudo 组里,或者 sudoers 文件里根本没有赋予 sudo 组的规则行。
实际文件里的授权规则长这样:
root ALL=(ALL:ALL) ALL %sudo ALL=(ALL:ALL) ALL第一行表示 root 可以在任何主机上以任何用户身份执行任何命令。第二行开头的%sudo表示“sudo 这个用户组”整体被授权。所以判断逻辑是双重的:你这个人得在 sudo 组里,同时 sudoers 文件里得允许 sudo 组干活。这两个条件缺一个,你都会看到报错。
1.2 为什么 Debian 里这个报错特别多
Ubuntu 装完系统后,安装向导创建的第一个用户默认被加入 sudo 组,所以很多人习惯了“装完就能 sudo”的体验。但 Debian 的安装器默认不这么做。你在 Debian 安装过程中创建的普通用户,默认只属于自己的用户组,以及 cdrom、floppy、audio、video 等周边组,sudo 组并不在其中。
这倒不是 Debian 设计失误,而是它一直以来的理念:系统装完先给你一个干干净净的普通用户,需要提权时再明确地手动方案。对熟悉命令行的人来说这无所谓,一条命令的事;但对刚从 Ubuntu 转来的新手,第一条sudo apt update就会被这句报错当头一棒。
还有一个很容易忽略的情况:如果安装时选了最小化安装或“标准系统工具”,系统里可能连sudo这个软件包本身都没装。这时候你敲sudo,得到的会是command not found,而不是 sudoers 相关提示。排障时先确认 sudo 是否真的存在,别在源头上白折腾。
1.3 最容易撞上这个问题的五类场景
我基于日常接触的情况整理了一下,大概就下面这些:
- 刚装完 Debian 桌面的新手:第一个用户默认没进 sudo 组,装软件、改系统配置时处处碰壁。
- 手动新建的用户:很多人用
adduser建完新账号后忘了提权,切换过去才发现什么都干不了。 - 从 Ubuntu 迁移过来的人:习惯性以为第一个用户自带 sudo 权限,在 Debian 上直接翻车。
- WSL、容器或云镜像环境:WSL 里新装 Debian,或者从云镜像启动的实例,默认用户是不是在 sudo 组完全取决于镜像作者心情,经常遇到既没有 root 密码、用户又没 sudo 权限的尴尬局面。
- PVE/虚拟机模板制作:用 cloud-init 或镜像模板批量克隆系统时,如果模板里的用户没正确加入 sudo 组,克隆出来的所有机器都会继承这个坑。
不管哪类场景,修复思路都围绕一件事:让目标用户进入 sudoers 授权范围。下面逐步展开。
2. 动手修复前,先想清楚手里的牌
2.1 修复前必须回答的三个问题
网上关于这个报错的教程非常多,但直接抄很可能翻车,因为大家的环境条件完全不一样。动手前先问自己三句话:
- 我能不能用 root 账号直接登录或切换到 root?
- 如果不知道 root 密码,能不能进 GRUB 的恢复模式?
- 手边有没有另一台 Linux 机器或者 Live 启动盘?
这三个问题的答案基本决定了你的修复路径。能用 root 当然最简单;不能就往下走恢复模式;恢复模式也进不去,那就得动用 Live 环境做 chroot。这三种方案的对比我放在下面:
| 前置条件 | 常见环境 | 操作复杂度 | 推荐度 |
|---|---|---|---|
知道 root 密码,能su -切换 | 大部分物理机、虚拟机 | 低 | 最推荐,改完就走 |
| 能进单用户/恢复模式 | GRUB 还正常的情况 | 中 | 备用方案,安全性高 |
| 有 Live 启动介质或其他 Linux 环境 | 系统连启动都困难,或忘记 root 密码 | 高 | 最后手段,但基本万能 |
| WSL、容器、云原先有特殊入口 | WSL/容器/云平台控制台 | 低 | 环境专属,后文单讲 |
这里顺带说明一下:Debian 下 root 和 sudo 不是一回事。root 是超级用户,它想干什么直接干,根本不需要sudo这层代理;sudo 只是允许普通用户临时借用 root 身份执行某些命令。所以哪怕 sudoers 文件里没有 root 这一行,root 依然来去自如。后面很多修复动作,本质上就是“借 root 的权限,把普通用户加进名单”。
2.2 修复方案的取舍逻辑:安全永远排第一
修复 sudoers 问题的方法不止一种,但我要先劝你一句:不要直接对/etc/sudoers使用普通文本编辑器硬改,更不要图方便执行chmod 666 /etc/sudoers或者干脆把文件权限改成 777。sudoers 文件的默认权限是 0440(即 root:root,所有者只读,组成员只读),任何多余权限都会让 sudo 直接罢工。这个文件一旦语法写错,sudo 会拒绝加载整个配置,结果就是系统里所有普通用户全都失去 sudo 能力,包括本来有权限的人。
正确的姿势是使用visudo命令。这个命令的本质是加锁打开 sudoers 文件,保存退出前会自动校验语法。语法有误时它会拦住你,给你几个选项:按e重新编辑,按x不保存退出,按q退出并丢弃修改。有这层保险在,手滑也翻不了车。如果后续想把自定义策略拆出来,则放到/etc/sudoers.d/目录里,文件名不要带~或.,且同样建议用visudo -f /etc/sudoers.d/xxx创建校验。
从安全角度排序,修复手段优先级大致是:
- 首选:
usermod -aG sudo 用户名,不动 sudoers 文件一分一毫,最干净。 - 次选:
visudo编辑主文件或在/etc/sudoers.d/里加独立片段,需要明确知道自己在写什么。 - 最后手段:Live 环境 chroot 进去改,操作复杂且容易伤及系统其他部分,但这是系统彻底进不去时的救命稻草。
2.3 理解 sudo 组和 sudoers 规则的配合逻辑
很多人误以为“把用户加进 sudo 组就行”,但加完组发现还是被拒,这种例子我见过不少。原因刚才提过:sudoers 文件里得有一行允许%sudo组执行命令的规则。Debian 默认%sudo ALL=(ALL:ALL) ALL这一行是存在的,所以常规情况下加组就够。但如果你的系统是精简模板,或者有人改过 sudoers,这行可能被删了或注释掉了。这时候你加了组依然无效,必须同时保证规则行存在。
还有一点值得注意:Debian 传统上不启用 wheel 组,但有些教程喜欢教人往 wheel 里加,这在 Debian 上是无效操作。Debian 的默认 sudoers 文件里根本没有 wheel 这条规则,你就算把用户加进 wheel 组,sudo 也照样不认识它。看到网上写 wheel 的教程,确认一下是不是 RHEL/CentOS 系的内容,别在 Debian 上照着抄。
3. 四种典型场景的实操修复全过程
3.1 场景一:知道 root 密码,走最短路径
这是最舒服的情况。终端里执行:
su -输入 root 密码后,你就切换进了 root 的 shell。注意这里如果密码输错,会提示su: Authentication failure,但不会把系统怎么样,重试即可。
接下来验证一下目标用户的用户名,例如zhangsan,然后执行:
usermod -aG sudo zhangsan-aG这两个参数要一起写。-a是 append(追加),-G是指定附加组,单独的usermod -G sudo zhangsan会把你写漏的组全清掉,很容易把用户踢出其他必要的组,比如cdrom、audio。所以务必记住-aG连用,这是很多老手也曾经手滑过的点。
如果你不想把用户加到整个 sudo 组,而想单独给某个用户开权限,可以用visudo在 sudoers 文件里加一行单独规则。我建议的做法是在/etc/sudoers.d/下新建一个独立文件:
visudo -f /etc/sudoers.d/zhangsan文件内容写:
zhangsan ALL=(ALL:ALL) ALL保存退出后,别忘了把文件权限调整到位,否则 sudo 会忽略它:
chmod 440 /etc/sudoers.d/zhangsan chown root:root /etc/sudoers.d/zhangsan加完用户组或规则后,让用户重新登录一次,组权限才会刷新生效。如果不想退出当前会话,可以用newgrp sudo手动把当前 shell 的附加组刷新一下,或者干脆su - zhangsan重新登录验证。
最后验证是否成功:
sudo -l sudo whoami如果sudo whoami输出root,恭喜,已经通了。
3.2 场景二:忘掉 root 密码但能进 GRUB 恢复模式
如果你没有 root 密码,但系统引导还正常,可以通过 GRUB 的恢复模式进去修。重启机器,在 GRUB 菜单选择Advanced options for Debian,然后选带(recovery mode)字样的内核条目。Debian 的恢复模式会弹出一个菜单,里面有root选项,进入之后是一个单用户 root shell。
需要注意,恢复模式下根文件系统常常是只读挂载的,你执行usermod会报Read-only file system。所以第一件事是重新以读写方式挂载根分区:
mount -o remount,rw /然后你就可以像场景一那样执行usermod -aG sudo zhangsan了。完成后输入exit或reboot重启,正常登录验证即可。
这里有个细节:恢复模式启动时,有些系统因为systemd的rescue或emergencytarget 环境限制,网络没起来、某些服务也没启动,但这不影响你改用户组,因为usermod操作不依赖网络。如果遇到/etc/group被锁或者磁盘异常,优先排查根分区是否真的是 rw,其次确认磁盘没有满。
另外提醒一句,GRUB 重启进恢复模式这个操作,如果在远程 VPS 上没法直接接触物理控制台,一般做不了。云服务器遇到这种问题,更多地要通过云平台提供的 VNC/串行控制台或救援模式进入,原理一致,入口不同。
3.3 场景三:系统进不去时用 Live 环境 chroot 修复
这招是压箱底的解法。适用于 root 密码忘了、恢复模式也进不去、或者系统引导已经半坏的情况。思路是:用一个 U 盘启动 Debian Live 或任意 Linux Live 系统,启动后挂载硬盘上的根分区,再用 chroot 把根目录切换到硬盘里的系统,然后像在真机里一样执行修复。
具体步骤大概是:
# 查看分区布局 lsblk -f # 假设根分区是 /dev/sda2,把它挂载到一个临时目录 mount /dev/sda2 /mnt # 把 /dev、/proc、/sys 这几个虚拟文件系统绑定进去,保证 chroot 环境能用 mount --bind /dev /mnt/dev mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys # 进入这个修复环境 chroot /mnt /bin/bash进入 chroot 之后,你现在就是这个 Debian 系统里的 root 了。直接执行:
mount -o remount,rw / usermod -aG sudo zhangsan如果不止要修复 sudo 组,还可以顺便修/etc/sudoers的规则。修完执行exit退出 chroot,然后umount /mnt/dev /mnt/proc /mnt/sys,最后umount /mnt,重启拔掉 U 盘。
这里有一个容易翻车的地方:Live 环境的系统版本和硬盘里的 Debian 可能不一样,chroot 进去后有些命令的依赖可能不匹配,比如usermod报动态库错误。这种情况通常是因为硬盘上的 /usr 分区独立挂载,而你没把它一并挂进去。稳妥起见,用lsblk -f看所有分区,把/usr、/home等独立分区也挂到对应路径下再 chroot。另外,绑定/dev/proc/sys这三样在 chroot 时是标配,漏了任何一个都可能导致奇怪问题。
Live 环境修复方案虽然看着繁琐,但它是物理机上最通用的“兜底”手段,学会了以后修密码、修 fstab、修 grub 都能用同一套思路。
3.4 场景四:WSL、容器和云镜像的特殊入口
这几个环境属于“有额外后门”,比物理机更好处理。
WSL 里如果遇到 Debian 用户的 sudo 报错,最简单的办法是直接在 Windows 的 CMD 或 PowerShell 里,用 root 身份进入发行版:
wsl -u root这会在当前 WSL 发行版里开一个 root shell,完全不需要密码。进去之后执行标准的usermod -aG sudo 用户名即可。改完可以用wsl -u 用户名或正常方式回到用户 shell 验证。注意 WSL 的 Debian 默认用户确定在/etc/wsl.conf的[user]段里,但如果你手动adduser过其他用户,很容易搞混当前登录身份,先whoami确认一下再动手。
容器环境里更直接,不需要走什么恢复模式。只要你拥有 Docker/Podman 的管理权限,就可以在宿主机上直接以 root 身份进入容器操作:
docker exec -u root -it 容器名 bash或者用podman exec -u root。进了容器后,和场景一的操作一模一样。容器中的 Debian 经常是精简镜像,sudo包可能压根没装,先进apt update && apt install sudo再谈其他。
云镜像和 PVE 模板场景稍微特殊一点。很多 Debian 云镜像默认不设置 root 密码,只提供一个云用户(比如debian用户),这个用户通常已经配好了 sudo 免密。但如果你基于镜像做了定制、删掉了原用户或修改了 sudoers,就可能出现新普通用户没有 sudo 权限的情况。这种环境下最稳妥的路径是从 VNC/串行控制台登录(或通过 cloud-init 重新配置),因为在云平台上如果你把 sudoers 改坏了,常规 SSH 登录很可能直接断掉。cloud-init 的写法一般是在用户配置里带groups: [sudo]或sudo: ALL=(ALL) NOPASSWD:ALL,具体字段跟你的云平台模板有关。
3.5 修复后的验证和安全收尾
改完之后别急着关机,花三十秒做一轮验证:
# 确认当前用户能列出 sudo 规则 sudo -l # 确认 sudo 能成功执行一次 sudo -v sudo true && echo "sudo ok"sudo -l会列出当前用户被允许执行的命令列表,看到匹配的规则说明配置已经生效。sudo -v只是验证凭据并刷新时间戳,不做实际动作,适合确认授权。
还要顺手检查一下系统日志。sudo 会把每次授权尝试都写进/var/log/auth.log,可以用下面的命令看看有没有异常记录:
tail -n 50 /var/log/auth.log | grep sudo我见过有人把/etc/sudoers权限改成 666 之后,每次执行 sudo 都报/etc/sudoers is world writable之类的错误。如果你遇到类似情况,手动恢复权限:
chown root:root /etc/sudoers chmod 440 /etc/sudoers另外,只要不是你主动配置的免密,用完 root shell 后记得exit回到普通用户,别长期泡在 root 会话里。这个习惯能帮你少踩很多自己设下的坑。
4. 我踩过的坑和常见问题速查
4.1 sudoers 文件被你改坏了,怎么救回来
改 sudoers 最可怕的后果不是报错提示“不在 sudoers 文件”,而是整个 sudo 功能失效。比如你手滑把一行语法写错,保存退出时 visudo 虽然会拦你,但如果用了普通编辑器保存,或者写进了/etc/sudoers.d/里一个文件名带点号的非法文件,sudo 会拒绝加载所有配置,结果所有普通用户的 sudo 全部断掉。
救法分两类。第一类是你还能进 root shell,那就直接用su -切 root,然后运行visudo修正。这里注意,即使/etc/sudoers语法已经完全崩了,root 使用visudo本身不受影响,因为它校验的是文件不是用户权限。第二类是连 root shell 都没有,那就回到 Live 环境 chroot 修,挂载后把写错的文件删掉或修正,然后用visudo -c检查语法:
visudo -cvisudo -c是一条校验命令,会扫描主文件和/etc/sudoers.d/下所有文件并报告语法错误。建议每次修改完 sudoers 相关文件后都跑一遍,几秒钟的事,能避免很多连锁麻烦。
还有一个隐患:有人喜欢把自定义规则文件命名为/etc/sudoers.d/zhangsan~或者/etc/sudoers.d/zhangsan.conf。Debian 的 sudo 会忽略文件名中含有~的文件,也会跳过带.的文件。这不是 bug,而是安全设计。看到规则没生效,先检查文件名是不是踩了这个禁区。
4.2 用户明明在 sudo 组,sudo 还是拒绝
这种情况也经常遇到。排查顺序如下:
- 先确认组名是否正确:Debian 固化使用
sudo组,不是wheel,也不是admin。getent group sudo能看到组成员列表。 - 再确认 sudoers 里有没有
%sudo ALL=(ALL:ALL) ALL这一行。grep sudo /etc/sudoers看一眼。 - 确认当前终端是否“加载”了新的组状态。用户加组通常要求重新登录才生效,临时会话里直接跑
newgrp sudo可以手工刷新当前 shell 的组信息。 - 如果以上都正常但 sudo 依然拒绝,用 root 身份跑
usermod -aG sudo 用户名检查是否真的把用户加进组了,有些精简系统里的/etc/group可能没有 sudo 组,如果getent group sudo返回空,需要先用groupadd sudo建组,再usermod -aG sudo 用户名。
另外注意一个细节:sudoers 文件里的规则是有“顺序”的,文件后面匹配的规则会覆盖前面的规则,尤其使用Defaults和!符号时最容易出现“明明有授权却被拒绝”的现象。如果你在/etc/sudoers.d/里写了类似zhangsan ALL=(ALL) NOPASSWD:ALL,又在主文件前面写了限制性规则,最终生效以匹配优先级为准。排查时可以把自定义文件先移走再测试,确定是不是规则冲突。
4.3 报错不是 sudoers,而是 “sudo: command not found”
Debian 最小化安装、容器镜像或精简模板里经常没有 sudo 包。这时候的修法比 sudoers 还简单。用 root 身份执行:
apt update apt install sudo装完之后,你会发现 sudoers 文件自动就带上了默认规则,%sudo组默认可用。接下来只需把用户加进 sudo 组即可。也就是说,问题根源是缺包,不是缺配置。遇到 sudo 相关报错,第一步先which sudo确认命令存在,能省不少时间。
4.4 报错说 “no tty present” 或 “no askpass program specified”
这个提示常见于脚本或后台任务里直接调用 sudo 的场景,比如crontab或 systemd 里跑了sudo操作。原因是 sudo 需要从终端读密码,但后台任务没有关联终端。解决办法一般是:
- 如果需要自动执行特定命令,可以单独为该命令配置 NOPASSWD 规则;
- 或者在 cron 里使用
sudo -n,但有 NOPASSWD 规则才行; - 检查 /etc/sudoers 里是否出现了
Defaults requiretty,如果有这行,把它注释掉或改成Defaults !requiretty,可以放宽对终端的要求。
requiretty在 Debian 默认配置里一般没有,但如果有人手动加过,就会出现这种神坑。出现时直接用visudo查看并注释即可。
4.5 NOPASSWD 配置的几个常见误区
免密配置非常实用,但写错位置比不写还坑。最常见的错误是在/etc/sudoers.d/里写:
zhangsan ALL=(ALL) NOPASSWD: ALL注意NOPASSWD:后面有个空格,这其实没问题。真正容易出错的是把这一行放在zhangsan ALL=(ALL) ALL之前,然后又写了一个zhangsan ALL=(ALL) ALL。由于 sudoers 规则是“后写的覆盖先写的”,结果后一行又要求密码,免密配置就失效了。正确做法是只保留 NOPASSWD 那一行,或者在需要密码和免密混合时利用Cmnd_Alias按命令区分。
还有个小贴士:给用户配置 NOPASSWD 之前,先确认用户本身已经在 sudo 组或已有 sudo 授权。免密配置只是免掉“输入密码”环节,如果用户压根没有执行 sudo 的资格,写再多 NOPASSWD 也没用。
4.6 常见问题速查表
| 现象 | 可能原因 | 检查/处理 |
|---|---|---|
| 提示不在 sudoers 文件 | 用户不在 sudo 组或 sudoers 规则缺失 | usermod -aG sudo 用户名并检查%sudo规则行 |
| sudo 命令不存在 | 未安装 sudo 包 | apt install sudo |
| 加了组还是不生效 | 当前会话未刷新组状态 | 重新登录或newgrp sudo |
| 报错“文件权限过大” | sudoers 权限被改成非 0440 | chown root:root /etc/sudoers && chmod 440 /etc/sudoers |
| sudoers.d 下规则不生效 | 文件名带.或~ | 改用不带点、不含波浪号的文件名,例如zhangsan |
| 语法写错导致 sudo 全崩 | 普通编辑器直改文件 | 用 visudo 修复,visudo -c校验 |
| requiretty 报错 | 配置了Defaults requiretty | 注释该行或改为!requiretty |
| NOPASSWD 不生效 | 规则被后写的密码规则覆盖 | 理顺规则顺序,保留单一免密行 |
这张表基本覆盖了我这些年遇到的大部分 sudoers 相关排障场景。遇到新问题别急着重装系统,花几分钟把现象对应到原因上,往往一条命令就解决了。
5. 顺手分享:我平时维护 sudo 权限的几个习惯
5.1 新建用户时的固定动作
我每台 Debian 机器上新建普通用户,已经养成了一套固定操作。用adduser建号后马上执行usermod -aG sudo 用户名,很少留到第二天。因为很多系统工具和日常操作都默认用户有 sudo 能力,晚加一天就多一天“临时切 root”的坏习惯风险。如果你管理的机器多,建议写一个脚本把这几个动作打包执行,顺便设置 ssh 密钥、默认 shell,减少重复劳动。
5.2 自定义 sudo 规则从不直接动主文件
我现在维护生产环境时,/etc/sudoers主文件基本保持 Debian 默认状态,所有自定义规则一律丢进/etc/sudoers.d/。比如某个服务运行用户需要重启某一个 systemd 服务,我会创建一个/etc/sudoers.d/tomcat-restart文件,内容用Cmnd_Alias把允许的命令写清楚。这样主文件干净,出问题时定位也快——直接看目录里哪个文件可疑。
而且这种碎片化管理下,如果某一个文件写错了,visudo -c会明确指出是哪个文件第几行出错,不用在几百行的大文件里慢慢找。创建文件时我只用visudo -f这个入口,绝不会直接用vim去创建,这个习惯能挡掉好多手滑。哦对,创建之前记得先touch一下文件并调整属组权限,因为visudo -f在文件不存在时会直接创建,但在某些 Debian 版本上权限可能是 root:root 644 而不是 440,加完规则后顺手chown root:root和chmod 440最稳妥。
5.3 监控日志和定期检查
我有个很轻量的习惯:每隔一段时间就翻一翻/var/log/auth.log,专门看 sudo 相关的记录。不需要什么重型审计系统,一条 grep 就够:
grep "sudo" /var/log/auth.log | tail -n 20看什么?看有没有大量失败尝试。sudo是攻击者最喜欢试探的入口,如果你的系统对公网开放,这类日志里经常能看到各种用户名的爆破尝试。当然,系统自带的安全加固远比日志重要,但常看日志能让你对自己系统的“正常状态”心里有数,出了异常日志时才能一眼发现不对劲。
最后分享一个小技巧:如果你经常在多台 Debian 之间切换,可以在/etc/sudoers.d/里给常用用户加一行注释性友好的规则,同时保留Defaults timestamp_timeout=15。这个默认值表示 sudo 密码缓存 15 分钟,期间再执行 sudo 不用重复输密码。我见过有人把timestamp_timeout设成 0 导致每一条 sudo 都要求输入密码,折腾半天才想起是这个配置在捣鬼。根据自己习惯调整即可,但不要设成 -1(永久缓存),那相当于把 sudo 变成了永久 root,换用户或离席后安全隐患比较大。
对我个人而言,sudoers 这个报错早已不算什么难事,但它每一次出现都在提醒我:权限管理才是 Linux 系统里最该慢下来对待的部分。你不用记住所有报错的英文原文,只要把用户、组、sudoers 规则这三者的关系理顺,剩下的一切都水到渠成。