Какие твои любимые * болезненные * моменты Unix


Ответы:


67

Мне было любопытно, если chmod 000 /бы работал.

Ну, без нареканий. Через несколько минут я искал спасательный CD.


11
Ух ты, я даже не думал об этом, пока ты не упомянул это. Хороший.
Стефан Ласевский

Что произойдет, если вы сделаете это на обычном файле?
Люк М

@Luc Я думаю, тебе просто нужно вернуть его обратно
phunehehe

Я обычно делаю такие «эксперименты» в моей Arch VM. Если это бомбы, я просто откатил назад.
Андре Парамес

Я сделал эту ошибку один раз. Это было очень неловко, но ценный урок.
Чарльз Спрейберри

37

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


4
хех, владеть! Смущенный депутат: P
Spudd86

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

1
@Wadih: passwdведет себя забавно, когда запускается от имени пользователя root. Например, при неудачной проверке опечатки, он спрашивает снова.
Дьёрдь Андрасек

Вы могли бы просто изменить его обратно на то, что было раньше.
HandyGandy

1
@HandyGandy он не знал исходного пароля пользователя root. Он просто имел права sudo для запуска 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
Денилсон Са Майя

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

Урок перезагружен: всякий раз, когда вы делаете что-то с оболочкой и видите « », будьте * экстра , нет, будьте очень экстра- экстремальными .
Юрген А. Эрхард

Я сделал это вручную, потянув всю ночь в лаборатории. Проект должен был состояться через несколько часов. Это оказалось скрытым благословением; новая, переписанная версия, которую я передал, была намного лучше, чем перевязанная версия, которую я стер.
Барри Браун

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
Ага. Это вилка. И хороший :) Похоже, что интерпретатор bash разветвляется, поскольку он без конца пытается его проанализировать. Если вы пропустите последний, :он ничего не сделает. И он вообще не использует память, просто много разветвляется. [Да, я попробовал это :)]. Эффекты могут быть заблокированы с помощью квоты на количество процессов на пользователя.
naugtur


4
+1 за комментарий выше. Это гораздо проще понять, чем кажется.
Уманг

29

Я имел в виду хорошо, я действительно сделал. Попытка chmodрекурсивно каталог и в конечном итоге обмен ./с /.

Как корень, конечно, потому что только с корнем можно достичь истинной боли (и, следовательно, просветления).


23
+1 за цитату «Только с корнем можно достичь истинной боли (и, следовательно, просветления)».
Стефан Ласевски

21

Я случайно стер таблицу разделов на моем главном диске, думая, что я работаю на другом диске.

С помощью прокрутки, бережного использования df, памяти и удачи я смог точно его воссоздать, переписать, перезагрузить и надеяться ... И это сработало.


6
Друг сделал это, и я помог ему восстановить стол. К сожалению, у нас не было предыдущих значений для размеров разделов и смещений, поэтому мы использовали цикл bash с ddчтением первого 4k-блока каждого цилиндра, по которому идет конвейер, file -чтобы найти суперблок и, следовательно, запуск файловой системы. Это было на live CD, и не было достаточно оперативной памяти, чтобы сделать все, что нам нужно было сделать (включая установку пакета или двух), поэтому мы подключились к процессу, запущенному в ssh на другой машине.
Нил Мэйхью

2
Уч. Вот почему я всегда использую sfdisk -Oдля резервного копирования таблицы разделов, всегда. К вашему сведению: cgsecurity.org/wiki/TestDisk может автоматизировать действия @Neil Mayhew.
Эфимент

2
Я тоже был там, testdiskспас свою коробку
phunehehe

В наши дни мы имеем gpartдело с вещами, которые могут напоминать файловые системы, и строят из этого таблицу разделов.
Саймон Рихтер

19

Не совсем мой момент, но кто-то другой.

Когда я работал в исследовательском центре по ядерным наукам, мы использовали несколько компьютеров SunOS, Ultrix и Linux, и исследователям приходилось делить процессор на этих машинах. Поскольку отдельные исследовательские группы получили свои собственные исследовательские гранты, они приобрели свои собственные компьютеры, в основном SparcStations, и сами занимались системным администрированием.

SunOS раньше поставлялась с рабочим столом OpenView и хорошим файловым менеджером, вот как это выглядело: альтернативный текст

Большинство наших исследователей работали с правами root, и нам не раз приходилось переустанавливать их операционные системы, потому что кто-то решил привести в порядок корневой каталог и переместить / bin, / etc, / tmp и все остальное, что загромождает представление Корзина или какая-то подпапка.

Другие пользователи решили убрать каталог / bin и удалить любую команду, которую они не знали.

У счастливчиков были резервные копии, большинство из них купили стример, но у них не было традиции самостоятельно создавать резервные копии.


11
Привести в порядок корневой каталог? В самом деле? ДЕЙСТВИТЕЛЬНО? рыдание
Алекс Б

41
TRWTF - они работали с правами администратора на исследовательском объекте в области ядерных наук!
инвертировать

4
классный скриншот! вызывает у меня ностальгию
таращиться

@ Алекс - ну, там был этот большой файл VMUNIX, который я не использовал ....
Мартин Беккет

1
В старых версиях Mac OS вы могли перемещать любые файлы куда угодно, так что, возможно, именно этого они и ожидали ...
Кевин Канту,

18

В середине и конце 90-х мы с моим другом обсуждали глупость rm -rf *и момент, когда Linux-система обанкротится. Мы попали в статически связанные и динамически связанные библиотеки, и я предположил, что система вполне может жить без этого, /libа затем переименовал ее на моей рабочей станции. Произошли плохие вещи , но у нас осталось несколько открытых окон консоли, с помощью которых можно попытаться исправить повреждение (отключение больше не было вариантом). Ни один из редакторов не запустится. Удивительно, какое эзотерическое использование вы можете найти для echoкоманды.


19
На эту тему есть классическая история: lug.wsu.edu/node/414
Alex B

1
@ Alex B: Эта история также является частью Unix Horror Stories , которую просто здорово читать.
Бобби

18

viи Caps-Lockпротив/etc/passwd

  1. Подключитесь к старой коробке Solaris, используя старый последовательный терминал, который не обновляет экран правильно.
  2. su -
  3. vi /etc/passwd, Нет vipw, и «мы просто вносим небольшие изменения» в любом случае.
  4. Хит Caps-Lockключ и не заметить.
  5. Нажмите jпару раз, чтобы прокрутить вниз. Не обращайте внимания на тот факт, что вы на самом деле только что набрали J(«Join»), что объединяет эту строку со следующей строкой. Экран последовательного терминала не обновлялся правильно, поэтому вы не видели, что вы просто скомбинировали первые 5 строк в одну строку Loooooong, повредив тем самым первых 5 пользователей («root», «daemon» и т. Д.).
  6. Завершите свои ДРУГИЕ намеченные правки в файле, внизу.
  7. Сохранить файл.
  8. Выйти.

Я сделал это один раз. Удивительно, но система оставалась работоспособной месяцами. Cronjobs работал нормально, в лог-файлах не было ошибок.

Мы не замечали этой проблемы, пока не перезагрузили систему несколько месяцев спустя и не смогли войти в систему с консоли. psпоказал кучу заданий, принадлежащих UID '0', а не пользователю 'root'.

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


2
Конечно, «J» - это команда «Объединить» (как в соединяющих строках вместе)?
д-р Ян

2
Подождите минуту, мне не нужно вводить пароль для загрузки в однопользовательском режиме. На самом деле, именно так я могу сбросить пароль root, если я его потеряю. Или это было иначе в старое время?
phunehehe

В Solaris вам нужно знать пароль пользователя root для входа в однопользовательский режим. Я должен был сделать это 2 недели назад на самом деле.
Стефан Ласевский

@phunehehe Я думаю, что вы думаете о трюке init = / bin / sh. Это действительно не требует пароля root. Тем не менее, уровень выполнения 1 все еще требует корневого прохода
Патрик


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 на маршрутизаторе), чтобы войти в ssh. В конце концов, мои учетные записи имеют довольно хорошие пароли, и это не значит, что есть что-то чрезвычайно ценное.

Шаг четвертый: получить уведомление от интернет-провайдера о том, что какая-то деятельность DOS идет на шведский сайт. Предположим, что это, вероятно, окна Windows, и изучите и укрепите их.

Шаг пятый: получить уведомление от интернет-провайдера, что это все еще происходит. Узнайте подробности, получите IP-адрес шведского сайта, запустите Wireshark, найдите, из какого ящика идет атака.

Шаг шестой: очистить Linux окно, чувствуя себя глупо. Найти логин пришел с румынского адреса. Удалить учетные записи без надежных паролей.


1
Был там. Однажды я создал аккаунт с логином test: test, намереваясь использовать его всего около пяти минут. Я забыл удалить его и получил те же результаты, что и вы. Больше никогда. Я иду все аутентификации с открытым ключом сейчас.
ATC

1
Да, я также использую открытые / закрытые ключи. Иногда они могут немного раздражать, но намного безопаснее, чем простые пароли.
Денилсон Са Майя

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

Я удалил / etc и затем восстановил это . Не думаю, что усвоил урок ... Мне тоже пришлось восстанавливаться после удаленного /bin. Кажется, произойдет , когда я работал с chroot.


Мне бы очень хотелось узнать, почему меня обесценили
ксенотеррацид

1
Я тоже был свидетелем этого. Я поражен тем, что система может выжить без / etc - просто ничего не перезагружать.
Стефан Ласевский

7

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

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

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


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

7

Это случилось со мной в прошлом году. Я удалял некоторые файлы с сервера, используя временную переменную:

rm -rf ${prefix}*

Угадай, что? Переменная $prefixне была определена!
Вы можете представить себе катастрофу ... это привело к удалению некоторых очень важных файлов.

Я чуть не сломал Control-C и побежал к процессору, чтобы удалить сетевой кабель !!

Хахаха, я уверен, что кто-то уже сделал это ...


7

В то время как на втором курсе обучения информатике нам дали домашнее задание, чтобы написать программу на C, которая породила бы ряд подпроцессов с fork и они могли бы общаться с трубами в «круге» и выяснять, кто из них должен быть «лидером». ».

В то время мы все еще были довольно заядлыми, и у большинства peple не было машин с Linux, поэтому мы работали над нашими учетными записями на главном сервере нашего факультета (на котором размещался официальный сайт, а также учетные записи сотрудников и сайты). Большинство людей писали вилочные бомбы на каком-то этапе, пытаясь сделать домашнее задание. Более половины моей группы попали в abusersфайл. Это была самая высокая нагрузка на этот сервер за долгое время :)


это было глупо с их стороны ... они не должны были ставить вас на одну машину с веб-серверами и тому подобным. (В моей школе то же самое, но у нас есть серверы, предназначенные для удаленных оболочек, поэтому ежегодные вилочные бомбы действительно не выходят из-под контроля)
Spudd86

Microsoft получила способность вступать в партнерские отношения, и Windows и .net были тогда сильно продвинуты. Никто не ожидал кучу нубов на сервере :)
naugtur

6

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

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

Это мой любимый, потому что я выиграл. Я получил это на работу.


6

Как root на Solaris,

$ kill -9 1

... и все пошло вниз.

Мой друг был уволен из-за этого.


6

Я был лаборантом для класса Linux. Одна из учениц позвонила мне, потому что больше не могла, su -потому что получала permission denied. ОК, она неправильно запомнила / опечатка в пароле. Перезагрузитесь в однопользовательский режим и выполните сброс. Какая?! suЕЩЕ не работает ?! Он ДОЛЖЕН поклониться моей воле! Поэтому я перезагружаюсь в однопользовательском режиме, чтобы узнать, что она сделала. Я понял, что она побежалаchmod -R 777 /var/www/html/drupal-6.19 /

Обратите внимание на пробел между именем каталога и последней косой чертой.

После нескольких минут «Я действительно не хочу, чтобы она переустанавливалась, так что это делает и как». Мне удалось обнаружить, что / bin / su теперь имеет права доступа к файлу 777. Это также может быть прочитано как разрешение файла 0777, которое удаляет бит setuid из /bin/su. Быстрый chmod u+s /bin/suи я был героем.


5
Это было единственное, что вам нужно было изменить, чтобы сломать ее систему?
Майкл Мрозек

1
Я уверен, что он все еще был сломан, но, возможно, он работал достаточно хорошо для остальной части класса.
Стефан Ласевский

1
Это работало достаточно хорошо для остальной части класса; очевидно, что в школе есть требование, чтобы все диски учеников переустанавливались каждый квартал. И она не продолжала работать с Linux после того, как этот квартал закончился, так что я не стал ее исправлять до конца.
Кевин М

5

Не , что больны ... Но забавный момента:

Я набрал ошибку lsкак slи узнал, что сисадмин что- то установил для такого случая.

(уже доступно в Debian , Ubuntu , Gentoo , ... репозиториях)


4
Это скорее пасхальное яйцо, чем болезненный момент. Я читал об этом, прежде чем наткнулся на это, но я никогда не ошибался, так что нет +1.
Уманг

Гринн ... У меня был пользователь, который однажды пришел ко мне: «Ты взломал систему !!! 11one, когда я набрал ls-анимацию, когда набрал ls»
blauwblaatje

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

5
git init
git clean -f

Это не удаляет хранилище. Это удаляет все, чего нет в хранилище.

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


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

5

Компания, в которой я работал, работала на SCO. Я занимался отладкой приложений, которые на нашем демо-сервере работали очень медленно, и в то же время многие клиенты читали демо-лекции о новых функциях.

Итак, я запустил приложение, которое раньше застряло, сделал свои вещи для проверки основной причины, но, так как оно все еще «зависло», я попытался убить его:

pkill -9 mytestapplication

Что я узнал, так это то, что pkill не делает в SCO то же самое, что и в linux =)

... Это в основном убивает все, к чему у пользователя есть доступ, и с помощью root ... вот и все =)


1
Не могли бы вы описать, что он делает на SCO? Я понятия не имею, и я не мог найти это легко в Google.
Денилсон Са Майя

1
он в основном убивает все, к чему у пользователя есть доступ, и с помощью root .. его все =)
rasjani

3

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

rm -r /var/tmp/*

К сожалению, я вставил пробел между "/ var / tmp /" и "*" и, что еще хуже, я был в корне файловой системы.

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

Пожалуйста, не пытайтесь сделать это дома!


'zsh: уверен, что хочешь удалить все файлы в / [yn]?' - это очень полезно
Андре Paramés

это удалит файлы из / как получилось?
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.