Настройка и работа в Linux

         

Сноски


1

На Linux Gazette на эту тему была лишь небольшая статья Константина Болдышева "Introduction to UNIX Assembly Programming". Issue #53, май 2000г.

2

Обратите внимание на то, что фраза по большей части написана по-русски. Для тех кто ещё не понял, объясню: в момент загрузки системы с дискеты, жесткого диска и пр. компьютер не может корректно отображать кириллические шрифты, если только это не прошито в ПЗУ видеокарты.

3

Basic Input/Output System (Базовая Система Ввода/Вывода), код прошиваемый в ПЗУ и позволяющий работать с оборудованием компьютера.

4

Master Boot Record (Главная Загрузочная Запись) -- первый сектор жёсткого диска, содержащий записи об основных (primary или extended) разделах. Всего их (записей) четыре, но это не означает, что именно столько разделов вы и можете создать.

5

Power On Self Test -- программа, встроенная в BIOS и автоматически тестирующая оборудование компьютера после включения питания.

6

Советую почитать книгу Р.Джордейна "Справочник программиста ПК типа IBM PC, XT и AT". Книге уже не меньше десяти лет, но для понимания происходящих процессов "внизу" (на уровне "железа") вполне подходит. Пусть вас не смущает то, что все примеры под MS DOS.

7 Смех -- это то, что позволяет нам выжить и временами окончательно не спятить. Если по ходу изложения я позволяю себе пошутить, то только потому, что тема сложна и очень серьёзна.

Вернуться на главную страницу





Снова к вопросу об анатомии вампиров


Как оказалось, часть читателей слишком буквально восприняла предыдущую статью о вампирах (см. , 2000, ©12). В ней, в действительности, не шло речи о поимке крэкеров. Просто данная ситуация была использована для продолжения разговора о возможностях команд shell, потенциальных проблемах и т.д. Гоняться за крэкерами с командами ls или find занятие любопытное, но не очень эффективное. Опыт, как вы видите не отрицательный - что-то сделать можно (особенно, если крэкер-душка тексты оставляет), но и не положительный - всех фокусов вы не найдете. Если ваша система после крэкера похожа на фаршированную утку и готова быть съеденной любой бездомной собакой, то далеко вы не уедете. Рано или поздно вы поменяете один из конфигурационных файлов (а /etc/passwd и /etc/inetd.conf, например, были изменены администратором после ) и дверка будет зафиксирована не только в файле, но, возможно, и в вашем сознании - так было. Можно, конечно, иметь диск с полной копией системы и заниматься сравнением, но это может быть перебором по ресурсам (не путать с backup, который абсолютно необходим). Как правило, используется хранение списка файлов (дабы проверить появление/исчезновение файла), прав доступа и того или иного типа.

Заметим, что для простой проверки можно использовать базу rpm. Например, у нас возникло подозрение, что подменили login (как мы помним, а если не помним, то используем which, - /bin/login):

[root@localhost rpm]# rpm

-q -f /bin/login

util-linux-2.10f-7

[root@localhost rpm]# rpm

-V util-linux-2.10f-7

S.5....T c /etc/pam.d/login

[root@localhost rpm]#

Первая из команд позволяет определить пакет, из которого пришел /bin/login, вторая требует проверки всех файлов пакета. В данном случае обнаружена только модификация конфигурационного файла /etc/pam.d/login (S - размер, 5 - контрольная сумма MD5, T - время модификации). Аналогично, конечно, можно попробовать сказать:

[root@localhost rpm]# rpm -V -a

S.5....T c /etc/services

S.5....T c /etc/localtime

.......T c /etc/nsswitch.conf

Это займет... м-м, некоторое время. Ясно, что в основном это будут конфигурационные файлы. При помощи подкоманд типа -l, -dump и т.п. можно посмотреть установочные характеристики файлов пакета. Rpm проверяет только то, что было установлено, но не ваше собственное творчество. Есть и более гибкие средства.

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

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

#!/bin/sh

# lspr subDirSrc

Usage () {

echo

exit 1

}

if [ $# = 0 ] ; then Usage ; fi

###########################

#tdir=/cdrom

tdir=$1

prot=check_summa

if [ ! -d ${tdir} ] ; then

echo Directory ${tdir} does not

exist

Usage

fi

if [ -f $prot ]

then

rm $prot

fi

for file in `find ${tdir} -name `

do

if [ -f ${file} ]

then

cksum ${file} | sed -e >> $prot

fi

done

cksum $prot | sed -e

##rm $prot

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

Читателю предыдущей статьи, обратившему внимание на проверяемый диапазон дат, должно быть совершенно очевидно, что система очень давно . Соответственно и надежда на записи в регистрационных файлах мала. Правда, с другой стороны, в сети принцип возвращения преступника на место преступления действует значительно лучше, чем в жизни. Поэтому после переустановки (если, конечно, вы не можете сделать более точное определение повреждений при помощи контрольных сумм и т.п.), кроме более корректного конфигурирования, главное - не забыть повесить звоночек на наиболее полюбившиеся ему службы. Можно их даже , дабы не слишком огорчать. И... злоумышленник обязательно придет на чашечку чая. Тут, конечно, не без тонкостей типа подмены адресов или адресации через проходной компьютер, что может привести к шумному разбирательству, но многое проверить вполне можно.

Настройка и работа в Linux


Что нужно знать о файловой системе Linux Требования к файловому менеджеру Средства среды KDE для работы с файлами Клоны Norton Commander XFTree

Командная строка как универсальный инструмент управления файлами Средства управления пакетами и установки программ О взаимодействии Linux и Windows Средства записи на CD

Освоившись со средой обитания, по выбору, можно, казалось бы, и приступить к созданию контента. Но...

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

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

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

Но сначала несколько слов о том,



Соединение виртуальной и физической сети


Теперь предположим, что нужно создать несколько виртуальных компьютеров на одном базовом, объединить их в виртуальную сеть и связать ее с реальной сетью. При этом сетевая часть IP-адреса виртуальной сети отличается от сетевой части адреса реальной сети. В этом случае система VMware вновь конфигурируется по варианту «Host-only networking». Только теперь необходимо указать серверу Samba, что он должен обслуживать как интерфейс с реальной сетью (или даже несколько таких интерфейсов), так и виртуальный интерфейс vmnet1. Делается такое указание путем корректировки строки «interfaces» в файле /etc/smb.conf. Она должна принять следующий вид:

interfaces = <физические сети> <виртуальная сеть>.1/24

где <физические сети> — это список обслуживаемых физических сетей, а <виртуальная сеть> — сетевая часть адреса, назначенного для виртуальной сети. Предположим, что базовый компьютер имеет в реальной сети адрес 209.220.166.34, а в виртуальной сети в варианте «Host-only» ему присвоен адрес 192.168.0.1. Тогда указанная строка принимает вид:

interfaces = 209.220.166.34/24 192.168.0.1/24

Маску сети можно задать явным образом:

interfaces = 209.220.166.34/ 255.255.255.0 92.168.0.1/ 255.255.255.0

Чтобы узнать, какой IP-адрес присвоен виртуальному интерфейсу, можно воспользоваться командой

/sbin/ifconfig vmnet1

Во всех трех рассмотренных примерах речь шла о том, как получить доступ к дискам базового компьютера из виртуального. Однако можно поставить и обратную задачу: как получить доступ к дискам виртуального компьютера из ОС базового? При помощи сетевых средств такая задача тоже решается. Если на базовом компьютере установлен пакет Samba, то отдельные каталоги на дисках виртуального компьютера vmware, работающего под Windows, можно монтировать в Linux на базовом компьютере примерно такой командой

[user]$ /usr/sbin/smbmount //vmware/ public /mnt/vm1 -U user1

Рис. 5. Каталог на диске виртуального компьютера, смонтированный в файловую систему Linux


Эта возможность проиллюстрирована на рис. 5, где показан каталог на диске виртуального компьютера, смонтированный в файловую систему Linux. При этом в виртуальном компьютере запущен Microsoft Word, о чем свидетельствует наличие временных файлов, создаваемых этой программой. Сам же каталог в данном случае просматривается из Linux при помощи браузера Konqueror.

Одним из последних вопросов, задаваемых конфигурационным скриптом vmware-config.pl в том случае, когда установлена версия сервера Samba от VMware, является предложение ввести имена и пароли пользователей, которым будет разрешен доступ к серверу. Если в этот список требуется добавить новых пользователей, нужно проделать следующее.

Получить права суперпользователя при помощи команды su. Выполнить команду /usr/bin/vmware-smbpasswd vmnet1 -a <username>

где <username> — имя пользователя, добавляемого в список.

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

Программа vmware-smbpasswd является вариантом стандартной программы smbpasswd. Сообщение «Unknown virtual interface «vmnet1» означает, что либо не установлен сервер Samba от VMware, либо не задействован вариант «Host-only».


Soft-владения


Этот пункт - полностью в вашей компетенции. Руководствуйтесь принципом "Разделяй и властвуй!". Нельзя относиться к компьютеру легкомысленно и называть себя при этом Системным Администратором. Что можно сказать о людях, которые, прекрасно зная репутацию MS и БГ, устанавливают Windows Me за два месяца до официального релиза? Или MS Office XP - зная, что Microsoft еще MS Office 2000 толком до ума не довел? А все эти бестолковые мультимедийные и анимационные "прибамбасы" (вроде озвучиваемых сладострастным женским голосом движений мышки), которые рано или поздно "глюканут"? И, в конце концов, Typical- или Full-установки Винды и других программ, вместо выборочной? В результате реестр вырастает до невероятных размеров, приводя к "заторможенности" работы компьютера. Надо что-то решать!

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

Возможно, многие сочтут меня максималистом, но я, по возможности, начинаю с переустановки системы. Гораздо легче делать диагностику проблемы, когда сам возводил стены и мосты. Все по минимуму - так называемый "джентльменский набор", разве что сотрудницам в качестве обоев на "Рабочий стол" цветочек или котенка/щенка.



Состояние XKB: модификаторы


Так же как и номер группы, набор битов-модификаторов внутри XKB существует в трех экземплярах (в трех переменных)

locked modifiers

latched modifiers

base modifiers

Содержимое этих переменных (так же как и "групповых") может меняться с помощью действий (actions).

Как и для номеров групп, для модификаторов существует "фактический" набор модификаторов, который определяется как логическая сумма (побитная операция ИЛИ) трех указанных переменных. Соответственно, никаких дополнительных "выравниваний", как для значения номера группы, не требуется.



Состояние XKB: Набор управляющих флагов (XKB Controls)


Кроме номера группы и набора модификаторов, в XKB существует аналогичный набор для "управляющих флагов". Правда, в отличии от номера группы и набора модификаторов, которые "размазаны" по трем переменным (base, locked, latched), набор управляющих флагов только один.

В "управляющие флаги" входят все те "флажки", которые не попали в "набор модификаторов". Они не сообщаются приложению, а используются XKB для переключения его внутренних режимов.
Эти флаги управляют

включением режима перекрытия для части клавиатуры; включением режима эмуляции мыши. включением различных режимов подсистемы AccessX. и некоторыми другими сойствами XKB.

"Управляющие флаги" (как и номера групп и модификаторы) меняются соответствущими действиями, привязанными к подходящим клавишам.



Состояние XKB: номер группы


Текуший номер группы хранится в "таблице состояния" XKB.
Точнее, внутри XKB имеются три ячейки

locked group - некий аналог нажатия клавиши CapsLock, но для групп latched group - аналог действия клавиши Shift, но, опять же, для групп base group - базовое смещение номера группы

Обычно содержимое этих переменных меняется с помощью действий (actions), которые связываются с подходящими клавишами (их скан-кодами).

Наконец, существует понятие "фактической" (effective) или "действующей" группы. Именно ее значение используется для выбора подтаблицы-группы в таблице символов и таблице действий. Это значение не хранится, а каждый раз вычисляется в виде суммы трех вышеуказанных переменных.



Sovadm


Советы администраторам Linux-систем или людям, желающими ими стать.

Обновляйтесь. Самый тривиальный и часто даваемый совет. К сожалению, так же часто не выполняемый. Ведь программа, в которой обнаружена ошибка, является практически открытыми воротами для взломщика. Но обновляйтесь только в том случае, если это действительно необходимо. Содержать самые последние версии только ради того, "что бы были" - это несерьезно. Самый яркий пример - это уязвимость в ssh. Ей уже куча времени, ее даже успели показать в "матрице", а тем не менее серверов с уязвимым sshd еще очень много. А какой был бум взломов через уязвимый named ... Наверняка, если хорошо порыться, можно найти очень много подобных серверов в современной сети.

Разбирайтесь в операционной системе и в составе ее сервисов. Вам стоит знать, что процесс init в системе должен быть один и у него должен быть pid равный единице. И то, что демона irqd не существует, тоже должно являться для вас непреложным фактом. Вы должны прекрасно знать, что и на каком этапе работает в системе - как запускаются сервисы, как узнать, откуда он был запущен и почему он был запущен именно так. А журналирование действий пользователя в системе ... с чей-то легкой руки время сохранения файлов логов в многих дистрибутивах поставлено на 4 недели. Всего лишь один месяц. А это очень короткий срок в современном мире. А вы в курсе, что syslogd может отправлять приходящие сообщения на другую машину? А вы знаете о том, что rpm может проверить целостность всех программ, установленных у вас в системе? А вы это используете? Если ответы "да", то я рад за вас.

Отключите ненужное, а неиспользуемое удалите. Возьмем к примеру обычный linux сервер, установленный неопытным администратором. Поглядите на него и задайтесь вопросом: "а зачем там стоит gcc, nfs и cdparanoia?" Опять хотите пример? Пожалуйста - их есть у меня. Взломщик через ssh или кривой скрипт, запущенный на сервере, получает права пользователя nobody. При установленном gcc ему не составит труда собрать либо трояна, либо использовать другую уязвимость (к примеру, та же проблема с ptrace).


Разберитесь c работающими сервисами и отключите у них "лишние" возможности. Задайтесь вопросом, зачем в конфигурационном файле sshd существуют такие директивы, как ListenAddress и PermitRootLogin? Затем обратите внимание на стоящий apache и узнайте, нужны ли ему модули mod_cgi или mod_rewrite? А ведь каждый лишний модуль - потенциальная лазейка для взломщиков. У вас стоит PHP? Здорово. А вы в курсе, что в файле php.ini существует целая секция, посвященная безопасности? Поищите по слову safe_dir - уверяю, в окрестностях этой директивы можете найти много интересного. Ведь необходимо потратить буквально 10 минут и никакой злой PHP скрипт не сможет прочитать содержимое конфигурационных файлов в каталоге /etc. 5 минут сверху - и MySQL больше не принимает пакеты со всего мира, а мирно работает только через unix socket. Буквально час времени необходимо потратить, что бы даже открытые всему миру сервисы не представляли большой проблемы. А кто из вас потратил этот час?

Пользуйтесь встроенными средствами защиты операционной системы.

Вспомните, что Linux, как и все остальные unix'ы, изначально многопользовательский. Прочитайте про действие команд chroot и ulimit. А флаги для файловой системы? Ведь nosuid, noexec и nodev появились не на пустом месте. А про команду sudo и механизм ее работы вы в курсе?

Используйте сетевые средства защиты. Упредить взлом - значит практически предотвратить его. Возьмем опять же наш любимый www сервер. Зачем ему торчащий во внешний мир sshd? А зачем ему возможность установить соединение с любого порта? Возьмите встроенный файрволл и запретите на нужном интерфейсе прием и передачу пакетов со всех портов, кроме 80го. Теперь даже если в машину закачают троян, он не сможет соединиться со своим владельцем. Мелочь, а взломщику она резко усложнит задачу. Но это пассивная защита. А ведь еще существуют и "активные" варианты, которые работают в тесной связке с IDS, своевременно предупреждая администратора о потенциальных атаках.

Напишите что-нибудь свое. Любой грамотный администратор сможет написать нужный ему скрипт на 2-3 языках. Так почему бы не потратить лишние 10 минут и не написать примитивную ловушку для взломщика? К примеру, в любой системе есть скрипты, которые обслуживают систему - воспользуйтесь ими. Скопируйте /etc/passwd в какой-нибудь малоприметный файлик в недрах рабочих каталогов скриптов и вставьте одну (!) команду в работающий скрипт вот она:

diff /etc/passwd /path/to/saved/passwd



Все. Самая примитивная ловушка готова. В обычном режиме никаких видимых изменений не произойдет. Однако когда взломщик поменяет содержимое /etc/passwd, то diff выдаст те строчки, которыми различаются файлы. А так как скрипты выполняются из-под crond, то последний переадресует эти различия администратору. Просто? Просто! Ловушка примитивна до безобразия, но очень тяжело обнаруживаемая. Однако из двух-трех подобных ловушек при взломе одна обязательно сработает. Не хотите хранить файл passwd - кто мешает считать для него контрольную сумму по алгоритму md5? А чем плох подсчет контрольной суммы программы ps? Эти ловушки хороши имено своим примитивизмом. Даже то, что их приходится периодически "взводить" при обновлении системы или заведении пользователя, хорошо - автоматом вы проверяете их работоспособность.

В общем, не надо надеяться на то, что "linux - это вроде как unix и его поломать невозможно". Ломается все. Главное - за какое время и с каким шумом.


Sovet



Полезные советы

Проблема с запуском программы. Что делать, если после того, как вы напечатали так необходимую вам команду, все, что вы увидели в ответ, - вывод об ошибке. О том, что в системе нет необходимой shared library. Но вы не знаете, какой именно библиотеки не хватает.
Постановка задачи: есть программа coolprogram. Но для ее корректной работы не хватает какой-то из библиотек. Давайте определим, какой именно:
ldd `which coolprofram`
Если вы еще не в курсе, то текст, заключенный в такие кавычки "`" (кнопка слева вверху на клавиатуре), будет рассматриваться как команда bash и заменен при выполнении на вывод команды, указанной в кавычках. Т.е. в данном случае - на полный путь к команде coolprogram. 
А ldd выведет информацию о всех используемых программой coolprogram библиотеках и выдаст полные пути к каждой из них. И если какая-то из библиотек не найдена в системе, ldd скажет вам об этом.


Выводим syslog на консоль. Постановка задачи: выводить системный log (например, /var/ adm/messages) на консоль tty8. Т.е. по ALT+F8 мы увидим содержимое последних строк из файла сообщений по мере работы системы.
В файл /etc/inittab добавим такую строку:
log:12345:once:/usr/bin/tail -f /var/ adm/messages> /dev/tty8 &
Чуть подробнее. Структура строки такая:
идентификатор:runvlevels:действие:команда,
идентификатор - набор символов из латиницы и (или) цифер (не более 4-х символов); runlevels - список runlevels, для которых команда активна; действие - указывает, какой тип действия должен быть выполнен (respawn, wait, once, boot, bootwait и т.д.).
Слетела консоль. Что делать? Я уже как-то приводил пример команды, которая сбрасывает консоль в исходное состояние. Но, как оказалось, вместо моей длиннющей команды, можно использовать просто команду reset.


Удаление всех файлов в каталоге и подкаталогах. Как-то был такой тест на знание Linux: как же удалить все файлы в каталоге и подкаталогах? А если там пробел в середине? А если \n? А там же могут быть и кавычки! И слэши! Один из наших читателей прислал свое довольно красивое решение данной задачки:
find -print0 -mindepth 1 -maxdepth 1 | xargs -0 rm -rf
Данное решение еще хорошо тем, что при удалении скрипт не переходит по симлинкам на другой раздел.

Просмотр видео. В одной из моих публикаций я рассказывал о программах, которые позволяют просматривать видео. Маленькое дополнение в коллекцию таких программ: xine.
Xine - отличный проигрыватель. Показывает все, что может (mpeg, mpeg2, divx:-)), плюс под x86 умеет подключать Windows dll для просмотра avi. Резюме: качество хорошее. Иногда ошибается в цветах при сильно попорченном файле. Хорошие файлы показывает на отлично. Для полноэкранного показа mpeg4-файла забирает у моего Duron-750 около 20% CPU. Взять эту программу можно здесь: http://xine.sourceforge.net/. 

X-Stranger xstranger@tut.by 
www.linux4u.narod.ru 



Современные распределенные файловые системы для Linux: Основные сведения


Автор: Валерий Качуров, _kv_@bk.ru
Опубликовано: 16.9.2002

© 2002, Издательский дом «КОМПЬЮТЕРРА» | http://www.computerra.ru/
Журнал «СОФТЕРРА» | http://www.softerra.ru/
Этот материал Вы всегда сможете найти по его постоянному адресу:http://www.softerra.ru/freeos/20230/

Перевод статьи Билла фон Хагена Modern Distributed Filesystems For Linux: An Introduction.



Создание файловой системы



Создать файловую систему ext2 можно с помощью команды
mke2fs -c <device>
Опция -с указывает программе, что нужно сделать проверку устройства на наличие ошибок.

Другие параметры

-b размер блока Устанавливает размер блока. Допустимыми являются 1024, 2048 и 4096 байт/блок.
-f размер фрагмента Устанавливает размер фрагмента в байтах
-l имя_файла Читает список плохих блоков из файла
-T fs_type Устанавливает оптимальные параметры для файловой системы типа fs_type

О других параметрах вы можете узнать введя команду man mke2fs

Естественно, прежде чем создавать файловую систему на жестком диске,
нужно создать на нем разделы с помощью fdisk. Linux в качестве устройства может использовать обыкновенный файл. Его можно создать с помощью команды dd (см. ниже)

Затем файловую систему нужно примонтировать с помощью команды mount.



Создание раздела (файла) подкачки



Создайте раздела подкачки с помощью fdisk (тип раздела 82) и введите команду
mkswap -c раздел размер
Например команда
mkswap -c /dev/hda3 32768
создаст раздел своппинга размеров 32Мб (Параметр -с используется для проверки плохих блоков)

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

Создаем пустой файл /swap/sw-file (размер 32Мб)
dd if=/dev/zero of=/swap/sw-file bs=1k count=32768
Создаем своп
mkswap /swap/sw-file 32768

Никто вам не мешает создать в этом файле файловую систему и использовать ее, например:
mke2fs -m 0 /swap/sw-file затем mount -t ext2 /mnt/disk1 /sw/sw-file
Параметр m задает процент блоков, которые будут зарезервированы для супер-пользователя (по умолчанию - 5%)

После создания раздела (файла) подкачки, его нужно активизировать.
Команда swapon -a  включает все разделы своппинга, а команда
swapon раздел
включает конкретный раздел

В нашем случае нужно выполнить команду
swapon /dev/hda3

Естественно, файл подкачки swapon найти не может, поэтому нужно выполнить команду:
swapon /swap/sw-file

Команда swapon -a обычно помещается в сценарий загрузки системы.
Обычно это /etc/rc.d/rc.sysinit для систем, использующих инициализацию типа SysV - RedHat, Mandrake, Debian (хотя RedHat и Mandrake используют несколько модифицированную схему инициализации, но суть та же)
или /etc/rc/rc.S для BSD-подобных Linux-систем (Slakware)

Команду swapon /swap/sw-file нужно включить в сценарий загрузки после
команды swapon -a. Не будете же вы вводить ее каждый раз при загрузке?



Создание сети на изолированном компьютере


Рис. 4. Диск базового компьютера смонтирован как диск G:

При конфигурировании VMware в этом случае надо выбрать вариант «Host-only networking» и установить сервер Samba в версии vmware-smbd (при этом будет также установлен демон vmware-nmbd и будет организован их запуск при загрузке ОС Linux). Конфигурационный файл для сервера vmware-smbd располагается не в каталоге /etc/samba, как для стандартного сервера Samba, а в каталоге /etc/vmware/vmnet1/smb, хотя и называется он по-прежнему smb.conf и имеет ту же структуру. Естественно, необходимо настроить сетевые службы в ОС Linux базового компьютера и на виртуальном компьютере. IP-адреса можно задать произвольным образом. Поскольку в такой сети будет работать только несколько компьютеров (в простейшем случае всего два), то сервер DHCP запускать не имеет смысла, проще прописать все компьютеры и их адреса в файле /etc/hosts. На иллюстрирующем данный вариант рис. 4 показано, что весь диск базового компьютера подключен к виртуальному компьютеру как сетевой диск G:; в окне проводника Windows отображается структура каталогов Linux.



Специальные клавиши


Это клавиши, которые не выдают никакие коды, а вызывают немедленно какое-нибудь действие, типа "рестарт компьютера", "запуск встроенного отладчика" и т.п.



Специальные переменные


Каждому процессу доступны переменные оболочки, приведенные в таблице 1.

Таблица 1
Специальные переменные

Переменная Значение
HOME Домашний каталог
MAIL Имя файла, в который поступает электронная почта
LOGNAME Имя пользователя, которое использовалось для входа в систему
PATH Путь вызова
SHELL Имя интерпретатора команд
PWD Текущий каталог
UID Идентификатор пользователя, запустившего сценарий
RANDOM Случайное число в диапазоне от 0 до 32767
SECONDS Число секунд, прошедшее с момента запуска оболочки

Кроме этих переменных устанавливаются и другие переменные, назначение которых вы можете узнать в документации по bash.
В таблице 2 представлены переменные, которые используются для обозначения параметров командной строки.

Таблица 2.
 

Переменная Значение
$0 Имя выполняемой команды. Для сценария – путь, указанный при его вызове. 
$1 Первый параметр, указанный при вызове сценария. Аналогично, $2 – второй, $n – n-ый параметр.
$# Число параметров, которые были указаны при вызове сценария.
$* Все параметры, заключенные в кавычки: “$1 $2 ...”
$? Код завершения последней команды
$$ Номер текущего процесса (PID)



Specific Options


Ядро операционной системы должно быть расположено либо в корневом каталоге /, либо в /boot.[примечание 3]

[2] Программы, необходимые загрузчику для организации загрузки файлов, должны быть расположены в /sbin. Конфигурационные файлы загрузчика должны размещаться в /etc.

[3] На некоторых i386 компьютерах в силу аппаратных ограничений может оказаться необходимым разместить каталог /boot на отдельном разделе диска, расположенном целиком в пределах первых 1024 цилиндров загрузочного диска.

Certain MIPS systems require a /boot partition that is a mounted MS-DOS filesystem or whatever other filesystem type is accessible for the firmware. This may result in restrictions with respect to usable filenames within /boot (only for affected systems).

Previous: /bin : Основные исполняемые файлы (доступные всем пользователям)

Next: /dev : Файлы устройств

Up: Оглавление

Translated by troff2html v1.5 on 29 March 2002 by Daniel Quinlan



Список модификаторов, которые игнорируются в режиме GrabKey


ignorelockmods [ -= | += | = ] модификатор1 + модификатор2 + ... (или ignorelockmodifiers ...)



Список рассылки FHS


Список рассылки FHS располагается по адресу <адрес пропущен>. Для того, чтобы подписаться на рассылку, пошлите сообщение по адресу <адрес пропущен>, текст которого имеет вид "ADD fhs-discuss".

Спасибо Network Operations at the University of California в Сан-Диего, позволившим нам использовать их великолепный сервер почтовых рассылок.

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

Previous: Приложение

Next: История стандарта FHS

Up: Оглавление

Translated by troff2html v1.5 on 29 March 2002 by Daniel Quinlan



Список "внутренних" модификаторов


internalmods [ -= | += | = ] модификатор1 + модификатор2 + ... (или internalmodifiers ...)

Это модификаторы, которые используются только внутри X сервера (для выбора "действия" клавиши, если таковое есть) и не сообщаются в клавиатурных event'ах, посылаемых приложениям.



Splitvt


splitvt
by Sam Lantinga

Splitvt дает вам две консоли в одной, путем горизонтального разделения консоли. Если вы щелкните на картинке справа, то вы увидите как это полезно для просмотра man страниц, в то время как вы составляете командную строку. 'Control-W' используется для того чтобы переходить между окнами туда и обратно.

Splitvt прекрасно работает везде где я пробовал. Везде от настоящей консоли, до konsole построенной в виде табулированного блокнота. Без всяких проблем, очень полезна.



Способ добавления


Перед каждым отдельным объявлением может стоять дополнительное слово, которое определяет "способ добавления" или "замещения" (merge mode).

Оно определяет - как должна поступить программа, считывающая конфигурацию из файла, если такое объявление уже встречалось и новое объявление "конфликтует" с предыдущим. Например, это может быть определение кодов символов (блок типа xkb_symbols) для скан-кода, который уже был определен ранее или описание "поведения" модификатора (тип - xkb_compat) для модификатора, который уже описан.

Итак, способ добавления может быть

augment - в случае конфликта оставить старое определение, новое игнорировать

override - заменить строе определение на новое

replace - обычно то же самое, что и override, но в файле xkb_symbols означает немного другое. Поскольку, каждому скан-коду соответствует целый массив возможных значений (какое именно выбирается - зависит от модификаторов), различные определения одного и того же скан-кода могут описывать значения только для части ячеек этого массива. Так вот, если новое описание определяет только некоторые ячейки и "способ добавления" - override, то переписаны будут только те ячейки, которые присутствуют в новом определении, остальные останутся без изменений. А вот если "способ добавления" - replace, то все старое описание уничтожается (включая те ячейки, которые отсутствуют в новом описании) и заменяется на новое, даже если оно не полное.

alternate - допустимо только для файлов типа xkb_keycodes, означает, что, если новое имя конфликтует с уже существующим, то просто рассматривать его как "alias скан-кода", то есть - просто другое имя для того же числового значения скан-кода.



Способ первый


Создать файл командой touch и открыв его в редакторе набивать содержанием долго-долго.

touch my_file.

В итоге через несколько лет мы получим файл объемом в несколько десятков мегабайт – что уже подходит для наших целей. Недостатки: долго. Достоинства: можно стать самым знаменитым и плодовитым писателем. Что-то вроде Ленина.



Способ третий


Данный способ дает возможность получать файлы достаточно большого размера. 600-700 Мб. Делается это так. Вставляем под завязку набитый софтом или фильмами CD-ROM в привод. Пишем:
cp /dev/cdrom /home/my_file
в итоге все содержимое нашего сидиром будет скинуто в один файл. (Который кстати потом можно будет подключать к любой директории и свободно юзать).

Достоинства: удобно.
Недостатки: не универсально. Ну не надо мне 700 Мб. 40 хочу. Способ четвертый. Правильный.



Способ второй


Нужно найти в какой нибудь директории файл подходящего размера (ну мегабайт 50-100). Достоинства: минимум умственных усилий. Недостатки: такого файла может и не оказаться, если у тебя Винды припрятанной на дополнительной партиции нет. В Линуксе файлы достаточно миниатюрны. Философия такая.



Сравнение схем разбиения дисков «три на одном» и «с логикой на двух»


Посмотрим, как выглядит разбиение дисков при инсталляции Linux на три раздела на одном диске. Схема может выглядеть примерно так.

А теперь схема для инсталляции Linux на два диска с логическими томами.

 

И несколько примечаний.

Вместо того чтобы делить дисковое пространство под вынесенные из корня файловой системы, на дисках hda и hdc создается по одному разделу «на всё остальное» из расчета, сколько не жалко. Командой fdisk оба раздела помечены как тип 8e.

Имена «LIN», «tomhome», «tomusr», «tomopt», «tomvar» условны, вы можете присваивать имена логическим уровням значимые для вашей инсталляции (в конкретном случае в файле /etc/fstab имена разделов следует записывать как /dev/LIN/tomhome или /dev/LIN/tomusr ...).

Не существует технических ограничений для перемещения на логику корневой файловой системы. Но делать этого не стоит, в этом случае процессы загрузки и восстановления в случае сбоя критически усложняются. На диске hdc есть симметричный к корневому раздел (помечен как none). Моё мнение: место «чистому» корневому каталогу на soft-raid-зеркале с файловой системой ext3. Но это за рамками статьи.

В этом примере подбор типов файловых систем скорее демонстрирует то, что LVM прозрачен для их драйверов, т.е. драйверы файловых систем не знают, с чем они фактически взаимодействуют. Подумайте, стоит ли заводить «файловый зоопарк» или определиться с одним типом журналируемой fs для нагруженных приложениями файловых систем.



Сравнительный анализ файловых систем


Для тестирования я использовал Pentium III - 16 Mb RAM - 2 Gb HD c установленным Linux RedHat 6.2.
Все файловые системы работали без проблем, поэтому я затеял небольшой сравнительный анализ производительности файловых систем. В качестве первого теста, я имитировал сбой, просто выключив компьютер, чтобы проконтролировать процесс восстановления журнала. Все файловые системы прошли это испытание на ура, и во всех трех случаях машина была в норме уже через несколько секунд.

Следующим шагом в анализе было использование программы bonnie++ с http://www.coker.com.au/bonnie++/. Эта программа проводит тестирование в стиле работы с базами данных применительно к какому-то одному файлу. Тестируется создание, чтение и удаление небольших файлов, что может имитировать работу таких программ, как Squid, INN, или ПО, работающего с форматом Maildir (qmail).
Команда для тестирования была следующей: bonnie++ -d/work1 -s10 -r4 -u0 что запускало тестирование с использованием 10 Мб (-s10) дискового пространства на файловой системе, смонтированной в каталог /work1. Таким образом, перед запуском теста, вы обязаны создать необходимую файловую систему и смонтировать ее в каталог /work1. Остальные опции отвечают за размер оперативной памяти в Мб (-r4) и за имя пользователя (-u0, то есть root). Результаты демонстрируются в следующей таблице.

Sequential Output Sequential Input Random
Seeks
Size:Chunk Size Per Char Block Rewrite Per Char Block
K/sec % CPU K/sec % CPU K/sec % CPU K/sec % CPU K/sec % CPU / sec % CPU
ext2 10M 1471 97 14813 67 1309 14 1506 94 4889 15 309.8 10
ext3 10M 1366 98 2361 38 1824 22 1482 94 4935 14 317.8 10
xfs 10M 1206 94 9512 77 1351 33 1299 98 4779 80 229.1 11
reiserfs 10M 1455 99 4253 31 2340 26 1477 93 5593 26 174.3 5

Sequential Create Random Create
Num Files Create Read Delete Create Read Delete
/ sec % CPU / sec % CPU / sec % CPU / sec % CPU / sec % CPU / sec % CPU
ext2 16 94 99 278 99 492 97 95 99 284 100 93 41
ext3 16 89 98 274 100 458 96 93 99 288 99 97 45
xfs 16 92 99 251 96 436 98 91 99 311 99 90 41
reiserfs 16 1307 100 8963 100 1914 99 1245 99 9316 100 1725 100
<
Два типа данных приводятся для каждого теста: скорость файловой системы (в Кб/сек) и загрузка процессора (в %). Чем выше скорость, тем лучше файловая система. Что касается загрузки процессора - то там все наоборот.
Как видно из таблицы, ReiserFS является чемпионом в управлении файлами (раздел Sequential Create и Random Create), превосходя своих конкурентов больше чем в 10 раз. Также, ReiserFS практически не уступает другим файловым системам в категориях Sequential Output и Sequential Input.

Что касается остальных файловых систем, то в их результатах разницы практически нет. Скорость XFS близка к скорости ext2, а ext3, как и ожидалось, немного медленнее ext2 (по сути это одно и то же, только ext3 тратит еще немного времени на обращение к журналу).

В качестве последнего испытания я использовал программу mongo, обнаруженную на странице тестов reiserFS на http://www.namesys.com/. Я немного поправил исходники для использования программы с тремя файловыми системами. Я вставил в перловый скрипт mongo.pl команды для монтирования и форматирования файловых систем xfs и ext3. Потом я запустил программу тестирования.
Скрипт форматирует раздел /dev/xxxx, монтирует его и запускает заданное число процессов во время каждого этапа. Этапы были следующими: Create, Copy, Symlinks, Read, Stats, Rename и Delete. Также программа определяет степень фрагментации после этапов Create и Copy. Fragm = число_фрагментов / число_файлов С результатами можно ознакомиться и в каталоге results в файлах: log - результаты, представленные в неформатированном виде. log.tbl - результаты для программы, осуществляющей сравнение. log_table - результаты в виде таблицы. Тестирование происходило таким образом: mongo.pl ext3 /dev/hda3 /work1 logext3 1

где ext3 нужно заменить на reiserfs или xfs для тестирования других файловых систем. Остальные аргументы - это имя монтируемого устройства, где находится тестируемая файловая система, каталог, в который файловая система монтируется, имя файла, куда направляются результаты, и количество запускаемых процессов.

В следующих таблицах представлены результаты моего анализа. Представленные данные - это время (в сек). Чем меньше значение, тем лучше файловая система. В первой таблице используются файлы со средним размером 100 байтов, во второй - 1000 байтов, а в третьей - 10000 байтов.
ext3
files=68952
size=100 bytes
dirs=242
XFS
files=68952
size=100 bytes
dirs=241
reiserFS
files=68952
size=100 bytes
dirs=241
Create 90.07 267.86 53.05
Fragm. 1.32 1.02 1.00
Copy 239.02 744.51 126.97
Fragm. 1.32 1.03 1.80
Slinks 0 203.54 105.71
Read 782.75 1543.93 562.53
Stats 108.65 262.25 225.32
Rename 67.26 205.18 70.72
Delete 23.80 389.79 85.51
<


ext3
files=11248
size=1000 bytes
dirs=44
XFS
files=11616
size=1000 bytes
dirs=43
ReiserFS
files=11616
size=1000 bytes
dirs=43
Create 30.68 57.94 36.38
Fragm. 1.38 1.01 1.03
Copy 75.21 149.49 84.02
Fragm. 1.38 1.01 1.43
Slinks 16.68 29.59 19.29
Read 225.74 348.99 409.45
Stats 25.60 46.41 89.23
Rename 16.11 33.57 20.69
Delete 6.04 64.90 18.21
ext3
files=2274
size=10000 bytes
dirs=32
XFS
files=2292
size=10000 bytes
dirs=31
reiserFS
files=2292
size=10000 bytes
dirs=31
Create 27.13 25.99 22.27
Fragm. 1.44 1.02 1.05
Copy 55.27 55.73 43.24
Fragm. 1.44 1.02 1.12
Slinks 1.33 2.51 1.43
Read 40.51 50.20 56.34
Stats 2.34 1.99 3.52
Rename 0.99 1.10 1.25
Delete 3.40 8.99 1.84
Цифры говорят о том, что ext3 обычно быстрее на этапах Stats, Delete и Rename, в то время как reiserFS сильнее в Create и Copy. Также обратите внимание на то, что reiserFS проявляет свои лучшие качества в случае с маленькими файлами, что и подчеркивается в документации по reiserfs.


Среди океана команд


„-- В конце концов, -- сказал он невесело, -- ничего
страшного нет. Вот в Китае разыскать нужного человека
трудновато: там живет четыреста миллионов населения. А у нас
очень легко: всего лишь сто шестьдесят миллионов, в три раза
легче, чем в Китае.“
Илья Ильф и Евгений Петров. Золотой теленок.



Средства навигации


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

find - команда монстр, с ее помощью можно найти все что вы хотите, а иногда даже то чего и не хотите. Предназначена для поиска файлов в файловой системе по заданным критериям. Над найденными файлами возможно выполнение некоторых действий, заданных вами. К примеру, если перевести третью из вышеприведенных команд find, на русский язык, то получится нечто вроде „искать в каталоге /usr/man все файлы с расширением .gz, затем каждый из файлов вывести в распакованном виде, с помощью команды zcat, на стандартный вывод“, а там уже будет ждать wc который подсчитает количество символов во всех найденных файлах; locate - поиск файлов по их имени или шаблону имени, в качестве шаблона, можно использовать как метасимволы применимые в командной строке( *, ? и т.п), так и регулярные выражения. Именно этой команде нужно отдавать предпочтение, перед find, в случае если вам нужно найти файл по его имени. Это связано с тем что данная команда ищет файлы не в самой файловой системе, как это делает find, а в предварительно сформированной базе, в которой хранится список всех файлов в системе, поэтому поиск осуществляется на несколько порядков быстрее, да и ваша система, не будет так сильно загружена, как в случае использования find. Однако, у утилиты есть недостаток, она не находит файлы, появившиеся уже после обновления базы, а база обновляется обычно по расписанию, командой locate -u; man - справочник команд, наипервейший и наиглавнейший источник информации по командам и утилитам. За особые заслуги, я называю man, ласково-уменьшительно Маня или Манечка, видимо поэтому она делится со мной всеми своими секретами. Форма вызова man <команда>, в результате мы получаем на экране отформатированную страницу руководства по требуемой команде; apropos - в моей системе это жесткая ссылка на сам man, и является эквивалентом вызову man с ключем -k, что означает поиск вхождения ключевого слова, как в именах команд, присутствующих в справочнике man, так и в заголовках страниц руководства; whatis - опять таки жесткая ссылка на man, эквивалентная команде man -f, из названия ясно, что помогает определить для чего нужна та или иная команда, причем информация дается довольно краткая, в одну две строки; ls - выдает список файлов в директории, плюс еще вагон разной информации о каждом из файлов. Кстати досовский dir, это как раз дальний родственник ls, который из за врожденного плоскостопия, слабоумия и близорукости практически издох в последних версиях ВЫНЬ ХХ( это кроме того связано с повсеместным внедрением так называемого „оконного интерхфейса“); tree - продвинутый ls, который рисует дерево каталогов, или переводя на псевдонаучный язык „визуализирует обьекты файловой системы, их атрибуты, и структурные связи между ними“, о как сказал!. Умеет раскрашивать имена файлов и каталогов в зависимости от их типа. Моя любимая команда в этом плане tree -C | less -r, с помощью которой можно в цвете рассматривать, не какие нибудь каталоги-кустики, а настоящие баобабы( дерево такое большое. Из курса школьной ботаники помнится мне что на пенечке такого деревца легко умещается симфонический оркестр! Просьба не путать с бабами, которых кстати тоже довольно приятно рассматривать в цвете); info - кладезь информации, чем то напоминает man, но с более продвинутыми средствами навигации по темам, под темам. Можно сказать что здесь мы имеем нечто похожее на гипертекст. Многие крупные пакеты, не имеют, или имеют очень краткую справочную информацию в man, но зато в info - имеется этой информации более чем достаточно. В частности именно с помощью info gcc и info libc, была найдена обширная документация по gcc и glibc, которую я по незнанию вначале скачал c другой стороны планеты, в виде запакованных html-файлов, а потом как оказалось они в виде info-файлов спокойно лежали на моем винте. Следует отметить что информация в man, это в некотором роде подмножество информации info, дело в том что если info не может найти в своей базе информацию по некоторому вопросу, то она без лишних раздумий выводит то, что говорит man по этому поводу. grep - поиск информации в файлах по заданному шаблону, применяется в задачах подобным следующим: найти все файлы из заданного списка, в которых упоминается выражение „Windows Forever“( такой список может применяться для изничтожения таких файлов на вашей машине), или скажем такая задача найти все строки файла в которых встречается упоминание о Linux, и т.д. и т.п. Для совершенного владения этой утилитой нужно обязательно освоить регулярные выражения, причем они вам пригодятся не только здесь; whereis - как можно догадаться из названия, утилита предлагает сервис под названием „где это?“, другими словами она пытается найти все что относится к введенной в качестве параметра команде и выводит список найденного. Поиск ведется среди выполняемых файлов, которые находятся в путях из переменной PATH, затем среди страниц руководства man плюс в исходных текстах; which - производит поиск заданной в качестве параметра команды, во всех каталогах указанных в переменной PATH, а также в определениях алиасов. По умолчанию выводит первую найденную команду вместе с полным путевым именем. Может пригодится в случаях когда команда ведет себя не так как ожидалось, А все может обьясниться тем что у вас две версии данной программы, а по умолчанию выполняется первая найденная с помощью переменной PATH, команда. Или просто вам необходимо знать где лежит та или иная команда; file - определить тип заданного в качестве параметра файла, утилита способная творить чудеса, для определения типа файла используется магический файл magic; rpm - менеджер пакетов RedHat, к поиску имеет отдаленное отношение, но именно используя данную команду, ищется скажем тот пакет который содержит нужную вам программу. Кроме того не помешает знать как просмотреть ту или иную информацию по некоторому пакету; tar - архиватор, вобщем-то приведен сюда по тем-же причинам что и rpm; less - страничный пейджер, предназначен для просмотра текстовой информации, имеет удобные средства навигации; tail - вывод конца файла; head - вывод начала файла; cd - смена текущей директории; pushd - перейти в указанную директорию, а текущую запихнуть в стек; popd - вынуть из стека директорию, и перейти в нее; pwd - „И где я нахожусь?“ - на этот вопрос ответит вам pwd, просто печатающая текущую директорию; ln - создает жесткую или символическую ссылку на файл или директорию; rm - удаляет файл, файлы, директории. Будте бдительны, восстановлению удаленная информация, в большинстве случаев, не подлежит; cp - копирование файлов, директорий; mv - переименование и перемещение файлов и директорий; регулярные выражения - один из мощнейших механизмов для поиска и редактирования текстовой информации. Поначалу вызывает трудности с пониманием, тем более что существуют несколько реализаций, это так называемые базовые и расширенные регулярные выражения. Судя по всему называются они „регулярными“ потому как при их изучении регулярно возникает желание применять несколько другие выражения из области ненормативной лексики. Кстати имеют много с ними общего, так с помощью ограниченного количества не нормативных слов, можно выразить неограниченное количество эмоций и чувств, а с помощью ограниченного количества символов используемых в регулярных выражениях можно задать неограниченное количество шаблонов для поиска. При этом у людей незнакомых с традициями как одних так и других выражений, обе эти разновидности выражений создают впечатление бессмысленного набора единиц информации. Надо отметить что практически все утилиты тем или иным образом позволяют использовать регулярные выражения; ключи --help и --version - иногда полезно просмотреть краткую подсказку, чем листать огромный man, а также представляет некоторый интерес информация о версии той или иной программы; strings - копается во внутренностях бинарных файлов и выводит на печать все найденные текстовые строки, игнорируя при этом двоичный бред. Вот таков минимум, которым надо владеть для более или меннее свободного общения с системой.



Средства среды KDE для работы с файлами


Как уже говорилось, файловый менеджер, именуемый KFM - неотъемлемый компонент этой интегрированной графической среды. Это - достаточно точное подобие своего прототипа, Windows Explorer. Он может выступать в однооконном или двухоконном виде.

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

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

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

Переименование выполняется через контекстное меню (пункт Свойства, где в панели на закладке Основные просто вписывается новое имя). Здесь же - управление правами доступа, возможное, однако, только для единичного файла или каталога, без рекурсии.

Также через контекстное меню можно просмотреть (и при необходимости отредактировать) файл. Для этого в нем выбирается пункт Открыть с... и дальше - одно из установленных в системе приложений. Для просмотра и редактирования текстовых файлов можно определить внешний редактор (встроенного редактора нет).

Кроме того, для нескольких распространенных типов файлов в контекстном меню появляется пункт вызова программы для их просмотра и редактирования. Например, для текстовых файлов это будет штатный текстовый редактор Kedit. В это меню попадают и вновь установленные (не входящие в дистрибутив) приложения KDE.

И вообще, настроек (в пункте меню Настройки - Настроить менеджер файлов) довольно много. Можно определить гарнитуру шрифта (любую доступную в системе) и его размер (варианты - маленький, средний большой). Можно переопределить цвет фона, нормального текста и гиперссылки (в качестве каковых выступают каталоги и файлы). Можно также отключить следование дерева каталогов (если включен его показ) за движением курсора в окне содержимого каталогов: это удобно для копирования из каталога в каталог методом перетаскивания: файл или их группа (выделяемая стандартным для Windows способом - мышью при нажатом Control) перетаскивается из окна файлов в один из подкаталогов окна дереве.

Из дополнительных функций следует отметить встроенный браузер, простенький, но почти полнофункциональный и работающий замечательно быстро. Следует сказать, что браузер вызывается по умолчанию при открытии каталога, содержащего *.htm(l) файлы. Чтобы этого не было, следует в главном меню (пункт Вид) отключить опцию Вид HTML. Браузер этот не очень уверенно обращается с фреймами и JavaScript, категорически не понимает каскадных стилевых таблиц, не распознает некотрые графические форматы (например, *.png, не говоря уже о *.djvu). Однако имеет важное достоинство - позволяет переключать кодировки русского языка.

Из прочих дополнительных средств отмечу также архиватор. Правда, работает он иногда несколько странно: например, благополучно распаковывает файлы *.tar.gz, но просто на файлы *.tar реагирует так, как будто и не подозревает о существовании этого формата. Нужно сказать, что и ряд других архивных форматов (*.bz) также ставят его в недоумение.

Кроме того, kfm частично позволяет работать с архивами распознаваемых типов, как с каталогами. Запускать исполнимые файлы - не получается, но можно читать текстовые файлы. Правда, это возможно только при низких уровнях защиты, выбираемых при инсталляции.

Ну а при обращении к rpm-пакетам автоматически вызывается kpackage - весьма удобная в обращении программа для работы с этим форматом, о котором пойдет речь в одном из следующих разделов.

В целом kfm - почти полный функциональный аналог Windows Explorer. И любители последнего не обнаружат в нем ничего непривычного. В качестве основного недостатка (если не считать таковым интерфейс в принципе) можно отметить исключительную медлительность: во время открытия большого каталога можно немалое время наблюдать в статусной строке задумчивую надпись Работаю... (по мне - так скорее Дремлю...).

Медлительность эта отнюдь не обусловлена средой KDE, самой по себе не блещущей быстродействием. Поскольку штатный файловый менеджер из грядущей второй версии KDE (все сказанное выше относилось к первой версии) - konqueror, - можно поставить рядом с эталонами скорости.

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

Начать с того, что работает он если не на порядки, то в разы быстрее. Удручающе скучной надписи Работаю или вовсе нет, или ее не успеваешь разглядеть при считывании сколь угодно длинного каталога.

Далее, в нем наконец появилась возможность сортировки - по алфавиту (с чувствительностью к регистру или без оной), по размеру, в обратном порядке. Расширилось число форм представления - в виде текста и иконок различного размера, в виде дерева. Появилась возможность редактирования панели инструментов. Непосредственно из окна konqueror можно запустить как окно эмуляции терминала, так и миникомандную строку. И самое главное - можно разделить окно на любое количество панелей (по горизонтали или по вертикали) с независимым просмотром.

Что касается встроенного браузера, то он стал очень похожим на настоящий. Научившись понимать не только JavaScript, но и Java (впрочем, и то, и другое можно отключить). И не утратив при этом быстродействия. Кроме того, он позволяет экспортировать закладки из Netscape. Ну и, что радостно, по прежнему не забыл о различных кодировках кириллицы.

Кроме штатного kfm, в состав KDE, по крайней мере в некоторых поставках (Linux Mandrake RE тому примером) входит еще один файловый менеджер, Kruiser. Он также принадлежит к клану Explorer. Однако существенно (и, на мой взгляд, выгодно) отличается от него интерфейсом.

По умолчанию Kruiser имеет два окна - дерева каталогов (слева) и файлов (справа), главное меню и две инструментальные панели, одну вверху и другую справа.

Из верхней (общей) панели доступны обычные операции, как то: переход в родительский каталог, удаление, вырезание, копирование и вставка, представление окна файлов (в виде иконок, короткого или длинного списка). Здесь же - монтирование нового устройства или удаление существующего.

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

В главном меню - четыре, не считая help, пункта: File, Edit, View, Tools. Правда, есть еще и пункт Windows, но он пока не активизирован.

В пункте первом - всего три опции, New (директория или устройство), открытие терминала и выход. В пункте Edit - стандартные манипуляции вырезания, копирования и вставки, удаления просто и перемещения в корзину (как и KFM, Kruiser поддерживает системную корзину KDE), а также выделение.

Через пункт View включаются/выключаются инструментальные панели и статусная строка, осуществляется обновление списком и настройка (Options). Здесь же - переключение вида списка файловую, порядка сортировки (по имени, размеру, типу и дате), включение/выключение показа скрытых файлов и предварительного просмотра. Кроме того, тут же - управление видом окон файлов. В пункте Tools - поиск файлов, монтирование/размонтирование устройств, переход к каталогу.

Немного остановлюсь на настройках. Это - панель с закладками General, Extensions, Details, View, Misc. В первой можно определить локализацию MIME-типов и икон, оболочку по умолчанию для вызываемого окна терминала, открываемую по умолчанию директорию (последнюю или текущую).

Extensions - приписывание типам файлов стандартного расширения; ведь в Unix, в отличие от DOS/Windows, расширение в общем случае с типом файла никак не связано и может быть любым.

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

В закладке View - приписываются маски различным типам архивных файлов (*.tgz, *.tar.gz, *.tar - для tar-архивов, *.zip - для архивов Zip, и т.д., список можно расширять произвольно).

И, наконец, в закладке Misc определяется, в частности, вызываемый редактор для текстовых файлов.

В отличие от KFM, в настройках Kruiser отсутствует возможность изменения гарнитуры, кегля и начертания шрифта, цвета его и фона: во всех этих случаях используются системные установки для KDE в целом.

Кроме главного меню, существует также меню контекстное, вызываемое традиционной правой клавишей мыши. В поле дерева каталогов меню это имеет опции Explore (выведение содержимого в поле файлов), Expand и Collapse (развертывание и сворачивание подкаталогов, соответственно), Delete (это - понятно), Refresh (считывание листа каталогов заново), Properties (через которые происходит управление правами доступа, и для файлов тоже).

В поле файлов в контекстном меню присутствуют пункты Cut, Copy, Delete, Move to Trash. При фокусировании на каталоге к ним добавляется Explore (разворачивание каталога), при фокусировании на файле - Open (если этому типу файла приписано какое-либо приложение), Open with (выбор открывающего приложения из списка) и Edit (открытие в текстовом процессоре, установленном в настройках по умолчанию).

Следует заметить, что все действия по открытию каталогов и файлов выполняются, в отличие от KFM, двойным щелчком (разумеется, левой клавишей).

А вообще-то основным способом манипуляций с файлами в Kruiser является манипулирование манипулятором (то есть, по простому, перетаскивание мышью). Таковое возможно как между полями дерева каталогов и файлов (в обоих направлениях), так и между панелями файлов (если их две). При перетаскивании возникает контекстное меню с тремя пунктами - Copy, Move и Link.

Чего удается обнаружить не сразу - так это того, как выполняется переименование файлов. Эта функция доступна одним единственным образом: нужно щелкнуть (в списке файлов) именно на имени, а не на пиктограмме файла. После этого вместо существующего имени можно впечатать любое другое, подобно тому, как это сделано в Windows Commander. Нужно только не забыть нажать после этого Enter: если просто увести курсор в другую позицию, исходное имя файла (или каталога, без разницы) восстановится.

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

Kruiser не имеет встроенного архиватора. Но через контекстное меню (опция Open with) можно для открытия архива вызвать любой из имеющихся в системе, в том числе и тот же Archiver, который встраивается в KFM.

Для ftp-доступа можно использовать опцию Connect new device (в меню Tools) и из выпадающего меню выбрать пункт Ftp. После чего прописать имя соединения, адрес сервера и порт; поля для записи логина и пароля хотя и присутствуют, но недоступны.

Хотя Kruiser, как следует из названия, является приложением KDE, по быстродействию он разительно отличается от KFM: считывание каталога с многими десятками файлов происходит на порядок быстрее, копирование - быстрее как минимум вдвое.

Да и в целом он показался мне гораздо более удобным в использовании, нежели kfm. Хотя бы благодаря наличию возможности включить две панели - свойство, привычное по командирским менеджерам, имевшееся в приснопамятном File Manager из Windows 3.xx, но пропавшее их Windows Explorer (видимо, по причине пресловутой ненужности народу; а Explorer народу нужен?). Потому что настало время обратиться к тем файловым менеджерам, которые пользуются любовью народа (как всегда, не понимающего, что ему нужно). И являют собой



Средства управления пакетами и установки программ


Большее или меньшее количество утилит и прикладных программ вы получаете вместе с дистрибутивом. Однако отнюдь не все они окажутся на вашем диске после инсталляции системы - при необходимости их нужно будет устанавливать самостоятельно. Не говоря уже о тех программах, которые вы скачаете из Интернета.

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

Должен сказать, что при выборе из двух равнофункциональных (по описанию) программ я всегда отдаю предпочтение той, которая имеет откомпилированный вариант. Не потому, что компиляция из исходников - такое уж сложное дело. Просто мне представляется (возможно, необоснованно) - если автор не поленился собрать бинарный пакет, значит, по крайней мере он сам не каждый день находит ошибки в своей программе... Хотя, насколько я понимаю, распространение только в виде исходников может быть принципиальной и позицией разработчика.

Существует четыре формата бинарных пакетов (по крайней мере, о других мне неизвестно, если кто знает - подскажите) - rpm, deb, tgz и slp. Как говорилось во введении, это один из отличительных признаков основных линий дистрибутивов Linux. При этом широко распространены только два первых, представляющих линии Red Hat и Debian, соответственно: даже в Suse Linux, первооснова которого - дистрибутив Slackware с форматом tgz, используется формат rpm. Формат же slp применяется, насколько мне известно, только в одном дистрибутиве - Stampede, который пока не дошел до стадии релиза.

Для исходных текстов обычный формат - упомянутый выше архив tar.gz. Хотя в составе дистрибутивов исходники представлены в формате используемых в нем пакетов (rpm - в клона Red Hat, deb - в производных Debian).

Существует большое количество средств для работы с пакетами. Собственно, почти каждый уважающий себя дистрибутив имеет собственную программу такого рода. Наличие ее - один из показателей зрелости и самостоятельности системы. Однако мы молчаливо предполагаем, что используемый нами дистрибутив - это Mandrake RE, использующий, как и всякий потомок Red Hat, его формат пакетов. И потому перво-наперво остановимся на средствах управления пакетами rpm.

Из которых первейшими для нас на первом этапе будут kpackage, входящая в среду KDE, и rpmdrake, представляющая собой разработку Mandrake-Soft. Не потому, что они лучше других, просто это штатные средства рассматриваемого дистрибутива.

Как уже говорилось в разделе о kfm, kpackage автоматически вызывается из этого файлового менеджера при щелчке на rpm-файле. Имеющем обычно, как нетрудно догадаться, вид *.rpm. Хотя и не обязательно - из-за описанных выше особенностей файловой системы Linux расширение имени файла не связано жестко с его типом.

Разумеется, kpackage можно и просто открыть, набрав соответствующую команду в окне терминала, в строке минитерминала или выбрав из стартового меню (где она находится в пункте Полезное - More, прошу прощения за языковую мешанину, но в русифицированном KDE именно так).

После этого возникает окно с двумя панелями, в левой из которых - дерево установленных rpm-пакетов, разбитых на группы (Base, Development, X11 и т.д.), правая же, имеющая две закладки (Свойства и Список файлов) пока пуста. Если мы щелкнем на конкретном пакете из дерева, то в левой панели будет несколько переключателей и экранных кнопок, а в правой появится информация о пакете, включающая:


название; резюме, в котором обычно кратко сказано о назначении программы; номер версии программы; название группы, к которой программа принадлежит; более или менее подробное описание пакета; размер, дата установки и сборки, автор и еще некоторые сведения того же рода.

Разумеется, можно открыть (через Файл - Открыть, Открыть недавнее или Открыть URK) и неустановленный пакет, находящийся на дистрибутивном CD ROM, каком-либо ином стационарном или сменном носителе, а также в сети, локальной или глобальной (сиречь в Интернете). В этом случае к списку свойств файла может добавиться еще одно - неудовлетворенные зависимости, где будет указано, какой еще пакет (или пакеты) необходимо установить для нормального функционирования данного.

Смысл закладки Список файлов понятен, отвечая своему названию. Перед установкой пакета неплохо ознакомиться с ним внимательно. Чтобы знать потом, где искать исполнимые файлы, где - документацию, и т.д. Впрочем, устанавливаемые компоненты пакетов rpm в подавляющем большинстве попадают в подкаталоги каталога /usr: исполнимые модули - в /usr/bin, документация - в /usr/doc, библиотеки - в /usr/lib и т.д.

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

Однако прежде не худо обратить внимание на переключатели:

Обновить; Заменить файлы; Заменить пакеты; Проверять зависимости; Тест (не ставить).

Смысл их становится понятным после знакомства с опциями программы rpm (о которой чуть ниже). По умолчанию включены опции Обновить, Заменить пакеты и Проверять зависимости; в большинстве случаев установки новых пакетов все это можно оставить без изменений. Однако обновление уже установленного пакета требует включения опции заменить файлы.

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

В общем, на мой взгляд, пакет kpackage интуитивно понятен и прост в использовании. Чего я не сказал бы о пакете rpmdrake. После его запуска (с рабочего стола, из минитерминала или любым другим способом) возникает окно, сходное с таковым kpackage: та же панель с деревом каталогов слева и пустая панель - справа; последняя при щелчке на имени rpm-пакета заполняется описанием его свойств и списком входящих файлов. Внизу правой панели - кнопка Установка.

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

Так вот, возможность открытия неустановленного пакета обнаруживается в пункте Настройка. Для чего нужно ни много, ни мало, сменить источник установки: по умолчанию это дистрибутивный CD ROM. Но можно выбрать local, http и ftp, если вам нужно открыть пакет с локального диска, http- или ftp-сервера, соответственно.

Если же требуется использовать какой-либо сменный носитель (от дискеты до съемного винчестера), необходимо добавить новый источник инсталляции: выбрать через меню Настройка - Добавить источник инсталляции - Local, после чего в появившейся панели ввести имя источника (например, local_n) и соответствующий ему каталог (например, /mnt/floppy для дискеты).

Мне все это кажется достаточно запутанным, но при отсутствии KDE или нежелании им пользоваться - пригодно к употреблению, если вы не желаете отказываться от графического режима. Если же командная строка отвращения не вызывает, проще всего прибегнуть к традиционному средству - команде rpm. Запускается она следующим образом: rpm -[список опций] имена пакетов rpm



Имен пакетов может быть указано сколько угодно. Основных же опций - три: инсталляция (i), деинсталляция (u - от uninstall) и запрос (q - от querry). Ну а список дополнительных опций (таких, как принудительная инсталляция, обновление пакета, проверка зависимостей и т.д.) можно получить, запустив rpm без опций и аргументов.

Кроме этого, с помощью команды rpm можно создать собственный пакет (прибегнув к опции -b, от build). Другое его преимущество - простое обращение с взаимозависимыми пакетами: для их нормальной установки обычно достаточно просто привести их одним списком в качестве аргументов. Если это не помогает - можно воспользоваться дополнительной опцией f (от force).

Следует помнить, что любые манипуляции с rpm-пакетами в любой программе требуют прав суперпользователя. При этом rpmdrake и, иногда, kpackage (при низких уровнях защиты) сами запрашивают пароль администратора и при правильном его вводе автоматически переходят в этот режим, возвращаясь в обычный пользовательский при выходе из программы. Для работы же с командой rpm нужно позаботиться об этом самому, с помощью команд su и exit.

Однако, как я уже говорил, формат пакетов не исчерпывается rpm. И, возможно, нужная вам программа распространяется в составе какого-либо другого дистрибутива. В этом случае можно прибегнуть к команде alien, позволяющей конвертировать пакеты из одного формата в другой. Она распространяется с дистрибутивом Debian и его производными, но может быть получена из Интернет (например, с http://kitenet.net/programs/alien/ или любого крупного файлового архива). Использовать ее очень просто в качестве аргумента указывается имя пакета, подлежащего конвертации, а опции определяют, в какой формат он должен быть конвертирован. По умолчанию, без указания опций, происходит конвертация в формат deb, но программа может также работать с пакетами rpm, slp и tgz.

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

Ничего принципиально сложного в этом нет. Архив с исходными текстами распаковывается в подходящий каталог (обычно для этого используются каталоги /usr/local/src или $HOME/src). После чего в нем появляется соответствующий имени программы подкаталог. В правильно оформленной для распространения программе каталог этот должен содержать файлы вроде README, INSTALL, Makefile, configure. Первые два содержат (или не содержат, в зависимости от лени разработчика) описание программы и процесса ее установки.

Файл Makefile описывает процесс построения программы и указывает местонахождение необходимых для этого компонентов, в частности, системных библиотек. Обычно он ориентирован на некую усредненную конфигурацию, которая может не соответствовать (и, как правило, не соответствует) вашим реалиям.

Для приведение файла Makefile в соответствие с последними используется команда ./configure (именно так, по понятным причинам она обязательно запускается из текущего каталога).

После этого наступает очередь команды make. Она входит в состав любого дистрибутива и я не слышал, чтобы она не устанавливалась по умолчанию. Для использования ее обычно требуются права суперпользователя (приобретаемые командой su с указанием административного пароля): большинство компилируемых программ по умолчанию устанавливаются в каталог /usr/local.

И так, запускаем программу make. Она производит сборку исходных текстов в т.н. объектные модули (нечто проде оверлеев в DOS-программах). Процесс этот может занять довольно долгое время, он сопровождается всякого рода сообщениями (следует надеяться, что не об ошибках - в этом случае процесс прекращается).

По завершении его, то есть возврату приглашения командной строки, собранную программу нужно установить, то есть записать исполнимые модули, библиотеки, документацию и прочее туда, где им надлежит быть впредь (как уже говорилось, обычно в соответствующие подкаталоги /usr/local). Для этого дается команда make install, которая и осуществляет этот процесс.

Наконец, завершающий шаг, необязательный, но крайне желательный - это освобождение каталога с исходниками от продуктов жизнедеятельности команды make, то есть объектных модулей. Делается это командой make clean. На чем процесс установки можно считать законченным и командой exit вернуться в обычный пользовательский режим.

Таким образом, мы рассмотрели большинство файловых манипуляций под Linux. Забыв лишь об одном - что не весь мир работает в этой системе. Конечно, пользователи Windows могут позволить себе просто не знать о существовании других систем. Пользователи же Linux должны помнить о принудительной силе реальности. Реальность же такова, что без Windows обойтись вряд ли удастся. Хотя бы для обмена данными со своими консервативными коллегами. И потому следует рассмотреть вопрос


Средства записи на CD


Конечно, имеются также и другие устройства, предназначенные для этой цели: и стриммеры, и магнитооптика и... да, пожалуй, и все. Не только дискеты, но и всякого рода Zip как резервные носители при нынешних объемах данных рассматриваться не могут. А пишущие DVD - дороги и имеют проблемы с их чтением.

В общем, только CD-R/RW близки к тому, чтобы стать стандартным устройством персонального компьютера (к чему я не устаю призывать уже около двух лет). И средства их записи - непременный атрибут системы, претендующей на массовое использование.

Надеюсь ошибиться, но в Linux пока эти средства далеки от совершенства, как с точки зрения функциональности, так и удобства. Главное из них - это пара утилит mkisofs и cdrecord. Первая создает т.н. образ диска, вторая обеспечивает его запись на CD. Кроме того, имеются еще mkhybrid (для создания образов) и cdrdao (для записи), но, насколько я могу судить, они применяются реже.

Правда, если обратиться к любой коллекции программ для Linux, можно обнаружить десятка два программ, предназначенных для записи CD-R/RW. Однако это просто оболочки (т.н. front-end applications), объединяющие в едином интерфейсе перечисленные утилиты командной строки.

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

Возможно, что перед записью CD придется произвести некоторые предварительные действия. Почему? Напрямую Linux поддерживает записывающие/перезаписывающие устройства только с интерфейсом SCSI. Причина этого мне не известна, вероятно, так уж склалось исторически.

Однако относительно дешевые записывающие приводы, получившие массовое распространение за последнее время, имеют интерфейс IDE. И их поддержка реализована в Linux только через эмуляцию интерфейса SCSI, что подразумевает передачу команд SCSI по шине IDE.

Надо сказать, что, например, Linux Mandrake (возможно, и другие дистрибутивы) по умолчанию устанавливается так, что CD-R/RW устройство, если оно имеется в наличие, определяется как эмулирующее SCSI. В других же дистрибутивах для осуществления этого, скорее всего, придется перекомпилировать ядро. Каким образом - довольно подробно описано в CD-Writing HOWTO, имеющемся, в частности, и в русском переводе.

Однако предположим, что этот предварительный этап благополучно минул. Принимаемся за прикладной софт для записи CD-R/RW. В комплект Linux Mandrake входит (помимо утилит командной строки mkisofs и cdrecord) две такие программы - Gnome Toaster и X-CD-Roast. Первую я опробовать не рискнул из-за настороженного отношения к Gnome-приложениям вообще. Но - посмотрел. Замыслена она хорошо, чем-то напоминает WinOnCD: файлы и каталоги просто перетаскиваются из древа в область записи, жмется кнопка Record - и, как будто, все. Однако, повторяю, на практике я ее не использовал...

X-CD-Roast - программа довольно примитивная, хотя и не сложная в обращении. Отличается назойливым предложением согласиться с неким написанным крайне мелкими буквами лицензионным соглашением; его якобы можно отключить, но - это только кажется: время от времени оно появляется снова.

Работа с программой X-CD-Roast возможна исключительно в режиме администратора; попытка запустить ее от лица пользователя (командой xcdroast) приводит к сообщению об отсутствии такого файла. После запуска программы возникает красочная заставка с буквами "X-CD-Roast" на фоне пламени (это к тому, что данные не горят?) в центре и серией кнопок слева: SCSI/IDEinfo, Setup, Copy Data-CD, Copy Audio-CD, Master CD, Exit.

Нажав первую из кнопок, можно убедиться, что записывающее SCSI-устройство у нас имеется (или благополучно эмулируется), иначе все дальнейшее теряет смысл. Указывается также читающее CD-устройство, в соответствие со своим интерфейсом. Если имеется только один пишущий привод, как, например, у меня, он будет фигурировать в обоих ипостасях. Это создает ряд неудобств, в частности, не позволяет копировать напрямую аудиодиски.

С помощью кнопки Setup, понятно, осуществляется настройка программы. То есть указываются:


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

Нажатие на кнопки Copy Data-CD или Copy Audio-CD, при остутсвии читающего привода, приводит к мгновенному вылетанию программы, поэтому ознакомиться с их содержимым мне не удалось. Ну а кнопка Master CD дает доступ к тому, что нам нужно - сохранению наших данных на века.

Здесь в первую очередь нужно выбрать файлы и каталоги, которые предполагается записать. Делается это весьма кучерявым способом: сначала указывается каталог, где располагаются все нужные файлы (и не только они), а затем в поле Exclude path по одному указываются те подкаталоги, которые записывать не нужно.

Определяя источники для записи, можно (и нужно!) контролировать процесс через Preview CD-Contents и подсчет объема образа: при превышении максимально возможного объема CD никаких сообщений не следует, можно, увлекшись, спокойно создать образ размером гигабайта два-три.

Затем определяется файловая система будущего диска. Программой X-CD-Roast поддерживаются следующие из них:

MS DOS, то есть чистый ISO9660, поддерживающий имена с маской 8.3; Unix Rock Ridge, обеспечивающий воспроизведение таких особенностей файловой системы Linux, как длинные имена, символические ссылки и т.д.; Windows 95/NT - это тот формат, который известен в MS под красивым именем Joliet extensions, то есть ISO9660 с поддержкой длинных имен файлов. Rock Ridge + Windows 95/NT, как нетрудно понять, сочетание поименованных файловых систем.

Впрочем, все необходимые опции файловой системы (Joliet extensions, поддержка символических ссылок и прочее) можно указать вручную, отметив соответствующие переключатели; после чего сохранить эту заказную систему как используемую по умолчанию. Записанный таким образом диск под Linux будет читаться, а вот как под Windows...

Определившись с источниками и файловой системой, можно указать всякого рода метки и идентификаторы диска, а затем, проверив для страховки конечный объем, перейти к созданию образа. Каковой пишется в указанный ранее раздел диска в виде файла *.raw. А затем дается команда для записи - и процесс, индицируемый в виде прогрессирующей панели, пошел. Нужно заметить, что под Linux при записи с физического образа он занимает несколько больше времени, чем под Windows, даже с виртуального образа: на моем устройстве средние времена записи полного диска составляли 22 и 18 минут соответственно. Однако, как будто, в первом случае он более устойчив: случайные движения мыши или включение забытого скринсейвера не приводят к переполнению буфера. Впрочем, проверять это - не рекомендую, во избежание.

Работа с перезаписываемыми дисками в X-CD-Roast по штату не предусмотрена. Соответственно, нет режима стирания CD-RW. Однако записывать на носители CD-RW он в состоянии, как и на обычные CD-R. А вот на что мне не удалось обнаружить даже намеков - это на режим мультисессионной записи.

В общем, X-CD-Roast - орудие пригодное к употреблению. К его достоинствам можно отнести гибкость настройки файловой системы, а также устойчивость - при всех моих экспериментах, как и "по делу", мне не удалось "запороть" ни одного диска. Однако отсутствие средств мультисессионности и работы с CD-RW заставило меня продолжить поиски, в результате чего методом научного тыка я выудил программу под именем KonCD.

С точки зрения интерфейса она предельно проста, предлагая при запуске на выбор копирование CD или аудиодиска, создание мастер-диска, некий Tools и установку параметров. Тем не менее, KonCD обладает некоторыми полезными особенностями. Так, он позволяет писать с уже готового iso-образа (тех же основных типов - для Unix Rock Ridge, Win9x/NT, DOS, однако заказной опции не предусмотрено). Есть возможность создания загрузочных CD (при наличие образа загрузки, естественно).

Кроме того, KonCD опознает перезаписывающие устройства и предлагает (через вышепоименованный Tools) различные варианты очистки дисков CD-RW (полная, быстрая и т.д.). Имеется возможность мультисессионной записи. И вообще, вроде все, что может потребоваться впредь. Да и в использовании существенно проще, чем X-CD-Roast, по крайней мере, мне показалось так.

Недостаток у KonCD один, но - существенный: поскольку он ныне представлен в виде достаточно ранней бета-версии, устойчивостью не блещет. Вылетая подчас во время записи. Носитель CD-R при этом, естественно, гибнет. Более того, даже диск CD-RW реанимировать не удается, даже полным стиранием, ни под Linux, ни под Windows.

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

В начало

Copyleft by
Alex Fedorchuk
http://linuxsaga.newmail.ru/


Ссылки


[1] Maximum RPM (http://www.redhat.com/docs/books/max-rpm/)

Copyright (c) 2003, Denis Ovsienko

Команда переводчиков:
Владимир Меренков, Александр Михайлов, Иван Песин, Сергей Скороходов, Александр Саввин, Роман Шумихин, Александр Куприн, Андрей Киселев, Игорь Яровинский, Юрий Прушинский

Со всеми предложениями, идеями и комментариями обращайтесь к Александру Куприну (lgrus@lrn.ru). Убедительная просьба: указывайте сразу, не возражаете ли Вы против публикации Ваших отзывов в рассылке.

Сайт рассылки: http://gazette.linux.ru.net
Эту статью можно взять здесь: http://gazette.linux.ru.net/rus/articles/ideal_sysadmin-rpm.html
Архивы выпусков можно взять здесь: http://gazette.linux.ru.net/archive/


"dd" man page.

DOS решение: Первоначальная идея и код Марка Минаси (Mark Minasi), использовались для очистки инфeцированных/поврежденных MBR-ов и с его согласия использованы мной для обучения; все изменения в коде/командах - мои.

Copyright © 2001, Ben Okopnik.

Copying license http://www.linuxgazette.com/copying.html

Published in Issue 63 of Linux Gazette, Mid-February (EXTRA) 2001

Вернуться на главную страницу




Tim Kentzle, "Форматы файлов Internet", изд-во ПитерПресс. Описание множества форматов файлов на английском языке - www.wotsit.demon.co.uk

(www.wotsit.org).



Стандарт на структуру каталогов файловой системы (Filesystem Hierarchy Standard)


Редакторы П.Рассел (Paul 'Rusty' Russell) и Д.Квинлан (Daniel Quinlan)

Filesystem Hierarchy Standard Group

Перевод на русский язык - В.А.Костромин, январь 2003 г.

(Смотри предисловие переводчика).

Abstract

Настоящий стандарт состоит из набора требований и рекомендаций по размещению файлов и каталогов для UNIX-подобных операционных систем. Целью этих рекомендаций является обеспечение совместимости приложений и различных скриптов, средств системного администрирования и разработки, а также достижение единообразия в документации на разные системы.

Все торговые знаки и авторские права принадлежат их обладателям, если только специально не оговорено противное. Использование термина в этом документе не должно расцениваться как покушение на какой-либо торговый знак или фирменные знаки (Use of a term in this document should not be regarded as affecting the validity of any trademark or service mark).

Copyright й 1994-2001 Daniel Quinlan

Copyright й 2001 Paul `Rusty' Russell

Permission is granted to make and distribute verbatim copies of this standard provided the copyright and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this standard under the conditions for verbatim copying, provided also that the title page is labeled as modified including a reference to the original standard, provided that information on retrieving the original standard is included, and provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this standard into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the copyright holder.



Стандартное автозаполнение


bash предлагает много форм автозаполнения с самого начала, включая путь, имя файла, пользователя, хоста и переменной.

Автозаполнение пути
Этот тип автозаполнения встречается в первом слове командной строки, позволяя вам заканчивать имена исполняемых файлов. Вместе с автозаполнением имени файла, это наиболее известный и используемый тип. Автозаполнение имени файла
Позволяет завершать имена файлов и директорий во втором и последующих словах в командной строке. Автозаполнение имени пользователя
Позволяет завершать имена пользователей, предваряя их символом ~ (тильда). Автозаполнение имени хоста
Позволяет завершать имена хостов, предваряя их символом @. Автозаполнение имени переменной
Позволяет завершать имена переменных, предваряя их символом $.

Программируемое автозаполнение бесконечно увеличивает количество типов автозаполнения.



"Стой, кто идет! Моя будет стрелять!"


При входе система задаст вам несколько вопросов. Будьте внимательны, от ответов на них зависит ваша дальнейшая судьба. Вот эти вопросы

login:
password:

Чтобы бесконечно долго не пытаться отгадать правильные ответы, следует попросить подсказки у рута (root'а). Кстати, попытки отгадать правильные ответы для других людей вообще-то противозаконны.
И вы попадаете в систему. Началом является ваш домашний каталог, который называется

/home/name

иногда

/home/group/name

Если вы зашли в графическом режиме, то к вашим услугам рабочий стол X Window (не путать с известным плагиаторским названием). Если нет, то консольное приглашение или shell (названий у нее много, но сейчас популярен bash - Borne Again SHell). Поскольку консоль важнее, то сначала о ней.



Страницы руководства


Последним шансом был (если честно, то это нужно было делать в первую очередь - Прим.пер.)

$ man debugfs

и там мы нашли упоминание о команде rdump, неуказанной ни в одном другом документе. Выполняем следующий скрипт над i-нодами каталогов, находящихся в файле lsdel.out, после выполнения инструкций из раздела 6 документа Ext2fs Undeletion of Directory Structures mini-HOWTO:

#!/bin/sh

awk '{ print "rdump <" $1 "> folders\n" }'

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

$ strings fishback.raw | grep -B1 -A99 "To: lisistrata" > lisistrata.mbox



Субхасиш Гхош [Subhasish Ghosh]


Мне 20 лет, в настоящее время я студент по специальности компьютерные системы в Индии. Я Microsoft Certified Professional (MCP), MSCD, имею сертификат MCP по NT 4.0, недавно завершил обучение по курсу Red Hat Linux Certified Engineer (RHCE). С Linux работаю уже долго, программирую на C, C++, VC++, VB, COM, DCOM, MFC, ATL 3.0, Perl, Python, а под Linux программирую с использованием GTK+. В настоящее время глубоко изучаю Архитектуру Ядра Linux и занимаюсь программированием на уровне ядра.



Suffixes


Документация Linux www.linuxdoc.ru
SUFFIXES(7) Linux Programmer's Manual SUFFIXES(7)

НАЗВАНИЕ

suffixes - список расширений файлов

ОПИСАНИЕ

Обычно для обозначения содержимого файла используют имена, оканчивающиеся сочетанием точки с последующими буквами. Эти сочетания называются "расширением". Многие стандартные утилиты, например, компиляторы, используют расширения для распознавания типа файла. Утилита make(1)

управляется с помощью правил, базирующихся на расширении файла.

Расширения из следующего списка могут использоваться в системах Linux. | Расширение | Тип файла --------------+------------------------------------------------------------------------------------ ,v | Файл для RCS (Revision Control System) - | резервный файл .C | исходный код программы на языке C++, эквивалентно .cc

.F | исходный код программы на языке Fortran, содержищий директивы cpp(1), | или файл, "упакованный" с помощью freeze .S | исходный код программы на ассемблере с включениями директив cpp(1)

.Y | файл, "упакованный" с помощью yabba .Z | файл, "упакованный" с помощью compress(1)

.[0-9]+gf | обычные шрифты TeX .[0-9]+pk | "упакованные" шрифты TeX .[1-9] | страницы руководства для соответствующих секций .[1-9][a-z] | страницы руководства для соответствующих секций/подсекций .a | статически собранная библиотека .ad | ресурсный файл по умолчанию для приложений среды X-Window .ada | исходный код на языке Ada (может быть и "тело", и спецификация, или их комбинация) .adb | "тело" исходного текста программы на языке Ada .ads | спецификация исходного текста программы на языке Ada .afm | метрики шрифтов PostScript .al | самозагружающийся файл Perl .am | входной файл для automake(1)

.arc | архив arc(1)

.arj | архив arj(1)

.asc | защищенные PGP ASCII-данные .asm | исходный текст программы на ассемблере (GNU) .au | звуковой файл .aux | вспомогательный файл LaTeX .avi | фильм (msvideo) .awk | программа на языке AWK .b | образ загрузчика для LILO .bak | резервный файл .bash | скрипт для оболочки bash(1)

.bb | простой список данных (block list data), | получаемый с помощью gcc -ftest-coverage .bbg | простой график данных (block graph data), | получаемый с помощью gcc -ftest-coverage .bbl | результат работы BibTeX .bdf | файл шрифта для X-Window .bib | библиографическая база TeX, входные данные для BibTeX .bm | исходный текст побитовой карты .bmp | битовая карта (например, изображение) .bz2 | файл, "упакованный" с помощью bzip2(1)

.c | исходный текст программы на языке С .cat | файл каталога сообщений .cc | исходный текст программы на языке С++ .cf | файл конфигурации .cfg | файл конфигурации .cgi | программа или скрипт для создания страниц WWW .class | байт-код Java .conf | файл конфигурации .config | файл конфигурации .cpp | соответствует .cc

.csh | скрипт для оболочки csh(1)

.cxx | соответствует .cc

.dat | файл данных .deb | программный пакет Debian .def | модуль определений Modula-2 .def | другие файлы определений .desc | начальная часть почтового сообщения, распакованного с помощью munpack(1)

.diff | файл различий (результат работы diff(1)) .dir | файл каталога базы танных dbm .doc | файл документации .dsc | файл, управляющий исходными пакетыми Debian (Debian Source Control) .dtx | исходный текст для пакета LaTeX .dvi | аппаратно независимый вывод TeX .el | исходный текст программы на Emacs-Lisp .elc | байт-код Emacs-Lisp .eps | инкапсулированный файл PostScript .exp | исходный код Expect .f | исходный текст программы на языке Fortran .f77 | исходный текст программы на языке Fortran 77 .f90 | исходный текст программы на языке Fortran 90 .fas | компилированый код Common-Lisp .fi | файл заголовков Fortran .fig | файл изображений FIG (используется xfig(1)) .fmt | файл формата для TeX .gif | графический формат файлов Compuserve .gmo | каталог сообщений формата GNU .gsf | шрифт Ghostscript .gz | файл, "упакованный" программой gzip(1)

.h | файл заголовков для C или C++ .help | файл помощи .hf | аналогично .help

.hlp | аналогично .help

.htm | аналогично .html

.html | документ HTML, используемый в World Wide Web .hqx | 7-битный файл Macintosh .i | файл программы на языке C после обработки предпроцессора .icon | исходный текст битовой карты (изображения) .idx | файл индексов для гипертекста или базы данных .image | исходный текст битовой карты (изображения) .in | входящий файл, обычно GNU Autoconf .info | файл для просмотрщика информации в Emacs .info-[0-9]+ | "разрезанный" файл info .ins | файл инсталляции пакета LaTeX для docstrip .itcl | исходный код itcl; | itcl ([incr Tcl]) является OO-расширением tcl .java | исходный текст программы на языке Java .jpeg | формат Joint Photographic Experts Group .jpg | аналогично .jpeg

.kmap | раскладка клавиатуры для lyx(1)

.l | аналогично .lex и .lisp

.lex | файлы lex(1) или flex(1)

.lha | архив lharc .lib | библиотека Common-Lisp .lisp | код программы на языке Lisp .ln | файл, используемый lint(1)

.log | файл журнала, например, TeX .lsm | файл описания программы для Linux Software Map .lsp | исходный текст программы на языке Common-Lisp .lzh | архив lharc .m | исходный код объектного C .m4 | исходный текст для m4(1)

.mac | файл макросов для различных программ .man | страница руководства (обычно исходный текст, не подвергавшийся форматированию) .map | файл карт или раскладок для различных программ .me | исходный текст Nroff, используемый пакетом макросов me .mf | исходный текст для Metafont (генератора шрифтов TeX) .mgp | файл MagicPoint .mm | исходный текст для groff(1) в формате mm .mo | двоичный файл каталога сообщений .mod | исходный код модулей реализации Modula-2 .mov | фильм (quicktime) .mp | исходный файл Metapost .mp2 | файл MPEG Layer 2 (аудио) .mp3 | файл MPEG Layer 3 (аудио) .mpeg | фильм .o | объектный файл .old | устаревший или резервный файл .orig | резервная (изначальная) версия файла, результат работы patch(1)

.out | файл результата, часто исполняемая программа (в формате a.out) .p | исходный код программы на языке Pascal .pag | файл базы данных dbm .patch | файл различий для программы patch(1)

.pbm | переносимый формат битовых карт (изображений) .pcf | файл шрифта X11 .pdf | переносимый формат файлов Adobe | (используется Acrobat/acroread или xpdf) .perl | исходный текст программы на языке Perl (смотрите .ph, .pl and .pm) .pfa | файл определений шрифта PostScripts, формат ASCII .pfb | файл определений шрифта PostScripts, двоичный формат .pgp | двоичные данные для PGP .ph | файл заголовков Perl .php | исполняемый файл PHP .php3 | исполняемый файл PHP3 .pid | файл для хранения демона PID (например, crond.pid) .pl | файл свойств TeX или файл библиотеки Perl .pm | модуль Perl .png | файл Portable Network Graphics .po | сходный код каталога сообщений .pod | файл perldoc(1)

.ppm | переносимый формат изображений .pr | исходный код побитовой карты .ps | файл PostScript .py | исходный код Python .pyc | байт-код python .qt | фильм quicktime .r | файл RATFOR (устарело) .rej | не принятые программой patch(1) файлы .patch .rpm | программный пакет RedHat .rtf | файл Rich Text Format .rules | различные правила .s | исходный код программы на ассемблере .sa | заголовок разделяемых библиотек a.out .sc | файл команд для электронных таблиц sc(1)

.scm | исходный код Scheme .sed | исходный код sed .sgml | файл в формате SGML .sh | скрипт для sh(1)

.shar | архив, созданный с помощью утилиты shar(1)

.so | разделяемая библиотека или динамически загружаемый обьект .sql | исходный файл команд SQL .sqml | схема или запрос SQML .sty | файл стилей LaTeX .sym | компилированый файл определений Modula-2 .tar | архив, созданный с помощью утилиты tar(1)

.tar.Z | tar(1)-архив, обработанный compress(1)

.tar.bz2 | tar(1)-архив, обработанный bzip2(1)

.tar.gz | tar(1)-архив, обработанный gzip(1)

.taz | tar(1)-архив, обработанный compress(1)

.tcl | исходный код tcl .tex | файл TeX или LaTeX .texi | аналогично .texinfo

.texinfo | файл документации Texinfo .text | текстовый файл .tfm | файл метрики шрифта TeX .tgz | tar-архив, обработанный gzip(1)

.tif | аналогично .tiff

.tiff | Tagged Image File Format .tk | скрипт tcl/tk .tmp | временный файл .tmpl | файл шаблона .txt | аналогично .text

.uu | аналогично .uue

.uue | двоичный файл, закодированный программой uuencode(1)

.vf | файл виртуального шрифта TeX .vpl | файл виртуальных свойств TeX .w | Silvio Levi's CWEB .wav | звуковой файл .web | Donald Knuth's WEB .wml | исходный файл для Web Meta Language .xbm | файл изображения X11 .xcf | файл изображения GIMP .xml | файл eXtended Markup Language .xsl | таблица стилей XSL .xpm | исходный файл изображения X11 .xs | файл xsub для Perl, получаемый с помошью h2xs .y | файл yacc(1) или bison(1)

.z | файл, упакованный pack(1) (или старым gzip(1)) .zip | zip(1)-архив .zoo | zoo(1)-архив ~ | резервный файл patch(1) или Emacs rc | стартовый (`run control') файл, например, .newsrc

СООТВЕТСТВИЕ СТАНДАРТАМ

Соответствыет базовым соглашениям UNIX.

НАЙДЕННЫЕ ОШИБКИ

Этот список далеко не полон.

СМ. ТАКЖЕ

file(1), make(1)

Linux November 16, 2000 SUFFIXES(7)

Документация Linux www.linuxdoc.ru



Можно воспользоваться файлом Xmodmap со


Можно воспользоваться файлом Xmodmap со стандартными определениями клавиш для кодировки ISO8859-2 ("scaron" вместо "threequarters" и т.д.). К сожалению, хотя Вы и сможете немедленно набирать текст в ISO8859-2, dead keys (Прим. переводчика dead keys -- это клавиши, которые сами по себе не соответствуют никакому символу, а служат для добавления диакретичекских знаков к символу, клавиша для которого будет нажата следующей.:-() работать не будут и команда export LANG=language в этой ситуации не поможет.

После копирования файла Compose из /usr/X11R6/lib/X11/locale/iso8859-2/ в /usr/X11R6/lib/X11/locale/iso8859-1/, dead keys начнут работать даже с некоторой элегантностью. В StarOffice 5.2 это тоже проверено. FontPath нужно изменить в /etc/XF86Config, а не в /etc/X11/Xf86Config. Если шрифты ISO8859-2 указать в FontPath в /etc/X11/Xf86Config, StarOffice может их не увидеть. При работе со StarOffice ни в коем случаем нельзя пользоваться шрифтами из самого StarOffice, вместо этого должны использоваться шрифты из директории ../ISO8859-2 (они появятся в меню шрифтов автоматически после выполнения скрипта, приведенного выше).

Ниже приводится секция FontPath для шрифтов ISO8859-2 из файла /etc/XF86Config в моей установке SuSE 7.0:

FontPath "/usr/X11R6/lib/X11/fonts/ISO8859-2/Type1"

FontPath "/usr/X11R6/lib/X11/fonts/ISO8859-2/Type1/afm"

FontPath "/usr/X11R6/lib/X11/fonts/ISO8859-2/Type1/pfm"


Существующие журналирующие файловые системы


В этой части статьи я рассмотрю три журналирующие файловые системы.

Первая - это ext3. Система разработана Stephen Tweedie, одним из ведущих разработчиков ядра, ext3 добавляет функцию журналирования в ext2. Альфа-версия доступна на ftp.linux.org.uk/pub/linux/sct/fs/jfs/.

У Namesys есть журналирующая файловая система, которая называется ReiserFS. Ее можно найти на http://www.namesys.com/.

Первого мая 2001 компания SGI выпустила версию 1.0 своей файловой системы для Linux XFS. Вы можете найти ее на oss.sgi.com/projects/xfs/.

В этой статье я тестирую и сравниваю эти три решения с использованием двух различных программ.



Susp


Клавиша susp имеет значения только для "лаптопов". Она дает команду устройству apm (Advanced Power Management) "пригасить" компьютер.

Поскольку, это довольно "экзотическая" команда, по умолчанию, она не присвоена никакой физической клавише.



Связь со мной


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

Если у вас появится мнение о коде, пожалуйста найдите время оценить его.

Вниманию вебмастеров: использование данной статьи возможно только в соответствии
с правилами использования материалов сайта «Софтерра» (http://www.softerra.ru/site/rules/)



СВЯЗЫВАНИЕ С СЕРВЕРОМ FTP


В качестве сервера ftp мы выбрали ProFTPD (http://www.proftpd.net/). Он надежен, удобен в конфигурировании и (как ранее упоминалось) имеет модуль, с помощью которого пользователи могут быть аутентифицированы через LDAP.

Сначала мы установили версию 1.2.0rc2, но столкнулись с проблемами в имевшейся версии модуля mod_ldap — он просто не работал. Ситуация была разрешена получением обновленной версии от автора модуля по адресу: http://horde.net/~jwm/software/proftpd-ldap/.

После копирования нового модуля в каталог contrib дерева исходных текстов ProFTPD, система была с.компилирована следующим образом:

./configure -with-modules=mod ldap make make install

Архитектура вашей системы может потребовать внесения некоторых изменений, для чего будет полезна документация на сервере Web ProFTPD.

Ниже приведены ключевые элементы конфигурационного файла ProFTPD (proftpd.conf), требующиеся для выполнения аутентификации на базе LDAP:

LDAPServer ldap.your-domain.com
LDAPDNInfo "cn=Admin,dc=your-domain,dc=com" \ "your-secret-password"
LDAPDoAuth on "dc=your-domain,dc=com" "uid=%u"
LDAPDefaultAuthScheme "crypt"
LDAPDoUIDLookups off
LDAPDoGIDLookups off
LDAPNegativeCache on
LDAPDefaultGID 50
LDAPDefaultUID 50

В нашем случае все домашние каталоги учетных записей принадлежали одной обобщенной комбинации пользователь/группа — весь доступ определялся ProFTPD. Таким образом, просмотр был запрещен, и сконфигурированы GID и UID, используемые по умолчанию. Кроме того, по умолчанию пароль является зашифрованным. Если вы внимательно просмотрите domain2ldap (см. Листинг 2), то увидите, что импортируемые (зашифрованные) пароли предваряются ключевым словом {crypt}. В этом нет непосредственной необходимости — что следует из строки LDAPDefault-AuthScheme, — но неплохо бы заранее подумать о том, что может случиться (например, однажды понадобится использовать простые текстовые пароли).

На данном этапе все должно идти как по маслу. Если это не так, проверьте регистрационные журналы (logs) обоих серверов — ProFTPD и slapd, вдруг вы заметите очевидные ошибки. К сожалению, в нашем случае причина неработоспособности модуля mod_ldap не лежала на поверхности: поиск по базе данных LDAP проходил успешно, вот только ProFTPD каждый раз во время аутентификации пользователя упорно отвечал отказом.



Swap


Linux позволяет использовать от 1 до 8 разделов диска (тип раздела - 0x82) или файлов в качестве swap-области. Максимальный размер раздела/файла для Intel-архитектуры - 2GB (на каждый MB swap-области тратится 1KB ОЗУ). Создание swap-области: mkswap имя-файла-или-раздела (файл или раздел требуемого размера надо создать заранее). Включение файла/раздела в работу: swapon [-p приоритет ] имя-файла-или-раздела. Приоритет может быть установлен от 0 до 32767. В первую очередь используется место в swap-области с более высоким приоритетом. Если существует несколько областей с равным приоритетом, то обеспечивается балансировка нагрузки, так что полезно разнести их по разным дискам/каналам. Какая-то засада с установкой приоритета по умолчанию, так что лучше назначать их вручную. Прекратить использование области: swapoffимя-файла-или-раздела. Посмотреть, какие swap-области используются и как: swapon -s (или cat /proc/swaps). Чтобы обеспечить автоматическое включение файла/раздела в работу при начальной загрузке, надо занести в /etc/fstab строку:
имя-файла-или-раздела none swap defaults 0 0
(в /etc/rc.d/rc.sysinit выдается команда swapon -a, надеюсь после монтирование всех локальных файловых систем).



SWSOFT ОРИЕНТИРОВАНА НА ПОСТАВЩИКОВ ХОСТИНГА


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

SWsoft, анонсировавшая Virtuozzo 2.0, реализует виртуальные среды в качестве способа размещения большего числа клиентов на каждом сервере. Компания продвигает Virtuozzo как «обеспечивающую работу с разделами и управляемость на уровне мэйнфреймов на базе массовых аппаратных средств и операционных систем». А в случае крупных поставщиков хостинга Web, например Exodus, стремящихся увеличить доходы, отрасли необходимы более дешевые предложения для работы с небольшими и средними по размеру компаниями, подчеркивает Ода.

Технология SWsoft позволяет запускать до 800 копий Linux на одном сервере на базе процессоров Intel. Причем администрирование каждой из них может производиться независимо, хотя для этого и требуется весьма мощный сервер. «Это своего рода мэйнфрейм на базе x86, — рассказывает он. — То, что мы делаем на базе x86, IBM делает с помощью мэйнфреймов. Покупатели десять раз подумают, прежде чем приобретать дорогостоящие решения IBM. Наши же системы обеспечивают огромную экономию».

Виртуальная среда, разработанная компанией (по утверждению Ода, уже подано 11 заявок на получение патентов), функционирует только под Linux, однако в настоящее осуществляется перенос на Solaris, а в будущем — и на Windows.

Virtuozzo, совместно с пакетом автоматизации хостинга HSPcomplete, обеспечивает возможность автоматизации многих, пока выполняемых вручную, операций для провайдеров услуг хостинга (Hosting Service Provider, HSP), включая управление аппаратными средствами и обновления. Ода добавляет, что теперь клиенты могут менять аппаратное обеспечение с целью повышения эффективности его использования.



Symbols


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

symbols[Group1] = [ semicolon, colon ], symbols[Group1] = [Cyrillic_zhe, Cyrillic_ZHE],

В качестве "символов" могут быть числовые значения кодов (десятичные, восьмеричные, шестнадцатеричные) или специальные "названия символов".

Названия символов можно найти в файле X11R6/include/X11/keysymdefs.h. Только там они еще имеют префикс "XK_". То есть, если в это файле есть, например, определения

#define XK_Escape 0xFF1B #define XK_Delete 0xFFFF ....

это означает, что в файле типа xkb_symbols можно использовать слова Escape и Delete в качестве "названий символов".

Надо заметить, что если в качестве символа указаны числа 0 - 9, то они интерпретируются как коды символов '0' - '9', а не как числовой код символа.

Если для какого-то уровня в группе символ не нужен (не определен), можно использовать специальное "название символа" - NoSymbol.



Sysctl


Несколько sysctl-переменных должны быть изменены для достижения максимальной производительности. Следующие строки необходимо добавить в файл /etc/sysctl.conf: vfs.vmiodirenable=1 kern.ipc.somaxconn=4096 kern.maxfiles=65536



Таблица действий


Кроме "таблицы символов" к скан-коду может быть "привязана" аналогичная "таблица действий" (actions). Эта таблица также делится на подтаблицы (группы) и колонки (уровни).

В отличие от таблицы символов, которая используется приложением (X-сервер ее только хранит, чтобы сообщить каждому вновь стартующему приложению), таблица действий используется самим сервером.

В ее ячейках располагаются вызовы внутренних процедур XKB, которые меняют его состояние - текущую группу, состояние модификаторов и внутренних флагов XKB.

Точнее - действия, выполняемые actions, не ограничиваются измениями состояния XKB. Они также используются для

эмуляции событий мыши (перемещения указателя и нажатия mouse buttons) генерации специальных events для приложений переключения экранов выключения X-сервера и т.п.

Немного подробнее о всех возможных actions написано в разделе Описание действий.

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

Заметим, что в core-модуле понятия "действие" вообще нет.



Таблица символов


Что же собой представляет таблица символов, связывающая символы со скан-кодами и состоянием модификаторов? Рассмотрим сначала "традиционную" таблицу символов, которая используется в core protocol.

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

Прежде всего надо заметить, что в "сообщении о нажатии/отпускании клавиши" под биты-модификаторы отводится один байт (октет) и соответственно, существует восемь битов-модификаторов. Первые три называются - Shift, Lock, Control, остальные "безымянные" - Mod1, Mod2, Mod3, Mod4, Mod5.
Замечу, что хотя названия первых трех модификаторов явно намекают на то, каким клавишам они должны соответствовать, на самом деле они могут быть "привязаны" (то есть, менять свое значение при нажатии/отпускании клавиши) к любым другим кнопкам.

В данном случае нам важно, что восемь модификаторов могут составить 256 различных комбинаций. Поэтому теоретически таблица символов может содержать до 256 столбцов. В то же время, в core protocol'е строго определены только первые четыре колонки, в смысле - каким комбинациям модификаторов они соответствуют. Легко догадаться, что в этих комбинациях используются только два модификатора - Shift и Mode_switch.
(Вы можете заметить, что среди модификаторов нет бита с именем Mode_switch. Совершенно верно. Его роль выполняет один из "безымянных", модификаторов - Mod1-Mod5. А Mode_switch - это название одного из служебных символов. Когда приложение запрашивает у сервера таблицу символов, оно также выясняет, какой из безымянных модификаторов связан с этим символом, и в дальнейшем по состоянию этого модификатора догадывается о том, нажал ли пользователь клавишу, соответствующую символу Mode_switch.)

Итак. Первые четыре колонки в таблице соответствуют "состояниям" -

"никаких модификаторов"

Shift

Mode_switch

Mode_switch+Shift

<

В терминах core protocol можно сказать, что состояние Mode_switch выбирает одну из двух групп (не надо путать их с XKB группами, о которых мы поговорим позднее), а состояние Shift - одну из двух колонок внутри группы.
Как вы скорее всего знаете, разные группы обычно используются для разных языков (алфавитов), а Shift выбирает строчные или прописные буквы в пределах одного алфавита.

Group 1
Group 2
Shift
Mode_switch
Mode_switch+Shift
...
keycode 38 a A Cyrillic_ef Cyrillic_EF
keycode 39 s S Cyrillic_yeru Cyrillic_YERU
keycode 40 d D Cyrillic_ve Cyrillic_VE
...

Заметьте также, что ни Lock, ни Control в выборе символа из таблицы не участвуют. Если эти модификаторы активны, то отдельные подпрограммки Xlib после выбора символа из таблицы делают соответствующие преобразования этих символов.
Вернемся к XKB. Как видите, недостаток "традиционной" таблицы - ее "негибкость". Хотя колонок может быть до 256, "стандартно" обрабатываются только первые четыре, причем их зависимость от состояния модификаторов жестко "зашита" в алгоритмах Xlib.
Поэтому одно из основных усовершенствований, которые были внесены при разработке XKB - большая гибкость в построении таблицы.
Во-первых, в XKB колонки не связаны жестко с конкретными модификаторами. В одном из файлов конфигурации XKB описывается зависимость номера колонки от произвольного набора модификаторов. Естественно, эти зависимости можно изменять и добавлять простым редактированием соответствующего файла. (Подробнее о них смотри ниже: Вычисление "уровня" (shift level). Типы клавиш.) Во-вторых, в одной и той же "раскладке клавиатуры" разные клавиши могут соответствовать разному количеству символов в зависимости от модификаторов. Например,
клавиша Enter вообще не зависит от модификаторов, то есть в соответствующей строке имеет смысл только одна колонка; клавиша с символами '1' и '!' содержит две колонки, выбор конкретной зависит только от Shift, а клавиша с символами '-','_'и '=' может иметь три колонки, выбор которых зависит от двух модификаторов - Shift и Mod1


При таком подходе понятие "группа" сильно меняет свой смысл. Мы уже не можем определять группу как "пачку" колонок, поскольку для разных клавиш размер этой "пачки" будет разным.
Вообще-то, при той гибкости в связывании колонок с модификаторами, которую дает XKB, можно было бы вообще забыть о группах или просто говорить, что группа —это группа колонок, объединенных модификатором (тем же Mode_switch). Но...
Делить таблицу на группы удобнее. Во-первых, так легче провести границу между разными алфавитами (если, конечно, таковые используются в раскладке). Заметьте, что в некоторых случаях хотелось бы иметь не два разных алфавита, а больше. Причем раскладки для разных алфавитов могли бы составлять разные люди, независимо друг от друга
Во-вторых, чем больше модификаторов участвуют в выборе колонок, тем сложнее и запутаннее становятся соответствующие описания зависимостей.
Поэтому, авторы XKB использовали радикальный подход - в одной и той же раскладке может быть несколько (до четырех) отдельных таблиц. Вот эти таблицы и называются группами XKB (или просто groups).
Вообще-то, правильнее сказать не "несколько двумерных таблиц в одной раскладке", а - у каждого скан-кода (keycode) может быть до четырех "однострочных" таблиц - групп.
Потому, что ...
Назначение некоторых клавиш (той же Enter) не меняется в разных алфавитах, поэтому для них не требуется деление таблицы на несколько отдельных групп. Даже в пределах одной группы (алфавита) разные клавиши могут иметь разное количество колонок. То есть, "ширина" таблицы меняется не только "от группы к группе" но и "от скан-кода к скан-коду". Поэтому удобнее описывать каждую отдельную группу для каждого отдельного скан-кода. И, наконец, с каждым скан-кодом связаны еще некоторые параметры (см. ниже ), которые не зависят от номера группы. Поэтому, если бы мы описывали один и тот же скан-код в разных таблицах-группах, эта информация могла бы оказаться противоречивой.


Итак.
Для каждого скан-кода (keycode) в XKB "раскладке" хранится несколько однострочных таблиц символов, которые называются "группами". Каждая такая таблица может делиться на несколько колонок - "уровней" (shift level) Какая из таблиц-строчек актуальна в данный момент, определяется текущим номером группы (или просто - group). Текущий номер группы хранится в X-сервере и сообщается приложению в событии о нажатии/отпускании клавиши вместе со скан-кодом и набором модификаторов. Выбор нужной колонки (shift level) определяется состоянием модификаторов. Разные keycode могут иметь разное количество групп. В разных группах даже одного и того же keycode может быть разное количество shift level.

keycode
номер группы
количество level'ов
 
36 1 одна колонка Enter  
38 1 две колонки a A  
2 две колонки Cyrillic_ef Cyrillic_EF  
3 две колонки Greek_alpha Greek_ALPHA  
21 1 две колонки + =  
2 четыре колонки + = \ ;
...

Наконец, надо сказать, что групп может быть от одной до четырех, а уровней - до 64.