从sudo到failed to start network time synchronization:一个Ubuntu文件系统崩溃的故事。

以下是故事经过。
很久很久以前,我不知脑子哪里出问题了,擅自root了/usr/local,并更改了读写权限。因此出现了第一个问题:当我需要sudo的时候,terminal就会温情的告诉我:

sudo:/usr/bin/sudo 必须属于用户 ID 0(的用户)并且设置 setuid 位。

这个问题本身原因在于sudo的权限变了,因此网上有很多人给出了解决方案。比如https://www.cnblogs.com/chxwkx/p/10686864.html就总结的很不错。但是问题出现在这一句

执行命令chmod 755 /usr

从这句开始,我就踏上了一条布满荆棘的拯救之路。
重启之后,提示

sudo:在加载插件“sudoers_policy”时在 /etc/sudo.conf 第 0 行出错。

这是文件系统在哀嚎,错误的方案是继续人为改变sudoers的读写权限。我劝大家不要一条道走到黑了,以我为例,经过一番骚操作,出现了“failed to start network time synchronization”的错误,至此已经无法开机进入图形界面了,报错信息大概长这样


差不多这样吧

进入recovery模式后再进入root,根据提示信息输入

systemctl status systemd-timesyncd.service

发现该服务 load 成功了,但是activate 失败了。而网上关于相关错误的描述十分少,总之没有找到答案。我想重装系统了。
给急于解决问题的同学答案:

原因是人为改变了文件系统读写权限。

恢复文件系统权限才是正路

我终于想起来问题可能在于文件系统,所以我开始转换思路,谋求恢复文件系统的所有权和读写权限。
思路就是复制一个正常系统的文件权限配置给崩溃的机器。参考这篇文章https://blog.csdn.net/qq_43626147/article/details/114805792,我的做法是

  1. 制作一张Ubuntu系统盘,在崩溃的机器启动后从系统盘进入ubuntu试用模式。
  2. 在试用模式打开终端,输入
cd /usr   # cd到正常的试用系统
getfacl -R . > permissions.txt  # 将当前目录下左右文件的权限记录在txt文件中

并将txt文件复制到崩溃系统磁盘的/usr下。

  1. 重启,退盘。进入recovery模式,进入root。
sudo -i
cd /usr  # cd到损坏目录
setfacl --restore=permissions.txt # 根据保存的权限,一次还原坏目录

然后重启,看到了久违的紫色图形界面,泪水打湿了我的眼眶。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容