Source: Slashdot
上周针对systemd的一个bug报告抱怨称:“我的主目录的大部分文件被删除了。该报告要求更新systemd-tmpfiles工具的一个标志:“在--purge旁边加上一个巨大的警告。这个选项很危险,所以应该明确指出它很危险。五年前,systemd-tmpfiles已经超越了仅管理临时文件的范畴,现在它管理各种即时创建的文件…比如用户的主目录。如果在未指定非常重要的配置文件的情况下调用systemd-tmpfiles --purge命令,版本256将欣然清除整个主目录。
系统开发人员Luca Boccassi在微软的回应中首次对这个bug报告作出了冷静的回应:“一个选项实际上被记录为'由tmpfiles.d/条目创建的所有文件和目录都将被删除',你一无所知,听起来像一个'好主意'吗?你有没有去查看之前有哪些tmpfiles.d命令?也许不要只是运行你一无所知的随机命令,而忽视文档上告诉你的内容?就一个想法而已。但报告随后引发了“很多讨论”,Phoronix报道了一些摘录: Lennart Poettering:“我认为如果在命令行没有指定配置文件,那么我们应该使--purge失败。我认为在任何情况下,没有一个指定文件的调用是有意义的,它将在这里解决这个问题。红帽开源开发人员Zbigniew J³drzejewski-Szmek:“我们需要重新思考--purge的工作方式。
永远不破坏用户数据的原则是至关重要的。可以有一些会删除用户数据的命令,但它们需要尽量减少并受到保护。Systemd贡献者Betonhaus:“拥有一个声明不可替代文件—例如主目录的内容—是可轻松清除的临时文件的功能,至少是较差的用户界面设计,最坏的情况下是一个严重的设计缺陷。但最后,Phoronix写道,systemd-tmpfiles的行为“现在得到了改进。
周三合并了这个补丁,现在当运行'purge'时,systemd-tmpfiles会接受一个配置文件。这样用户必须明确地提供他们最终想要删除的配置文件。文档也得到了改进,以使行为更加清晰。感谢长期以来的Slashdot读者slack_justyb分享这条消息。
设计的缺陷可能导致意外删除重要文件,提示用户谨慎操作,提醒文档及时阅读对减少风险至关重要。