[NIXP] Баг в Bash-скрипте Steam может привести к удалению всех пользовательских файлов из Linux-системы

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Аватара пользователя
Dmitry Shurupov
Сообщения: 336
Статус: Open Source geek
ОС: Ubuntu Linux

[NIXP] Баг в Bash-скрипте Steam может привести к удалению всех пользовательских файлов из Linux-системы

Сообщение Dmitry Shurupov »

В коде Bash-скрипта Linux-клиента Steam обнаружили досадную ошибку, которая может привести к полному удалению из операционной системы всех файлов, для которых у текущего пользователя есть права на запись. Ошибка в скрипте от Valve напоминает легендарный баг в коде install.sh проекта Bumblebee для драйверов NVIDIA (см. GitHub), который удалял всё содержимое файловой системы, за что снискал широкую огласку в Open Source-сообществе. Посудите сами — вот фрагмент исходного кода из Bash-скрипта от Steam, что может спровоцировать выполнение команды 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)" [...] # Scary! rm -rf "$STEAMROOT/"*

Баг в Linux-версии Steam не просто является «потенциальным»: в тикетах GitHub проекта уже появилась запись от первого(?) пользователя, непосредственно пострадавшего ввиду неожиданной работы скрипта. Сообщество уже предлагает свои варианты исправления этой ошибки, так что новый релиз Linux-версии Steam должен быть не за горами.


оригинал на www.nixp.ru
По-моему, это еще один повод перейти на Убунту.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3728
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: [NIXP] Баг в Bash-скрипте Steam может привести к удалению всех пользовательских файлов из Linux-системы

Сообщение Hephaestus »

Я, честно говоря, так и не понял, что это за зверь - steam.
Вот эта хреновина, которую надо себе на комп поставить - она для чего?
Что она делает, помимо темы данной новости?

Лицензия проприетарная.
Код закрытый что ли?
Я сунулся, было, попробовать, но для Linux там ссылка только на deb-пакет.
В слакбилдах, правда, что-то такое нашлось.
Но так я его и не поставил, уже не помню, почему. А так - я не игрок.
В общем, прожил я без него всю жизнь - и дальше проживу.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21427
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: [NIXP] Баг в Bash-скрипте Steam может привести к удалению всех пользовательских файлов из Linux-системы

Сообщение Bizdelnick »

Это типа магазина приложений. Получает данные карточки, ставит игрушку в хомяк.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: [NIXP] Баг в Bash-скрипте Steam может привести к удалению всех пользовательских файлов из Linux-системы

Сообщение SLEDopit »

Dmitry Shurupov писал(а):
16.01.2015 11:16
см. GitHub
ссылка неправильная. правильная здесь (:
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
MrClon
Сообщения: 838
ОС: Ubuntu 10.04, Debian 7 и 6

Re: [NIXP] Баг в Bash-скрипте Steam может привести к удалению всех пользовательских файлов из Linux-системы

Сообщение MrClon »

Код: Выделить всё

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

Вот кто-то может мне объяснить зачем вообще эыла нужна эта конструкция? На ЛОРе мне так толком не ответили (только пожаловались на трудности борьбы с перлозависимостью).
Может я не понимаю чего-то важного, но ведь при нормальной работе скрипта эта конструкция должна быть эквивалентна

Код: Выделить всё

STEAMROOT="${0%/*}"
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21427
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: [NIXP] Баг в Bash-скрипте Steam может привести к удалению всех пользовательских файлов из Linux-системы

Сообщение Bizdelnick »

MrClon писал(а):
16.01.2015 18:30
Может я не понимаю чего-то важного, но ведь при нормальной работе скрипта эта конструкция должна быть эквивалентна

Код: Выделить всё

STEAMROOT=`dirname $0`
test -d "$STEAMROOT" || ...
она эквивалентна у нормальных людей. Но им проще накатать пять строк комментария, из которого всё равно ничего не понятно, чем ещё одну строку кода. Итог: проверка существования каталога оказалась совсем не в том месте, в котором должна была быть, и не сработала.

Upd. Хотя нет, наверное это была не проверка, а такой извращённый способ получить абсолютный путь к каталогу. Причём, похоже, довольно распространённый:
https://stackoverflow.com/questions/5756524...n-macos#5756763
http://iallex.com/get-absolute-path-from-a-shell-path/
Я бы для этого использовал readlink -f, хотя это прокатило бы только при наличии гнутого readlink.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
chitatel
Сообщения: 2099

Re: [NIXP] Баг в Bash-скрипте Steam может привести к удалению всех пользовательских файлов из Linux-системы

Сообщение chitatel »

Hephaestus писал(а):
16.01.2015 12:24
Я, честно говоря, так и не понял, что это за зверь - steam.

Я сунулся, было, попробовать, но для Linux там ссылка только на deb-пакет.

Debian 8 - из коробки есть этот Стим (в ветке non-free). Инсталлировал, попробовал Team Fortress, Civilization 5, Half-Life 2 - всё работает прилично, играть в принципе можно. Игр под Linux & SteamOS не много. Для игромана - развернуться негде, только Windows, только хардкор...

В принципе штука удобная. Но - на любителя игр.
В общем, прожил я без него всю жизнь - и дальше проживу.

Именно.

К тому же этот Стим ещё и поднаср... подгадить может, оказывается.

P.S.
Жаль, что JA2 в Стиме только для Windows. С вайном у меня она как-то не срастается... :( Вот в эту игрушку пожалуй сыграл бы ещё...
Спасибо сказали:
Аватара пользователя
yamah
Сообщения: 1116
ОС: Rosa Fresh, Debian, RELS

Re: [NIXP] Баг в Bash-скрипте Steam может привести к удалению всех пользовательских файлов из Linux-системы

Сообщение yamah »

В SteamOS был более эпичный баг, который сносил все разделы на всех винтах при попытке установить сабж.
Понимание - это меч с тремя кромками: ваша правда, наша правда и Истина.
Жизнь - игра: сюжет задуман фигова, но графика хорошая...
Лучший игровой сервер - Земля: карта всего одна, но на 7 миллиардов игроков; читеров нет, админ терпеливый, но если уж забанит...
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21427
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: [NIXP] Баг в Bash-скрипте Steam может привести к удалению всех пользовательских файлов из Linux-системы

Сообщение Bizdelnick »

yamah
А разве там сабж не из коробки? В чём тогда вообще смысл этой steamos?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
chitatel
Сообщения: 2099

Re: [NIXP] Баг в Bash-скрипте Steam может привести к удалению всех пользовательских файлов из Linux-системы

Сообщение chitatel »

chitatel писал:
16.01.2015 19:05
P.S.
Жаль, что JA2 в Стиме только для Windows. С вайном у меня она как-то не срастается... :( Вот в эту игрушку пожалуй сыграл бы ещё...
Оказывается, ja2-stracciatella ще не вмерла! v0.15.0 релиз от 23.05.2016.

amd64 deb-пакет нормально воткнулся в Ubuntu 14.04, data скопировал с виндовозной установки игры - "Золотая серия" Буки 2002 г.

Всё работает, зависаний и вылетов пока не было. Играть можно. Нанял Ивана, Омерту зачистил.

P.S.

Это я писал в июне 2016 г. А в июле 2018 г. я таки закончил играть в игру, начатую в 2016 г. Взял штурмом Медуну и Шенк забил Драньку насмерть кулаками в подвале. Ubuntu 16.04, ja2-stracciatella v0.15.0, играбельность отличная, багов и вылетов не было. Точнее были - но то были известные баги самой бажной ja2.
Спасибо сказали: