Steam Install kann mein Zuhause löschen. Wie kann man das verhindern?

14

Ich habe ein beunruhigendes Thema zu Valve gelesen, in dem ein Benutzer bei der Verwendung des Steam-Skripts sein System verloren hat. Es gibt eine Diskussion über reddit.linux und reddit / steam .

Dies ist möglicherweise kein allgemeines Problem, da ich alle Arten von Konfigurationen an meinem System ändere. Das fragliche Skript macht etwas wirklich, wirklich dummes, aber es löst wahrscheinlich nicht für jedes System das Fail-Szenario aus, weil ...

Ursprünglicher Bug:

Ich bin nicht sicher, was passiert ist. Ich habe den Ordner im Titel auf ein Laufwerk /media/user/BLAHverschoben /home/user/.local/steam, das unter gemountet und mit dem neuen Speicherort verknüpft ist .

Ich habe Dampf gestartet. Es wurde nicht gestartet, es bot mir an zu stöbern und konnte es immer noch nicht finden, als ich auf den neuen Ort zeigte. Dampf stürzte ab. Ich habe es neu gestartet.

Es hat sich neu installiert und alles sah gut aus. Bis ich sah und sah, dass Steam anscheinend alles, was meinem Benutzer gehört, rekursiv aus dem Stammverzeichnis gelöscht hatte. Einschließlich meines externen 3-TB-Laufwerks habe ich alles gesichert, was unter / media gemountet war.

Alles, was wichtig war, befand sich größtenteils in der Cloud. Es ist ein großer Aufwand, aber keine Katastrophe. Wenn die Möglichkeit besteht, dass das Verschieben Ihres Steam-Ordners dazu führen kann, dass alles im Verzeichnisbaum rekursiv gelöscht wird, sollten Sie wahrscheinlich nur einen Fehler melden, anstatt zu versuchen, auf andere Dinge zu verweisen. Sie können dem Benutzer auch erlauben, ein Installationsverzeichnis auszuwählen, das anfangs unter Windows angezeigt wird.

Mein System ist Ubuntu 14.04, und das Laufwerk, auf das ich es verschoben habe, war ntfs, wenn es etwas wert ist.

Rinzwind
quelle

Antworten:

14

Das Problem beginnt um Zeile 19 in dem Skript "steam.sh":

STEAMROOT="$(cd "${0%/*}" && echo $PWD)"
STEAMDATA="$STEAMROOT"

$STEAMROOTkann hier effektiv leer werden, wodurch das rm -rf "$STEAMROOT/"*weitere Einfügen in das Skript genauso erfolgt wie bei rm -rf "/"*.


Es werden Patches angezeigt, und dieses Skript weist viele Fehler auf. Am einfachsten zu ändern und zumindest das Löschen von Dateien zu verhindern, sollte es nicht ...

rm -rf "$STEAMROOT/"*

zu ...

[[ -n $STEAMROOT && $STEAMROOT =~ 'steam' ]] && rm -rf $STEAMROOT

Es ist auch möglich, einen Exit hinzuzufügen, nachdem STEAMDATAfestgelegt wurde:

STEAMROOT="$(cd "${0%/*}" && echo $PWD)"
STEAMDATA="$STEAMROOT"
if [ -z "$STEAMROOT" ]; then
    echo "stop script otherwise files are deleted from /."
    exit 1
fi

Wenn irgendjemand da draußen Steam als root installiert hat, wird gewarnt: Es wird Ihre GANZE Festplatte löschen.

Rinzwind
quelle