我们在 Centos7 系统上遇到了一个小灾难。配置脚本中的一个错误递归地将 /、/bin 和 /usr/bin 设置为 400 权限。这意味着 chmod、mount 等基本命令以及几乎所有其他命令都无法执行。我很有信心我可以通过从 live-usb 启动来解决这个问题,但我必须自己做一个。此外,损坏的机器是我们的路由器,所以当它崩溃时,我们就无法访问互联网了。
我有另一个装有 Linux x64 二进制文件的盒子,用于 chmod、bash、mount 和其余程序,是否有一些巧妙的方法可以从 USB(或网络或其他)执行它们而无需重新启动?
答案1
在 64 位 centos7 上,ld 程序位于 /lib64/ld-2.17.so。除非我运行另一个 centos7 系统,否则我不会找到它。我使用二进制 ld-2.17.so 执行 /bin/chmod ,并修复了 /bin、/usr/bin 和 /bin/chmod。这足以让我开始纠正其他一切。在另一个 centos 系统上,我运行:
for dir in /* ; do getfacl -pR "$dir" > /root/"$dir"_acls.txt ; done
这为我提供了有关我的发行版的正确权限的参考。我将这些 txt 文件复制到受损系统,然后针对 bin、boot、dev、etc 和 home,我运行
for perm in /root/perms/*_acls.txt ; do setfacl --restore $perm ; done
这不是文件中的完全匹配,但它比一次处理每个文件或单独处理每个文件要好得多。