The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

14.04.2016 21:13  Ошибка в bash-скрипте привела к полной очистке всех серверов хостинг-провайдера

Опубликована поучительная история, призывающая к осторожному использованию систем централизованного управления конфигурацией и показывающая необходимость жесткой изоляции резервных копий. Для автоматизации проведения работ на всех серверах одного хостинг-провайдера использовалась система Ansible. В один прекрасный момент в bash-скрипте для резервного копирования, содержащем команду вида "rm -rf {foo}/{bar}" ("rm -rf ${backup_dir}/${old_arc}/*" ?), была допущена ошибка, которая привела к незаполнению переменных. После того как скрипт был растиражирован и выполнен на всех серверах произошла катастрофа - было удалено содержимое всех серверов, включая данные сайтов 1535 клиентов и бэкапы, хранилище которых было примонтировано к одному из серверов.

Дополнение 1: Новость скрыта, так как судя по последним ответам пострадавшего в обсуждении его проблемы, он ввёл в заблуждение издание Independent и выдумал эту историю.

Дополнение 2: Автор сообщения заявил одному из итальянских изданий, что это была шутка. Представители Stack Overflow также указали, что это мистификация.

  1. Главная ссылка к новости (http://www.independent.co.uk/l...)
  2. OpenNews: Выпуск системы управления конфигурацией Ansible 2.0
  3. OpenNews: Эксперименты с системой после выполнения rm -rf /
  4. OpenNews: Выполнение rm -rf / может привести к неработоспособности UEFI-прошивки ноутбука
Лицензия: CC-BY
Тип: Тема для размышления
Ключевые слова: bug
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, Аноним, 21:15, 14/04/2016 [ответить] [смотреть все]
  • +15 +/
    Вот костыления достойные плоды !
     
  • 1.2, grec, 21:16, 14/04/2016 [ответить] [смотреть все]
  • +9 +/
    На всяких sh кодить дело не благодарное.
     
     
  • 2.69, Andrey Mitrofanov, 09:31, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]
  • +1 +/
    Ога-ога Зато теперь bash exe точно готов для майкрософта-виста ... весь текст скрыт [показать] [показать ветку]
     
  • 1.3, Аноним, 21:16, 14/04/2016 [ответить] [смотреть все]  
  • +1 +/
    lol
     
  • 1.4, A.Stahl, 21:18, 14/04/2016 [ответить] [смотреть все]  
  • +32 +/
    >foo и bar

    И потом админы вздохнули: "foo" и пошли в bar заливать горе...

     
  • 1.5, Аноним, 21:19, 14/04/2016 [ответить] [смотреть все]  
  • –2 +/
    Вот вам и мнимая простота Ansible.
     
     
  • 2.6, о6какатрон, 21:30, 14/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +4 +/
    человечиский фактор жэ
     
     
  • 3.60, Поуист, 05:52, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    Тут скорее поработали специально обученные обезьяны.
     
  • 2.76, Аноним, 10:13, 16/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Ты придурок Если нет, то объясни, почему так мало фигурных скобок и кто использ... весь текст скрыт [показать] [показать ветку]
     
  • 1.7, Anonplus, 21:36, 14/04/2016 [ответить] [смотреть все]  
  • +2 +/
    Если пользователь хочет выстрелить себе в ногу, программа должна это позволять. Но она должна уметь и отменять любое действие. Иначе, это просчёт программистов.
     
     
  • 2.12, РРР, 21:58, 14/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +9 +/
    Продолжим ваши рассуждения о выстреле. Пользователь спустил курок, пуля пролетела сквозь череп. Каким образом господин Калашников должен вас восстановить из мёртвых?
     
     
  • 3.26, Аноним, 22:29, 14/04/2016 [^] [ответить] [смотреть все]  
  • +5 +/
    Подать в суд на Калашникова, очевидно же.
     
     
  • 4.53, ., 02:13, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    В суд на человека с калашниковым Я делал автомат чтобы Родину защищать С К... весь текст скрыт [показать]
     
     
  • 5.57, 8203, 04:10, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    Не хватает только DRM.
     
  • 1.8, tagezi, 21:37, 14/04/2016 [ответить] [смотреть все]  
  • +6 +/
    Причем тут костыли, причем тут простата? :D
    Просто нужно тестить свой говнокод, перед тем как юзать :)))
     
     
  • 2.31, Васёк, 22:35, 14/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Вот простáта тут однозначно не причем…
     
  • 2.40, foobar, 23:56, 14/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Так он и протестил, в проде...
     
  • 2.63, _KUL, 06:55, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Они забыли в команде указать последним главный ключ из man а -i, --interactive ... весь текст скрыт [показать] [показать ветку]
     
  • 1.9, Аноним, 21:39, 14/04/2016 [ответить] [смотреть все]  
  • +9 +/
    Во всём нужно искать положительные стороны. Например, рассадников червей и спамоботов стало на полторы тыщи меньше.
     
  • 1.10, Аноним, 21:40, 14/04/2016 [ответить] [смотреть все]  
  • +8 +/
    хм. --no-preserve-root?
     
  • 1.11, Аноним, 21:42, 14/04/2016 [ответить] [смотреть все]  
  • +6 +/
    Все уже разобрались, что это троллинг.
     
  • 1.13, Аноним, 21:59, 14/04/2016 [ответить] [смотреть все]  
  • +/
    Почтим памятью безвременно ушедшего раба божия того админа...
     
  • 1.14, Аноним, 21:59, 14/04/2016 [ответить] [смотреть все]  
  • +5 +/
    Патч имени Бармина накатили
     
  • 1.15, Аноним, 22:00, 14/04/2016 [ответить] [смотреть все]  
  • +4 +/
    Какой-то хипстер обжегся и решил запилить прохладную историю про якобы хостинг-п... весь текст скрыт [показать]
     
  • 1.16, Аноним, 22:05, 14/04/2016 [ответить] [смотреть все]  
  • +1 +/
    Ansible - мощь!
     
  • 1.17, Пользователь Debian, 22:07, 14/04/2016 [ответить] [смотреть все]  
  • +5 +/
    Удалите эту ерунду.  Человек на SO набросил потому что заняться нечем было, а вы тут репостите.

    Атата.

     
  • 1.18, Аноним, 22:13, 14/04/2016 [ответить] [смотреть все]  
  • +/
    Ну, это Что делать-то будете testdisk photorec R-Studio for Linux 80 А... весь текст скрыт [показать]
     
  • 1.19, Аноним, 22:13, 14/04/2016 [ответить] [смотреть все]  
  • +/
    когда я был сисадмином - мне не раз приходилось похерить пользовательские данные... весь текст скрыт [показать]
     
     
  • 2.22, Аноним, 22:20, 14/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    И долго вы были сисадмином позвольте спросить ?
     
     
  • 3.28, Led, 22:32, 14/04/2016 [^] [ответить] [смотреть все]  
  • +7 +/
    > И долго вы были сисадмином позвольте спросить ?

    По резальтатам "работы" насильно переквалифицировали в "модного дизайнера".

     
  • 3.29, Аноним, 22:32, 14/04/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    лет 8
     
  • 2.27, Led, 22:31, 14/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    Да нет же, дохрена вас ... весь текст скрыт [показать] [показать ветку]
     
  • 1.20, Аноним, 22:18, 14/04/2016 [ответить] [смотреть все]  
  • +3 +/
    Вообще-то Ansible по умолчанию падает с ошибкой при попытке обратиться к неопред... весь текст скрыт [показать]
     
     
  • 2.35, mickvav, 23:06, 14/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Дык, их, видать, пустыми строками определили :)
     
     
  • 3.44, Аноним, 00:07, 15/04/2016 [^] [ответить] [смотреть все]  
  • +9 +/
    > Дык, их, видать, пустыми строками определили :)

    Так! Человек вновь победил бездушную машину!

     
  • 1.21, Megabit, 22:19, 14/04/2016 [ответить] [смотреть все]  
  • +1 +/
    >>...мне не раз приходилось похерить пользовательские данные...

    Наверное ты таки ОДИН...

     
  • 1.23, rshadow, 22:21, 14/04/2016 [ответить] [смотреть все]  
  • +6 +/
    1 апреля давно закончилось.

    $ sudo rm -fr /
    rm: опасно рекурсивно обрабатывать «/»
    rm: используйте --no-preserve-root, чтобы отменить предупреждение об опасности

     
     
  • 2.58, Аноним, 04:11, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Не bashем единым.
     
     
  • 3.62, Сиромант, 06:50, 15/04/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    При чем здесь bash? Это GNU coreutils.
     
  • 1.24, Аноним, 22:26, 14/04/2016 [ответить] [смотреть все]  
  • +/
    Это был тонкий троллинг, закончившийся полнейшей жирнотой Новость можно удалять... весь текст скрыт [показать]
     
  • 1.25, commiethebeastie, 22:27, 14/04/2016 [ответить] [смотреть все]  
  • +/
    А /usr оно удалило?
     
     
  • 2.43, Аноним, 00:05, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    > А /usr оно удалило?

    Всё удалило. Даже /dev/null.

     
  • 1.30, Аноним, 22:34, 14/04/2016 [ответить] [смотреть все]  
  • –1 +/
    я тоже так сделал, правда, с фотками, не я один такой значит...
     
  • 1.32, ALex_hha, 22:36, 14/04/2016 [ответить] [смотреть все]  
  • +4 +/
    > Вот вам и мнимая простота Ansible.

    т.е. этот же злосчастный bash скрипт на salt, chef, puppet отработал бы по другому? :D

    > На всяких sh кодить дело не благодарное.

    set -u нее, не слышал? Ну дак кто вам виноват.

    #!/bin/bash

    set -u
    set -e

    dir1="foo"
    #dir2="bar"

    rm -fr ${dir1}/${dir2}

    # test.sh
    ./test.sh: line 11: dir2: unbound variable

    P.S.
    правда если будет dir1="" и dir2="", то сработает :)

     
     
  • 2.34, Аноним, 23:03, 14/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    О, я так другу в детстве программу написал и дал потестить Только не сказал, чт... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.73, Led, 21:19, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    > Правда мне тогда было лет 12

    Ну и зачем здесь эта прошлогодняя история?

     
  • 2.42, Аноним, 00:00, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    set -u бесполезен когда переменная объявлена, но пуста, пример dir1 Поэт... весь текст скрыт [показать] [показать ветку]
     
  • 2.51, Аноним, 01:29, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –2 +/
    Использование -u и -e для чего-либо кроме отладки - дурной тон.
     
     
  • 3.67, Andrey, 07:49, 15/04/2016 [^] [ответить] [смотреть все]  
  • +2 +/
    И чем они помешают в production Пускай лучше упадет, чем некорректно работать б... весь текст скрыт [показать]
     
     
  • 4.74, Аноним, 21:30, 15/04/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    Тем что их поведение не очевидно во многих случаях, всё это описано подробно в b... весь текст скрыт [показать]
     
  • 1.33, QuAzI, 22:38, 14/04/2016 [ответить] [смотреть все]  
  • +1 +/
    Снапшоты ФС не удаляются через rm, но почему-то народ считает что снапшоты не комильфо для бекапов
     
     
  • 2.36, Аноним, 23:28, 14/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Открой для себя бездну гугль: консистентное состояния и snapshot.
     
     
  • 3.54, ., 02:17, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    В нормальных FS - снапшоты нормальные. :-р
     
  • 2.56, Elhana, 03:14, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Снапшоты не комильфо для бекапов, потому что если диск накернится, то даже 100 с... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.64, Аноним, 07:00, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    Помогут, если их хранить на другом накопителе.
     
  • 3.70, JL2001, 15:09, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    снапшоты комильфо для бэкапов, а вот нераспределённое хранение бэкапов которые ... весь текст скрыт [показать]
     
  • 1.37, Аноним, 23:40, 14/04/2016 [ответить] [смотреть все]  
  • +2 +/
    Один разгильдяй не умеет писать скрипты на bash-е, не имеет системы контроля вер... весь текст скрыт [показать]
     
     
  • 2.39, Anonymous1, 23:54, 14/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Да блин, вот и выросло поколение гуевых админов, которые ждут везде подтверждени... весь текст скрыт [показать] [показать ветку]
     
  • 2.52, Анином, 01:45, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Всетаки bash как язык программирования крайне неудобен, что повышает вероятность... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.75, Аноним, 21:36, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    Точно такая ошибка с удалением всего содержимого диска есть например в Samsung k... весь текст скрыт [показать]
     
  • 1.38, IMHO, 23:48, 14/04/2016 [ответить] [смотреть все]  
  • +/
    код покажите, может он еще там и dd if=/dev/zero of=/dev/hdd$inc
     
     
  • 2.46, Аноним, 00:25, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Он там уже написал, что перепутал if и of, а потом 8212 что почти всё удалось... весь текст скрыт [показать] [показать ветку]
     
  • 2.49, Эль, 00:47, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Он в комментариях дальше пишет, что if и of перепутал, когда один из дисков восс... весь текст скрыт [показать] [показать ветку]
     
  • 1.41, Аноним, 23:58, 14/04/2016 [ответить] [смотреть все]  
  • +/
    Правильная архитектура не должна позволять выстрелить себе в ногу Надо монтиров... весь текст скрыт [показать]
     
     
  • 2.71, JL2001, 15:14, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    проблема в том что это ошибка в скрипте который 1 и должен работать с пользова... весь текст скрыт [показать] [показать ветку]
     
  • 1.45, Аноним, 00:19, 15/04/2016 [ответить] [смотреть все]  
  • +1 +/
    О, да. Так им и надо! Это все от того, что все боятся сишки.
     
     
  • 2.72, JL2001, 15:15, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    > О, да. Так им и надо! Это все от того, что все боятся сишки.

    как будто rm-rf написан не на сишке
    правильно делают что боятся !!! сишка убила винт а баш тока отдал преступный приказ !!!!!1112

     
  • 1.47, Аноним, 00:27, 15/04/2016 [ответить] [смотреть все]  
  • +1 +/
    rm -rf foo bar Что значит вообще значит В шелл скриптах для интерполяц... весь текст скрыт [показать]
     
  • 1.48, Аноним, 00:29, 15/04/2016 [ответить] [смотреть все]  
  • +/
    rm - rf / не удаляет данные уже лет пять как, удалите этот фейк
     
  • 1.59, Аноним, 04:13, 15/04/2016 [ответить] [смотреть все]  
  • +1 +/
    ай красаучик админ, четко ошибся, от души код
     
  • 1.61, eRIC, 06:10, 15/04/2016 [ответить] [смотреть все]  
  • +/
    rm -rf всегда считалась опасной командой, LOL
     
  • 1.66, Аноним, 07:40, 15/04/2016 [ответить] [смотреть все]  
  • +/
    я всегда удаляю данные через mv: mv /tmp/trash.txt /dev/null
     
  • 1.68, Че, 09:11, 15/04/2016 [ответить] [смотреть все]  
  • –1 +/
    Как ща помню. Перепутал как-то "./", написав, вместо этого "/." Когда понял, что что-то пошло не так, большая часть файлов в каталоге /dev была удалена. 8-[=====]X
    В общем-то, к утру SCO был починен и бодро жужжал ораклом. 8-)

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

    А вся эта беда была нужна потому, что у софта был какой-то глюк, когда он начинал в великом множестве плодить пустые файлы, что приводило к остановке дисковой системы, по причине занятости всех i-node.

     
     
  • 2.77, ALex_hha, 13:59, 18/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    > Тем что их поведение не очевидно во многих случаях, всё это описано подробно в bash FAQ.

    а какое может быть не очевидное поведение у set -u?

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor