В популярном игровом клиенте Steam под Linux обнаружен опасный баг. Если переместить папку, то при определённых условиях клиент Steam удаляет все поддиректории и файлы в пользовательском каталоге.

Пострадавший пользователь переместил папку Steam, вероятно, по причине того, что игровой клиент при инсталляции не позволяет выбрать адрес и устанавливается в жёстко определённый каталог. Видимо, с этим связаны последующие деструктивные действия.

Пользователь хотел обойти ограничение Steam, используя символическую ссылку с нового каталога на старый. С другими программами такой вариант проходит, но Steam повёл себя совершенно негуманно. Юзеру под ником keyvin особенно не повезло, потому что он лишился ещё и файлов на внешнем накопителе объёмом 3 терабайта.

Другие пользователи подтвердили факт глючной работы Steam под Linux. Например, пользователь d00fy рассказал, что только что лишился всей директории Home, когда запустил steam.sh с параметром STEAM_DEBUG=1.

Один из пользователей Github нашёл предполагаемую ошибку в скрипте. Похоже, при перемещении каталога указанная функция возвращает пустое значение, так что rm -rf "$STEAMROOT/" приравнивается к rm -rf "/"

Фрагмент скрипта

# figure out the absolute path to the script being run a bit
# non-obvious, the ${0%/*} pulls the path out of $0, cd's into the
# specified directory, then uses $PWD to figure out where that
# directory lives - and all this in a subshell, so we don't affect
# $PWD

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

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

12 комментария

  1. 16.01.2015 at 14:07

    только сегодня стим поставил. похоже просто прошел по лезвию ножа.

  2. 16.01.2015 at 14:45

    Это не баг а фича!!!!

  3. 16.01.2015 at 15:27

    аххаха, неужели баг…

  4. 16.01.2015 at 16:01

    А всё почему? Потому что под рутом сидеть не хорошо. Стим же сам по себе рута требует только для установки, после чего спокойно работает без него.
    Сами виноваты…

    • 16.01.2015 at 21:42

      При чем здесь рут, ты когда файлы в домашней директории удаляешь у тебя рут требует ?

      • 17.01.2015 at 13:18

        rm -rf «/» трет корень. Он ничего просто не сможет стереть без рута…

        • http://it.sander.su/

          18.01.2015 at 16:06

          да ладно. Он рекурсивно и до домашней доберется. Правда, у вас будет время (возможно) сообразить и прервать

  5. 21.01.2015 at 03:13

    Давно ждал повода. С удовольствием удалил, поскольку все равно не нашел там хороших бесплатных игр.

  6. 23.01.2015 at 20:07

    Пердолики в очередной раз соснули пипирку Габена

Оставить мнение