Вы слыхали, как поет ядро?
(Некоторые возможности Linux)


- Vlad Vul, 15.12.01 -

Когда фанаты Юникса говорят о его какой то особой и сверхестественной концептуальности и внутреннем изяществе, мне кажется, мало кто этому верит. Люди из мира Windows просто пожимают плечами, а некоторые еще и пальцем у виска покрутят. Те из них, кто, поверив льстивым статьям, пытаются установить Линукс, в лучшем случае видят перед собой корявую подделку под старую добрую Вынь, и совершенно не понимают, откуда взялся весь этот хайп.

Кстати, вытереть потом Линукс со своего диска - задача нетривиальная, и требует некоторых знаний об устройстве загрузочных секторов и Partition Table. Часто в Линукс-форумах можно услышать крики о помощи: "Я переразбил и отформатировал диск, а Линукс все равно продолжает загружаться, помогите его стереть!". Линуксоиды коварно посмеиваются: вход рубль, выход два. На всякий случай подскажу рецепт: нужно загрузиться с дискеты или реаниматор-CD и выполнить команду fdisk /mbr.

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

Конвейеры.

В статьях для начинающих, которые часто пишут сейчас журналисты (Кстати, если вы хотите купить книжку про Линукс, ни в коем случае не покупайте ту, в названии которой есть слово Линукс. Еще хуже, если в названии книги упоминается ваш дистрибутив (Mandrake, RedHat, и т.д.) Такие книжки все написаны чайниками для чайников, там лишь поверхностные советы. Выбирайте книжку про Юникс - не ошибетесь), рассказывается, как в Линуксе вы можете выполнить команду
program > file.txt
и весь вывод program'мы окажется в файле file.txt. Тут продвинутые читатели фыркают: ну и что, и в DOS'е такие команды срабатывали, и даже стандартный был способ:
type longfile.txt | more ,
чтобы длинные файлы читать поэкранно.
Верно. Но это лишь остатки былого великолепия. Посмотрите как на самом деле используются конвейеры в юниксе:
tar -c /home/|gzip|uuencode mydir.tgz|mail -s "Каталог /home по состоянию на `date`" [email protected]
каждая программа в этой цепочке маленькая и специализированная, но комбинируя их по-разному, можно делать все!
tar - берет каталог /home и делает из него один плоский файл
gzip - сжимает его (заметно сильнее zip'а - специализация!)
uuencode - бинарный архив превращает в текст, пригодный для электронной почты
mail - кладет письмо в очередь на отправку, и оно будет отправлено при первой возможности (скорее всего мгновенно).
date - вставляет текущую дату-время в тему письма.
Конечно, ничего мудрого нет, чтобы послать каталог по почте:
Start-Programs-WinZip-New-Browse-Save as
Почта-Новое письмо-Тема-Прикрепить файл-Browse-Отправить

Но что, если отправлять каталог нужно каждую ночь автоматически? И вот большие программы с красивым интерфейсом вмиг становятся бесполезными, и их владелец лезет в Интернет в поисках новой софтинки.
А в юниксе достаточно вставить вышеуказанную строку в файл планировщика, и будешь уверенным, что все будет сделано как надо, а если что собъется - например, каталог /home исчез - планировщик напишет тебе письмо с указанием ошибок, которое ты получишь вместе с утренней почтой.

Устройства как файлы.

Во времена ДОСа было модно печатать так: нажимаешь в Нортон Коммандере F5 (копирование), а в окошке "Куда копировать?" пишешь "PRN". Это, опять таки, только призрак былой концепции. В Линуксе даже диски изображаются как файлы, и если ты достаточно храбр, тебе не нужен Disk Editor - ты можешь рассматривать внутреннюю структуру файловых систем, просто открыв файл /dev/hda в любом текстовом редакторе. Если конечно тебе разрешил Администратор - иначе ты получишь Permission Denied - Доступ Закрыт. О дисках я еще расскажу, а вот как я люблю прикалываться. Дело в том, что даже звуковая карта представлена файлом /dev/dsp и можно выполнить команду:
cp /boot/vmlinux /dev/dsp
Тут же из динамиков раздастся вой, треск, скрежет и лязг - файл vmlinuz (это ядро Линукса) начнет проигрываться, как rawPCM - звуковой поток. Если немного поэкспериментировать, начинаешь на слух отличать код (программы) от, допустим, картинок. Архивы, как им и положено, звучат белым шумом - их содержимое псевдослучайно. А звуковые файлы, натурально, проигрываются без всяких специальных программ, если только формат совпадает.

Виртуальный CD-ROM.

Где то с неделю назад на сайте "Компьютерры" рекламировалась программка - виртуальный CD-ROM . Она позволяет хранить часто используемые CD на жестком диске, и подключать их по очереди. Стоит денег. В Линуксе это не только бесплатно, но и программ никаких не надо качать, а CD можно подключить все одновременно. Примерно так:
cp /dev/cdrom image.cdr
Теперь сидюк вы можете спрятать - его содержимое скопировано в файл image.cdr. Теперь подмонтируем его в файловую систему
mount -t iso9660 -o loop image.cdr /mnt/my_siduk1
готово - все содержимое бывшего компакта появляется в каталоге /mnt/my_siduk1. Конечно, это может выполняться при каждой загрузке автоматически.

Как я был хакером

Однажды я занимался не очень законными делами. Конечно, Линукс - лучшая платформа для хакера. И больше из интереса, чем со страху, я решил обезопасить себя от разных случайностей. А именно создал на диске секретный зашифрованный каталог. Тут пришлось мне лезть в интернет. Дело в том, что из-за американских ограничений на экспорт крипто ядро линукса идет без криптокода, который используется для шифрования дисков или сетевых соединений - его нужно скачивать отдельно. Я не понимаю, почему это нельзя было обойти как-то поизящнее, но факт остается фактом. Ладно. Пришлось скачать и поставить.
Я создал файл требуемого мне размера, на разделе Windows, а его название замаскировал под своп: win386.swp. Теперь создадим к нему шифрованный интерфейс.
losetup -k 192 -e aes /dev/loop4 /mnt/win/windows/win386.swp
192 - длина ключа, aes - стандарт шифрования (их на выбор штук 6). Тут у меня спросили мой будущий пароль. Забудешь его - каюк: он не просто проверка перед доступом к файлу. Паролем, как ключом, зашифровывается сам файл. Теперь форматируем наш новый жесткий диск (виртуальный):
mkfs.ext2 /dev/loop4
и монтируем его в дерево каталогов
mount -t ext2 /dev/loop4 /home/user2
Я создал специального юзера с ничего не говорящим именем user2, накидал в его домашний каталог всякого барахла (оно исчезает, когда "настоящий" каталог подключается.) Готово. Чем хороша многопользовательская система: можно быть уверенным, что личные файлы пользователя, все закладки, почта, скэшированные и скачанные с интернет файлы - все лежит в его каталоге, а значит, будет на лету зашифровано в секретном файле. Замедления скорости я на глаз не заметил.
В случае чего, интересным для агентов ФБР или отделения Р окажется тот факт, что на вашем компьютере не установлено никакой шифрующей диск программы - просто валяется в дальнем каталоге какой-то забытый своп, набитый случайными числами. Ну и Линукс стоит - пока что это не преступление.

***

Ну вот, хватит на сегодня. Вам возможно покажутся все эти вкусности не стоящими их сложности, но это вопрос личных предпочтений. По крайней мере, теперь вы знаете, "что они в нем нашли?".
Еще замечу, что изучая Юникс, я постоянно чувствовал смутное сходство его и фидошной станции. Так что если кто-то из читателей не боится связки мэйлер-тоссер-редактор-etc, то, возможно ему стоит присмотреться и к юниксу.
Еще хочу сказать, что в мире Windows иногда попадаются программы, которые как будто пришли из царства юникса - маленькие, мощные, концептуальные, без лишней мышевозни. Таков замечательный планировщик Control Agent . Рекомендую.

Да, и еще. Линукс не виснет. Не так не виснет, как Win2000, а вообще не виснет. Никогда.
P.S. При написании этой статьи не постра.. не использовалось ни одной программы корпорации Microsoft :-)