Знаете, что отличает джуна от мидла? Джун боится терминала. А что отличает мидла от сеньора? Сеньор тоже боится терминала, но виду не подаёт.
Я за 5 лет в разработке видел всякое. Видел как люди становились героями. Видел как люди писали резюме. И всё это — благодаря одной маленькой команде в терминале.
Сегодня расскажу про 5 команд, которые либо сделают из тебя легенду, либо... ну, вы поняли.
Что делает: Удаляет всё. Вообще всё. Всю файловую систему. Recursive (рекурсивно) + Force (без вопросов).
Работал я как-то в стартапе. Серверов было много, все на AWS. Называли их логично: prod-server-1, prod-server-2, test-server-1 и так далее.
Наш тимлид был мужик конкретный. Татухи, борода, в 9 утра уже специфический запах. Но кодил как бог.
И вот приходит он как-то в понедельник, состояние после вчерашнего тяжёлое. Надо почистить тестовый сервер. Подключается, пишет команду... и нажимает Enter.
Через секунду в общем чате: "Ребят" "РЕБЯТ" "РЕЕЕБЯЯЯЯТ"
Оказалось, он подключился не к test-server-1, а к prod-server-1. И накатил rm -rf / на продакшен.
3000 пользователей. База данных. Вся файловая система. Пффф. Улетело в небытие за 0.3 секунды, пока система не завершилась сама.
Чем закончилось: Его не уволили. Потому что бэкапы были (спасибо богу), и он за 4 часа всё восстановил. Но седым стал моментально. В 28 лет.
Мораль: Всегда. ВСЕГДА. Проверяй в каком ты сервере. И делай бэкапы.
№2: git push --force origin main Уровень опасности: ☠️☠️☠️☠️
Что делает: Насильно перезаписывает всю историю коммитов в главной ветке. Всё, что было — пошло лесом.
Дело было на фрилансе. Заказ от серьёзной конторы, 300к за проект. Работали вчетвером, я — тимлид (первый раз, гордился очень).
У нас был джун. Хороший пацан, старательный. Код так себе, но старается же, учится.
Джун сделал фичу, запушил в свою ветку. Мы на ревью посмотрели — полный отстой. Сказали переделать. Он расстроился.
И решил "откатить всё назад к тому моменту, когда у него ещё не было этой фичи". Погуглил как откатиться. Нашёл git reset --hard. Сделал. В локальной ветке откатился.
А потом подумал: "А надо же это на сервер запушить!"
И запушил. С force. В main.
Три недели работы. Четыре человека. Пффф. Исчезло.
Я увидел это через час. Открыл репозиторий — там коммит трёхнедельной давности. Всё остальное — пусто.
У меня истерика началась. Я орал так, что соседи полицию вызвали. Шучу. Но орал громко.
Чем закончилось: Из моего локального репозитория часть восстановили. Из репозитория другого коллеги — ещё часть. В итоге потеряли около 40 часов работы.
Джуна не уволили. Потому что это был фриланс и увольнять некуда. Но он три недели торты носил на каждую созвонку. И поседел. В 22 года.
Мораль: --force — это как огнестрельное оружие. Можешь использовать, но лучше знай что делаешь. И никогда, НИКОГДА в main.
№3: chmod 777 -R / Уровень опасности: ☠️☠️☠️
Что делает: Даёт всем (вообще всем) полные права на всё. На всю файловую систему. Читай, пиши, выполняй — всё можно.
Друг работал в крупной компании. Банковская сфера. Секьюрити там ценят, всё по регламентам.
Друг — фронтендер, к серверам обычно не лазит. Но тут надо было срочно что-то на тестовом сервере поправить. Бэкенд в отпуске, делать некому.
Загружает он файлы на сервер через sftp. Пытается запустить — permission denied. Файлы не выполняются.
Гуглит: "как дать права на выполнение linux". Первая ссылка: chmod 777 filename.
Думает: "А, понятно!" И делает. Но забывает указать имя файла. И забывает убрать -R (рекурсивно).
Получается: chmod 777 -R /
Через минуту весь продакшен-сервер (да, он перепутал prod и test) стал открытым для всех. Любой процесс мог делать что угодно. Любой юзер мог читать любой файл.
Секьюрити-система подняла тревогу. В офис приехала служба безопасности. Думали хакеры атакуют.
Чем закончилось: Уволили. Моментально. В тот же день. С пометкой "грубое нарушение политики безопасности".
Но! Через год его взяли обратно. Потому что специалист хороший был. Правда теперь без доступа к серверам. Навсегда.
Мораль: 777 — это зло. Даже на тестовых серверах. А уж на продакшене это билет в один конец.
№4: :(){ :|:& };: Уровень опасности: ☠️☠️
Что делает: Форк-бомба. Создаёт процесс, который создаёт два процесса, которые создают ещё четыре процесса, и так далее до бесконечности. Сервер ложится за секунды.
Это было на парах в универе. Препод по Linux'у был... специфичный. Объяснял плохо, зато орал громко.
Один однокурсник был гением пранков. И когда препод в очередной раз наорал на него за "тупые вопросы", однокурсник решил отомстить.
У препода была привычка — оставлять свой комп разблокированным, когда выходил покурить. Терминал всегда открыт, root-доступ.
Однокурсник подсел, ввёл форк-бомбу, нажал Enter. Убежал.
Препод вернулся, сел за комп... и через 5 секунд комп завис намертво. Мышка не двигается, клавиатура не реагирует. Только кулеры орут как реактивный двигатель.
Перезагрузка помогла. Но препод так и не понял что случилось. Думал "глюк системы".
На следующей паре — то же самое. И ещё через неделю.
Чем закончилось: После четвёртого раза препод вызвал системного админа. Тот глянул логи, всё понял. Но виновного не нашли.
Однокурсник не спалился. Получил зачёт. Стал легендой потока.
Сейчас работает в крупной IT-компании. Правда.
Мораль: Форк-бомба — это шутка один раз. Второй раз — это уже вредительство. И да, не оставляйте терминал с root'ом без присмотра.
№5: mv /* /dev/null Уровень опасности: ☠️☠️☠️☠️
Что делает: Перемещает все файлы из корня в /dev/null. А /dev/null — это такая чёрная дыра в Linux. Что туда попало — исчезло навсегда.
Слышал эту историю от знакомого, который работал в дата-центре.
Приходит к ним клиент, покупает выделенный сервер. Крутой такой, мощный. Просит настроить.
Системный админ — опытный мужик, лет 40, в IT с девяностых. Всё повидал.
Настраивает сервер, делает всё по чек-листу. Осталось последнее — перенести временные файлы в /dev/null, чтобы почистить систему.
Пишет команду: mv /tmp/* /dev/null
Хотел написать. А написал: mv /* /dev/null
Заметил через секунду. Нажал Ctrl+C. Но было поздно.
Половина системных файлов — улетела. Сервер завершился. Не загружается.
Чем закончилось: Админ весь день восстанавливал систему. Клиент узнал, начал скандалить, требовал компенсацию.
Дата-центр дал клиенту два месяца бесплатно. Админа наказали рублём — лишили премии.
Но он работает там до сих пор. Потому что профи. Просто один раз не туда руки приложил.
Мораль: mv и rm с /* — это рулетка. В половине случаев ты удачливый. В другой половине — ты безработный.
БОНУС: cat /dev/urandom > /dev/sda Уровень опасности: ☠️☠️☠️☠️☠️☠️
Что делает: Записывает случайный мусор напрямую на жёсткий диск. Поверх всех данных. Без файловой системы, без бэкапа. Просто перезаписывает всё нулями и единицами.
Историю не расскажу. Потому что тех, кто это делал, я не встречал. Они либо в тюрьме, либо уже не в IT.
Но знайте: эта команда существует. И она страшнее всех предыдущих вместе взятых.
Терминал — это сила. С большой силой приходит большая ответственность.
Я не призываю бояться терминала. Я призываю его уважать.
В каком ты сервере (prod/test)
В какой ты ветке (main/dev)
Есть ли бэкапы
Что ты вообще сейчас делаешь
И помни: одна команда может сделать тебя легендой. Или мемом. Выбирай с умом.
P.P.S. Если вы узнали себя в этих историях — не волнуйтесь, детали изменены. Но седина у вас осталась настоящая. После всех этих историй я стал параноиком. Теперь я диктую с помощью speakflow