Linux 用户意外发现!Systemd-tmpfiles 命令危及你的主目录
最新更新时间:2024-07-05
阅读数:
Systemd 是一款在 Linux 社区引发过许多争议的软件。
尽管如此,它已经成为几乎所有 Linux 发行版的标准且重要的一部分。
除了大家熟知的作为系统和服务管理器的角色外,systemd 还提供了许多其他功能。其中一个功能是
systemd-tmpfiles
命令。根据其手册页的描述,这个命令的功能简要地说就是“创建、删除和清理易失和临时文件及目录。”
一次意外的数据丢失事件
“一次清理 /var/tmp 目录的好机会”——这是某位 Linux 用户在运行了最近发布的 systemd 256 版中的
systemd-tmpfiles --purge
命令时所想的。然而,接下来发生的事情是:
“许多警告消息开始出现,其中包括 /home 目录的路径(无法恢复修改时间…?)。一个清理临时文件的工具怎么会在我的 home 目录里操作?这可不妙。我的心跳加速,立刻按下 Ctrl-C 终止了操作。”
尽管他反应迅速,一些文件还是永久丢失了。于是,他立刻在 GitHub 的
systemd 项目页面上向开发者报告
了这个问题。
开发者的回应
随即,一位 systemd 开发者(也是微软员工)回应道:
“一个明确说明‘由 tmpfiles.d/ 条目创建的所有文件和目录都会被删除’的选项,你对此一无所知,还觉得这是个‘好主意’?你有没有事先查看过你拥有的 tmpfiles.d 条目?
也许不要随便运行你一无所知的命令,同时忽略文档告诉你的内容?只是一个想法,嗯。”
引发的讨论和解决方案
这一回应态度强硬,但好的一面是,这个问题得到了应有的重视,引发了广泛的讨论,包括 systemd 的核心开发者、现任微软员工 Lennart Poettering 也参与其中。
要详细说明问题可能需要写成一份复杂的技术文档。简单来说,主要问题出在
systemd-tmpfiles
如何处理位于 “/usr/lib/tmpfiles.d/” 中的配置文件,特别是 “home.conf” 文件。
关键问题在于,尤其是那些不熟悉 systemd 配置深奥细节的用户,可能并不了解这个命令的广泛影响,它远远超出了单纯清理临时文件的范围。
此外,这个命令的文档加剧了这种情况,未能充分警告使用
--purge
选项可能带来的潜在后果,而这需要对配置路径有详细了解。最后,让我们直面现实——
systemd-tmpfiles
这个名字对其实际功能来说非常误导。
这一疏忽导致了对改进文档的呼声,以防止未来出现类似的危险误用情况。
修改和改进
GitHub 上的讨论建议增加更清晰的警告,并可能修改命令的行为,以防止在未明确指定配置路径的情况下执行。这样的更改可以帮助减少风险,向终端用户澄清这个系统工具的操作,防止意外数据丢失事件。
好消息是,在报告这个问题之后,systemd 的开发人员和 Lennart Poettering 迅速提出了对
systemd-tmpfiles
配置及其目录清理操作的处理进行修改的建议。
一个关键的
拉取请求已提交
,旨在细化命令的操作范围,确保明确排除 home 目录或任何关键区域,除非由系统管理员以受控方式指定。
秋
招已经开始啦,大家如果不做好充足准备的话,
秋
招很难找到好工作。
送大家一份就业大礼包,大家可以突击一下春招,找个好工作!