例如,如果我把bin文件夹中的内容全部删除,然后用另一个bin文件夹的内容替换,系统还能运行吗?如果文件系统绑定到它自己的文件呢?假设有一个具有 444 权限的重要文件,我可以删除它并创建另一个完全相同类型的文件,但具有 777 权限并使其正常工作吗?对于其他操作系统中的其他文件夹,我可以只复制并粘贴这些文件夹,它仍然会启动吗?
答案1
任何(已知?)操作系统中的任何文件都可以被替换。
关键问题是:用什么代替?
文件与其替换文件不兼容的原因有多种。这些原因太多,无法全部列出,但可以让您体会一下:
编译的程序和库是针对特定的CPU架构编译的。您(通常)不能将 ARM 编译的文件放入 AMD64 系统上。
诸如 中的命令行实用程序
/bin
通常在脚本中使用(位于/usr/bin/
或中/usr/local/bin
)。如果您替换/bin
为来自另一个系统的那些,并且它们都基于相同的上游包,那么它也许不会造成太多问题。但如果它们有很大不同,例如使用GNU 核心实用程序另一个使用忙碌盒那么它们很可能会不兼容。库版本也可能是一个问题。编译程序时,它们是针对它们使用的库的特定版本编译版本进行编译的。通过交换错误版本的库很容易导致各种内存泄漏和“非法操作”错误。
我故意掩盖了这一点,如果你做了像删除这样灾难性的事情/bin
,那么你的系统将会出现各种各样的问题,直到它被替换并可能使其无法运行。
答案2
多个问题:
如果我删除了bin文件夹中的所有内容,然后将其替换为另一个bin文件夹中的内容,系统是否可以运行?
不会。如果您删除,/bin
您将没有可用的程序来替换其内容(mkdir
、cp
、mv
等都将被删除)。
即使您保留了这些工具,您也需要确保构建替换工具以使用系统上已有的匹配版本的库。
文件系统是否与其自己的文件相关联?假设有一个具有 444 权限的重要文件,我可以删除它并创建另一个相同类型的文件吗?
可能吧。但如果您在强制模式下运行 SELinux 之类的东西,则不然。
但是有了 777 权限,它还能工作吗?
可能不会。权限的存在是有原因的。如果您更改某些程序 ( sudo
、passwd
) 或文件 ( )的权限,/etc/passwd
您将停止系统运行。
对于其他操作系统中的其他文件夹,例如 Chrome 操作系统,您只需复制并粘贴文件夹即可,它仍然会启动。
我想知道这是否是因为 ChromeOS 总是/bin
在启动时重新安装或重置。我发现很难相信它还能继续正常工作。
答案3
唯一可能的答案是:这取决于。
文件一直在变化(例如,当系统更新或配置更改时)。但是盲目地删除/替换系统中的文件和目录将会产生不可预见的后果,其后果可能从“什么都没有”到“系统无法启动并需要完全重新安装”。
/bin
并/sbin
包含重要的二进制文件和系统命令;不建议弄乱它们。另一方面,删除文件/var/log
只会导致您丢失有关系统日志的信息。删除(非特权)用户主目录中的任何内容不会影响其他用户。
更改权限也是如此。删除x
可执行文件的权限将阻止其运行。将大多数文件的权限从 444 更改为 777 一开始不会产生明显的差异,除非您将使文件成为全局可写的,因此这是一个安全问题。另请注意,某些文件(例如 SSH 私钥)需要具有一组特定的、受限的权限。