Установка пари може стерти мій дім. Як запобігти?


14

Я прочитав тривожну тему на Valve, коли користувач втратив систему під час використання парового сценарію. Існує дискусія на reddit.linux та на reddit / steam .

Це може не бути поширеною проблемою, оскільки я змінюю всілякі конфігурації моєї системи. Проблемний сценарій робить щось справді, дуже глупо, але це, ймовірно, не запускає сценарій відмови для кожної системи, тому що ...

Оригінальний помилка:

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

Я запустив пар. Він не запускався, він пропонував мені дозволити переглядати, і досі не міг його знайти, коли я вказав на нове місце. Пара розбилася. Я його перезапустив.

Він перевстановився сам і все виглядало чудово. Поки я не переглянув і не побачив, що пара очевидно видаляла все, що належить моєму користувачеві, рекурсивно з кореневого каталогу. Включаючи свій зовнішній накопичувач 3 Tb, я підтримую все, що було встановлено під / медіа.

Все важливе, здебільшого, було в хмарі. Це величезні клопоти, але це не катастрофа. Якщо є ймовірність, що переміщення вашої парової папки може призвести до рекурсивного видалення всього дерева дерев каталогів, ви, мабуть, просто викинете помилку, а не намагаєтесь вказати на інші речі. Або ви знаєте, дозвольте користувачеві вибирати інсталяційний каталог спочатку, як у Windows.

Моя система - ubuntu 14.04, і диск, на який я перемістив її, був ntfs, якщо вона чогось варта.

Відповіді:


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

Якщо хтось там встановив пару як root, попередити: він видалить ваш КОЛІЙ диск.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.