Instalacja Steam może wymazać mój dom. Jak temu zapobiec?

14

Przeczytałem niepokojący temat na temat Valve, w którym użytkownik stracił swój system podczas korzystania ze skryptu Steam. Jest dyskusja na temat reddit.linux i reddit / steam .

Może to nie być częstym problemem, ponieważ zmieniam wszelkiego rodzaju konfiguracje dotyczące mojego systemu. Skrypt, o którym mowa, robi coś naprawdę, naprawdę głupio, ale prawdopodobnie nie wyzwala scenariusza awarii dla każdego systemu, ponieważ ...

Oryginalny błąd:

Nie jestem pewien, co się stało. Przeniosłem folder w tytule na dysk zamontowany pod /media/user/BLAHi dowiązałem symbolicznie /home/user/.local/steamdo nowej lokalizacji.

Uruchomiłem parę. Nie uruchomił się, zaoferował mi przeglądanie i nadal nie mógł go znaleźć, gdy wskazałem nową lokalizację. Steam rozbił się. Uruchomiłem go ponownie.

Ponownie zainstalował się i wszystko wyglądało świetnie. Dopóki nie spojrzałem i nie zobaczyłem, że steam najwyraźniej usunął z katalogu głównego wszystko, co należało do mojego użytkownika. W tym mój zewnętrzny dysk 3 TB, wykonuję kopię zapasową wszystkiego, co zostało zamontowane pod / media.

Wszystko, co ważne, przeważnie znajdowało się w chmurze. To ogromny kłopot, ale to nie katastrofa. Jeśli istnieje szansa, że ​​przeniesienie folderu Steam może spowodować rekurencyjne usunięcie wszystkiego z drzewa katalogów, prawdopodobnie powinieneś po prostu zgłosić błąd zamiast próbować wskazywać na inne rzeczy. Lub wiesz, pozwól użytkownikowi wybrać katalog instalacyjny początkowo, tak jak w systemie Windows.

Mój system to Ubuntu 14.04, a dysk, na który go przeniosłem, był NTFS, jeśli jest coś wart.

Rinzwind
źródło

Odpowiedzi:

14

Problem zaczyna się około linii 19 w skrypcie „steam.sh.”:

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

$STEAMROOTmożna tutaj opróżnić, sprawiając, że rm -rf "$STEAMROOT/"*dalsze kroki w skrypcie są takie same rm -rf "/"*.


Pojawiają się łatki i jest dużo nie tak z tym skryptem. Najłatwiejsza zmiana i przynajmniej zapobieganie usuwaniu plików, nie powinna ...

rm -rf "$STEAMROOT/"*

do ...

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

Możliwe jest również dodanie wyjścia zaraz po STEAMDATAustawieniu:

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

Jeśli ktoś tam zainstaluje Steam jako root, zostanie ostrzeżony: spowoduje to usunięcie CAŁEGO dysku.

Rinzwind
źródło