回顾一下,[Kevin Fang]将我们带回到 2015 年,当时 Linux 版 Steam 问题跟踪器 [keyvin]打开了一个问题,报告称在移动 Steam 文件夹后启动 Steam 客户端刚刚擦除了他的所有用户数据,包括他的备份驱动器安装在/media
下。根据 [keyvin],他将标准~/.local/share/steam
移动到安装在/media
下的驱动器,并将符号链接~/.local/share/steam
到外部驱动器上的这个新位置。然后他尝试启动 Steam,但失败了,之后 Steam 崩溃并尝试重新安装。就在那时 [keyvin] 意识到 Steam 显然已经从根文件夹中递归地删除了他的用户拥有的所有内容。
在问题线程中,用户 [doofy] 在尝试直接启动~/.local/share/steam/steam.sh
脚本并启用调试时遇到了相同的错误。然后,他是第一个指出steam.sh
脚本中的rm -rf
人,但由于该特定行位于一个仅在 Steam 尝试删除并重新安装自身以“修复”启动失败时调用的函数中,因此这是如何发生的?最终似乎是因为STEAMROOT
变量被设置为空字符串,而另一个未设置的变量触发了reset_steam()
函数,导致所有用户数据消失。
从那时起,Valve 大概已经解决了这个问题,因为没有更多的用户提交了票证,但令人担忧的是, Windows 上似乎仍然存在类似的问题。无论最初的 Linux 问题是否已得到解决,它都清楚地表明人们应该如何始终检查返回值,并且也许,只是也许,永远不要执行自动rm -rf
或等效操作。
原文: https://hackaday.com/2024/01/20/how-a-steam-bug-once-deleted-all-of-someones-user-data/