Linux 用户意外发现!Systemd-tmpfiles 命令危及你的主目录

Systemd 是一款在 Linux 社区引发过许多争议的软件。尽管如此,它已经成为几乎所有 Linux 发行版的标准且重要的一部分。

除了大家熟知的作为系统和服务管理器的角色外,systemd 还提供了许多其他功能。其中一个功能是 systemd-tmpfiles 命令。根据其手册页的描述,这个命令的功能简要地说就是“创建、删除和清理易失和临时文件及目录。”

一次意外的数据丢失事件

“一次清理 /var/tmp 目录的好机会”——这是某位 Linux 用户在运行了最近发布的 systemd 256 版中的 systemd-tmpfiles --purge 命令时所想的。然而,接下来发生的事情是:

“许多警告消息开始出现,其中包括 /home 目录的路径(无法恢复修改时间…?)。一个清理临时文件的工具怎么会在我的 home 目录里操作?这可不妙。我的心跳加速,立刻按下 Ctrl-C 终止了操作。”

尽管他反应迅速,一些文件还是永久丢失了。于是,他立刻在 GitHubsystemd 项目页面上向开发者报告了这个问题。

开发者的回应

随即,一位 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 目录或任何关键区域,除非由系统管理员以受控方式指定。

最终结果是迅速发布了带有必要更改的 systemd 256.1。你可以在 GitHub 上跟踪整个讨论,并在 Mastodon 上找到关于这个话题的评论。

The post Linux 用户意外发现!Systemd-tmpfiles 命令危及你的主目录 first appeared on Linux迷.

版权声明:
作者:玉兰
链接:https://www.techfm.club/p/132643.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>