В популярном игровом клиенте 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 означает удаление файлов и каталогов без требования подтверждения на каждую операцию удаления.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    12 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии