可以恢复`chmod -R 777 /bin`吗?

可以恢复`chmod -R 777 /bin`吗?

我知道chmod -R 777 /具有极大的破坏性,我知道一个chmod -R 000 /bin可以恢复通过使用附加磁盘,但我想知道chmod -R 777 /bin.

如果我有 root shell,但没有从运行状况良好的虚拟机安装其他磁盘,我可以恢复该系统吗?


(这个问题是出于学习目的,因为实际的盒子不是我的,也不是错误,并且盒子已经计划重建。)

答案1

正如您链接的响应中所述,这取决于您对“恢复”的定义(即,在系统上的任何人可能更改二进制文件后,您是否仍然信任二进制文件,这对于您的私人来说可能是“我想我没问题”台式机,但在多用户公司系统上更是如此)。

看看我的盒子,/bin有可管理数量的非 0755 或符号链接的文件:

ls -l /bin/ | grep -v '^-rwxr-xr-x' | grep -v '^l' | wc -l
35

这主要是因为它们是 setgid 或 setuid。因此,原则上,chmod 0755 /bin/*如果您仍然拥有 root 访问权限,您可以手动修复这 30 个、40 个二进制文件的权限。 (su并且sudo在恢复适当的权限之前不会工作。)

但出于实际目的,这仍然意味着您需要在某个地方有一台“干净”的机器以进行比较,但不需要安装其驱动器。

(想一想,我认为二进制文件上的错误权限不应阻止包管理器工作,因此您可以尝试重新安装每个包含 中某些内容的包/bin,但可能大多数内容都依赖于 中的某些内容/bin,所以您可能最终会删除并重新安装所有软件包。)

答案2

在我的 mint 系统上,/bin 中的所有文件都是 0755,除了 fusermount、mount、ping、ping6 和 su,它们是 04755。

0755 是共享可执行文件的合理权限掩码。哪些可执行文件是 setuid 在很大程度上取决于系统的安全策略。

试:

chmod -R 0755 /bin && chmod  04755 /bin/{{,fuser}mount,ping{,6},su}

(作为 root)此时几乎没有什么危害(在任何东西上设置 setuid root 都是一个潜在的漏洞)。

相关内容