Установка Steam может стереть мой дом. Как это предотвратить?

14

Я прочитал тревожную тему о Valve, где пользователь потерял свою систему при использовании Steam-скрипта. Существует обсуждение на reddit.linux и на reddit / steam .

Это может быть не частой проблемой, потому что я изменяю все виды конфигурации моей системы. Сценарий, о котором идет речь, делает что-то действительно, очень глупо, но, вероятно, не запускает сценарий сбоя для каждой системы, потому что ...

Оригинальная ошибка:

Я не уверен, что случилось. Я переместил папку в заголовке на диск, смонтированный под ним, /media/user/BLAHи вставил символическую ссылку /home/user/.local/steamв новое место.

Я запустил пар. Он не запускался, он предлагал мне просмотреть, и все еще не мог найти его, когда я указывал на новое местоположение. Стим разбился. Я перезапустил это.

Он переустановил себя и все выглядело великолепно. Пока я не посмотрел и не увидел, что Steam рекурсивно удалил все, что принадлежало моему пользователю, из корневого каталога. Включая мой внешний накопитель на 3 ТБ, я поддерживаю все, что было установлено в / media.

Все важное, по большей части, было в облаке. Это огромные хлопоты, но это не катастрофа. Если есть вероятность, что перемещение вашей папки Steam может привести к рекурсивному удалению всего в дереве каталогов, вам, вероятно, следует просто выдать ошибку, а не пытаться указывать на другие вещи. Или вы знаете, позволяют пользователю выбрать каталог установки, как в Windows.

Моя система - Ubuntu 14.04, и диск, на который я ее переместил, был ntfs, если он того стоит.

Rinzwind
источник

Ответы:

14

Проблема начинается около строки 19 в сценарии «steam.sh.»:

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

$STEAMROOTможет стать пустым, эффективно делая rm -rf "$STEAMROOT/"*дальнейшее в сценарии так же, как rm -rf "/"*.


Появляются патчи, и в этом скрипте много неправильного. Легче всего изменить и хотя бы предотвратить удаление файлов, это не должно ...

rm -rf "$STEAMROOT/"*

чтобы ...

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

Также возможно добавить выход сразу после STEAMDATAустановки:

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

Если кто-то установил Steam в качестве пользователя root, предупредите: он удалит ваш ВСЕ диск.

Rinzwind
источник