Entry tags:
СЯУ: "Fork Bomb"
Формальное объяснение на языке вейсманистов-морганистов:
https://www.cyberciti.biz/faq/understanding-bash-fork-bomb/
Остальным расскажу "на пальцах". Итак, в шелле можно не только "who mom likes" писать, но и целые конструкции строить, как в настоящих языках программирования. Правда, когда я говорю своим коллегам "давайте это быстренько напишем на шелле" они делают большие глаза и говорят "ну... это же сложно". Вот такой я, испорченный гик. Короче, на шелле можно и функции определять. В результате программа может стать рекурсивной, причём тут никто за стеком и памятью интерпретатора не следит. Таким образом и работает "форк-бомба" - определяется рекурсивная функция и тут же исполняется, вводя всю систему в медленный но верный ступор. Классическая бомба выглядит как многоэтажный смайлик
Я говорил, что нельзя её запускать? Если запустили, то поздно - эта штука медленно но верно съедает ресурсы памяти пока не завесит систему намертво. Если упала на синтаксисе, есть более совместимая, но менее "смайловая" версия
У вас нет под рукой подопытного линукса? Тогда потренируйтесьна кошках в онлайн-версии, например тут
https://copy.sh/v86/?profile=linux26
Сначала вроде бы ничего не произойдёт... Но в какой-то момент система просто перестанет отвечать на нажатие команд.
Вы спросите, а как же защититься от такой тупой атаки? Ответ - в статье на басурманском языке
Мораль: нельзя отдавать процессам полный контроль, особенно в плане форканья.
https://www.cyberciti.biz/faq/understanding-bash-fork-bomb/
Остальным расскажу "на пальцах". Итак, в шелле можно не только "who mom likes" писать, но и целые конструкции строить, как в настоящих языках программирования. Правда, когда я говорю своим коллегам "давайте это быстренько напишем на шелле" они делают большие глаза и говорят "ну... это же сложно". Вот такой я, испорченный гик. Короче, на шелле можно и функции определять. В результате программа может стать рекурсивной, причём тут никто за стеком и памятью интерпретатора не следит. Таким образом и работает "форк-бомба" - определяется рекурсивная функция и тут же исполняется, вводя всю систему в медленный но верный ступор. Классическая бомба выглядит как многоэтажный смайлик
:(){ :|:& };:
Я говорил, что нельзя её запускать? Если запустили, то поздно - эта штука медленно но верно съедает ресурсы памяти пока не завесит систему намертво. Если упала на синтаксисе, есть более совместимая, но менее "смайловая" версия
b(){ b|b& };b
У вас нет под рукой подопытного линукса? Тогда потренируйтесь
https://copy.sh/v86/?profile=linux26
Сначала вроде бы ничего не произойдёт... Но в какой-то момент система просто перестанет отвечать на нажатие команд.
Вы спросите, а как же защититься от такой тупой атаки? Ответ - в статье на басурманском языке
ulimit -S -u 5000
Мораль: нельзя отдавать процессам полный контроль, особенно в плане форканья.