Ваші улюблені * болісні моменти Unix


Відповіді:


67

Мені було цікаво, чи chmod 000 /буде працювати.

Ну, бездоганно. Через кілька хвилин я шукав рятувальний компакт-диск.


11
Нічого собі, я навіть цього не вважав, поки ти не згадав про це. Хороший.
Стефан Ласєвський

Що станеться, якщо зробити це у звичайному файлі?
Люк М

@Luc Я думаю, вам просто потрібно chmod це назад
phunehehe

Зазвичай я роблю такі «експерименти» у своїй Arch VM. Якщо це бомби, я просто повертаю її назад.
Андре Парамеш

Я один раз помилився. Це було дуже бентежно, але цінне заняття.
Чарльз Спрейберрі

37

Коли я вперше почав працювати консультантом для користувача університету, який я відвідував, мені дали обмежені sudoправа на допомогу студентам, які втратили / забули свої паролі. sudo passwd <username>був моїм новим другом. Через годину після моєї орієнтації моя цікавість покращилася, і я набрав sudo passwdі з жахом дивився на запит на новий пароль. Я трохи злякався ^Cсвого виходу з нього, думаючи (помилково, виявляється), що я можу залишити відповідний обліковий запис у перехідному стані, тому я ввів пароль і негайно пішов нагору до освяченого домену 2-го поверху кампусу SuperUser і запитав, чи хотів би він знати основний пароль основної системи.


4
хе, власниця!
Плутати

30
ви могли ввести пароль невідповідності у другому запиті підтвердження, так що нічого не вплинуло б тоді і passwd вийшов би.
Вадіх М.

1
@Wadih: passwdведе себе смішно, коли працює як root. Наприклад, якщо помилка друку перевіряється, вона запитує знову.
György Andrasek

Ви могли просто змінити його назад на те, що було раніше.
HandyGandy

1
@HandyGandy він не знав початкового пароля root. Він просто мав права судо на запуск passwd.
gnud

32

Здивований, що ніхто ще не згадував цього:

rm -rf .*

(Під час спроби видалити всі приховані файли та підкаталоги, повністю забуваючи про те, що він повториться в .і ..)


3
Хоча це спалювало мене в минулому, багато версій rmцього не роблять зараз. Я приміряв Дарвіна і отримав помилку rm: "." and ".." may not be removed.
Стефан Ласевський

7
Я роблю це постійно, на всіляких платформах. Працює за призначенням у OpenBSD, NetBSD, Linux та OpenSolaris.
полемон

Якщо ви хочете відповідати всім точковим файлам, крім .і .., використовуйте .[^.]*. (Ну, це насправді пропустить усі файли, починаючи з .., але зазвичай є лише один.)
Свен Марнах

@Sven: Ще один спосіб .??*, який мені легше набрати. Цей файл не відповідає двобуквенним крапковим файлам на кшталт .a, але вони теж незвичні. grep -r .??*Наприклад, я шукаю конфігураційні файли у своєму домашньому каталозі .
Ніл Мейхью

31

Makefile:

clean:
    @rm -f * .o

Це, звичайно, змушує make cleanстерти ваш вихідний код, а не лише об’єктні файли.

Урок: використовуйте контроль версій.


11
Якщо ви не бачите цього, помічайте пробіл між символами *та.o
Denilson Sá Maia

1
Я відчуваю ваш біль, якийсь із нами трапився в якийсь момент :)
axel_c

Перезавантажений урок: коли ви робите оболонки, і ви бачите " ", будьте * extra , ні, будьте зайві Extra EXTRA обережні.
Юрген А. Ерхард

Я зробив це вручну, витягнувши всебільше в лабораторію. Проект повинен був з'явитися через кілька годин. Це виявилося благом у маскуванні; нова, переписана версія, в яку я звернулася, була набагато кращою, ніж перев’язана версія, яку я стерла.
Баррі Браун

1
Обов'язкове посилання джмелів: github.com/MrMEEE/bumblebee/commit/a047be
Residuum

30

Якщо друг запустився :() { :|:&}; :на віддалений сервер, до якого ми не мали доступу до консолі. Не вдалося перезавантажити його, повністю заморожений, виробничий сервер .

Розбитий (за запитом), щоб зробити його трохи читабельнішим.

:() # Define ':' as a function. Every time we say ':' execute the following code block
{ # Start of code block
    : # Call ':' again. 
    | # Pipe output to...
    : # Another ':' 
    & # Disown process. 
    # All on one line this would read :|:&, 
} # End of code block
; # End definition of ':' as a function
: # Call ':'

Можливо, буде легше на це дивитися

bomb() { bomb|bomb& }; bomb

1
Ви б настільки люб'язно пояснили, що це робить? Я не можу це зрозуміти і не хочу спробувати;)
naugtur

23
Поглянь, як вилка бомба. Не намагайтеся цього робити, якщо ви дійсно не знаєте, що робите.
Заїд

5
Так. Це forkbomb. І приємний :) Здається, що перекладач виграє баш, оскільки він нескінченно намагається проаналізувати його. Якщо пропустити останнє, :це нічого не робить. І це взагалі не використовує пам'ять, просто розщедриться. [Так, я це спробував :)]. Ефекти можуть бути заблоковані квотою на кількість процесів на користувача.
naugtur


4
+1 для вищезазначеного коментаря. Це зрозуміти набагато простіше, ніж це виглядає.
Умань

29

Я мав на увазі добре, я дійсно так і зробив. Спроба chmodрекурсивно каталогу і в кінцевому підсумку обмін ./з /.

Як корінь, звичайно, тому що тільки за допомогою кореня можна досягти справжнього болю (і, таким чином, просвітлення).


23
+1 для лапки "Тільки з коренем можна досягти справжнього болю (і, таким чином, просвітлення)".
Стефан Ласєвський

21

Я випадково витер таблицю розділів свого основного диска, думаючи, що працюю над іншим накопичувачем.

Завдяки прокрутці, уважному використанню dfпам'яті та везінню я зміг її точно відтворити, переписати, перезавантажити та сподіватися… І це спрацювало.


6
Друг це зробив, і я допоміг йому відновити стіл. На жаль, у нас не було попередніх значень для розмірів розділів та зміщення, тому ми використовували цикл bash з ddчитанням першого 4-каратного блоку кожного циліндра, на якому file -було знайдено суперблок і, таким чином, запуск файлової системи. Це було на живому компакт-диску, і не вистачало оперативної пам’яті, щоб зробити все, що нам потрібно було (включаючи встановлення пакету чи двох), тому ми перейшли до процесу, що працює в ssh на іншій машині.
Ніл Мейхю

2
Ой. Тому я завжди використовую sfdisk -Oдля резервного копіювання таблиці розділів. FYI: cgsecurity.org/wiki/TestDisk може автоматизувати те, що зробив @Neil Mayhew.
ефеміент

2
Я теж був там, testdiskврятував свою скриньку
phunehehe

У наші дні ми шукаємо gpartречі, які можуть нагадувати файлові системи, і будують з цього таблицю розділів.
Саймон Ріхтер

19

Не насправді мій момент, а чужий.

Ще коли я працював у науково-дослідному центрі ядерних наук, ми використовували декілька комп'ютерів SunOS, Ultrix та Linux, і дослідникам доводилося ділитися процесором на цих машинах. Оскільки окремі дослідницькі групи отримували власні грантові дослідження, вони купували власні комп’ютери, переважно SparcStations, і вони займалися адміністрацією системи самі.

SunOS використовувався для роботи з робочим столом OpenView та хорошим файловим менеджером. Це виглядало так: alt текст

Більшість наших дослідників працювали як root, і не раз нам доводилося перевстановлювати їх операційні системи, оскільки хтось вирішив налагодити кореневий каталог і перемістив / bin, / і т.д., / tmp та все інше, що переплутало погляд на будь-який кошик або якусь підпапку.

Інші користувачі вирішили виправити каталог / bin та видалити будь-яку команду, яку вони не знали.

У щасливців були резервні копії, більшість придбали накопичувач, але не мали традиції самостійно виконувати резервні копії.


11
Прибираєте кореневий каталог? Дійсно? Дійсно? сл
Алекс Б

41
TRWTF - це те, що вони працювали як корінь, в дослідницькому центрі ядерних наук!
інвертувати

4
класний скріншот! мене все ностальгує.
габе.

@Alex - добре, був цей великий файл VMUNIX, який я не використовував ....
Martin Beckett

1
У старих версіях Mac OS ви можете майже перемістити будь-який файл куди завгодно, тому, можливо, саме цього вони і очікували ...
Кевін Канту

18

Ще в середині-кінці 90-х ми з моїм другом обговорювали дурість, rm -rf *і в який момент Linux-скринька підійде животом. Ми потрапили в статично пов’язані порівняно з динамічно пов'язаними бібліотеками, і я вважав, що система може жити досить добре, /libа потім перейшов до перейменування її на моїй робочій станції. Погано сталося , але нам залишилось кілька відкритих віконних консолей, за допомогою яких можна спробувати виправити шкоду (відключення більше не було варіантом). Жоден редактор не запускався. Дивовижні езотеричні використання, які ви можете знайти для echoкоманди.


19
На цю точну тему є класична історія: lug.wsu.edu/node/414
Алекс Б

1
@ Алекс Б: Ця історія також є частиною історій жахів Unix , яку просто чудово читати.
Боббі

18

vi і Caps-Lock vs./etc/passwd

  1. Підключіться до старої коробки Solaris за допомогою старого серійного терміналу, який не оновлює екран правильно.
  2. su -
  3. vi /etc/passwd. Немаєvipw , і "ми все одно робимо незначні зміни".
  4. Удар Caps-Lock клавішу і не помічайте.
  5. Удар j кілька разів, щоб прокрутити вниз. Ігноруйте той факт, що ви насправді просто набрали J("Приєднатися"), що поєднує цей рядок із наступним рядком. Екран послідовного терміналу не оновлювався належним чином, тому ви не побачили, що ви просто поєднали перші 5 рядків в одну лінію Loooooong, тим самим пошкодивши перших 5 користувачів («root», «демон» тощо).
  6. Закінчіть ваші ІНШІ призначені зміни до файлу внизу.
  7. Зберегти файл.
  8. Вийти.

Я робив це один раз. Дивно, але система залишалася функціональною протягом місяців. Cronjobs пройшов чудово, помилок у журналах не було.

Ми не помітили цієї проблеми, поки не перезавантажили систему через кілька місяців і не змогли увійти в консоль. psпоказав купу завдань, що належать UID "0", а не користувачем "root".

Ви не можете увійти як root, ні запустити suабо su -, і не було sudoв цьому полі. Дискети не було, компакт-диск був розбитий і не було USB-портів (тому немає зовнішнього CD-ROM). Однокористувацький користувальницький режим не працював, тому що вам потрібно ввести пароль для root, і це походить /etc/passwd.


2
Безумовно, "J" - це команда "Join" (як у з'єднаних лініях разом)?
dr-jan

2
Зачекайте хвилину, мені не потрібно вводити пароль для завантаження в єдиний користувальницький режим. Насправді саме так я скидаю пароль root, якщо я його втрачаю. Або було по-іншому за старих часів?
phunehehe

У програмі Solaris потрібно знати корінний пароль для входу в режим єдиного користувача. Мені довелося це зробити 2 тижні тому.
Стефан Ласєвський

@phunehehe Я думаю, що ваше думка про трюк init = / bin / sh. Це дійсно не вимагає кореневого пароля. Однак рівень 1 все ще потребує кореневого пропуску
Патрік

18
rm -f * ~

і

rm -rf ${DIR}/

коли DIRне було встановлено!


4
Ви маєте на увазі ${DIR}? Тому $(DIR)що намагався б виконати команду DIR.
Denilson Sá Maia

16

Я пам'ятаю, як намагався надіслати SysRq послідовність ключів на віддалену машину ...

... але його захопив місцевий.


14

Простий halt визнання через кілька секунд, що я не в локальній оболонці і не маю можливості знову ввімкнути виробничий сервер.

Навчені уроки? Підказка машини зараз виглядає так

[ --> root <-- @kompost:/home/echox] #

з гарною червоною розміткою ;-)


6
Існує інструмент, який називається, molly-guardякий перевіряє, чи ви ввійшли в систему дистанційно, і запитує, чи дійсно ви хочете це зробити.
Саймон Ріхтер

IPMI - це дійсно зручна річ :-)
Андре Хольцнер

13

Моїм улюбленим моментом було те, коли співробітник, який є користувачем emacs, захотів редагувати важливий файл.

Оскільки emacsвін надто великий для набору, він створив псевдонім для emacs:

alias em=emacs

Під впливом недостатньо або занадто багато кави він, звичайно, неправильно набрав em...

Ну, це просто ще одна причина використовувати vi...;)


Що я дуже люблю у цьому, це той факт, що він переймався тим, як довго працювали emacs, але не просто використовував alias e=emacs.
Стівен Д

Окрім кави, зауважте, що "e" та "r" не дуже далекі від клавіатури ...
leonbloy

11

Або інший досвід, як почуватися по-справжньому дурним за кілька простих кроків, які не здаються все таки дурними окремо.

Крок перший: створіть обліковий запис для дитини, якщо він хоче використовувати скриньку Linux. Дайте йому банальний пароль, адже це все-таки домашня система і не піддається впливу мережі.

Крок другий: дайте час минути, щоб ви не пам’ятали перший крок.

Крок третій: відкрийте порт SSH у брандмауері (насправді NAT на маршрутизаторі), щоб втриматись. Зрештою, у моїх акаунтах є досить хороші паролі, і це не схоже на щось надзвичайно цінне.

Крок четвертий: отримайте повідомлення від провайдера про те, що на шведському сайті відбувається деяка діяльність DOS. Припустимо, що це, ймовірно, вікна Windows, і вивчіть і затвердіть їх.

Крок п'ятий: отримайте повідомлення від провайдера, що це все ще триває. Поцікавтеся детальною інформацією, знайдіть IP-адресу шведського сайту, заведіть Wireshark, знайдіть, з якого вікна атака йде.

Крок шостий: очистити вікно Linux, почуваючись дурним. Знайти логін із румунської адреси. Видаліть облікові записи без хороших паролів.


1
Був там. Я одного разу створив обліковий запис з логіном тесту: test, маючи намір використовувати його лише близько п’яти хвилин. Я забув її видалити і отримав такі самі результати, як і ви. Ніколи знову. Зараз я переходжу на весь відкритий ключ.
ATC

1
Так, я також використовую відкриті / приватні ключі. Вони іноді можуть бути дещо дратівливими, але набагато безпечнішими, ніж прості паролі.
Denilson Sá Maia

4
Відкриваючи SSH в Інтернеті, НІКОЛИ не дозволяйте перевірити пароль. Лише відкритий / приватний ключ автентичний, таким чином ви не можете потрапити під охорону.
wazoox

@wazoox: otp також є хорошою альтернативою.
Юрген А. Ерхард

Я використовую нестандартний порт з великим номером для ssh, що пересилається з маршрутизатора на стандартний порт ssh на моїх скриньках Linux та Mac OS X. Я ніколи не отримую жодних спроб входу. У мене порт налаштований у ярлику в ~ / .ssh / config на інших моїх машинах, тому зазвичай мені навіть не потрібно його вводити.
Ніл Мейхью

11

У комп'ютерних лабораторіях, коли я був у коледжі, у них була заставка, яка імітувала купу кульок, які плавали б туди-сюди. Вони підтягували кожного з імітацією сили тяжіння.

Одного разу, поки я возився з налаштуваннями, він вийшов із помилки Error: force on balls too great


10

Я колись розробляв драйвер пристроїв для Unix. У нього виникли проблеми з вказівниками, і під час тестування він почав списати кінець масиву в пам'ять ядра. Я повільно це помітив і не натиснув кнопку скидання відразу. Драйвер прокреслив весь кеш-пам’ять диска, який потім був переданий на диск, перш ніж я натиснув на скидання. Дуже багато блоків були вкладишами та каталогами, і я опинився з цілком зруйнованою файловою системою. Я думаю, що було опубліковано 6000 осиротілих файлів, lost+foundперш ніж я здався та перевстановився. На щастя, це була лише тестова система, а не моя робоча станція з усіма моїми файлами на ній.


Тепер робити це у вашій системі роботи було б справді нерозумно ;-)
Юрген А. Ерхард

8

Я видалив / тощо, а потім відновив його . Я не думаю, що я засвоїв свій урок ... Мені довелося також відновитись із видаленого /bin. Здається, це трапляється, коли я працював із chroot.


Мені б дуже хотілося дізнатись, чому я прийшов у спадок
ксенотерацид

1
Я також був свідком цього. Я вражений, що система може вижити без / і т.д. --- просто нічого не перезавантажуйте.
Стефан Ласєвський

7

Минулого року мій колега використовував одну з наших робочих станцій Linux для створення копій флеш-дисків за допомогою ddкоманди. Він випадково набрав щось подібне до наступного:

dd if=flash-image.img of=/dev/sda1

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


2
+1 - будьте дуже дуже обережні з dd!!! :-)
Джош

7

Це сталося зі мною минулого року. Я видаляв деякі файли з сервера за допомогою тимчасової змінної:

rm -rf ${prefix}*

Вгадай що? Змінна $prefixне була визначена!
Ви можете уявити собі катастрофу ... це призвело до видалення деяких дуже критичних файлів.

Я майже зламав Control-Cі побіг до процесора, щоб вийняти мережевий кабель !!

Ха-ха, я впевнений, що хтось це вже робив ...


7

У той час, як на моєму 2-му курсі вивчення інформатики нам дали домашнє завдання написати програму на C, яка б породила ряд підпроцесів forkі змусила їх спілкуватися з трубами в "коло" і з'ясувати, хто з них повинен бути "лідером" ".

Тоді ми ще були досить ноуби, і більшість людей не мали Linux-машин, тому ми працювали над своїми обліковими записами на головному сервері нашого факультету (на якому розміщувалися офіційні веб-сайти та акаунти персоналу та сайти). Більшість людей писали форкбомби на якомусь етапі, намагаючись виконати домашнє завдання. Більше половини моєї групи потрапило до abusersфайлу. Це було найвище навантаження на цей сервер за довгий час :)


це було нерозумно з них ... вони не повинні були ставити вас на ту ж машину, що й веб-сервери та ін. (У моїй школі є те саме, але у нас є сівалки, віддані до віддалених снарядів, тому щорічні forkbombs насправді не надто виходять з ладу)
Spudd86

Корпорація Майкрософт отримала можливість вступити в партнерство, і Windows і .net вже просувалися. Ніхто не очікував купу ноуб на сервері :)
naugtur

6

Коли мій університет вирішив переключити бездротову мережу на використання фірмової автентифікації Cisco LEAP ...

Почався дуже довгий бій, який закінчився досить добре. Написав документацію для інших, хто хотів запустити Linux та мати доступ до Інтернету. Через півроку вони також вирішили додати підтримку PEAP. лицевий ляпас

Це мій фаворит, бо я переміг. Я змусив його працювати.


6

Як корінь Solaris,

$ kill -9 1

... і все знизилося.

Мій друг був звільнений через це.


6

Я був лаборантом для класу Linux. Один із студентів зателефонував мені, бо вона вже не могла, su -тому що отримувала permission denied. Гаразд, вона неправильно запам'ятовувала / неправильно вводила пароль. Перезавантажтесь у режимі однокористувача та скиньте. Що?! suСТИЛЬ не працює ?! ПОВИННО кланятися моїй волі! Тому я перезавантажуюсь в режимі єдиного користувача, щоб дізнатися, що вона зробила. Я зрозумів, що вона біглаchmod -R 777 /var/www/html/drupal-6.19 /

Зверніть увагу на пробіл між назвою каталогу та кінцевою косою рисою.

Після декількох хвилин "Я дійсно не хочу її перевстановлювати, так що це робить і як". Мені вдалося виявити, що / bin / su тепер має дозволи на файл 777. Це також може бути прочитане як дозвіл на файл 0777, який видаляє встановлений біт /bin/su. Швидкий, chmod u+s /bin/suі я був героєм.


5
Це було єдине, що потрібно було змінити, щоб порушити її систему?
Майкл Мрозек

1
Я впевнений, що його все-таки зламали, але, можливо, він спрацював досить добре для решти класу.
Стефан Ласєвський

1
Це працювало досить добре для решти класу; в школі очевидно є вимога, щоб усі диски учнів перевстановлювалися щоквартально. І вона не продовжувала працювати з Linux після закінчення цього кварталу, тому я не намагався виправити це рештою шляху.
Кевін М

5

Не така болісна ... Але весела маленька мить:

Я вводив помилку, lsяк slі з'ясував, що у системного адміністратора було встановлено щось для такого випадку.

(вже доступно в сховищах Debian , Ubuntu , Gentoo , ...)


4
Це скоріше писанка, ніж болісний момент. Я читав про це ще до того, як натрапив на це, але ніколи не виявив, що це заплутався, тому жоден +1.
Умань

Grinn .. У мене був один раз користувач, який прийшов до мене "У вас зламана система !!! 11 хтось отримав ASCII-анімацію, коли я набирав ls"
blauwblaatje

^ Не так смішно!
mr_eclair

5
git init
git clean -f

Це не видаляє сховище. Це видаляє все, що не знаходиться у сховищі.

Після спроби позбутися існуючого репо, а потім знову запустити керування джерелом (на завершеній першій версії проекту), ці дві команди заповнили весь мій код.


git rebase (зі скрушуванням) та git filter-branch (для видалення файлів) - ваші друзі :-) Під цим я маю на увазі, що є більш безпечні способи вилучити сурові з вашої історії репо і закінчити відносно чистий проект. Зазвичай я роблю резервну копію поточної гілки перед обширним перевиданням.
Ніл Мейхью

5

Компанія, в якій я працював, працювала на ШОС. Я робив налагодження з приводу того, що програми дуже повільно ставляться на наш демо-сервер, і в той же час було купу клієнтів, які демонстрували демонстрацію / лекцію про майбутні нові функції.

Отже, я запустив додаток, який раніше застряг, зробив свої речі на ньому, щоб перевірити першопричину, але оскільки він все ще "застряг", я намагався його вбити:

pkill -9 mytestapplication

Що я дізнався, це те, що pkill не робить точно так само, як це робиться на Linux =)

... Це в основному вбиває все, до чого користувач має доступ, і з root ... це все =)


1
Скажіть, будь ласка, що він робить на ШОС? Я поняття не маю, і я не міг легко знайти його в Google.
Denilson Sá Maia

1
він вбиває все, до чого користувач має доступ, а з root .. його все =)
rasjani

3

Мій перехід з Debian на Ubuntu розпочався того дня, коли я спробував видалити деякі файли та каталоги, що означають тип

rm -r /var/tmp/*

На жаль, я вставив пробіл між "/ var / tmp /" і "*" і ще гірше, я опинився в корені файлової системи.

root@workstation:/# rm -r /var/tmp/ *

Будь ласка, не спробуйте цього вдома!


'zsh: впевнений, що ви хочете видалити всі файли в / [yn]?' - це досить корисно
Андре Парамес

це видалить файли з / як прийде?
mr_eclair

3

Є акуратний трюк, щоб зробити еквівалент dirnameі basename, відповідно, в Bash:

${path%/*}
${path##*/}

Не настільки смішно, коли $pathміститься косою косою рисою ...


3

У мене було встановлено два накопичувачі в один момент, і коренева файлова система другого накопичувача була встановлена ​​в каталозі всередині /mnt. Я був у цьому каталозі і намагався видалити, varале rm -rf /varнатомість набрав текст . Якийсь інстинкт, здавалося, підштовхує сказане, що var повинно передувати косою рисою!

Коли я зрозумів, що зробив, негайно вдарив, Ctrl-Cале було вже пізно. Моя rpmбаза даних давно покинула будівлю. Я витратив віки, повертаючи все до норми.

Тепер про болісну частину.

Я повертаюся до цього каталогу, /mntщоб відновити те, що робив. Що я набираю? Ну, скажемо, що інстинкт знову запустився.

Принаймні, мені вдалося відновити систему набагато швидше вдруге;)


1
Я вважаю, це було до того, як ви дізналися про chroot (1)?
Кевін М
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.