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