![如果有人从 /etc/environment 中删除了 PATH 变量,会发生什么情况?](https://linux22.com/image/1623034/%E5%A6%82%E6%9E%9C%E6%9C%89%E4%BA%BA%E4%BB%8E%20%2Fetc%2Fenvironment%20%E4%B8%AD%E5%88%A0%E9%99%A4%E4%BA%86%20PATH%20%E5%8F%98%E9%87%8F%EF%BC%8C%E4%BC%9A%E5%8F%91%E7%94%9F%E4%BB%80%E4%B9%88%E6%83%85%E5%86%B5%EF%BC%9F.png)
目前,我们发现向远程 Ubuntu 服务器添加 API 密钥的最佳方法是将其编辑为环境变量etc/environment
。不幸的是,该项目的基础设施文档已随时间而丢失。
在该etc/environment
文件夹中,PATH
设置了系统范围内使用的变量。如果有人在尝试添加另一个环境变量时意外覆盖了此变量,会发生什么?损害是否会很大,以至于这样做会导致机器处于不可恢复的状态?
答案1
如果有人在尝试添加另一个环境变量时意外覆盖此变量,会发生什么?
您将无法再轻松启动安装在不同寻常位置的程序 - 您需要使用完整路径来运行它们。
始终存在由多个组件(由服务的初始化系统、由交互式会话的登录处理程序)设置的默认 PATH 值,尽管不同的 Linux 发行版会根据自己的需要对其进行调整,但默认值始终适合基本系统启动并让您登录。
(首先在 /etc/environment 中包含 PATH 的唯一原因是如果你需要额外的目录 – 例如,一些安装在 /opt 或 /u1 中的软件不是通过发行版的常规打包安装的。)
如果全局 PATH 设置以其他方式损坏,但您可以设法通过 SSH 或控制台登录,则仍然可以通过其完整路径运行可执行文件(例如/bin/sudo
)。而且由于环境变量在技术上不是全局的,而是按进程复制的,因此您可以在尝试修复问题时仅为该 shell 设置它。
损害是否会很大以至于导致机器处于不可恢复的状态?
只要您有物理或 KVM 访问权限,Linux 系统几乎总是处于可恢复状态。大多数启动过程实际上并不完全依赖 PATH,并且有几种方法可以中断它并获取恢复根 shell,您可以从中重新编辑文件。