Linux怎么在单用户模式下使用visudo修复损坏的sudoers文件

千浩酱_6432

千浩酱_6432

2026-11-07

263人浏览

原创

进单用户模式后/仍是只读,需先remount为rw再visudo修复:Ubuntu加init=/bin/bash后执行mount -o remount,rw /,RHEL加rd.break后chroot并remount;必须用visudo校验语法,检查include文件及权限(0440),最后visudo -c确认parsed OK。

linux怎么在单用户模式下使用visudo修复损坏的sudoers文件

进单用户模式后 / 仍是只读,直接 visudo 会失败

现代发行版(Ubuntu 22.04+、RHEL 8/9)默认以只读方式挂载根文件系统,哪怕进了 GRUB 单用户模式,/ 仍是 ro。此时运行 visudo 会报错:Read-only file system,连临时文件都写不进去。

必须先手动 remount 为读写:

  • Ubuntu/Debian 系:启动时按 e 编辑 GRUB 启动项,在 linux 行末尾加 init=/bin/bash → Ctrl+X 启动 → 执行 mount -o remount,rw /
  • RHEL/CentOS 系:同样按 e,在 linux 行末尾加 rd.break → Ctrl+X → 进入 initramfs 后执行 switch_root /sysroot /bin/bash → 再执行 mount -o remount,rw /
  • 验证是否成功:touch /etc/test && rm /etc/test,无报错即 OK

用 visudo 而不是 vim 直接改 /etc/sudoers

visudo 的核心价值不是“打开编辑器”,而是在保存前自动调用 sudoers -c 做语法校验。直接 vim /etc/sudoers 改完一保存,如果第 42 行漏了个冒号,重启就再次锁死——你刚修好的系统又进不去了。

常见低级错误包括:

  • %wheel ALL=(ALL) NOPASSWD:ALL 写成 %wheel ALL=(ALL NOPASSWD:ALL)(括号位置错)
  • 别名定义漏前缀,比如写了 REBOOT = /sbin/reboot,但没加 Cmnd_Alias
  • 用户行末尾多了一个空格或不可见的 BOM 字符(尤其从 Windows 复制过来时)

如果系统没装 vim,visudo 可能 fallback 到 vi 或 nano;可提前设 export EDITOR=/bin/nano 避免卡在 vi 模式。

Linuxdo Application
Linuxdo Application

为 Linux.do 注册撰写高通过率、去 AI 化的中文小作文。进行自适应调查以了解申请人的真实背景,...

下载

修复后必须单独检查 include 的外部文件

/etc/sudoers 里只要有一行 #includedir /etc/sudoers.d 或 #include /etc/sudoers.local,这些被包含的文件就参与语法解析。主文件修好了,/etc/sudoers.d/01-custom 里一个拼写错误照样让 sudo 全局报 parse error。

排查步骤:

  • 运行 visudo -c -f /etc/sudoers.d/01-custom(注意:老版本用 visudo -c -f,新版本用 sudoers -c -f)
  • 若报错,临时重命名可疑文件:mv /etc/sudoers.d/01-custom /etc/sudoers.d/01-custom.bak
  • 再跑 visudo -c 看是否通过;通过后再逐个恢复、单独校验
  • 所有 sudoers 相关文件权限必须是 root:root 且 ≤ 0440,否则 visudo -c 会警告并拒绝加载

重启前别跳过 visudo -c 手动验证

改完保存退出 visudo 后,它会自动做一次语法检查,但这个检查可能因终端环境异常而静默失败。务必手动再跑一遍:visudo -c。只有输出明确的 sudoers file parsed OK,才算真正安全。

真正容易被忽略的是:修复完主文件、也确认了 /etc/sudoers.d/ 下所有文件都没问题,却忘了检查文件编码或换行符。一个带 UTF-8 BOM 的 .sudoers.d 文件,在部分系统上不会报语法错,但会导致规则完全不生效——sudo -l 显示为空,日志里只写 user not in sudoers,让人误以为是配置没加对。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4430

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3713

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

3013

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

7450

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

7082

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

4033

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3525

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3779

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习