Библиотека сайта rus-linux.net
Обновленные главы самоучителя "Slackware/MOPSLinux для пользователя"
Уважаемые читатели!
Публикуя этот материал для ознакомления и обсуждения, мы надеемся, что знакомство с ним будет полезным для всех, кто интересуется Linux-технологиями, а участие в его обсуждении и улучшении - вкладом в популяризацию и развитие этих технологий.
Все предложения и замечания будут приняты, рассмотрены и по-возможности учтены при подготовке пособий и документации по MOPSLinux.
Коллектив разработчиков MOPSLinux.
Оглавление
Глава 1. Введение в MPOSLinux. 5
Основные сведения об операционной системе MOPSLinux.. 6
Структура системы MOPSLinux.. 6
Состав и основные возможности дистрибутива MOPSLinux.. 7
Глава 2. Файловые системы.. 11
Основные сведения о файлах.. 11
Определение файловой системы... 11
Создание файловых систем... 13
Подключение и отключение файловых систем... 14
Поиск дисковых ошибок командой badblocks. 16
Вспомогательные средства для файловых систем... 17
Другие вспомогательные средства для файловой системы ext2. 17
Диски без файловых систем... 18
Глава 3. Использование жесткого диска. 20
MBR, boot-секторы и таблица разделов. 20
Расширенные и логические разделы... 21
Деление жесткого диска на разделы... 21
Схемы разделения на разделы... 25
Файлы устройств и разделы - > в файловую систему:... 25
Глава 4. Описание каталогов MOPSLinux. 26
Корневая файловая система.. 27
Глава 5. Сценарии инициализации системы.. 33
Начальная загрузка системы... 33
Уровни выполнения системы... 33
Инициализационные сценарии уровней загрузки.. 34
Процесс init запускается первым.. 35
Настройка init для запуска getty: файл настроек /etc/inittab. 35
Специальные настройки в файле /etc/inittab. 36
Загрузка в однопользовательском режиме. 36
Глава 6. Управление учетными записями. 38
Общие сведения об учетных записях.. 38
Работа с учетными записями.. 38
Создание и удаление групп.. 40
Корректировка конфигурационных файлов пользователей и групп 40
Изменение информации пользователя.. 42
Временное отключение учетной записи.. 43
Глава 7. Управление файлами и каталогами. 44
Создание и удаление ссылок на файлы... 46
Постраничный просмотр вывода.. 48
Корректировка атрибутов файла.. 48
Создание и удаление каталогов.. 49
Копирование и перемещение файлов.. 50
Управление файлами и каталогами с помощью программы Midnight Commander 50
Отображение списка файлов.. 53
Маски файлов для операций копирования/переименования.. 54
Настройка программы Midnight Commander.. 59
Глава 8. Управление процессами. 64
Список выполняемых программ... 65
Принудительное завершение процессов.. 67
Динамическая информация о процессах.. 67
Глава 9. Настройка сетевых служб. 69
Сценарии инициализации сетевых интерфейсов.. 71
Система безопасности tcp_wrappers. 72
Глава 10. Настройка графического сервера X Window.. 73
Сессионные файлы настроек.. 79
/etc/X11/xinit/xinitrc и ~/.xinitrc. 79
Серверы и оконные менеджеры... 80
Глава 11. Управление пакетами системы.. 83
Утилиты управления пакетами.. 83
Глава 12. Использование WEBMIN для настройки служб и сервисов ОС.. 87
Глава 13. Подключение принтеров и настройка систем печати. 88
Общие сведения о принтерах и системах печати.. 88
Berkeley and System V Commands. 91
Обработка изображений (CUPS Imaging). 91
Общие сведения о возможностях в системы печати CUPS 1.1. 92
2. Поддержка баннерной страницы.. 92
3. Комплексная (digest) идентификация. 92
5. Изменения в структуре каталогов. 92
9. Поддержка протокола IPP.. 93
11. Поддержка LPD-клиентов. 93
12. Принтеры и опции, определяемые пользователем.. 93
13. Интерфейс администрирования сети. 93
Применение службы печати CUPS. 94
Использование службы печати CUPS. 94
Вывод на печать нескольких копий. 95
Проверка статуса принтера из командной строки. 95
Проверка статуса принтера из сети. 95
Стандартные свойства печати.. 96
1) Выбор размера листа, типа и источника. 96
1) Выбор баннерной страницы (страниц) 97
2) Выбор четных или нечетных страниц. 98
4) Несколько страниц на листе. 98
5) Зеркальное копирование документа. 98
1) Количество символов на дюйм.. 99
2) Количество строк на дюйм.. 99
5) Использование колонтитула. 100
1) Позиционирование изображения. 100
2) Масштабирование изображения. 100
3) Изменение цвета (оттенка) изображения. 101
4) Изменение насыщенности (цвета) изображения. 101
2) Размещение изображения (чертежа) на листе. 102
3) Толщина <пера> при печати. 102
Необработанные (или не отфильтрованные) выходные данные. 102
Сохранение свойств и стандартных настроек принтера.. 102
Настройки для определенного принтера. 103
Просмотр стандартных настроек. 103
Просмотр настроек определенного принтера. 103
Настройка принтера по умолчанию.. 103
Добавление нового принтера в систему печати CUPS. 104
Глава 14. Подключение и настройка модемов. 114
Общие сведения о модемах.. 114
Настройка параметров последовательного порта. 114
Конфигурирование программного обеспечения. 115
Диалоговая настройка соединения. 117
Тонкости работы с модемом... 132
Настройка KPPP на режим обратного звонка.. 134
Программа дозвона minicom... 136
Параметры командной строки. 136
Глава 15. Подключение сканера и настройка системы сканирования. 146
Поддержка сканеров в Linux.. 146
Настройка системы сканирования.. 146
Общие сведения по интерфейсам сканеров. 146
Поддержка интерфейса USB.. 147
Поддержка параллельного порта. 148
Использование SANE с устройством Video4linux. 149
Интерфейсы (frontends) SANE. 150
Глава 16. Подключение и настройка USB-устройств. 151
Глава 17. Особенности работы с Bluetooth-устройствами. 152
Kbluetoothd: сердце оболочки KDE Bluetooth. 153
Сервис обнаружения устройств. 154
Список "недавно использованных сервисов". 155
Конфигурирование программы kbluetoothd. 155
Подтверждение входящих соединений. 155
Средства bluetooth/SDP-kioslaves: поиск устройств и сервисов.. 156
Использование средств Bluetooth/SDP-kioslves. 156
Для продвинутых пользователей. 156
Средство OBEX-kioslave: просмотр папок через Bluetooth.. 156
Клиент передачи OBEX: отправка файлов.. 157
Сервер передачи OBEX: получение файлов.. 157
Использование сервера передачи OBEX.. 157
Сервисная программа kbtserialchat: простое средство общения.. 158
Использование средства общения. 158
kioclient: доступ к оболочке KIO с помощью скриптов. 158
kbtsearch: поиск устройств посредством скриптов. 158
kbtfax: отправка факса посредством приложений KDE.. 159
Безопасность Bluetooth: объединение (pairing) устройств.. 159
Работа с объединенными устройствами. 159
Сервис обнаружения устройств. 161
Глава 18. Добавление новых дисков (HDD, CD, DVD) 162
Добавление жесткого диска.. 162
Добавление жесткого диска с данными. 163
Добавление нового (пустого) жесткого диска. 164
Глава 19. Настройка Web-сервера Apache. 168
SSL для Apache HTTP Server.. 172
Глава 1. Введение в MPOSLinux
Основные сведения об операционной системе MOPSLinux
Операционная система MOPSLinux - это операционная система общего назначения на базе ядра Linux для компьютеров, имеющих архитектуру совместимую с IBM PC. Она может функционировать на персональном компьютере или рабочей станции, а также совместно используемом компьютере в сети.
Основные компоненты современной компьютерной системы приведены на рис.1.1. Операционная система поддерживает выполнение пользовательских программ, в частности обеспечивает выделение для них аппаратных ресурсов: памяти, дискового пространства, периферийных устройств, времени центральных процессоров.
Рисунок 1.1. Основные компоненты компьютерной системы
Операционная система общего назначения означает, что это многозадачная и многопользовательская система, которая может использоваться как на рабочих станциях, так и на серверах в распределенных компьютерных системах. Система обеспечивает параллельность выполнения служебных и прикладных задач, параллельность на прикладном уровне и одновременное обслуживание многих пользователей, работающих за разными компьютерами, объединенными в сеть. В компьютерной системе на базе MOPSLinux выполнение задач различных пользователей и управление устройствами осуществляется параллельно: система инициирует операцию на устройстве, передает управление соответствующей прикладной задаче на то время, пока устройство будет занято вводом или выводом данных, и взаимодействует с ним, когда оно в этом нуждается. При этом обеспечивается управление пользователями и устройствами, согласование действий системных компонент, разрешение конфликтов при запросах на ресурсы и восстановление процессов в случае отказа системы.
Структура системы MOPSLinux
Основным компонентом системы MOPSLinux является ядро Linux, отвечающее за управление устройствами, планирование доступа к ресурсам, а также за обеспечение защиты процессов друг от друга. Обобщенная структура Linux-системы приведена на рис. 1.2.
Ниже перечислены основные процессы системы и модули ядра:
- процесс init - системный процесс, отвечающий за инициализацию системы;
- процесс swapper - системный процесс, отвечающий за перемещение процессов между физической памятью и диском, когда для них не хватает физической памяти;
- приложения - обычные процессы, выполняющие приложения от имени пользователей;
- интерфейс системного вызова - позволяет процессам обращаться к сервисам операционной системы;
- модули символьного и блочного ввода-вывода, а также драйверов устройств - используются при реализации файловых систем и для доступа к устройствам;
- буферный кэш - отвечает за кэширование данных, над которыми выполняются блочные операции ввода-вывода; он повышает производительность системы;
- файловая система - управляет иерархическим пространством имен файлов, каталогов, устройств ввода-вывода, именование которых унифицировано;
- модуль управления памятью - поддерживает виртуальную память Linux;
- модуль управления процессами - отвечает за создание и планирование процессов, прекращение их работы и поддержку базовых средств их взаимодействия.
Рисунок 1.2. Основные компоненты компьютерной системы
Более подробно о принципах функционирования операционных систем можно найти в [1].
Состав и основные возможности дистрибутива MOPSLinux
MOPSLinux - это универсальный русскоязычный дистрибутив операционной системы Linux для серверов, рабочих станций и домашних персональных компьютеров. MOPSLinux создан на базе дистрибутива Slackware Linux. По сравнению со Slackware Linux, дистрибутив MOPSLinux имеет ряд улучшений и дополнений. Так, переработана программа установки: процесс установки системы стал более простым и наглядным, многие процессы в нем автоматизированы. В состав дистрибутива включено дополнительное программное обеспечение, такое как библиотеки работы с геоданными, СУБД PostgreSQL, прокси-сервер SQUID, почтовый сервер XMail, средства администрирования системы Webmin, библиотеки поддержки SOCKS Dante, инструментальные средства разработки программ на языке PASCAL, утилиты и библиотеки поддержки протоколов Bluetooth, IrDA, IPX и OBEX, утилиты для подключения устройств через инфракрасный порт и офисный пакет OpenOffice.org.
В состав дистрибутива MOPSLinux включены необходимые системные компоненты и наиболее популярные пакеты программ, которые могут удовлетворить запросы различных пользователей и администраторов системы. Ниже приведен перечень основных компонентов, конкретные версии указываются в спецификациях на дистрибутив:
- ядро Linux;
- графический сервер X11;
- WEB-сервер Apache;
- файл-сервер Samba;
- языки программирования С++, Pascal, Perl, PHP, Python;
- среды программирования KDevelop, FP;
- серверы электронной почты Sendmail, Postfix, XMail;
- оконная среда KDE;
- оконная среда Xfce;
- браузеры Mozilla Firefox, Konqueror;
- интернет-пейджеры Licq, Kopete;
- приложения для работы с графикой и звуком;
- мультимедиа-плееры;
- текстовые редакторы;
- офисный пакет OpenOffice Professional;
- серверы баз данных PostgreSQL, MySQL;
- и другие пакеты.
MOPSLinux поддерживает:
- все компьютерные платформы, совместимые с IBM PC;
- большое количество моделей периферийного оборудования (видеоадаптеры, сетевые адаптеры, звуковые карты, внешние и внутренние модемы, устройства бесперебойного питания, мониторы, матричные, лазерные и струйные принтеры, сканеры, стримеры);
- технологию Plug&Play;
- шины E-PCI и SATA;
- оперативное подключение и работу USB-устройств;
- оперативную работу с Bluetooth-устройствами и ИК-портом.
MOPSLinux поддерживает следующие файловые системы:
- EXT2, EXT3;
- REISERFS 3.x;
- XFS (IBM system);
- NFS (UNIX);
- PROCFS (используется в Linux для контроля и отображения текущего состояния ОС);
- NTFS (Windows NT/2000/XP только чтение);
- FAT12, FAT16, FAT32 (Windows 9x);
- SMBFS (Windows NT/9x);
- HPFS (OS/2);
- UFS (BSD-UNIX, Solaris);
- System V (Xenix);
- ISO9660 c MSJE (CD-ROM);
- MinixFS (Minix);
- AFS (Macintosh, UNIX);
- NCPFS (Novell Netware);
MOPSLinux обеспечивает возможность функционирования в качестве контроллера домена, сервера печати, почтового сервера, WEB-сервера, FTP-сервера, DNS-сервера, межсетевого экрана и обеспечивает поддержку следующих сетевых протоколов:
- стек TCP/IP, FTP, Telnet, DHCP, DNS;
- POP3, SMTP, IMAP, MIME, PGP;
- SLIP, PPP, CHAP, PAP;
- HTTPS, SSL, SSH.
В MOPSLinux реализована поддержка русского языка:
- в программе установки;
- в консоли;
- русскоязычный интерфейс KDE, Xfce и практически всех программ с GUI;
- русскоязычная система помощи KDE;
- набор рускоязычных man-страниц.
MOPSLinux поддерживает следующие антивирусные системы:
- Trend Micro InterScanT VirusWallT for Unix.
Порядок установки
Дистрибутив MOPSLinux разработан и распространяется в соответствии с лицензией GNU GPL.
Дистрибутив MOPSLinux поставляется на DVD или CD-дисках. Если дистрибутив также может поставляться на СD-дисках, то среди них имеются установочные диски и диски с исходными кодами программ. В состав дистрибутива также входят купон для технической поддержки, инструкция по установке и конфигурированию системы, контейнер для хранения дисков.
При приобретении дистрибутива пользователи MOPSLinux получают бесплатную техническую поддержку в течение одного месяца от даты регистрации продукта. По истечении месяца техническая поддержка предоставляется по отдельному соглашению между пользователем и разработчиком.
Операционная система MOPSLinux устанавливается на жесткий диск компьютера. Процесс установки описан в прилагаемой к дистрибутиву инструкции и для подготовленного пользователя обычно не вызывает проблем. Ниже приведено краткое описание процесса установки системы на компьютер:
Для установки системы необходимо загрузить компьютер с первого установочного диска MOPSLinux. После загрузки системы необходимо с помощью утилиты cfdisk создать на жестком диске Linux-разделы. Подробнее читайте об этом в [2].
Установка выполняется с помощью программы setup. Программа setup - управляемый с помощью системы меню программный комплекс для установки пакетов MOPSLinux на компьютер и настройки системы.
Чтобы запустить программу установки, необходимо в приглашении командной строки ввести setup.
После загрузки программы setup на экране появляется главное окно программы установки.
Выбор пункта меню производится при помощи кнопок-стрелок вверх и вниз, а выбор кнопок ''Ok'' или ''Cancel'' производится при помощи стрелок вправо и влево. Опции-флаги или, иначе, переключатели (те которые отмечены [X]) выбираются при помощи клавиши пробела.
Для начала процесса установки необходимо выбрать пункт SETUP. После завершения этого этапа программа установки автоматически перейдет к конфигурированию системы (пункт CONFIGURE).
В процессе установки системы будут выполнены следующие действия:
Конфигурирование раздела подкачки
Программа установки автоматически обнаружит, созданный ранее раздел или разделы (если их несколько) подкачки, отформатирует и активизирует их.
Форматирование и подключение разделов жесткого диска
Необходимо указать, какие из других (не swap) разделов жесткого диска должны быть отформатированы и подключены к точкам монтирования файловой системы.
Выбор варианта установки системы
Необходимо выбрать носитель информации, с которого будет устанавливаться MOPSLinux: CD-ROM, NFS, раздел жесткого диска или предварительно подмонтированный каталог.
Выбор устанавливаемых пакетов программ
Необходимо выбрать один из двух режимов установки пакетов программ: AUTO или EXPERT. В режиме AUTO серии пакетов A, AP, D, L, N и Y устанавливаются автоматически. Остальные серии пакетов пользователь может отметить для установки самостоятельно. В режиме EXPERT программа установки будет запрашивать разрешение на установку каждого пакета программ из предварительно выбранных серий пакетов.
Выбранные пакеты программ будут установлены в выбранный ранее раздел жёсткого диска.
Важно помнить, что если объем пакетов программ для установки превысит объем свободного пространства на жестком диске, процесс установки будет прерван и потребуется повторная установка системы. Для полной установки системы потребуется не менее 7Гб свободного пространства на жестком диске.
Пункт CONFIGURE (настройка) позволяет выполнить основные настройки системы. Перечень настраиваемых параметров во многом зависит от того, какие пакеты программ были установлены.
В процессе конфигурирования системы выполняются следующие действия:
Необходимо ввести данные о наличии модема и способе его подключения к компьютеру.
Установка поддержки системы HOTPLUG
Необходимо определить, будет ли система hotplug запускаться при загрузке компьютера.
Система hotplug осуществляет динамическую загрузку драйверов различных периферийных устройств при подключении их к работающему компьютеру.
Необходимо указать способ установки загрузчика LILO (LInux LOader - загрузчик Linux). Самым простым и безопасным способом является "simple" - автоматическая установка загрузчика. Пункт "skip" ("Не устанавливать") не рекомендован, до тех пор, пока не имеется весьма серьёзных оснований так поступить. Пункт "expert" предназначен для опытных пользователей.
Необходимо указать, какого типа <мышь> подключена к компьютеру, а так же указать, требуется ли запускать при загрузке gpm (поддержка <мыши> в режиме командной строки).
Для настройки сети загружается программа netconfig. Описание этой программы приведено в Справочном руководстве.
Выбор сервисов, запускаемых при загрузке системы
При помощи клавиши пробел необходимо отметить те сервисы, которые следует запускать при каждой загрузке системы.
Необходимо указать метод установки системных часов и выбрать часовой пояс.
Конфигурирование Х сервера
Для конфигурирования Х-сервера загружается программа xorgsetup. Описание этой программы приведено в [2].
1. Какие требования предъявляются к современным операционным системам и их функциям?
2. Что такое MOPSLinux?
3. К какому классу операционных систем относится MOPSLinux?
4. Какие основные сервисы и компоненты входят в состав операционной системы на базе ядра Linux?
5. Что входит в состав дистрибутива MOPSLinux?
6. Как можно использовать дистрибутив MOPSLinux?
7. Какие основные этапы установки дистрибутива MOPSLinux?
Литература
1. Операционные системы / Д.Бэкон, Т.Харрис. - СПб.: Питер; Киев: Издательская группа BHV, 2004
2. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005
Глава 2. Файловые системы
Основные сведения о файлах
Данные в операционной системе Linux представляются в виде наборов данных, или, иначе, в виде файлов. Файл - ключевое понятие Linux и применяется не только к данным, но и к устройствам. Существует шесть типов файлов:
- файл - набор данных в некотором формате, содержание которых интерпретируется прикладными программами. Для операционной системы - это набор байтов;
- каталог - файл, содержащий список записей о файлах. Каждая запись содержит номер индексного дескриптора и имя файла. Каталоги формируют иерархическое дерево;
- файл устройства - специальный файл, который является точкой доступа к драйверу устройства: символьного или блочного. Символьный файл устройства используется для побайтного обмена данными с устройством, а блочный - для обмена с устройством блоками данных. Некоторые устройства имеют как символьный, так и блочный интерфейс.
- канал - специальный файл, который используется для связи между процессами для передачи данных;
- ссылка - запись каталога, в которой номер индексного дескриптора указывает на другой дескриптор (жесткая ссылка) или номер индексного дескриптора отсутствует (символическая ссылка);
- сокет - файл, в котором содержится IP-адрес процесса.
Определение файловой системы
Файловая система - это методы и структуры данных, которые используются операционной системой для хранения файлов на диске или его разделе. О файловой системе также говорят, ссылаясь на раздел или диск, используемый для хранения файлов или тип файловой системы.
Существует разница между диском или разделом и установленной на нем файловой системой. Большинство программ взаимодействуют с диском посредством файловой системы, и, следовательно, они не будут выполняться, если на разделе или диске никакая система не установлена или тип файловой системы не соответствует требуемому.
Перед тем, как раздел или диск использовать в качестве файловой системы, на нем должна быть инициализирована соответствующая файловая система. При этом на диск записываются служебные данные. Этот процесс называется созданием файловой системы.
Несмотря на некоторые различия, файловые системы Linux имеют похожую структуру. Основными понятиями файловой системы являются: суперблок (suрerblock), индексный дескриптор (inode), блок данных (data block), блок каталога (directory block) и косвенный блок (indirection block). В суперблоке содержатся сведения о файловой системе в целом, например, ее размер. Конкретные сведения определяются типом файловой системы. В индексном дескрипторе хранится вся информация о файле, кроме его имени. Имя файла хранится в блоке каталога, вместе с номером дескриптора. Запись каталога содержит имя файла и номер индексного дескриптора соответствующего файла. В этом дескрипторе хранятся номера нескольких блоков данных, которые используются для хранения самого файла. В inode есть место только для нескольких номеров блоков данных, однако, если требуется большее количество, то пространство для указателей на блоки данных динамически выделяется. Такие блоки называются косвенными. Для того чтобы найти блок данных, нужно сначала найти его номер в косвенном блоке.
В файловых системах имеется возможность создания дыр (hole) в файлах (команда lseek, см. man-руководство). Это означает, что файловая система предоставляет ложную информацию о том, что в каком-то месте в файле содержатся нулевые байты, но в действительности для этого не выделяются сектора (это означает, что файл будет занимать несколько меньше места на диске). Это часто используется особенно в небольших двоичных программах, библиотеках Linux, в некоторых базах данных и в других отдельных случаях. Дыры реализуются хранением специального значения в косвенном блоке или индексном дескрипторе вместо адреса блока данных. Это специальное значение показывает, что для данной части файла блоки данных не размещены и, следовательно, что в файле есть дыра. Таким способом в Linux реализовано довольно примитивное сжатие данных непосредственно на уровне файловой системы.
Использование дыр достаточно эффективно. На компьютере с общим дисковым пространством в 200 Мб, простые измерения показывают, что применение дыр дает экономию в 4 Мб. Однако, эти измерения проводились на системе, где было установлено относительно мало программ и отсутствовали файлы баз данных.
Типы файловых систем
Системы Slackware/MOPSLinux поддерживают несколько типов файловых систем. Наиболее важные из них рассмотрены ниже.
Ext2
Наиболее богатая функциональными возможностями файловая система из семейства совместимых с Linux. На данный момент считается самой популярной системой. Она разработана с учетом совместимости с последующими версиями, поэтому для установки новой версии кода системы не требуется устанавливать ее заново.
Ext3
Модернизированная и журналируемая версия файловой системы ext2.
Ext
Предыдущая версия системы ext2, несовместима с последующими версиями. В настоящее время она очень редко включается в пакеты новых поставляемых систем, т.к. большинство пользователей сейчас пользуются системой ext2.
ReiserFS
Журналируемая файловая система. Одна из самых популярных журналируемых файловых систем для Linux.
Minix
Считается самой старой и самой надежной файловой системой,
но достаточно ограниченной в своих возможностях, так у файлов отсутствуют
некоторые временные параметры, длина имени файла ограничена
30-ю символами, а объем доступных данных не превышает 64 Мб на одну файловую
систему.
Xia
Модифицированная версия системы minix, в которой увеличена максимальная длина имени файла и размер файловой системы.
В дополнение к рассмотренным выше, в Linux включена поддержка еще некоторых файловых систем для обеспечения обмена файлами с другими операционными системами. Эти файловые системы работают так же, как и описанные выше, но их функциональные возможности могут быть значительно ограничены по сравнению с возможностями, обычно предоставляемыми файловыми системами Linux.
msdos
Обеспечивается совместимость с системой MS-DOS (а также OS/2 и Windows NT) по файловым системам FAT12, FAT16, FAT32 и VFAT.
ntfs
Основная файловая система Windows NT.
usmdos
Расширяет возможности драйвера файловой системы MS-DOS для Linux таким образом, что при работе в Linux, имеется возможность работы с именами файлов нестандартной длины, просмотра прав доступа к файлу, ссылок, имени пользователя, которому принадлежит файл, а также оперирование с файлами устройств. Это позволяет использовать обычную систему MS-DOS, так, как если бы это была система Linux. Таким образом, исключается необходимость создания отдельного раздела для Linux.
iso9660
Стандартная файловая система для CD-ROM. Довольно популярное развитие стандарта CD-ROM, выполненное Rock Ridge, которое обеспечивает автоматическую поддержку имен файлов нестандартной длины.
nfs
Сетевая файловая система, обеспечивающая разделение одной файловой системы между несколькими компьютерами для предоставления доступа к ее файлам.
hpfs и hрfs386
Файловые системы OS/2.
hfs и hfs+
Файловые системы Apple MacOS.
dfs
Файловая система для дисков DVD.
sysv
Файловые системы SystemV/386, Coherent и Xenix.
Есть поддержка множества других файловых систем, например, Atari или Amiga. На текущий момент MOPSLinux поддерживает порядка 50 файловых систем. Такое возможно благодаря применению технологии IFS (Installable File System), которая позволяет подключать новые системы с помощью драйверов. Набор используемых файловых систем зависит от конкретной ситуации. Для MOPSLinux лучшим выбором является система ext3.
Также существует файловая система proc, которая обычно доступна через каталог /proc. В действительности, она не является файловой системой, хотя по ее структуре сложно обнаружить разницу. Эта система позволяет получить доступ к определенным структурам данных ядра, к таким, как список процессов (process list, отсюда и название) или сведения об аппаратуре. Все эти структуры выглядят как файловая система из каталогов и обычных текстовых файлов и ими можно оперировать обычными средствами работы с файловой системой. Например, для получения списка всех процессов, используется следующая команда:
$ ls -l /proc
total 0
dr-xr-xr-x 4 root root 0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> 1
dr-xr-xr-x 4 liw users 0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> 63
dr-xr-xr-x 4 liw users 0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> 94
dr-xr-xr-x 4 liw users 0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> 95
dr-xr-xr-x 4 root users 0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> 98
dr-xr-xr-x 4 liw users 0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> 99
-r--r--r-- 1 root root 0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> devices
-r--r--r-- 1 root root 0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> dma
-r--r--r-- 1 root root 0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> filesystems
-r--r--r-- 1 root root 0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> interrupts
-r-------- 1 root root 8654848 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> kcore
-r--r--r-- 1 root root 0 Jan 31 <st1:time minute="50" hour="11">11:50<st1:time> kmsg
-r--r--r-- 1 root root 0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> ksyms
-r--r--r-- 1 root root 0 Jan 31 <st1:time minute="51" hour="11">11:51<st1:time> loadavg
-r--r--r-- 1 root root 0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> meminfo
-r--r--r-- 1 root root 0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> modules
dr-xr-xr-x 2 root root 0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> net
dr-xr-xr-x 4 root root 0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> self
-r--r--r-- 1 root root 0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> stat
-r--r--r-- 1 root root 0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> uptime
-r--r--r-- 1 root root 0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> version
Хотя система /proc и называется файловой, ни одна ее часть не взаимодействует с диском. Она существует только в представлении ядра. Даже если существует файл /proc/kcore, то он не занимает места на диске.
Создание файловых систем
Файловая система устанавливается, т.е. инициализируется, при помощи команды mkfs. Параметры, передаваемые программам, вызываемым mkfs, могут различаться. Наиболее важные из них рассмотрены ниже:
-t fstype
Указывается тип файловой системы.
-c
Производится поиск плохих блоков и, соответственно, инициализация списка плохих блоков.
-l filename
Считывается начальный список плохих блоков из файла filename.
Для установки файловой системы ext2 на дискету, используется следующая последовательность команд:
$ fdformat -n /dev/fd0H1440
Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
$ badblocks /dev/fd0H1440 1440 > bad-blocks
$ mkfs -t ext2 -l bad-blocks /dev/fd0H1440
mke2fs 0.5a, <st1:date year="1994" day="5" month="4">5-Apr-94<st1:date> for EXT2 FS 0.5, 94/03/10
360 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1 block group
8192 blocks per group, 8192 fragments per group
360 inodes per group
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
Первая команда форматирует дискету, параметр "-n" предотвращает проверку на наличие сбойных блоков. Вторая команда осуществляет поиск сбойных блоков, вывод результатов перенаправлен в файл bad-blocks. Третья команда устанавливает файловую систему с инициализацией списка найденных сбойных блоков.
Вместо использования badblocks, в команде mkfs может быть указан параметр "-c":
$ mkfs -t ext2 -c /dev/fd0H1440
mke2fs 0.5a, <st1:date year="1994" day="5" month="4">5-Apr-94<st1:date> for EXT2 FS 0.5, 94/03/10
360 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1 block group
8192 blocks per group, 8192 fragments per group
360 inodes per group
Checking for bad blocks (read-only test): done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
Указание параметра "-c" намного удобнее, чем применение команды badblocks, но ее использование необходимо для проверки файловой системы после ее установки.
Установка файловых систем на жесткий диск или его раздел аналогична установке на дискету, исключая форматирование.
Подключение и отключение файловых систем
Перед работой с файловой системой, она должна быть смонтирована. При этом операционная система выполняет некоторые действия, обеспечивающие функционирование монтируемой системы. Так как все файлы в системе Linux принадлежат одной структуре каталогов, то эта операция обеспечивает работу с новой файловой системой, как с каталогом уже смонтированной ранее файловой системы.
Рассмотрим пример:
$ mount /dev/hda2 /home
$ mount /dev/hda3 /usr
Команде mount передаются два параметра: файл устройства, соответствующий диску или разделу, на котором расположена файловая система и имя каталога, к которому будет монтироваться система. После выполнения этих команд содержимое файловых систем отображается в каталогах /home и /usr соответственно. Также можно сказать, что раздел /dev/hda2 смонтирован к каталогу /home, а /dev/hda3 к каталогу /usr. Существует различие между файлом устройства /dev/hda2 и монтируемым каталогом /home. Файл устройства предоставляет доступ непосредственно к данным, расположенным на диске, а монтируемый каталог к файлам. Такой каталог называется узлом или точкой монтирования (mount point).
Команда mount пытается сама определить тип монтируемой файловой системы. В случаях, когда тип файловой системы не определяется, нужно указать параметр "-t fstype", который задает тип файловой системы однозначно. Например, чтобы смонтировать дискету MS-DOS необходимо выполнить команду:
$ mount -t msdos /dev/fd0 /floppy
Монтируемый каталог должен существовать. После монтирования файловой системы все расположенные в нем файлы будут доступны. Открытые ранее файлы также будут доступны, а файлы, являющиеся жесткими ссылками из других каталогов, будут доступны с использованием имен ссылок. Таким образом, никакого ущерба не наносится и это даже может быть полезно. Например, некоторые делают каталог /tmр символической ссылкой на каталог /var/tmр. При загрузке системы, когда файловая система /var не смонтирована, каталог /tmр размещается в системе root. После того, как /var смонтирована, каталог /var/tmp, расположенный в файловой системе root, становится недоступным. Если же /var/tmp не существует в системе root, то перед монтированием /var создание и работа с временными файлами будет невозможна.
Для защиты файловой системы от записи, команда mount запускается с опцией "-r", после чего монтирование производится в режиме <только чтение> (read-only). После этого ядро пресекает любые попытки записи, включая модификацию времени доступа к файлам в индексном дескрипторе. Монтирование с защитой от записи всегда используется при работе с CD-ROM.
Очевидно, что корневая файловая система (система root) не может быть смонтирована на какую-либо другую систему. И поэтому она монтируется во время загрузки. Считается, что система root всегда установлена: если бы она не была установлена, то компьютер не смог бы загрузиться. Название файловой системы, используемой для монтирования root, либо встроено в ядро, либо устанавливается при помощи программ LILO или rdev.
Обычно система root сначала монтируется в режиме read-only. Затем запускается программа fsck для проверки ее целостности и если все в порядке, то система перемонтируется (re-mount) в режиме <чтение-запись> (read-write). Программу fsck не следует запускать на смонтированной файловой системе, потому что изменения, произведенные при ее выполнении, могут привести к повреждению системы. Так как система root сначала монтируется в режиме read-only, то после ее проверки все неполадки могут быть полностью устранены при повторном монтировании.
Во многих системах существуют и другие файловые системы, которые должны быть смонтированы во время загрузки. Их список содержится в файле /etc/fstab.
Если файловая система для работы больше не требуется, то она может быть демонтирована, т.е. отключена. Для этого используется команда umount с одним параметром. Это может быть как файл устройства, так и узел монтирования. Например, для демонтирования каталогов, рассмотренных в предыдущем примере, используются следующие команды:
$ umount /dev/hda2
$ umount /usr
После работы с приводом для гибких дисков следует каждый раз применять эту команду, так как до размонтирования системы нельзя быть уверенным, что данные были записаны на диск, а не остались в буфере. Не следует вынимать дискету, не размонтировав ее!
Для выполнения операций монтирования и демонтирования требуется наличие прав доступа пользователя root. Причин к тому много, но главное то, что разрешение монтировать кому угодно что-угодно приведет к появлению ловушек для администратора. Например, загрузки с дискеты программы /bin/sh с правами root. Однако, многие пользователи довольно часто работают с дисководом и для решения этой проблемы существует несколько способов:
q Сообщить всем пароль пользователя root. Это самый простой, но далеко не лучший выход. Он может использоваться на некоторых системах, не нуждающихся в защите (обычно не подключенных к какой-либо сети).
q Применять какую-либо программу (например, sudo), позволяющую всем использовать команду mount. Это также не лучший способ по причине плохой защиты, хотя его применение не предоставляет напрямую права root каждому пользователю.
q Применение пакета mtools, используемого только для работы с файловой системой MS-DOS без выполнения операции монтирования. Используется только в тех случаях, когда дисковод применяется для работы с дисками системы MS-DOS.
q Поместить список файлов устройств, используемых при работе с гибкими дисками, и доступных узлов монтирования вместе с нужными опциями в файл /etc/fstab.
Последний метод может быть реализован путем добавления в файл /etc/fstab следующей строки:
/dev/fd0 /floppy msdos user,noauto 0 0
При этом указываются файл устройства для монтирования, каталог в который монтируется устройство, тип файловой системы и опции: частота резервирования командой dumр и очередность проверки командой fsck (для указания порядка в котором файловые системы проверяются после загрузки, 0 указывает не проводить проверку).
Опция noauto запрещает автоматическое монтирование при начальной загрузке системы. Команда mount -a не смонтирует такую файловую систему. Опция user позволяет любому пользователю монтировать указанную файловую систему и, по причине защиты системы, запрещает выполнение программ и работу с файлами устройств, расположенных на смонтированной системе. После этого, любой пользователь может выполнить следующую команду:
$ mount /floppy
Для демонтирования системы используется команда umount с соответствующими параметрами.
Если нужно работать с дискетами, имеющими различные типы файловой системы, нужно создать разные точки монтирования. Опции для каждой точки будут своими. Например, для обеспечения работы с дискетами в форматах MS-DOS и ext2 нужно внести в /etc/fstab строки:
/dev/fd0 /dosfloppy msdos user,noauto 0 0
/dev/fd0 /ext2floppy ext2 user,noauto 0 0
Проверка целостности ФС
Для проверки целостности и работоспособности файловой системы используется команда fsck. Наиболее часто возникающие трудности связаны с перебоями в питании, неполадках в оборудовании или из-за ошибок оператора (например, некорректное выключение компьютера).
Работа с поврежденной файловой системой может привести к потерям данных и другим неполадкам. Большинство систем сконфигурировано таким образом, что команда fsck запускается автоматически при загрузке системы, поэтому возможные неполадки будут обнаружены и, возможно, исправлены перед тем, как система начнет использоваться. Если файловая система довольно большая по объему, то ее проверка может занять некоторое время, что создает определенные неудобства. Для того чтобы избежать проверки всей файловой системы, применяются различные способы контроля правильности ее отключении. Первый из них связан с тем, что если существует файл /etc/fastboot, то никаких проверок не производится. Второй способ заключается в том, что в файловой системе ext2 существует специальный флажок, расположенный в суперблоке, который используется для выявления корректности демонтирования файловой системы при последнем выключении компьютера. Эта возможность используется в программе e2fsck (версия команды fsck для файловой системы ext2fs) для избежания излишней проверки файловой системы, если флажок ее целостности установлен, то система была корректно демонтирована. Использование способа, связанного с файлом /etc/fastboot, зависит от программ, запускаемых при загрузке системы, а применение команды e2fsck работает в любом случае. Для более подробной информации о такой проверке см. man-руководство по e2fsck.
Автоматическая проверка используется только для файловых систем, устанавливаемых во время загрузки. Для проверки других систем команда fsck должна выполняться отдельно.
Если fsck находит неисправность, не подлежащую восстановлению, то могут потребоваться глубокие знания и понимание работы файловых систем и их типов.
Команда fsck должна использоваться только для демонтированных систем (за исключением системы root, смонтированной в режиме read-only во время загрузки), так как при ее работе используется прямой доступ к диску и информация о внесении каких-либо изменений в файловую систему может быть недоступна операционной системе, что, обычно, приводит к нарушению ее работы.
Поиск дисковых ошибок командой badblocks
Периодически следует проводить поиск плохих блоков при помощи команды badblocks. При ее выполнении выводится список номеров найденных плохих блоков. Этот список может быть использован программой fsck для внесения изменений в структуру файловой системы во избежание использования этих блоков для хранения информации. В следующем примере показано, как это сделать:
$ badblocks /dev/fd0H1440 1440 > bad-blocks
$ fsck -t ext2 -l bad-blocks /dev/fd0H1440
Parallelizing fsck version 0.5a (<st1:date year="1994" day="5" month="4">5-Apr-94<st1:date>)
e2fsck 0.5a, <st1:date year="1994" day="5" month="4">5-Apr-94<st1:date> for EXT2 FS 0.5, 94/03/10
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Check reference counts.
Pass 5: Checking group summary information.
/dev/fd0H1440: ***** FILE SYSTEM WAS MODIFIED *****
/dev/fd0H1440: 11/360 files, 63/1440 blocks
Если badblocks сообщает, что блок, который уже использовался плохой, e2fsck пробует переместить блок в другое место. В ряде случаев содержимое файла может быть повреждено, хотя обычно перемещение проходит вполне успешно.
Устранение фрагментации
Когда файл пишется на диск, он не обязательно будет вписан в соседние блоки. Файл, который записан не в соседние блоки, называется фрагментированным. Система дольше читает фрагментированный файл, поскольку ей требуется большее количество операций позиционирования головок диска. Несколько снижает остроту проблемы использование буфера упреждающего чтения: система прогнозирует, какие именно данные ей понадобятся, и читает их в буфер до получения реального запроса на их чтение.
Файловая система ext2 пытается уменьшить фрагментацию, храня все блоки в файле близко друг к другу, даже если они не могут быть сохранены в последовательных секторах. Ext2 действительно всегда распределяет свободный блок, который является самым близким к другим блокам в файле. Для ext2, следовательно, редко нужно беспокоиться относительно фрагментации.
Вспомогательные средства для файловых систем
Есть ряд простых утилит для управления файловыми системами. Утилита df показывает свободное место на диске для одной или нескольких файловых систем. Она показывает, как именно используется диск (размеры файлов и каталогов).
Утилита sync принудительно записывает все оставшиеся в буфере блоки на диск. Процесс-демон update вызывает его автоматически. Утилита sync часто помогает избежать крупных проблем, например, если update или его вспомогательный процесс bdflush завис.
Другие вспомогательные средства для файловой системы ext2
В дополнение к программе создания файловой системы (mke2fs) и программе для ее проверки (e2fsck) файловая система ext2 имеет еще ряд полезных утилит.
Утилита tune2fs позволяет выполнить <тонкую> настройку параметров файловой системы. Наиболее часто используются следующие настройки:
q Максимальный счетчик монтирования. Утилита e2fsck выполняет проверку файловой системы после исчерпания данного счетчика, даже если установлен флажок целостности файловой системы.
q Максимальное время между проверками. Для e2fsck может быть установлено максимальное время между двумя проверками, даже если установлен флажок целостности файловой системы и не выбран лимит количества монтирований. Эта опция может быть заблокирована.
q Число блоков, зарезервированных для root. В файловой системе ext2 резервируется несколько блоков для root так, что если файловая система заполняется, все еще возможно администрирование без удаления чего-нибудь. Зарезервированное количество блоков по умолчанию составляет 5 процентов, что на большинстве дисков не является расточительным. Однако для дискет нет никакого смысла в резервировании даже одного блока.
Утилита dumрe2fs выводит сведения о файловой системе ext2, обычно из суперблока. Ниже показан типовой вывод. Часть информации в выводе техническая, и требует понимания того, как работает файловая система.
dumрe2fs 0.5b, <st1:date year="1995" day="11" month="3">11-Mar-95<st1:date> for EXT2 FS 0.5a, 94/10/23
Filesystem magic number: 0xEF53
Filesystem state: clean
Errors behavior: Continue
Inode count: 360
Block count: 1440
Reserved block count: 72
Free blocks: 1133
Free inodes: 326
First block: 1
Block size: 1024
Fragment size: 1024
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 360
Last mount time: Tue Aug 8 <st1:time minute="52" hour="1">01:52:52<st1:time> 1995
Last write time: Tue Aug 8 <st1:time minute="53" hour="1">01:53:28<st1:time> 1995
Mount count: 3
Maximum mount count: 20
Last checked: Tue Aug 8 <st1:time minute="6" hour="1">01:06:31<st1:time> 1995
Check interval: 0
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
Group 0:
Block bitmap at 3, Inode bitmap at 4, Inode table at 5
1133 free blocks, 326 free inodes, 2 directories
Free blocks: 307-1439
Free inodes: 35-360
Утилита debugfs является отладчиком файловой системы. Она дает прямой доступ к структурам данных файловой системы, сохраненным на диске, и может использоваться для восстановления диска, который так поврежден, что fsck не может восстановить его автоматически. Она также может использоваться, чтобы восстановить удаленные файлы.
Утилиты dump и restore могут использоваться для резервирования и восстановления файловой системы ext2. Они являются специфическими версиями для ext2 традиционных для UNIX инструментальных средств.
Диски без файловых систем
Не все диски или разделы используются как файловые системы. Например, раздел swap-области не содержит файловой системы. Многие дисководы используются в режиме эмуляции ленточного накопителя, поэтому tar-файл или любой другой файл записывается непосредственно на диск без использования какой-либо файловой системы. У такого использования есть небольшое преимущество в свободном пространстве (при установке файловой системы некоторая часть дискового пространства используется для системных целей) и в совместимости с другими системами. Например, файловый формат tar является стандартным для всех систем, в то время как файловые системы на разных платформах различаются. Дискеты экстренной загрузки системы Linux также могут не содержать файловой системы.
Уход от файловых систем имеет преимущество, когда требуется создание большего объема пригодного для использования дискового пространства, так как файловая система всегда имеет некоторую систему ведения учета дискового пространства. Это также делает диски легко совместимыми с другими системами: например, формат tar одинаков на всех системах, в то время как файловые системы разные на большинстве систем.
Одна из причин использования прямого доступа к диску (без применения файловой системы) - это создание копий. Например, если диск содержит частично поврежденную файловую систему, то при возможности следует создать его копию перед тем, как пытаться что-либо сделать. Для этого можно использовать программу dd:
$ dd if=/dev/fd0H1440 of=floppy-image
2880+0 records in
2880+0 records out
$ dd if=floppy-image of=/dev/fd0H1440
2880+0 records in
2880+0 records out
Сначала dd выполняет точную копию дискеты в файл floppy-image, а затем записывает копию обратно на диск (предполагается, что перед выполнением последней команды была вставлена другая дискета).
1. Какие типы файлов используются в операционной системе Linux?
2. Какие типы файловых систем поддерживает ОС MOPSLinux?
3. Для чего необходимо смонтировать файловую систему?
4. Для каких файловых систем используется команда fsck и почему?
5. Что такое фрагментация? Каким образом можно ее уменьшить?
6. Какие утилиты используются для управления файловыми системами?
7. Возможен ли уход от применения файловых систем? Если да, то какие преимущества он дает?
Литература
1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005
2. ??
Глава 3. Использование жесткого диска
Общие сведения о дисках
Жесткий диск - одно из основных устройств компьютера. Он используется для хранения программ и данных. Для работы с жестким диском на нем должен быть создан один или несколько разделов (partitions), причем каждый раздел представляется так, как если бы это был отдельный диск. Разделение используется, например, для раздельного хранения системных и пользовательских программ и данных или при работе с двумя и более операционными системами на одном компьютере. При этом каждая операционная система использует для работы отдельный раздел и не обращается к другим. Таким образом, на одном жестком диске может быть установлено несколько систем. Без использования разделов возникла бы необходимость в приобретении и установке дополнительных жестких дисков.
Для гибких дисков разделы не предусмотрены, так как их объем достаточно мал и в этом нет необходимости. Для CD и DVD-дисков также не предусмотрены разделы, поскольку они создавались для использования в качестве одного диска большой емкости.
Жесткий диск (HDD -
harddisk drive) представляет собой блок из нескольких дисков (disks) по поверхностям (sides) которых перемещаются головки (heads). Позиционируются головки по
концентрическим дорожкам, или иначе трекам (tracks),
каждый из которых разделен на сектора (sectors).
Сектор является минимальным адресуемым блоком данных для диска и его размер
равен 512 байтам. Дорожки, равноудаленные от центра диска и образующие как бы
цилиндрическую поверхность, называют цилиндрами (cilinders).
Как правило, современные диски (в режиме адресации LBA) представляют собой
несколько сот цилиндров имеющих 63-254 поверхностей по 63 сектора данных на
каждой.
MBR, boot-секторы и таблица разделов
Информация о разделах жесткого диска находится в первом секторе (т.е. в первом секторе первой дорожки первого диска) и хранится в виде таблицы разделов (partition table). В этом секторе также хранится и главная загрузочная запись (master boot record). Часто первую дорожку называют MBR, т.к. в секторах этой дорожки записываются коды различных загрузчиков. При загрузке компьютера базовая система ввода-вывода или BIOS (сокращение от Basic Input/Output System) загружает его в оперативную память и инициирует выполнение записанной в него программы-загрузчика. Эта программа считывает таблицу разделов, находит активный раздел (т.е. раздел, отмеченный как загрузочный) и считывает первый сектор этого раздела, который называется загрузочным сектором (boot sector) раздела. Этот сектор содержит другую небольшую программу, которая, в свою очередь, считывает начальную часть операционной системы, расположенной в этом разделе и выполняет ее.
Таблица разделов состоит из четырех строк описывающих четыре возможных раздела диска. Описание каждого раздела диска содержит информацию о типе файловой системы, признаке того, что раздел является загрузочным, о первых и последних головках, дорожках, секторах раздела, количестве секторов смещения начала раздела от начала диска и об общем количестве секторов в разделе. Эта таблица не встроена в оборудование или даже в BIOS. Это только стандарт, которого придерживается большое количество операционных систем. Не все системы поддерживают его, но они являются исключениями. Некоторые системы поддерживают разделение, но они занимают всего один раздел на диске и используют свою внутреннюю схему разделения в пределах используемого раздела. Такие операционные системы нормально работают с другими системами (включая Linux), которые находятся на том же диске. Но те операционные системы, которые не поддерживают разделы, не могут быть установлены вместе с другими системами на одном диске.
Разрушение таблицы разделов грозит отказом операционных систем, установленных на компьютере. Если таблица каким-либо образом повредится, то все файлы вероятнее всего останутся в сохранности и могут быть восстановлены. Испорченная таблица разделов может быть исправлена при помощи программы fdisk. Поэтому для обеспечения восстановления работоспособности системы следует отдельно записать, например в блокноте, данные о разделах диска. Информация о разделах может быть получена командой fdisk -l:
$ fdisk -l /dev/hda
Disk /dev/hda: 15 heads, 57 sectors, 790 cylinders
Units = cylinders of 855 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 1 1 24 10231+ 82 Linux swap
/dev/hda2 25 25 48 10260 83 Linux native
/dev/hda3 49 49 408 153900 83 Linux native
/dev/hda4 409 409 790 163305 5 Extended
/dev/hda5 409 409 744 143611+ 83 Linux native
/dev/hda6 745 745 790 19636+ 83 Linux native
Восстановление данных на дисках требует высокой квалификации и аккуратности, поэтому выполнение этой процедуры обычно доверяют только опытным специалистам.
Расширенные и логические разделы
Изначально, в схеме разделения жесткого диска в персональных компьютерах допускалось использование только четырех разделов. Но вскоре этого оказалось недостаточно, частично по причине того, что многим пользователям для работы требуется более четырех операционных систем (например, Linux, MS-DOS, OS/2, Minix, FreeBSD, NetBSD, Windows/NT и т.д.), но в основном из-за того, что одной системой используется несколько разделов. Например, в системе Linux область подкачки (swap-область) чаще всего размещается в отдельном разделе, а не в основном разделе Linux.
Для решения этой проблемы была разработана схема, использующая расширенные разделы (extended partitions). Она позволяет разбивать основной раздел (primary partition) на подразделы. Основной раздел, разбитый таким образом, называется расширенным разделом (extended рartition), а подразделы называются логическими разделами (logical рartitions). Они используются так же, как и основные разделы, различие состоит только в схеме их создания.
Ниже приведен пример деления жесткого диска на разделы (табл. 4.1). Диск разделен на три основных раздела. Второй раздел при этом разделен на два логических раздела. Часть диска не используется вообще. Весь диск, как целое, и каждый основной раздел имеют свой загрузочный сектор.
Таблица 1.1. Пример разбиения жесткого диска
MBR |
||
Загрузочный сектор |
Основной раздел |
|
Область данных раздела |
||
Загрузочный сектор |
Логический раздел |
Расширенный раздел |
Неиспользуемый загрузочный сектор |
||
Область данных раздела |
||
Неиспользуемый загрузочный сектор |
Логический раздел |
|
Область данных раздела |
||
Неиспользуемое дисковое пространство |
|
|
Загрузочный сектор |
Основной раздел |
|
Область данных раздела |
Деление жесткого диска на разделы
Если BIOS компьютера не поддерживает режим расширенной адресации LBA, то загрузочный раздел (раздел, в котором находятся файлы, используемые при загрузке и само ядро) должен полностью располагаться в пределах первых 1024 цилиндров. Это связано с тем, что данные в цилиндрах с номерами боле 1024 будут недоступны для BIOS. Поэтому следует удостовериться в том, чтобы загрузочный раздел располагался в пределах первых 1024 цилиндров.
Деление жесткого диска на разделы производится с помощью программ fdisk или cfdisk.
В связи с тем, что в системе Linux используются блоки размером в 1 Кб, т.е. в два сектора, каждый раздел должен содержать четное число секторов. Нечетное число секторов приведет к тому, что последний из них не будет использоваться. Это ни на что не влияет, но при запуске программы fdisk будет выдано предупреждение.
При изменении размера раздела обычно требуется сначала сделать резервную копию всей необходимой информации, удалить раздел, создать новый раздел, а затем восстановить всю сохраненную информацию в новый раздел.
Порядок работы с программой fdisk можно найти в программной документации. Ниже описан порядок работы с программой cfdisk Программа cfdisk подобна fdisk, но обладает более дружественным интерфейсом, поэтому её используют чаще.
Для разметки жесткого диска в приглашении командной строки необходимо ввести следующую команду:
#cfdisk
После запуска программа выведет на экран всю информацию о существующих разделах. В большинстве случаев для создания разделов Linux выбирается свободное пространство (Free Space) или удаляются несколько существующих разделов для освобождения пространства.
ВНИМАНИЕ:
Перед тем, как удалять разделы очень важно сохранить на
резервных носителях все программы и наборы данных, которые могут понадобиться в
дальнейшем.
Для создания раздела необходимо с помощью клавиш ↑ ↓ выбрать Free Space, а клавишами ← → выбрать команду New и нажать Enter.
Рисунок 1.3.
Далее программа предложит выбрать тип раздела: первичный или логический,
Рисунок 1.4.
затем ввести размер раздела в мегабайтах (MB)
Рисунок 1.5.
и выбрать место расположения раздела в начале или, если размер раздела меньше свободного пространства, в конце свободного пространства.
По-умолчанию все созданные разделы имеют тип 83 (Linux),
Рисунок 1.6.
поэтому для одного из разделов необходимо изменить тип на 82 (Linux swap). Для изменения типа раздела необходимо с помощью клавиш ↑ ↓ выбрать требуемый раздел, а клавишами ← → выбрать команду Type и ввести 82.
Рисунок 1.7.
Рисунок 1.8.
До того как записывать изменения на диск, следует ещё раз проверить таблицу разделов. Она будет отображаться в главном окне программы.
Рисунок 1.9.
Если всё правильно, то, чтобы сохранить изменения на диск необходимо выбрать команду Write.
Рисунок 1.10.
Чтобы выйти из программы необходимо выбрать команду Quit.
Рисунок 1.11.
Схемы разделения на разделы
Для жестких дисков небольшого объема достаточно использовать один раздел. При использовании диска большого объема (боле 10 Гбайт) обычно его разбивают на несколько разделов.
Обычно используется отдельный раздел или диск для корневой файловой системы, которая содержит каталоги /bin, /etc, /dev, /lib, /tmp /root и некоторые другие, требуемые для нормальной загрузки и запуска системы. Для личных каталогов пользователей (каталог /home) и для swap-области рекомендуется использовать отдельные разделы или диски. Также в отдельном разделе может быть размещен и каталог /usr. Разделение каталогов с системными и пользовательскими файлами облегчает создание резервных копий, восстановление и обновление программ.
Для установки операционной системы MOPSLinux рекомендуется создать как минимум два раздела: один для корневой файловой системы (не менее 7Гб для полной установки) и один для подкачки (100-200Мб). Желательно создать ещё один раздел (1-3Гб) для каталога /home. В этом случае при переустановке системы личная информация и настройки пользователей сохранятся.
Файлы устройств и разделы - > в файловую систему:
Каждому основному и расширенному разделу соответствует отдельный файл устройства. Существует соглашение для имен подобных файлов, которое состоит в добавлении номера раздела к имени файла самого диска. 1-4 разделы являются основными (вне зависимости от того, сколько существует основных разделов), а 5-8 - логическими (вне зависимости от того, к какому основному разделу они относятся). Например, /dev/hda1 соответствует первому основному разделу первого IDE-диска, а /dev/sdb7 третьему расширенному разделу второго SCSI-диска.
1. Для чего на жестком диске создаются разделы?
2. Где хранится информация о разделах жесткого диска?
3. Какую информацию хранит таблица разделов? К чему может привести ее искажение?
4. Что такое расширенный раздел?
5. Какие команды используются для деления жесткого диска на разделы?
6. Когда становится целесообразным создание разделов на жестком диске?
1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005
2. ??
Глава 4. Описание каталогов MOPSLinux
Эта глава описывает важные части стандарта Linux на дерево каталогов, основанного на стандарте файловых систем FSSTND. Он выделяет путь ветвления дерева каталогов в отдельных файловых системах с различными целями и дает необходимые пояснения. Также описаны некоторые альтернативные пути разбиения.
Общие сведения
Этот раздел основан на документе Linux filesystem standard, FSSTND, версии 1.2, который пытается установить стандарт на организацию дерева каталогов в Linux-системе. Такой стандарт имеет то преимущество, что будет проще писать или портировать программное обеспечение для Linux и управлять Linux-машинами, так как все будет находиться в строго определенных местах. Никто не заставляет следовать данному свободному стандарту, но стандарт имеет поддержку большинства, если не всех, дистрибутивов Linux. Не следует без крайне важных причин отказываться от поддержки FSSTND. FSSTND пытается следовать за традициями Unix и текущими тенденциями, делая тем самым Linux-системы совместимыми с другими Unix-системами, и наоборот.
Этот раздел не рассматривает FSSTND во всех деталях. Системный администратор должен также прочитать спецификации FSSTND для полного понимания.
В данном разделе дается краткий обзор с точки зрения файловой системы. Дальнейшая информация относительно каждого файла доступна в другом месте этого руководстве или на man-страницах.
Полное дерево каталогов разделено на части, каждая из которых может располагаться на своем диске или в своем разделе в интересах упрощения системного администрирования и резервирования. Это позволяет работать в случае недостатка места на дисках. Главные части дерева каталогов: файловые системы root, /usr, /var и /home (рис. 4.1). Каждая часть имеет свою цель. Дерево каталогов было разработано так, чтобы оно хорошо работало в сети Linux-машин, которые могут совместно использовать некоторые части файловых систем устройств только для чтения (например, CD-ROM), или сети с NFS.
Рисунок 1.12. Части дерева каталогов Unix.
Роли различных частей дерева каталогов описаны ниже.
q Корневая файловая система специфична для каждой машины (обычно она хранится на локальном диске, хотя это мог бы быть ramdisk или сетевой диск) и содержит файлы, которые являются необходимыми для загрузки системы. Содержимого корневой файловой системы достаточно для загрузки в однопользовательском режиме. Именно эта файловая система используется при загрузке до тех пор, пока не будут смонтированы другие файловые системы. Она также содержит инструментальные средства для ремонта поврежденной системы и для восстановления потерянных файлов из резервных копий.
q Файловая система /usr содержит все команды, библиотеки, man-страницы, исходные тексты и другие неизменяемые файлы, необходимые для нормальной работы системы. Никакие файлы в /usr не должны быть специфическими для любой конкретной машины, и при этом они не должны измениться при нормальном использовании. Это позволяет файлам быть разделенными по сети, что может быть практично, так как это сохраняет дисковое пространство (могут легко иметься сотни мегабайт в /usr) и упрощает администрирование (только машина, на которой хранится /usr, должна быть изменена при модификации прикладной программы, а не каждая машина отдельно). Даже если файловая система находится на локальном диске, она может быть установлена только для чтения, что уменьшит возможность искажения в случае отказа.
q Файловая система /var содержит файлы, которые изменяются в ходе работы системы. Например, там лежат каталоги буферов для почты, новостей, печати и т.п., файлы протоколов, форматированных man-страниц и временные файлы.
q Файловая система /home содержит все домашние каталоги пользователей системы, то есть, все реальные данные системы. Отделение пользовательских каталогов от системы упрощает резервирование данных. Если пользователей много, эта файловая система может быть разделена на несколько (например, /home/students и /home/teacher).
Хотя различные части выше были названы файловыми системами, это не значит, что они фактически находятся на отдельных дисках. Они могут храниться на одном диске, если речь идето небольшом сервере или личном однопользовательском компьютере. Дерево каталогов может быть также разделено по-другому, в зависимости от того, насколько большие диски использованы, и как распределено место на них для различных целей, тем не менее, важно, чтобы все стандартные имена работали; даже если, скажем, /var и /usr фактически на том же самом разделе, имена /usr/lib/libc.a и /var/log/messages должны работать, например, перемещая файлы из /var в /usr/var, и делая /var ссылкой на /usr/var.
Структура файловой системы в Unix группирует файлы по их назначению, то есть, все команды находятся в одном месте, все файлы данных в другом, документация в третьем и так далее. Альтернативный вариант группировал файлы согласно программе, которой они принадлежат, то есть, все Emacs-файлы были бы в одном каталоге, весь TeX в другом, и так далее. Проблема с последним подходом состоит в том, что это делает трудным совместно использовать файлы (каталог программ часто содержит статические, общие, изменяющиеся и личные файлы), и иногда даже находить файлы, например, man-страницы в огромном числе мест, благодаря чему поиск их программой просмотра сильно осложняется.
Корневая файловая система
Файловая система root должна быть небольших размеров, так как она содержит важные файлы и команды. Чем меньше объем файловой системы и чем реже она подлежит изменениям, тем меньше вероятность ее повреждения. Если система root повреждена, то обычно это означает, что начальная загрузка компьютера невозможна (кроме отдельных методов, например при помощи дискет).
Файловая система дистрибутива имеет архитектуру классической файловой системы ОС Linux с единым корневым каталогом, обозначаемым символом обратной косой черты ("слэш") - /.
Ниже приведено описание основных каталогов верхнего уровня.
/bin
В этом каталоге хранятся основные команды, необходимые пользователю для работы в системе. Например, такие как командные оболочки и команды файловой системы (ls, cp и т.д.). Каталог /bin обычно не изменяется после установки. Если изменяется, то обычно лишь при обновлениях пакетов программ, предоставленных разработчиками операционной системы.
/boot
В этом каталоге хранятся файлы, используемые загрузчиком ОС - LInux LOader
(LILO). Этот каталог так же практически не изменяется после установки.
/dev
В этом каталоге размещены описания устройств системы. В Linux всё
рассматривается, как файл, даже различные устройства, такие как
последовательные порты, жёсткие диски и сканеры. Для получения доступа к
определённому устройству, необходимо чтобы существовал специальный файл,
называемый device node. Все эти файлы находятся в каталоге /dev. Аналогично устроено большинство UNIX-подобных операционных
систем.
/etc
Этот каталог содержит файлы настроек: всё, от конфигурационных
файлов системы X Window, базы данных пользователей и до стартовых сценариев.
/home
В этом каталоге размещены домашние каталоги пользователей. MOPSLinux
является многопользовательской системой и каждому пользователю присваивается
имя и уникальный каталог для персональных файлов. Этот каталог называется
"home" (домашним) каталогом пользователя.
/lib
В этом каталоге находятся системные библиотеки, необходимые для основных
программ: библиотека C, динамический загрузчик, библиотека ncurses, модули ядра
и другое.
/lib/modules
Подгружаемые модули для ядра (например, сетевые драйверы или поддержка дополнительных файловых систем).
/lost+found
В этом каталоге сохраняются восстановленные части файловой системы. При
загрузке системы происходит проверка файловых систем на наличие ошибок. Для
исправления ошибок файловой системы запускается программа fsck.
/mnt
Этот каталог предоставляется как временная точка монтирования для жёстких
дисков, дискет, компакт-дисков или отключаемых устройств.
/opt
В этом каталоге размещаются дополнительные пакеты программ. Особенность
Linux в том, что все пакеты программ, устанавливаются в этот каталог, например /opt/<программный пакет>. В
последствии если этот пакет больше не будет нужен, то достаточно всего лишь
удалить соответствующий каталог. В дистрибутивах SlackWare и MOPSLinux
некоторые программы изначально поставляются в каталоге /opt (например, KDE - в /opt/kde).
/proc
Это специальный каталог не входящий в файловую систему. Каталог /proc представляет собой виртуальную
файловую систему, которая предоставляет доступ к информации ядра. Различная
информация, которую ядро может сообщить пользователям, находится в
"файлах" каталога /proc.
Например, в файле /proc/modules
находится список загруженных модулей ядра. А в файле /proc/cpuinfo - информация о процессоре компьютера.
/root
Это домашний каталог администратора, вместо /home/root. Это потому, что каталог /home может находиться в разделе, отличном от корневого (/) и если по
какой-то причине /home не может быть
подключён, то пользователь root вынужден будет войти в систему, чтобы решить
проблему. И если его домашний каталог на другом диске, то это усложнит вход в
систему.
/sbin
В этом каталоге хранятся основные программы, выполняемые пользователем root
а так же программы, выполняемые в процессе загрузки. Обычные пользователи не
могут пользоваться этими программами.
/tmp
Временное хранилище данных. Все пользователи имеют права чтения и записи в
этом каталоге.
/usr
Это один из самых больших каталогов в системе. Практически всё остальное
расположено здесь. Программы, документация, исходный код ядра и система X
Window. Именно в этот каталог, чаще всего, устанавливаются программы.
/var
В этом каталоге хранятся системные лог-файлы, кэш-файлы и файлы-замки
программ. Это каталог для часто меняющихся данных.
Каталог /etc
В этом каталоге содержится довольно много различных конфигурационных файлов. Некоторые из них рассмотрены ниже. Здесь также располагаются файлы, используемые для конфигурирования сети.
/etc/rc.d
Командные файлы, выполняемые при запуске системы или при смене ее уровня выполнения.
/etc/passwd
База данных пользователей, в которой содержится информация об имени пользователя, его настоящем имени, личном каталоге, зашифрованный пароль и другие данные. Формат этого файла рассмотрен в man-руководстве к команде passwd.
/etc/fdprm
Таблица параметров флоппи-дисковода, определяющая формат записи. Устанавливается программой setfdprm.
/etc/fstab
Список файловых систем, автоматически монтируемых во время запуска системы командой mount -a (она запускается из командного файла /etc/rc.d/rc.S). Здесь также содержится информация о swaр-областях, автоматически устанавливаемых командой swapon -a.
/etc/group
Подобен файлу /etc/рasswd, только здесь содержится информация о группах, а не о пользователях.
/etc/inittab
Конфигурационный файл демона init.
/etc/issue
Выводится программой getty перед приглашением login. Обычно здесь содержится краткое описание системы.
/etc/magic
Конфигурационный файл команды file. Содержит описания различных форматов файлов, опираясь на которые эта команда определяет тип файла. Также см. руководства к magic и file.
/etc/motd
Сообщение дня, автоматически выводится при успешном подключении к системе. Часто используется для информирования пользователей об изменениях в работе системы. Немного напоминает "совет дня" в Windows.
/etc/mtab
Список смонтированных на данный момент файловых систем. Изначально устанавливается командными файлами при запуске, а затем автоматически модифицируется командой mount. Используется при необходимости получения доступа к смонтированным файловым системам (например, командой df).
/etc/shadow
Теневая база данных пользователей. При этом информация из файла /etc/рasswd перемещается в /etc/shadow, который недоступен для чтению никому, кроме пользователя root. Это усложняет взлом системы.
/etc/login.defs
Конфигурационный файл команды login.
/etc/printcap
То же, что и /etc/termcap, только используется при работе с принтером.
/etc/profile
Этот командный файл выполняется оболочкой Bourne Shell при запуске системы, что позволяет изменять системные установки для всех пользователей.
/etc/securetty
Определяет терминалы, с которых может подключаться к системе пользователь root. Обычно это только виртуальные консоли, что усложняет взлом системы через модем или сеть.
/etc/shells
Список рабочих оболочек. Команда chsh позволяет менять рабочую оболочку только на оболочки, находящиеся в этом файле. Процесс ftрd, предоставляющий работу с FTР, проверяет наличие оболочки пользователя в файле /etc/shells и не позволяет пользователю подключится к системе, пока ее имя не будет найдено в этом файле.
/etc/termcap
База данных совместимости терминалов. Здесь находятся escape-последовательности для различных типов терминалов, что позволяет работать программам на разных типах терминалов.
Каталог /dev
В этом каталоге находятся файлы устройств. Названия этих файлов соответствуют специальным положениям, рассмотренным в списке устройств (Device list). Файлы устройств создаются во время установки системы, а затем с помощью скрипта /dev/MAKEDEV. Файл /dev/MAKEDEV.local используется при создании локальных файлов устройств или ссылок (т.е. тех, что не соответствуют стандарту MAKEDEV).
Каталог /usr
Обычно файловая система /usr достаточно большая по объему, так как многие программы установлены именно здесь. Вся информация в каталоге /usr помещается туда во время установки системы. Отдельно устанавливаемые пакеты программ и другие файлы размещаются в каталоге /usr/local. Некоторые подкаталоги системы /usr рассмотрены ниже (для более подробной информации см. описание стандарта FSSTND).
/usr/X11R6
Все файлы, используемые системой X Window. Для упрощения установки и администрирования, файлы системы X Window размещаются в отдельной структуре каталогов, которая находится в /usr/X11R6 и идентична структуре /usr.
/usr/bin
Практически все команды, хотя некоторые находятся в /bin или в /usr/local/bin.
/usr/sbin
Команды, используемые при администрировании системы и не предназначенные для размещения в файловой системе root (например, здесь находится большинство программ-серверов).
/usr/man, /usr/info, /usr/doc
Файлы man-руководств, документации GNU Info и другая документация.
/usr/include
Подключаемые файлы библиотек для языка С.
/usr/src
Исходные тексты программ, установленных в системе, в том числе ядра Linux.
/usr/lib
Неизменяемые файлы данных для программ и подсистем, включая некоторые конфигурационные файлы. Имя lib происходит от library (библиотека); первоначально библиотеки подпрограмм для программирования хранились в /usr/lib.
/usr/local
Здесь размещаются отдельно устанавливаемые пакеты программ и другие файлы.
Каталог /var
Эта файловая система содержит файлы, изменяемые при нормально работающей системе. Она специфична для каждого компьютера и не может быть разделена в сети между несколькими машинами.
/var/man/cat*
Временный каталог для форматируемых страниц руководств. Источником этих страниц является каталог /usr/man/man*. Некоторые руководства поставляются в отформатированном виде. Они располагаются в /usr/man/cat*. Остальные руководства перед просмотром должны быть отформатированы. Затем они помещаются в каталог /var/man и при повторном просмотре в форматировании не нуждаются. Каталог /var/man/cat часто очищается, таким же образом, как и прочие временные каталоги.
/var/lib
Файлы, изменяемые при нормальном функционировании системы.
/var/local
Изменяемые данные для программ, установленных в /usr/local (то есть, программы которые были установлены администратором системы). Обратите внимание, что даже в местном масштабе установленные программы должны использовать другие /var каталоги, например, /var/lock.
/var/lock
Файлы-защелки. Многие программы при обращении к какому-либо файлу устройства создают здесь файл-защелку. Другие программы при обращении к какому-либо устройству сначала проверяют наличие файла-защелки в этом каталоге, а затем уже производят доступ к этому устройству.
/var/log
Журнальные файлы различных программ, в особенности login (/var/log/wtmр, куда записываются все подключения и выходы из системы) и syslog (/var/log/messages, где обычно хранятся все сообщения ядра и системных программ). Файлы из /var/log необходимо регулярно удалять, иначе разрастутся сверх всякой меры.
/var/run
Файлы, информация в которых соответствует действительности только до очередной перезагрузки системы. Например, файл /var/run/utmp содержит информацию о пользователях, подключенных к системе в данный момент.
/var/spool
Каталоги, используемые для хранения почты, новостей, очереди для принтера, а также для других задач. Для каждой задачи существует отдельный каталог в /var/spool, например, почтовые ящики пользователей хранятся в /var/spool/mail.
/var/tmp
Каталог для временных файлов, размер которых достаточно велик или время существования которых больше, чем в /tmp. Хотя администратор системы не должен бы держать очень уж старые файлы в /var/tmp.
Каталог /proc
Файловая система /proc является виртуальной и в действительности она не существует на диске. Ядро создает ее в памяти компьютера. Система /proc предоставляет информацию о системе (изначально только о процессах - отсюда ее название). Некоторые наиболее важные файлы и каталоги рассмотрены ниже. Более подробную информацию о структуре и содержании файловой системы /proc можно найти в man-руководстве к proc.
/proc/1
Каталог, содержащий информацию о процессе номер 1. Для каждого процесса существует отдельный каталог в /proc, именем которого является его числовой идентификатор.
/proc/cpuinfo
Информация о процессоре, такая как тип процессора, его модель, производительность и др.
/proc/devices
Список драйверов устройств, встроенных в действующее ядро.
/proc/dma
Задействованные в данный момент каналы DMA.
/proc/filesystems
Файловые системы, встроенные в ядро.
/proc/interruрts
Задействованные в данный момент прерывания.
/proc/ioports
Задействованные в данный момент порты ввода/вывода.
/proc/kcore
Отображение физической памяти системы в данный момент. Размер этого файла точно такой же, как и у памяти компьютера, только он не занимает места в самой памяти, а генерируется на лету при доступе к нему программ. Однако при копировании этого файла куда-либо, он не займет места на диске.
/proc/kmsg
Сообщения, выдаваемые ядром. Они также перенаправляются в syslog.
/proc/ksyms
Таблица символов ядра.
/proc/loadavg
Ориентировочная загруженность системы.
/proc/meminfo
Информация об использовании памяти, как физической, так и swap-области.
/proc/modules
Список модулей ядра, загруженных в данный момент.
/proc/net
Информация о сетевых протоколах.
/proc/self
Символическая ссылка к каталогу процесса, пытающегося получить информацию из /proc. При попытке двух различных процессов получить какую-либо информацию в /proc, они получают ссылки на различные каталоги. Это облегчает доступ программ к собственному каталогу процесса.
/proc/stat
Различная статистическая информация о работе системы.
/proc/uptime
Время, в течение которого система находится в рабочем состоянии.
/proc/version
Версия ядра.
Хотя многие файлы имеют обычный текстовый формат, некоторые из них имеют собственный. Существует много программ, которые не только преобразуют такие файлы в формат, доступный для чтения, но и предоставляют некоторые функции. Например, программа free считывает файл /proc/meminfo и преобразует значения, указанные в байтах, в килобайты (а также предоставляет некоторую дополнительную информацию).
1. Назовите главные части дерева каталогов.
2. Каковы основные свойства корневой файловой системы?
3. Какую информацию содержит файловая система /usr?
4. Какие файлы содержит файловая система /var?
5. Какую информацию содержит файловая система /home?
6. В каком каталоге хранится большинство конфигурационных файлов?
Литература
1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005
2. ??
Глава 5. Сценарии инициализации
системы
Файлы, выполняемые системой при её инициализации, хранятся в каталоге /etc/rc.d. Дистрибутив использует расположение сценариев инициализации в стиле BSD. Каждое задание или runlevel (уровень загрузки) имеет свой rc-файл. Таким образом, получается организованная структура, которой легко пользоваться.
Есть несколько категорий сценариев инициализации. Начальная загрузка системы, уровни загрузки, инициализация сети и SystemV-совместимые.
Начальная загрузка системы
Первая программа, запускаемая в системе после ядра Linux - это init(8). Эта программа читает файл /etc/inittab(5), чтобы узнать, как загружать систему. Запускает сценарий /etc/rc.d/rc.S для подготовки перед переключением на выбранный уровень загрузки (runlevel). Файл rc.S активизирует виртуальную память, подключает файловые системы, очищает определённые каталоги, инициализирует устройства Plug and Play, загружает модули ядра, настраивает PCMCIA-устройства, активизирует последовательные порты и запускает загрузочные сценарии SystemV (если таковые присутствуют). Скрипт rc.S выполняет много задач самостоятельно, но также до завершения своей работы, он вызовет сценарии из каталога /etc/rc.d, представленные в табл. 2.1.
Таблица 1.2. Сценарии из каталога /etc/rc.d
Скрипт |
Описание |
rc.S |
Это и есть скрипт инициализации |
rc.modules |
Загружает такие модули ядра, как поддержка сетевой карты, PPP и другие. Если сценарий находит rc.netdevice, то он выполнит и его |
rc.pcmcia |
Проверяет наличие и настраивает все PCMCIA устройства, присутствующие в системе. Это наиболее полезно для пользователей портативных компьютеров, у которых, наверняка есть PCMCIA модем или сетевая карта |
rc.serial |
Настраивает последовательные порты, запуская соответствующие команды setserial |
rc.sysvinit |
Ищет инициализационные сценарии SystemV, соответствующие выбранному уровню загрузки и выполняет их |
Уровни выполнения системы
Уровни выполнения являются режимами работы init и определяют выполняемые системные процессы и предоставляемые сервисы. Уровни выполнения обозначаются номерами (табл. 4.3). Нет единого мнения по поводу использования определяемых администратором уровней выполнения (2-5). Одни системные администраторы настраивают разные уровни выполнения для разных вариантов работы системы, другие ограничиваются одним вариантом, и не меняют уровни выполнения вовсе. Разные дистрибутивы Linux поставляются с разными настройками. Обычно выбор определяется предпочтениями администратора или пользователя.
Таблица 1.3. Уровни выполнения
Уровни |
Назначение |
0 |
Выключение системы. |
1 |
Однопользовательский режим (для администрирования в сложных случаях). |
2-4 |
Нормальная работа (настраивается администратором). |
5 |
Нормальная работа (запускается X Window System). |
6 |
Перезагрузка. |
Уровни выполнения настраиваются в /etc/inittab строками вида:
l2:2:wait:/etc/rc.d/rc.S
Первое поле является меткой-идентификатором. Второе определяет, что данная строка применима только для уровня выполнения 2. Третье определяет, что init должен выполнить команду в четвертом поле только один раз и ждать (при переходе на данный уровень) и подождать ее выполнения. Скрипт /etc/rc.d/rc.S выполняет все команды для запуска и остановки сервисов, работающих на уровне выполнения 2.
Команда в четвертом поле выполняет все работы по переходу на уровень 2. Она запускает сервисы, которые еще не запущены, и завершает сервисы, которые на данном уровне работать не должны. Как именно производится вся настройка зависит от дистрибутива Linux.
Когда init запускается, он ищет в /etc/inittab строку, в которой указан уровень выполнения, указанный по умолчанию:
id:2:initdefault:
Можно указать, чтобы init при запуске установил не уровень выполнения по умолчанию, передав при загрузке в качестве параметра аргумент single или emergency. Ядерные параметры командной строки могут быть переданы, например, через LILO. Это позволяет выбрать, например, однопользовательский режим (уровень выполнения 1).
Когда система работает, можно поменять уровень выполнения командой telinit. При смене уровня выполнения, init выполнит соответствующие команды из файла /etc/inittab.
Инициализационные сценарии уровней загрузки
После того, как инициализация системы завершена, init переходит к инициализации уровня загрузки. Уровень загрузки определяет, в каком режиме будет работать компьютер: в многопользовательском (multiuser logins) режиме или только в однопользовательском (single user), требуются ли сетевые сервисы и будет ли использоваться X Window или agetty(8) для управления входом в систему (logins). Файлы, приведённые ниже, определяют разные уровни загрузки.
q rc.0 - выключает систему (runlevel 0). По умолчанию, это символическая ссылка на файл rc.6;
q rc.4 - многопользовательский запуск (runlevel 4), но в X11 с KDM в качестве менеджера входа в систему;
q rc.6 - перезагружает систему (runlevel 6);
q rc.K - запуск в однопользовательском режиме (runlevel 1);
q rc.M - многопользовательский режим (runlevel 2 и 3), но со стандартным текстовым входом (login) - используется по умолчанию.
Инициализация сети
Уровни загрузки 2, 3 и 4 запустят сетевые сервисы. Следующие файлы осуществляют инициализацию сети:
q rc.inet1 - файл, созданный программой netconfig, обеспечивает настройку сетевого интерфейса;
q rc.inet2 - выполняется после rc.inet1 и запускает основные сетевые сервисы;
q rc.httpd - запускает вэб-сервер Apache;
q rc.samba - запускает Samba-сервис.
Совместимость с SystemV
Многие дистрибутивы Linux используют этот формат вместо формата BSD. В этом стиле каждому уровню загрузки предоставляется каталог для сценариев, а в BSD-стиле каждому уровню загрузки соответствует только один сценарий.
Скрипт rc.sysinit произведёт поиск всех сценариев SystemV в каталоге /etc/rc.d и выполнит их, если уровень загрузки соответствующий. Это полезно, если используются коммерческое программное обеспечение, которое устанавливает сценарии SystemV, в то же время, можно пользоваться и сценариями BSD.
Другие файлы
Сценарии, описанные ниже - это все остальные загрузочные сценарии. Они обычно выполняются одним из вышеперечисленных основных сценариев, таким образом, всё, что необходимо сделать для изменения настроек, это отредактировать содержание соответствующих файлов.
q rc.gpm запускает сервис основной поддержки <мыши> (general purpose mouse). Это позволит копировать и вставлять текст в консоли;
q rc.font загружает пользовательский экранный шрифт для режима командной строки;
q rc.local содержит всю специфическую загрузочную информацию для конкретной системы. В только что установленном дистрибутиве этот файл пуст. Он зарезервирован для использования администратором системы. При загрузке этот сценарий выполняется в последнюю очередь.
Для активизации сценария достаточно добавить ему разрешение на выполнение при помощи программы chmod. Чтобы выключить сценарий, необходимо удалить разрешение на выполнение соответствующего файла.
Процесс init
Эта глава описывает процесс init, который является первым процессом уровня пользователя, запускаемым ядром. init имеет много важных режимов работы, таких как запуск getty (чтобы пользователи могли войти в систему), изменение уровня выполнения системы и удаление ненужных процессов. Эта глава объясняет, как настроить init и как можно менять и использовать различные уровни выполнения.
Процесс init запускается первым
init является одной из тех программ, которые абсолютно необходимы для системы Linux. Дистрибутивы Slackware/MOPSLinux поставляются с настройками для init, которые подходят для большинства систем.
Когда ядро запущено (загружено в память, получило управление и инициализировало все драйверы устройств и структуры), оно запускает программу уровня пользователя. Первой такой программой всегда является именно init. Таким образом, init всегда является первым процессом (номер процесса всегда 1).
Ядро ищет init в нескольких местах, в которых он располагается по традиции. В системах Slackware/MOPSLinux обычно используется имя /sbin/init. Если ядро не нашло init, оно пробует запустить /bin/sh. Если и тут происходит неудача, система выдает ошибку и останавливается.
Когда init запущен, он завершает процесс загрузки системы и выполняет ряд административных задач, таких как проверка файловых систем, очистка каталога /tmр, запуск различных сервисов и запуск процесса getty для каждого терминала и виртуальной консоли откуда пользователи могут входить в систему.
После нормального запуска системы init перезапускает getty для каждого терминала после того, как пользователь завершил работу с системой (чтобы следующий пользователь мог зарегистрироваться в системе). init также перехватывает ничейные процессы: когда процесс запускает порожденный процесс и завершает работу до своего потомка, его потомок немедленно становится порожденным из init. Это важно по различным техническим причинам. Имеется несколько вариантов init.
Настройка init для запуска getty: файл настроек /etc/inittab
При запуске системы init читает файл настроек /etc/inittab. Когда система уже работает, он перечитает данный файл при получении сигнала HUP. Такое свойство избавляет от необходимости перезагружать систему, чтобы сделать изменения конфигурации актуальными для init.
Файл /etc/inittab устроен довольно просто. Каждая строка в файле состоит из четырех полей, разделенных двоеточиями:
id:runlevels:action:process
Поля описаны ниже. Кроме таких строк файл /etc/inittab может содержать пустые строки и строки комментариев, начинающиеся со знака `#'; такие строки игнорируются системой.
id
Определяет строку в файле. Для строк настройки getty, указывает терминал, на котором будет запущена данная копия (символ после /dev/tty в имени файла устройства). Для других строк данное значение особого значения не имеет и нужно только для выполнения требований формата файла. Значение в данной позиции должно быть уникальным для каждой строки!
runlevels
Уровни выполнения, на которых данная строка рассматривается. Каждый уровень выполнения задается одной цифрой без разделителей.
action
Задает действие, которое должно быть выполнено, например resрawn для того, чтобы выполнить команду в следующем поле многократно или once, чтобы выполнить команду только один раз.
рrocess
Выполняемая команда.
Для запуска getty на первом виртуальном терминале (/dev/tty1), на всех нормальных многопользовательских уровнях выполнения (2-5), применяется строка:
1:2345:resрawn:/sbin/getty 9600 tty1
Первое поле строки указывает, что это строка для устройства /dev/tty1. Второе поле говорит, что это применяется к уровням выполнения 2, 3, 4 и 5. Третье поле означает, что команда должна выполняться многократно (кто-то зашел, вышел и снова зашел в систему с терминала). Последнее поле указывает команду, которая выполняет getty на первом виртуальном терминале.
Если нужно добавить терминалы или телефонные линии с модемами для доступа к системе, следует добавить строки в /etc/inittab по одной на каждый терминал или модемную линию.
Если команда при запуске терпит неудачу, а init сконфигурирован на ее перезапуск, то будет занято много ресурсов системы постоянными перезапусками команды. Во избежание такой ситуации init хранит протокол перезапусков команды, и если частота перезапусков слишком высока, делает паузу в 5 минут перед очередным перезапуском команды.
Специальные настройки в файле /etc/inittab
Файл /etc/inittab имеет особые возможности взаимодействия с init в сложных случаях. Строки для таких возможностей помечены специальными ключевыми словами и имеют по три, а не по четыре поля. Примеры:
рowerwait
Передает init сигнал на начало завершения работы системы по причине сбоев в сети питания. Выдается при совместном использовании UPS и программ, которые наблюдают за состоянием UPS и информируют init об отключении внешнего питания.
ctrlaltdel
При нажатии клавиш <ctrl-alt-del> в консоли, дает команду init перезагрузить систему. Администратор может поменять реакцию на нажатие <ctrl-alt-del>, например, на игнорирование или запуск какой-либо произвольной программы.
рoweerok
Если при получении состояния рowerwait питание восстановилось, будет отработано данное состояние. Полезно для возвращения к нормальной работе, если система еще не успела завершить все процессы.
sysinit
Команда, выполняемая при запуске системы. Например, может чистить каталог /tmр.
Данный список не отличается полнотой. Обратитесь к man-руководству на файл inittab за подробностями.
Загрузка в однопользовательском режиме
Очень важный уровень выполнения - первый (однопользовательский режим), в котором системный администратор использует только необходимый минимум системных средств. Данный уровень выполнения нужен при выполнении особо важных задач системного администрирования, таких как запуск fsck на файловой системе /usr, для чего данную файловую систему надо размонтировать.
Запущенная система может быть переведена в однопользовательский режим командой telinit с запросом уровня выполнения 1. При загрузке он может быть установлен передачей ядру в командной строке параметра single или emergency. В этом случае init не будет использовать уровень выполнения, заданный по умолчанию.
Загрузка в однопользовательском режиме иногда необходима чтобы выполнить вручную fsck, прежде чем что-нибудь смонтируется или как-то иначе коснется поврежденного раздела (любое действие на разбитой файловой системе, вероятно, разорвет ее еще больше, так что fsck должен быть выполнен как можно скорее).
Стартовый скрипт init автоматически запускает систему в однопользовательском режиме, если fsck при загрузке выявил ошибки на дисках. Такая мера предосторожности защищает те файловые системы, которые fsck не смог исправить самостоятельно. Такая поломка относительно редка, и обычно включает разбитый жесткий диск или экспериментальное ядро.
Как мера защиты, правильно сконфигурированная система будет спрашивать root-пароль перед запуском оболочки в однопользовательском режиме. Иначе, было бы просто только ввести подходящую строку в LILO, чтобы войти как root. С другой стороны, если файл /etc/рasswd поврежден в результате дисковых сбоев, такой подход принесет неприятности.
1. Перечислите существующие категории сценариев инициализации.
2. Какая программа запускается в системе первой после ядра Linux, и какие функции она выполняет?
3. Назовите уровни выполнения системы и их назначение.
4. На каком этапе происходит инициализация уровней загрузки?
5. Для чего используется SystemV?
6. Каковы основные функции процесса init?
7. Для чего используется первый уровень выполнения?
Литература
1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005
2. ??
//Часть II. Настройка основных служб и сервисов
Глава 6. Управление учетными записями
В этой главе описано, как создать новых пользователей, как изменить их свойства и как удалить пользователей. Различные Linux-системы имеют различные инструментальные средства для выполнения этих действий. В этой главе приведены описания работы со следующими утилитами:
adduser - добавление учетной записи пользователя;
userdel(8) - удаление учетной записи пользователя;
chfn(1) - изменение finger;
chsh(1) - изменение оболочки;
passwd(1) - создание и изменение паролей пользовталей;
groupadd(8) - создание групп пользователей;
groupdel(8) - удаление групп пользователей;
groupmod(8)
mkdir - создание каталогов.
В главе также приведены основные сведения для работы со следующими конфигурационными файлами:
/etc/passwd(5) - описания пользователей;
/etc/shadow(5) - описания паролей;
/etc/group(5) - описания групп.
Общие сведения об учетных записях
Когда компьютер используется многими людьми, необходимо разделение между пользователями так, чтобы их личные файлы могли храниться порознь. Это важно, даже если компьютер используется только одним человеком. Таким образом, каждый пользователь имеет уникальное имя username. Иногда это имя обозначают login или сетевое имя - единого термина на русском языке здесь нет. Это имя используется для доступа к системе. По нему система может однозначно определить, с кем именно она имеет дело в настоящий момент.
Учетная запись больше, чем просто имя пользователя. С учетной записью связаны все файлы, ресурсы и информация, принадлежащая одному пользователю. Каждый пользователь имеет доступ к конкретным ресурсам системы - времени процессора, месту на диске, установленному программному обеспечению, сетевым ресурсам.
Работа с учетными записями
Средства для управления учетными записями входят в комплект вспомогательных сценариев и утилит, поставляемых с дистрибутивом. Для работы непосредственно с учетными записями предназначаются такие утилиты, как adduser, userdel(8), chfn(1), chsh(1) и passwd(1). А для работы с группами - groupadd(8), groupdel(8) и groupmod(8). За исключением chfn, chsh и passwd, все перечисленные утилиты могут выполняться только пользователем root и, поэтому, расположены они в каталоге /usr/sbin. Утилиты chfn, chsh и passwd могут быть выполнены кем угодно и расположены они в каталоге /usr/bin.
Создание учетной записи
Добавить учетную запись пользователя можно при помощи утилиты adduser. Утилита выполняется в диалоговом режиме. При создании учетных записей, можно использовать варианты ответов, предлагаемые утилитой по умолчанию, которые приводятся в квадратных скобках.
#adduser
Login name for new user (8 characters or less) []: jellyd
В ответ на этот запрос необходимо указать имя, которое пользователь будет использовать для входа в систему, оно должно состоять из восьми или менее символов. Обычно используются только строчные (маленькие) буквы, но можно пользоваться и прописными (большими) буквами.
User id for jellyd [ defaults to next available]:
В ответ на этот запрос необходимо указать идентификатор (UID) пользователя. На самом деле это идентификатор, с помощью которого в системе Linux определяется принадлежность файлов. Каждый пользователь системы имеет уникальный номер, начиная с 1000. Можно выбрать UID для нового пользователя, или просто позволить утилите adduser автоматически присвоить пользователю следующий свободный номер.
Initial group for jellyd [users]:
Все пользователи по умолчанию попадают в группу users. В системе имеется возможность создать отдельную группу для каждого из пользователей, но это не рекомендуется.
Additional groups for jellyd (seperated with commas, no spaces) []:
В этом запросе предлагается добавить пользователя в дополнительные группы. Один пользователь может числиться в нескольких группах. Это полезно, если предусмотрены разные группы для разных задач, например, для изменения файлов вэб-сайта, для игр и т. д.
Jellyd's home directory [/home/jellyd]:
В ответ на этот запрос необходимо уточнить, где должен располагаться домашний каталог пользователя. Домашние каталоги по умолчанию располагаются в каталоге /home. При работе в очень большой системе может возникнуть необходимость разместить домашние каталоги в другом месте. Так же имеется возможность заблокировать пользователя, указав его домашним каталогом /usr/bin/false, но пользоваться этим способом не рекомендуется.
Jellyd's shell [/bin/bash]:
В этом запросе предлагается определиться с командной оболочкой для пользователя. Имеется возможность поменять оболочку сразу, или же пользователь сделает это позже самостоятельно при помощи команды chsh. По умолчанию в системе используется оболочка BASH.
Jellyd's account expiry date (YYYY-MM-DD) []:
В ответ на этот запрос можно задать дату, после которой пользователь не будет больше иметь доступа к системе. По умолчанию, это бесконечность. Например, эта опция может быть полезна для Интернет-провайдеров (ISP), если они хотят создать пользователя до определенной даты, пока не получат плату за следующий год.
OK, I'm about to make a new account. Here's
what you entered so far:
New login name: jellyd
New UID: [Next available]
Initial group: users
Additional groups: [none]
Home directory: /home/jellyd
Shell: /bin/bash
Expiry date: [no expiration]
This is it... if you want to bail out, hit Control-C.
Otherwise, press ENTER to go ahead and make the account.
В конце утилита отображает всю введенную информацию и, если что-то не так, то можно отменить введенные данные, нажав комбинацию клавиш <Ctrl>+<C> и начать все сначала. Для создания пользователя с введенными параметрами необходимо нажать на клавишу <Enter>.
Making new account...
Changing the user information for jellyd
Enter the new value, or press return for the default
Full Name []: Jeremy
Room Number []: Smith 130
Work Phone []:
Home Phone []:
Other:
Вся эта информация дополнительная и предназначена для утилиты finger. Эти поля можно оставить пустыми. Пользователь также может изменить эту информацию в любой момент при помощи команды chfn. Но может быть полезным указать, по крайней мере, имя и телефон, на тот случай, если потребуется с ним связаться. Подробную информацию см. в разд. "Изменение информации о пользователе" данной главы.
Changing password for jellyd
Enter the new password (minimum of 5, maximum of 127 characters)
Please use a combination of upper and lower case letters and numbers.
New password:
Re-enter new password:
Password changed.
Done...
При этом придется ввести пароль для нового пользователя. Если новый пользователь не присутствует при создании учетной записи, то необходимо просто указать какой-то пароль по умолчанию и предложить пользователю поменять его самостоятельно. Подробную информацию о временной блокировке учетной записи и смене пароля пользователя см. в разд. "Изменение паролей" данной главы.
Выбор надежного пароля это первый шаг по защите системы от взлома. Пароль не должен быть легко угадываемым, так как в этом случае шансы несанкционированного проникновения в систему возрастают. Идеальный пароль это случайный набор символов, включая большие и маленькие буквы, числа и другие символы. Необходимо помнить, что клавишу <Tab> лучше не использовать, так как разными системами она трактуется по-разному, и при удаленном доступе могут возникнуть проблемы.
Удаление учетной записи
Удалить учетную запись пользователя можно при помощи утилиты adduser. Для удаления учетной записи необходимо просто ввести команду userdel и имя пользователя. При этом необходимо убедиться, что пользователь в этот момент не зарегистрирован в системе и что нет процессов, запущенных от его имени. Необходимо помнить, что удаление учетной записи происходит безвозвратно.
#userdel jellyd
После выполнения этой команды, учетная запись пользователя jellyd будет удалена из системы. Команда удаляет записи о пользователе из файлов /etc/passwd и /etc/group, но не удалит его домашний каталог. Если требуется удалить и домашний каталог, то необходимо выполнить следующую команду:
#userdel -r jellyd
Создание и удаление групп
Утилиты для создания и удаления групп очень просты в использовании. Утилита groupadd просто создаст еще одну группу в файле /etc/group с уникальным идентификатором, а groupdel удалит указанную группу. Пользователи в созданную группу добавляются путем редактирования файла /etc/group.
Пример создания группы:
#groupadd cvs
Пример удаления группы:
#groupdel cvs
Корректировка конфигурационных файлов пользователей и групп
Добавлять и удалять учетные записи и группы можно как с помощью утилит, так и вручную. Для добавления вручную необходимо выполнить процедуры описанные ниже.
Вначале добавление нового пользователя в файлы /etc/passwd(5), /etc/shadow(5) и /etc/group(5). Файл passwd содержит некоторую информацию о пользователе, но не содержит их паролей. Этот файл должен быть доступен для чтения всем пользователям, но недопустимо, чтобы пароли, даже закодированные, были доступны для чтения всем, так как это будет огромной помощью злоумышленникам. Поэтому закодированные пароли хранятся в теневом файле, который доступен для чтения только пользователю root, а в файле passwd пароли пользователей отображаются, как x. Файл group содержит список всех групп, и данные о том кто из пользователей к каким группам относится.
Типичная строка файла /etc/passwd выглядит таким образом:
chris:x:1000:100:Chris Lumens,Room 2,,:/home/chris:/bin/bash
Каждая строка, соответствует пользователю. Поля в каждой линии разделены двоеточием и имеют следующие значения (слева направо):
q имя для входа в систему;
q закодированный пароль (x для всех в системе, так как используется пакет для теневых файлов паролей);
q ID пользователя;
q ID группы;
q дополнительная информация о пользователе, разделенная запятыми;
q домашний каталог;
q оболочка.
Для добавления пользователя необходимо добавить в конец файла строку, заполнив все перечисленные поля значениями, соответствующими новому пользователю.
Пароль, ID пользователя должны быть уникальными, и пользователь должен входит в группу 100 (users).
Типичная строка файла /etc/shadow выглядит следующим образом:
chris:$1$w9bsw/N9$UWLr2bRER6YyBS.CAEp7R.:11055:0:99999:7:::
Как и в предыдущем случае, каждая строка соответствует одному пользователю, поля разделены двоеточием и имеют следующие значения:
q имя входа в систему;
q закодированный пароль;
q количество дней от 1 января 1970 г. до дня, когда пароль был изменен последний раз;
q количество дней, после которых пароль может быть изменен;
q количество дней, после которых пароль должен быть изменен;
q количество дней до истечения срока действия учетной записи;
q время, когда пользователь получит сообщение о закрытии его учетной записи;
q дни после истечения срока действия учетной записи, после которых учетная запись полностью блокируется;
q количество дней от 1 января 1970 г., по истечению которых учетная запись должна быть заблокирована;
q зарезервированное поле.
Как следует из описания, в строке в основном содержится информация по срокам действия учетной записи. Если информация об истечении срока действия учетной записи в системе не используется, то достаточно только заполнить некоторые из полей со специальными значениями. При создании учетной записи, в поле пароля можно вписать произвольные символы, кроме двоеточия. Поле "количество дней, с момента изменения пароля" можно оставить пустым. Можно ввести значения 0, 99999 и 7 как это указанно в примере выше (в те же поля) и оставить остальные поля пустыми.
Все создаваемые учетные записи по умолчанию добавляются в группу users. Если нужно создать новую группу или добавить учетную запись в группу отличную от users, то необходимо отредактировать файл /etc/group. Вот типичная строка файла:
cvs::102:chris,logan,david,root
Поля: имя группы, пароль группы, ID группы и члены группы. Создание новой группы, это всего лишь добавление в этот файл еще одной строки, с уникальным ID и указанием списка пользователей, которые должны быть включены в группу. Чтобы изменения вступили в силу, пользователи, если они в данный момент в системе, вынуждены будут выйти и снова войти в систему.
Чтобы создать пароль для вновь созданного пользователя необходимо вернуться к утилите passwd. Затем воспользоваться утилитой mkdir, чтобы создать домашний каталог там, где было указано в файле /etc/passwd.
Если в системе установлен sendmail(8), то необходимо будет создать новый файл с соответствующими правами, принадлежащий новому пользователю в каталоге /var/spool/mail. Например:
#touch /var/spool/mail/jellyd
#chown jellyd.users /var/spool/mail/jellyd
#chmod 660 /var/spool/mail/jellyd
Эти команды создадут файл очереди почты (mailspool-файл) для нового пользователя jellyd и установят правильные права и принадлежность файла.
Для удаления учетной записи, необходимо просто удалить все, что было введено при создании: упоминания о пользователе в /etc/passwd и /etc/group; его login-имя во всех группах в /etc/group; его очередь почты, если таковая имеется; если есть необходимость - домашний каталог пользователя.
Для удаления группы из файла /etc/group удаляется строка, определяющая группу.
Изменение паролей
Утилита passwd изменяет пароль, модифицируя файл /etc/shadow. Этот файл содержит все пароли системы в закодированной форме. Для изменения собственного пароля пользователю необходимо выполнить:
$ passwd
Old password:
Enter the new password (minumum of 5, maximum of 127 characters)
Please use a combination of upper and lower case letters and numbers.
New password:
Сначала утилита просит ввести старый пароль, затем пользователь должен ввести новый пароль. В случае если пароль не удовлетворяет требованиям безопасности, утилита passwd выведет сообщение с предупреждением. При желании это сообщение можно проигнорировать. Затем будет предложено снова ввести пароль для подтверждения.
Пользователь root может изменить пароль любого пользователя:
# passwd ted
В этом случае, процедура будет та же, за исключением того, что не понадобится указывать старый пароль. Это одно из преимуществ пользователя root.
Если в системе есть пользователи, которые ведут себя некорректно, можно временно заблокировать их учетные записи. Позже можно будет опять активизировать их. Как блокировка, так и последующее включение пользователя, могут быть произведены при помощи утилиты passwd. Чтобы отключить учетную запись, пользователь root должен выполнить следующее:
# passwd -l david
Это изменит пароль пользователя david на что-то, что не может быть подобрано. Для возвращения пользователя, потребуется выполнить следующее:
# passwd -u david
Теперь учетная запись пользователя david опять заработает, как и раньше. Приостановка учетной записи может быть полезна, если пользователь нарушает правила, установленные в системе.
Изменение информации пользователя
Пользователи могут поменять в любой момент времени свою оболочку и свою finger-информацию. В системе для этого предусмотрены утилиты chsh (от англ. change shell - изменить оболочку) и chfn (от англ. change finger - изменить finger).
Пользователь может выбрать любую из оболочек, перечисленных в файле /etc/shells. Для большинства пользователей оболочка BASH будет идеальным выбором, но кто-то может использовать другие оболочки, заимствованные из других UNIX-систем. Например:
$ chsh
Password:
Changing the login shell for chris
Enter the new value, or press return for the default
Login Shell [/bin/bash]:
После ввода пароля необходимо ввести полный путь к новой оболочке, которая должна быть в числе перечисленных в файле /etc/shells(5). Пользователь root может также изменить оболочку другого пользователя, указав как аргумент утилите chsh имя пользователя.
Finger-информация - это необязательная информация. Она содержит такие поля, как полное имя, номер телефона и номер кабинета. Эти данные можно изменять при помощи утилиты chfn. Пользователь root может изменить finger-информацию для любого пользователя.
Временное отключение учетной записи
Иногда необходимо временно запретить некоторому пользователю доступ в систему, не удаляя его вовсе.
Лучшим способом заблокировать пользователя является замена его оболочки (программы, запускаемой при его входе в систему) на специальную программу, которая выводит подходящее сообщение.
Можно также сменить имя пользователя или его пароль, но затем пользователь не будет знать, что происходит. Такие пользователи обычно создают администратору и другим пользователям больше хлопот, и об этом не следует забывать.
Простой способ - создавать специальные программы - состоит в том, чтобы писать "tail scriрts":
#!/usr/bin/tail +2
This account has been closed due to a security breach. # Данная учетная запись заблокирована
из соображений безопасности.
Please call 555-1234 and wait for the men in black to arrive. # Пожалуйста, позвоните по
номеру 555-1234 и дождитесь помощи.
Первые два символа (#!) сообщают ядру, что остальная часть строки является командой, которая должна быть выполнена, чтобы интерпретировать этот файл. Команда tail в этом случае выводит все, за исключением первой строки, в стандартный вывод.
Если пользователь "billg" подозревается в нарушении защиты, администратор системы сделал бы примерно следующее:
# chsh -s /usr/local/lib/no-login/security billg
# su - tester
This account has been closed due to a security breach.
Please call 555-1234 and wait for the men in black to arrive.
Tail-скрипты следует хранить в отдельном каталоге во избежание их пересечения с какими-либо обычными пользовательскими командами.
1. Что представляет собой учетная запись?
2. Каким образом можно создать/удалить учетную запись?
3. Каким образом пользователи добавляются в группу?
4. В какую группу по умолчанию добавляются все создаваемые учетные записи?
5. В каком файле находятся все пароли системы? Каким образом их можно изменить?
6. Какими способами можно заблокировать пользователя?
Литература
1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005
2. ??
Глава 7. Управление файлами и каталогами
В этой главе описаны следующие основные сведения, необходимые для работы с файлами и каталогами MOPSLinux:
- права собственности и правах доступа;
- просмотр каталогов;
- смена рабочего каталога;
- постраничный просмотр вывода;
- объединение файлов;
- корректировка атрибутов файла;
- вывод текста на экран;
- создание и удаление каталогов;
- создание и удаление ссылок;
- копирование и перемещение файлов.
Организация MOPSLinux подобна классической UNIX-системе. Традиционно ОС UNIX ориентирована на интерфейс командной строки. В системе есть также и графический интерфейс, но командная строка остается основным способом управления системой. Поэтому очень важно знать основные команды управления файлами. В этой главе приведены краткие описания следующих основных утилит для управления файлами и примеры их использования:
сd - смена рабочего каталога;
ls - просмотр каталогов и информации о файлах;
chown - изменение владельца;
chgrp - изменение группы;
chmod - установка и изменение прав доступа;
ln - создание ссылок;
less, more - управление постраничным выводом;
cat - объединение файлов;
touch - изменение временных атрибутов файла;
echo - вывод текста на экран;
mkdir - создание каталога;
rmdir - удаление каталога;
rm - удаление каталога, файла, ссылки;
cp - копирование файлов;
mv - перемещение файлов;
pwd - показывает текущую директорию;
Кроме описанных здесь команд, существует множество других, но для начала достаточно и этих. Для получения дополнительной информации следует обращаться к соответствующим man-страницам.
В MOPSLinux файлами и каталогами можно управлять с помощью командного менеджера mc.
Права собственности
Файловая система хранит информацию о правах собственности для каждого файла и каталога, включая информацию о пользователе и группе, которым принадлежит файл. Самый простой способ просмотреть эту информацию - воспользоваться утилитой ls:
$ ls -l /usr/bin/wc
-rwxr-xr-x 1 root bin 7368 <st1:date year="1999" day="30" month="7">Jul 30 1999<st1:date> /usr/bin/wc
Информация об именах пользователя и группы, которым принадлежит файл, размещена в третьем и четвертом столбцах. В приведенном примере файл принадлежит пользователю root и группе bin.
Владельца файла можно изменить с помощью утилиты chown(1) (от англ. change owner - сменить владельца), а группу при помощи утилиты chgrp (от англ. change group - изменить группу). Чтобы изменить владельца файла на daemon, необходимо выполнить команду:
# chown daemon /usr/bin/wc
А чтобы изменить группу на root:
# chgrp root /usr/bin/wc
Утилита chown так же может быть использована для задания и пользователя и группы, которым принадлежит файл:
# chown daemon.root /usr/bin/wc
Принадлежность файлов - это очень важная часть использования Linux-системы, даже если в системе зарегистрирован только один пользователь. Иногда пользователям приходится исправлять права владения файлами и узлами (nodes) устройств.
Права доступа
Права доступа - это еще один аспект применения многопользовательских основ файловой системы. С их помощью можно указать, кто может читать, изменять и выполнять файлы.
Права доступа хранятся в виде четырех восьмеричных чисел, каждое из которых устанавливает права для отдельного блока. Три блока представляют права владельца, права группы и права всех остальных пользователей. Четвертое восьмеричное число используется для хранения специальной информации, такой как идентификатор (ID) владельца, ID группы и "sticky"-бит. Значения этих чисел соответствуют правам доступа, им также сопоставляются буквы, которые выводятся такими утилитами, как ls и могут быть использованы утилитой chmod(1) (от англ. change mode - изменить режим). Права доступа и соответствующие им восьмеричные числа и буквенные значения приведены в табл. 3.1.
Таблица 2.1. Соответствие восьмеричных чисел правам доступа
Тип |
Восьмеричное значение |
Буква |
"sticky"-бит |
1 |
t |
set user ID (ID пользователя) |
4 |
s |
set group ID (ID группы) |
2 |
s |
read (чтение) |
4 |
r |
write (запись) |
2 |
w |
execute (выполнение) |
1 |
x |
Для каждой из групп права складываются. Например, если необходимо, чтобы права группы были "read" и "write", в части соответствующей группе прав доступа необходимо указать "6".
Команда ls отобразит три группы прав (владелец, группа и остальные пользователи) в первом столбце. Первый дефис для каталогов принимает значение, равное "d". Например, права по умолчанию для bash:
$ ls -l /bin/bash
-rwxr-xr-x 1 root bin 477692 Mar 21 <st1:time minute="57" hour="19">19:57<st1:time> /bin/bash
Из примера видно, что владелец имеет права для чтения, записи и выполнения (rwx). Группа имеет только право на чтение и выполнения файла (r-x). И все остальные имеют только права на чтение и выполнение файла (r-x).
Чтобы разобраться, как присваивать права файлам предлагается создать файл для примеров:
$ touch /tmp/example
$ ls -l /tmp/example
-rw-rw-r- 1 david users 0 Apr 19 <st1:time minute="21" hour="11">11:21<st1:time> /tmp/example
Для того чтобы установить права доступа для файла примера можно воспользоваться утилитой chmod. Для того чтобы владелец имел права чтения, записи и выполнения необходимо сложить восьмеричные числа, для прав, которые необходимо установить - получится 7. Чтение и выполнение соответствует числу 5. Команда на установку и проверку прав доступа будут иметь следующий вид:
$ chmod 755 /tmp/example
$ ls -l /tmp/example
-rwxr-xr-x 1 david users 0 Apr 19 <st1:time minute="21" hour="11">11:21<st1:time> /tmp/example
Для задания специальных прав, необходимо сложить соответствующие числа вместе и расположить их в первом столбце:
$ chmod 6755 /tmp/example
$ ls -l /tmp/example
-rwsr-sr-x 1 david users 0 Apr 19 <st1:time minute="21" hour="11">11:21<st1:time> /tmp/example
Вместо восьмеричных чисел также можно пользоваться буквами. Группы прав представляются, следующим образом:
q владелец - u;
q группа - g;
q остальные пользователи - o;
q все вышеперечисленные - a.
Чтобы проделать то же, что и выше, понадобится выполнить команду несколько раз:
$ chmod a+rx /tmp/example
$ chmod u+w /tmp/example
$ chmod ug+s /tmp/example
Некоторые предпочитают работать с буквами. Но в любом случае, в результате будет тот же самый набор прав доступа.
Обычно, когда пользователь выполняет программу, она имеет те же права, что и пользователь. То же справедливо и для группы. Когда пользователь запускает программу, она выполняется с правами текущей группы, в которую входит данный пользователь. При помощи команды установки прав пользователя можно заставить программу всегда выполнятся с правами ее владельца (например, root). Команда установки прав группы работает так же, но для группы.
При изменении прав доступа пользователя и группы следует проявлять осторожность, так как "set user ID" и "set group ID" могут открыть "дыры" в безопасности системы. Если полные права доступа будут установлены на файл, принадлежащий пользователю root, появится возможность всем запускать программу, и выполнять ее с правами root. Так как у пользователя root нет ограничений в системе, это ставит под вопрос целостность безопасности системы.
Создание и удаление ссылок на файлы
Ссылки - это указатели на файлы. При помощи ссылок имеется возможность создавать файлы, существующие в нескольких местах и доступные под многими именами. Есть два типа ссылок - жесткие и символические.
Жесткие ссылки это просто разные имена для одного и того же файла. Они могут существовать тогда, когда находятся в одной и той же файловой системе и удаляются тогда, когда исходный файл удаляется. В некоторых случаях жесткие ссылки бывают полезны, но большинство пользователей предпочитают символьные ссылки.
Символьные ссылки (или "мягкие") могут указывать на файл, находящийся вне текущего каталога. Фактически, это маленький файл, содержащий необходимую информацию. Пользователи могут добавлять и удалять символьные ссылки, не изменяя исходный файл.
У ссылок нет их собственных прав доступа и принадлежности. Вместо этого они отражают права файла, на который указывают. Система, в основном использует символьные ссылки. Вот обычный пример:
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Apr 6 <st1:time minute="34" hour="12">12:34<st1:time> /bin/sh -> bash
Оболочка sh в системе, на самом деле программа bash.
Ссылки на файлы создаются при помощи утилиты ln, а удаляются утилитой rm.
Утилита ln(1) позволяет создать как жесткие (hard), так и мягкие или символические (soft, symbolic) ссылки. Если требуется создать символическую ссылку на каталог /var/media/mp3 и расположить ссылку в домашнем каталоге, то необходимо выполнить такую команду:
$ ln -s /var/media/mp3 ~/mp3
Опция -s указывает команде ln, что ссылка должна быть символическая. Затем задается цель ссылки и указывается ее наименование. В приведенном случае будет создан файл mp3, указывающий на /var/media/mp3. Ссылке можно присвоить любое имя, просто изменив последний из параметров команды ln.
Создание жестких ссылок производится аналогично, только опускается опция -s. Например:
$ ln /var/media/mp3 ~/mp3
Просмотр каталогов
Содержимое каталога можно посмотреть с помощью утилиты ls. Эта утилита выводит список файлов в каталоге. Пользователи Windows и DOS найдут ее аналогичной команде dir. Для того чтобы просмотреть содержимое корневого каталога, необходимо выполнить следующие команды:
$ cd /
$ ls
bin cdrom home mnt sbin usr
boot dev lib proc suncd var
cdr etc lost+found root tmp vmlinuz
В таком выводе неудобно то, что нельзя определить, где файлы, а где каталоги. Многие пользователи предпочитают, чтобы ls выводила так же идентификатор типа, например:
$
ls -FC
bin/ cdrom/ home/ mnt/ sbin/ usr/
boot/ dev/ lib/ proc/ suncd/ var/
cdr/ etc/ lost+found/ root/ tmp/ vmlinuz
Эта команда добавляет символ / после имен каталогов, * - после имен выполняемых файлов и т. д.
Утилита ls так же может быть использована для получения более подробной информации о файлах. Например, чтобы просмотреть, даты создания, имена владельцев, права доступа, необходимо задать опцию -l:
$
ls -l
drwxr-xr-x 2 root bin 4096 <st1:date year="1994" day="7" month="5">May 7 1994<st1:date> bin/
drwxr-xr-x 2 root root 4096 Feb 24 <st1:time minute="55" hour="3">03:55<st1:time> boot/
drwxr-xr-x 4 root root 28672 Mar 5 <st1:time minute="1" hour="18">18:01<st1:time> dev/
drwxr-xr-x 10 root root 4096 Mar 8 <st1:time minute="32" hour="3">03:32<st1:time> etc/
drwxr-xr-x 8 root root 4096 Mar 8 <st1:time minute="31" hour="3">03:31<st1:time> home/
drwxr-xr-x 3 root root 4096 Jan 23 <st1:time minute="29" hour="21">21:29<st1:time> lib/
drwxr-xr-x 2 root root 4096 <st1:date year="1997" day="6" month="10">Oct 6 1997<st1:date> mnt/
dr-xr-xr-x 62 root root 0 Mar 4 <st1:time minute="32" hour="15">15:32<st1:time> proc/
drwxr-x-x 12 root root 4096 Feb 26 <st1:time minute="6" hour="2">02:06<st1:time> root/
drwxr-xr-x 2 root bin 4096 Feb 17 <st1:time minute="2" hour="2">02:02<st1:time> sbin/
drwxrwxrwt 4 root root 487424 Mar 7 <st1:time minute="42" hour="20">20:42<st1:time> tmp/
drwxr-xr-x 21 root root 4096 <st1:date year="1999" day="24" month="8">Aug 24 1999<st1:date> usr/
drwxr-xr-x 18 root root 4096 Mar 8 <st1:time minute="32" hour="3">03:32<st1:time> var/
Предположим, необходимо в текущем каталоге просмотреть список скрытых файлов. Для этого необходимо задать опцию -a:
$ ls -a
. bin cdrom home mnt sbin usr
.. boot dev lib proc suncd var
.pwrchute_tmp cdr etc lost+found root tmp vmlinuz
Файлы, имена которых начинается с точки (так называемые dot-файлы) не отображаются при простом выполнении ls, поэтому называются "скрытыми". Их можно увидеть, если добавить опцию -a.
Смена рабочего каталога
Сменить рабочий (текущий) каталог можно с помощью команды cd. В качестве аргумента при вводе команды указывается имя каталога, в который необходимо перейти. Вот несколько примеров:
shaman: $ cd /bin
shaman:/bin$ cd usr
bash: cd: usr: No such file or directory
shaman:/bin$ cd /usr
shaman:/usr$
Примечательно, что если не указывать / в начале пути, команда пытается переместиться в подкаталог текущего каталога.
Команда cd отличается от остальных тем, что она встроена в оболочку. Это означает, что для этой команды нет man-страницы. Вместо этого надо обратиться к команде help используемой командной оболочки. Например:
$ help cd
Эта команда выдаст опции команды cd.
Постраничный просмотр вывода
Управлять выводом можно с помощью утилит more и less.
Утилиту more(1) чаще всего называют утилитой для разбиения вывода на страницы. Часто вывод определенной команды больше, чем размер экрана. Отдельные команды не знают, как разбить свой вывод на несколько экранов. Они предоставляют это утилите разбиения на страницы.
Утилита more разбивает вывод на отдельные экраны и ждет, пока пользователь не нажмет клавишу <Пробел> для того, чтобы выводить следующий экран. Нажатие <Enter> сместит экран на одну строку вниз. Вот хороший пример:
$ cd /usr/bin
$ ls -l
Вывод будет гораздо больше экрана. Чтобы разбить вывод на экраны, необходимо просто пропустить (pipe) команду через more:
$ ls -l | more
В двух словах, pipe означает - возьми вывод команды ls и пропусти его через more. Через more можно пропускать не только ls, а практически все команды, имеющие вывод.
Утилита more очень удобна, но часто можно встретиться с ситуацией, когда пропущен тот экран, который был необходим. В отличие от more, утилита less(1) позволяет вернуться к предыдущим экранам. Она используется так же, как и утилита more, так что примеры, приведенные выше справедливы и для нее. В общем, less имеет больше возможностей, чем more.
Объединение файлов
Объединить несколько файлов в один можно с помощью утилиты cat(1), сокращенно от "concatenate" (сцеплять, связывать). Изначально эта утилита была разработана для объединения нескольких текстовых файлов в один, но может быть использована и для других целей.
Чтобы объединить два или несколько файлов в один, необходимо просто перечислить файлы после команды cat и перенаправить вывод в новый файл. Утилита cat работает со стандартным вводом и выводом, поэтому необходимо использовать символы оболочки для перенаправления. Например:
$ cat file1 file2 file3 > bigfile
Эта команда возьмет содержимое файлов file1, file2 и file3 и объединит их в файл bigfile.
Утилита cat также используется для просмотра содержимого файлов. Многие пользователи для просмотра текстовых файлов выполняют cat, указав имя файла, и затем пропускают вывод через more или less:
$ cat file1 | more
Так же cat часто используется для копирования файлов. Любой файл можно скопировать, выполнив:
$ cat /bin/bash > ~/mybash
Файл /bin/bash будет скопирован в домашний каталог, под именем mybash.
Рассмотренные здесь примеры, это лишь несколько из возможных вариантов применения cat. Так как cat предоставляет расширенный контроль над стандартным вводом и выводом, она идеальна для применения в сценариях и для использования в качестве части более сложных команд.
Корректировка атрибутов файла
Для изменения временных атрибутов файла используется утилита touch(1). С помощью этой утилиты можно изменить отметку времени доступа и отметку времени изменения файла. Если указанный файл не существует, то touch создаст пустой файл с указанным именем. Чтобы пометить файл текущим системным временем, необходимо выполнить следующую команду:
$ touch file1
Эта утилита имеет несколько опций, включая опции для уточнения, какую временную метку изменить, какое время использовать и др.
Вывод текста на экран
Текст на экран можно вывести с помощью утилиты echo(1). Строку, которую необходимо вывести, следует указать после команды echo. По умолчанию echo выведет текст и символ перевода строки после него. Чтобы строка не переводилась можно указать опцию -n. Опция -e укажет команде искать в строке ESC-символы и выполнить их.
Создание и удаление каталогов
Создавать новые и удалять существующие и каталоги можно с помощью утилит mkdir, rmdir и rm.
Утилита mkdir(1) создает новый каталог. Имя каталога, который необходимо создать указывается после имени команды. Вот пример создания подкаталога hejaz в текущем каталоге:
$ mkdir hejaz
Так же можно указать путь:
$ mkdir /usr/local/hejaz
Опция -p укажет команде mkdir создавать вложенные каталоги. Так, если в выше приведенном примере каталог /usr/local не существует, то утилита выдаст сообщение об ошибке. Указание параметра -p заставить утилиту создать /usr/local и hejaz каталоги:
$ mkdir -p /usr/local/hejaz
Утилита rm(1) удаляет файлы и деревья каталогов. Аналогия для пользователей DOS - del и deltree. Использование rm может быть очень опасным, если пользователь не отдает себе отчета в том, что делает.
Внимание
В отличие от DOS и Windows, в Linux удаленные файлы восстановлению не подлежат!
Чтобы удалить отдельный файл, его имя указывается после имени команды:
$ rm file1
Если у пользователя нет прав записи для этого файла, то он получит сообщение об ошибке доступа. Чтобы удалить файл, несмотря ни на что, применяется опция -f. Например:
$ rm -f file1
Чтобы целиком удалить каталог, необходимо указать две опции -r и -f. Например, для того чтобы удалить содержимое всего диска необходимо будет выдать команду:
# rm -rf /
Утилита rmdir(1) удаляет каталоги из файловой системы. Каталог должен быть пустым, иначе команда не сможет удалить его. Синтаксис прост:
$ rmdir <directory>
Следующий пример удалит подкаталог hejaz в текущем рабочем каталоге:
$ rmdir hejaz
Если этот каталог не существует, rmdir сообщит об этом. Допускается указывать полный путь к каталогу, который требуется удалить. Например, чтобы удалить каталог hejaz, являющийся подкаталогом каталога /tmp, необходимо выдать команду:
$ rmdir /tmp/hejaz
Пользователь так же может удалить каталог, и все его родительские каталоги, указав опцию -p:
$ rmdir -p /tmp/hejaz
Эта команда вначале попытается удалить каталог hejaz внутри /tmp, если это удастся, команда попытается удалить и каталог /tmp.
Копирование и перемещение файлов
Утилита cp(1) применяется для копирования файлов. Пользователи DOS найдут ее похожей на команду copy. Эта утилита имеет множество опций, описание которых можно найти на соответствующей man-странице.
Обычный вариант использования утилиты - копирование файла из одного места в другое. Например:
$ cp hejaz /tmp
Эта команда копирует файл hejaz из текущего каталога в каталог /tmp.
Многие пользователи предпочитают сохранять временные отметки файлов при копировании. Например:
$ cp -a hejaz /tmp
Это сохранит все временные отметки оригинального файла для копии.
Для того чтобы рекурсивно скопировать содержимое каталога в другой каталог, можно воспользоваться командой:
$ cp -R adirectory /tmp
В результате каталог adirectory будет скопирован в каталог /tmp.
Утилита mv(1) перемещает файлы из одного места в другое. Пользователи DOS найдут ее похожей на команду move. При использовании утилиты надо указывать источник и назначение. Вот пример обычного использования mv:
# mv myfile /usr/local/share/hejaz
Управление файлами и каталогами с помощью программы Midnight Commander
Для облегчения работы с файловой системой в MOPSLinux включена программа c оконным интерфейсом Midnight Commander (mc), которая позволяет просматривать структуру каталогов и выполнить практически все необходимые основные операции c файлами. Программа mc - это классический файловый менеджер, подобный известным программам Norton Commander (nc) в MS-DOS или с FAR в Windows. Пользователям, знакомым с указанными программами работа с mc не составит никакого труда, поскольку даже основные комбинации "горячих клавиш" у них совпадают. Подробную информацию о работе с mc можно найти в справочном руководстве. В данной же главе приведены основные сведения, необходимые для первоначального знакомства с программой и выполнения основных операций с файлами и каталогами.
Для запуска Midnight Commander, необходимо в командной строке оболочки ввести команду:
$ mc
После запуска экран монитора примет следующий вид:
Почти все пространство экрана при работе с Midnight Commander занято двумя "панелями", отображающими списки файлов двух каталогов. Над панелями расположена строка меню, причем к выбору команд в этом меню можно переключиться по клавише <F9> или с помощью мыши (если сразу после запуска mc вы не видите строки меню, не огорчайтесь - видна или нет строка меню, определяется настройками программы).
Самая нижняя строка представляет собой ряд экранных кнопок, каждая из которых ассоциирована с одной из функциональных клавиш <F1> - <F10>. Можно считать эту строку подсказкой по использованию функциональных клавиш, а можно и непосредственно запускать соответствующие команды, щелкая мышкой по экранной кнопке. Отображение строки с экранными кнопками можно отключить, если вы хотите сэкономить пространство экрана (об этом будет рассказано позже, когда будем говорить о настройках программы). Такая экономия оказывается оправданной по двум причинам. Во-первых, вы достаточно быстро запомните назначение этих 10 клавиш, и подсказка вам становится не нужна (а мышкой по этим клавишам щелкать не всегда удобно). Во вторых, если даже вы забыли, какая именно клавиша вам нужна для выполнения необходимого в данный момент действия, вы всегда можете воспользоваться меню Файл главного меню программы (только помните, что выход в главное меню осуществляется по клавише <F9>). Через меню Файл обеспечивается возможность выполнения любой операции из числа ассоциированных с функциональными клавишами кроме <F1> и <F9>.
Вторая снизу строка на экране - это командная строка программы Midnight Commander (точнее - командная строка текущей оболочки shell), где можно ввести и выполнить любую команду системы. Выше нее (но под панелями) может отображаться поле "полезных советов" (hint4s), которое можно убрать, соответствующим образом отрегулировав настройки программы.
Каждая панель состоит из заголовка, списка файлов какого-либо каталога и строки мини-статуса (последняя может быть не видна, это тоже задается настройками программы). В заголовке панели указан полный путь к каталогу, содержимое которого отображается в панели, а также три экранных кнопки - "<", "v" и ">", которые используются для управления программой с помощью мыши (эти кнопки не работают, если вы запустили mc в эмуляторе терминала). В строке "мини-статуса" отображаются некоторые данные о том файле или каталоге, на который в данный момент указывает подсветка (например, размер файла и права доступа к нему).
Одна из панелей является текущей (активной), о чем свидетельствует подсветка имени каталога в заголовке панели и подсветка одной из ее строк. Соответственно, в той оболочке, из которой была запущена программа Midnight Commander, текущим является каталог, отображаемый в активной панели. В этом каталоге и выполняются почти все операции. Операции типа копирования (<F5>) или переноса файла (<F6>) используют каталог, отображаемый на второй панели, в качестве целевого каталога (в который осуществляется копирование или перенос).
В активной панели одна строка выделена подсветкой. Подсветку можно перемещать с помощью клавиш управления перемещением. Встроенная программа просмотра файлов, программа просмотра подсказки и программа просмотра каталогов используют один и тот же программный код для управления перемещением. Следовательно, для перемещения используются одни и те же комбинации клавиш (но в каждой подпрограмме имеются и комбинации, применяющиеся только в ней). Приведем краткую таблицу, в которой перечислены общие клавиши управления перемещением.
Таблица 6.1. Общие клавиши управления перемещением.
Клавиша |
Выполняемое действие |
<Стрелка вверх> или <Ctrl>+<P> |
Перемещение на одну строку назад или вверх |
<Стрелка вниз> или <Ctrl>+<N> |
Перемещение на одну строку вперед |
<PageUp> или <Alt>+<V> |
Перемещение на одну страницу назад |
<Page Down> или <Ctrl>+<V> |
Перемещение на одну страницу вперед |
<Home> |
Перемещение к началу. |
<End> |
Перемещение к концу |
Наиболее часто выполняемые в Midnight Commander операции привязаны к функциональным клавишам <F1> - <F10>. Приведем сводку в виде табл. 6.4.
Таблица 6.4. Функциональные клавиши
Функциональная клавиша |
Выполняемое действие |
<F1> |
Вызывает контекстно-зависимую подсказку |
<F2> |
Вызывает меню, создаваемое пользователем |
<F3> |
Просмотр файла, на который указывает подсветка в активной панели |
<F4> |
Вызов встроенного редактора для файла, на который указывает подсветка в активной панели |
<F5> |
Копирование файла или группы отмеченных файлов из каталога, отображаемого в активной панели, в каталог, отображаемый на второй панели. При копировании одного файла можно поменять его имя (Примеч.14). Можно также указать имя каталога, куда будет производиться копирование (если надо скопировать в каталог, отличный от каталога, отображаемого во второй панели) |
<F6> |
Перенос файла или группы отмеченных файлов из каталога, отображаемого в активной панели, в каталог, отображаемый на второй панели. Как и при копировании, можно поменять имя файла или целевого каталога. |
<F7> |
Создание подкаталога в каталоге, отображаемом в активной панели |
<F8> |
Удаление файла (подкаталога) или группы отмеченных файлов |
<F9> |
Вызов основного меню программы (отображаемого над панелями) |
<F10> |
Выход из программы |
Перечисленные в этой таблице операции (команды) можно выполнять не только путем нажатия соответствующей функциональной клавиши, но и с помощью щелчка мыши по экранным кнопкам или используя соответствующие команды меню Файл.
Прежде чем выполнять какую-то из операций, указанных в табл. 6.4 или задаваемых командами меню, надо выбрать файл или группу файлов, которые будут объектами операции. Для выбора только одного файла достаточно переместить на него подсветку в активной панели (конечно, вначале надо перейти в соответствующий каталог). Если же вы хотите выполнить какую-то операцию сразу над группой файлов, эти файлы надо отметить. Чтобы отметить файл, на который указывает в данный момент подсветка, используйте клавишу <Insert> или комбинацию <Ctrl>+<T>. При этом имя файла в панели выводится другим цветом. Для снятия отметки с файла используются те же комбинации.
Выделить группу файлов для последующей обработки можно также с помощью команды Отметить группу меню Файл. Эта команда используется для отметки группы файлов по заданному шаблону. Midnight Commander выдаст строку ввода, в которой надо задать регулярное выражение, определяющее желаемую группу имен. Если включена опция Образцы в стиле shell (см. разд. 6.11), регулярные выражение строятся по тем же правилам, которые действуют в оболочке shell (см. гл. 5). Если опция "Образцы в стиле shell" отключена, то пометка файлов производится по правилам обработки нормальных регулярных выражений (см. руководство man ed).
Если выражения начинаются или оканчиваются слэшем (/), то пометка будет ставиться на каталоги, а не на файлы.
"Горячей" клавишей для операции отметки группы файлов является клавиша <+> на цифровой клавиатуре.
Операция "Снять отметку" ("горячая" клавиша - <-> или <\> - обратный слэш) является обратной по отношению к операции отметки группы файлов и использует те же правила формирования шаблонов. Используется для снятия отметки с группы файлов.
Операция "Инвертировать отметку" (<*>) используется для того, чтобы снять отметки со всех помеченных файлов текущего каталога, одновременно отметив все файлы, которые не были помечены.
Если текущий каталог содержит много файлов (так что все они не умещаются на панели), то прежде чем отметить файл, его нужно еще отыскать. В таких случаях удобно пользоваться комбинациями клавиш <Ctrl>+<S> и <Alt>+<S>. После нажатия одной из этих комбинаций инициируется режим поиска имен файлов в текущей директории по первым символам имени. В этом режиме вводимые символы отображаются не в командной строке, а в строке поиска.
После выбора и отметки файлов для обработки достаточно нажать одну из функциональных клавиш, чтобы выполнить нужную операцию с файлами, например, скопировать файлы, переместить или удалить. Особенно удобно в сравнении с работой из командной строки осуществлять с помощью Midnight Commander просмотр или редактирование файлов, поскольку в Midnight Commander имеются встроенные программы для этих целей.
Не обязательно использовать функциональные клавиши для вызова ассоциированных с ними команд. Любую из этих команд можно выполнить через меню Файл. Кроме команд, ассоциированных с функциональными клавишами, меню Файл содержит еще следующие команды (в скобках указаны соответствующие "горячие" клавиши).
- Права доступа (<Ctrl>+<X>,<C>). Позволяет изменить права доступа к выделенному или помеченным файлам.
- Владелец/группа (<Ctrl>+<X>,<O>). Позволяет выполнить команду chown.
- Права (расширенные). Позволяет изменить права доступа и владения файлом.
- Жесткая ссылка (<Ctrl>+<X>,<L>). Создает жесткую ссылку на текущий файл.
- Символическая ссылка (<Ctrl>+<X>,<S>). Создает символическую ссылку на текущий файл. О ссылках мы подробно говорили в разд. 4.4. Программа Midnight Commander указывает символические ссылки, выводя знак "@" перед именем такой ссылки (кроме ссылок на подкаталоги, которые обозначаются знаком тильды "~"). Если на экран выводится строка мини-статуса (опция "Показывать мини-статус" включена), то в ней отображается имя того файла, на который указывает ссылка.
- Быстрая смена каталога (<Alt>+<C>). Используйте эту команду, если вы знаете полный путь к каталогу, в который хотите перейти (который хотите сделать текущим).
- Просмотр вывода команды (<Alt>+<!>). По этой команде на экране появляется строка ввода, в которой вы можете ввести любую команду с параметрами (по умолчанию предлагается использовать в качестве параметра имя подсвеченного файла). Вывод этой команды будет отображаться на экране через встроенную программу просмотра.
Как видите, меню Файл содержит все наиболее употребительные команды, которые нужны нам для обычных операций обработки файлов текущего каталога.
Отображение списка файлов в любой из панелей может производиться в соответствии с одним из восьми порядков сортировки:
· по имени;
· по расширению;
· по размеру файла;
· по времени модификации;
· по времени последнего обращения к файлу;
· по номеру узла (inode);
· без сортировки.
Порядок сортировки вы можете задать, выбрав в меню соответствующей панели команду Порядок сортировки.... При этом появляется диалоговое окно (рис. 6.2), в котором кроме желаемого порядка сортировки можно указать, что сортировка производится в обратном порядке (поставив с помощью клавиши пробела отметку в скобках возле слова Обратный (Reverse)) и с учетом регистра символов.
Рис. 6.2. Диалоговое окно задание порядка сортировки
По умолчанию подкаталоги отображаются в начале списка, но это можно изменить, проставив отметку возле опции "Смешивать файлы/каталоги" ("Mix all files") команды Конфигурация меню Настройки.
Можно выводить в панель не все списки файлов данного каталога, а только соответствующие определенному шаблону. Команда Фильтр в меню любой панели позволяет задать шаблон, которому должны соответствовать имена файлов, отображаемых в панели (например, "*.tar.gz").
Имена подкаталогов и ссылки на подкаталоги отображаются всегда, независимо от шаблона.
В меню каждой из панелей имеется команда Перечитать (аналог которого в других программах обычно называется "Обновить"). Команда Перечитать (горячие клавиши <Ctrl>+<R>) обновляет список файлов, отображаемый в панели. Это бывает полезно в тех случаях, когда другие процессы создают или удаляют файлы.
Маски файлов для операций копирования/переименования
При выполнении операций копирования и перемещения (или переименования) файлов вы имеете возможность изменить имена копируемых или перемещаемых файлов. Для этого вы должны задать маску для имен файлов-источников и маску для имен файлов, которые будут созданы (файлы-приемники). Обычно эта вторая маска представляет собой несколько символов замены (wildcards) в конце строки, определяющей место назначение создаваемых файлов. Задание масок осуществляется в строках ввода, отображаемых в окне, появляющемся после обращения к командам копирования / переноса (рис. 6.6).
Все файлы, удовлетворяющие маске источника, будут переименованы (скопированы или перемещены с новыми именами) в соответствии с маской файла-приемника. Если имеются помеченные файлы, то копируются (перемещаются) только помеченные файлы, удовлетворяющие заданной маске для файлов-источников.
Рис. 6.6. Диалоговое окно для переименования файлов
Есть еще несколько опций, которые влияют на выполнение операций копирования/перемещения файлов, и которые устанавливаются в том же окне запроса, где задаются маски имен файлов, либо через команду меню Настройки | Конфигурация.
Опция Разименовывать ссылки (Follow links) определяет, будут ли при копировании жестких или символических ссылок в каталоге-приемнике (и рекурсивно в подкаталогах) создаваться такие же ссылки, или будут копироваться файлы (и подкаталоги), на которые эти ссылки указывают.
Опция Внутрь каталога, если есть (Dive into subdirs) определяет, что делать, если в каталоге-приемнике уже существует подкаталог, имя которого совпадает с именем файла (каталога), который копируется (источника). По умолчанию (опция отключена) содержимое каталога-источника копируется в каталог-приемник. Если опция включена, то в каталоге приемнике будет создан новый подкаталог с тем же именем, в который и будет осуществляться копирование.
Лучше показать это на примере. Пусть вы хотите скопировать содержимое каталога one в каталог /two/one, который уже существует. Обычно (опция отключена) mc будет просто копировать все файлы из one в /two/one. Если опцию включить, копирование файлов будет производиться в /two/one/one.
Опция Сохранять атрибуты (Preserve attributes) определяет, будут ли при копировании/перемещении сохранены атрибуты исходного файла: права доступа, временные метки и, если вы root, UID и GID исходного файла. Если опция отключена, атрибуты будут установлены в соответствии с текущим значением umask.
На процедуры копирования и перемещения файлов оказывает также влияние установка опции Образцы в стиле shell в меню Настройки / Конфигурация. Когда эта опция включена, вы можете использовать символы замены (wildcards) '*' и '?' в маске источника. Они обрабатываются аналогично тому, как это делается в shell. В маске приемника разрешается использовать только '*' и '\<цифра>'. Первый символ '*' в маске приемника соответствует первой группе символов замены в маске источника, второй символ '*' соответствует второй группе и т. д. Аналогично, символ замены '\1' соответствует первой группе символов замены в маске источника, символ '\2' - второй группе и т. д. Символ '\0' соответствует целому имени файла-источника. Приведем пару примеров.
Пример 1. Если маска источника "*.tar.gz", а маска приемника - "/two/*.tgz", и имя копируемого файла - "foo.tar.gz", копия будет называться "foo.tgz" и будет находиться в каталоге "/two".
Пример 2. Предположим, вы хотите поменять местами имя и расширение файла, так чтобы "file.c" стал файлом "c.file". Маска источника для этого должна иметь вид "*.*", а маска приемника - "\2.\1".
Когда опция Образцы в стиле shell ("Use shell patterns") выключена, mc не осуществляет автоматической группировки. Для указания групп символов в маске источника, которые будут соответствовать символам замены в маске приемника, вы должны в этом случае использовать скобки '\(...\)'. Этот способ более гибкий, но требует больше усилий при вводе. Снова приведем два примера
Пример 3. Если маска источника имеет вид "^\(.*\)\.tar\.gz$", копирование производится в "/two/*.tgz" и копируется файл "foo.tar.gz", то результатом будет "/two/foo.tgz".
Пример 4. Предположим, что вы хотите поменять местами имя файла и его расширение, так чтобы имена вида "file.c" приняли вид "c.file".
Маска источника для этого - "^\(.*\)\.\(.*\)$", а маска приемника - "\2.\1".
При выполнении операций копирования/перемещения вы можете также преобразовать регистр символов в именах файлов. Если вы используете '\u' или '\l' в маске приемника, то следующий символ имени будет образован в верхнем (заглавные символы) или нижнем (строчные) регистре соответственно.
Если использовать в маске приемника '\U' или '\L', то к соответствующему регистру будут преобразованы все последующие символы, вплоть до следующего вхождения '\L' или '\U', или же до конца имени файла.
Применение '\u' и '\l' обеспечивает более широкие возможности, чем '\U' и '\L'.
Например, если маска источника есть '*' (опция Образцы в стиле shell включена) или '^\(.*\)$' (опция Образцы в стиле shell выключена), а маска приемника есть '\L\u*', имена файлов будут преобразованы таким образом, что первые буквы имени будут заглавными, а все остальные - строчными.
Символ '\' в масках используется для отмены специальной интерпретации отдельных символов. Например, '\\' означает просто обратный слэш (как литерал) и '\*' означает просто звездочку (asterisk).
Меню Команды
Выпадающее подменю Команды главного меню позволяет выполнить еще ряд операций по управлению файловой системой, а также выполнить некоторые команды, изменяющие вид панелей Midnight Commander и отображаемую в панели информацию.
При обращении к команде меню Дерево каталогов выводится окно, отображающее структуру каталогов файловой системы.
Дерево каталогов может быть вызвано двумя способами: через команду Дерево каталогов из меню Команды и команду Дерево из меню правой или левой панелей.
Существует два режима отображения дерева каталогов. В статическом режиме перемещения для выбора каталога (т. е. перемещения подсветки на имя другого каталога) используются только клавишы <á> и <â>. Показываются все известные программе на данный момент подкаталоги. В динамическом режиме клавиши <á> и <â> используются для перехода на соседний каталог того же уровня. Для перехода в родительский каталог используется клавиша <ß>, а по клавише <à> происходит переход к потомкам текущего каталога, т. е. на один уровень ниже. При этом отображаются только вышележащие каталоги (включая родительский и выше), соседние каталоги того же уровня и непосредственные потомки. Вид дерева каталогов динамически изменяется после каждого перемещения по дереву.
Для управления просмотром дерева каталогов могут использоваться следующие комбинации клавиш:
· Работают все клавиши управления перемещением (см. табл. 6.1).
· <Enter>. В окне просмотра дерева каталогов нажатие этой клавиши вызывает выход из режима просмотра и отображение списка файлов выбранного каталога в активной панели. При отображении дерева каталогов в одной из панелей при нажатии клавиши <Enter> соответствующий каталог отображается во второй панели, а на текущей панели остается дерево.
· <Ctrl>+<R> или <F2>. Перечитать содержимое каталога. Используется в тех случаях, когда дерево каталогов не соответствует реальной структуре: некоторые подкаталоги не показаны или показаны более не существующие.
· <F3>. Удалить текущий каталог из дерева. Эта команда используется только для удаления ошибочно отображаемых ветвей дерева. Если вы попытаетесь удалить существующий каталог, будет выдано сообщение об ошибке. Именно поэтому в строке, поясняющей назначение функциональных клавиш клавиша <F2> обозначена словом Забыть.
· <F4> (Static/Dynamic). Переключение между статическим (применяемым по умолчанию) и динамическим режимами перемещения по дереву.
· <F5>. Копировать подкаталог (появляется строка ввода, в которой надо указать, куда копировать).
· <F6>. Переместить подкаталог.
· <F7>. Создать подкаталог в текущем каталоге.
· <F8>. Удалить подсвеченный каталог из файловой системы.
· <Ctrl>+<S> или <Alt>+<S>. Найти следующий каталог, соответствующий заданному шаблону поиска. Если такого каталога не существует, происходит просто смещение подсветки на одну строку вниз.
· <Ctrl>+<H> или <Backspace>. Удаляет последний символ в строке (шаблоне) поиска.
· <Любой другой символ>. Этот символ добавляется в шаблон поиска и производится перемещение на имя следующего каталога, удовлетворяющее шаблону. В режиме просмотра дерева каталогов вначале необходимо активизировать режим поиска клавишами <Ctrl>+<S>. Шаблон поиска будет отображаться в строке мини-статуса.
Следующие действия возможны только в окне просмотра дерева каталогов и не поддерживаются при просмотре дерева в одной из панелей
· <F1> (Help). Вызов подсказки с отображением раздела помощи об окне дерева каталогов.
· <Esc> или <F10>. Выход из окна дерева каталогов. Смены текущего каталога не происходит.
В окне просмотра дерева каталогов поддерживается мышка. Двойной щелчок аналогичен нажатию клавиши <Enter>.
Команда Поиск файла (горячие клавиши <Meta>+<?> или <Esc>,<?>) выпадающего меню Команда позволяет вам найти на диске файл с заданным именем. После выбора этой команды меню вначале запрашивается имя искомого файла и имя каталога, с которого необходимо начинать поиск. Нажав экранную кнопку Дерево, вы можете выбрать начальный каталог поиска из дерева каталогов. В поле Содержание (Contents) можно задать регулярное выражение по правилам команды egrep. Это значит, что перед символами, имеющими специальное значение для egrep, необходимо вставить символ "\", например, если вам нужно найти строку "strcmp (", вы должны указать шаблон поиска в виде "strcmp \(". Для того, чтобы начать поиск, нажмите экранную кнопку Дальше. Во время поиска его можно приостановить кнопкой Остановить и продолжить по кнопке Продолжить.
Список найденных файлов можно просматривать, перемещаясь с помощью клавиш <Стрелка вверх> и <Стрелка вниз>. Кнопка Перейти используется для перехода в каталог, в котором находится подсвеченный файл. Кнопка Повтор служит для задания параметров нового поиска.
Кнопка Выход служит для выхода из режима поиска.
Нажатие на кнопку Панелизация приведет к тому, что результаты поиска будут отображены на текущую активную панель, так что вы можете производить с выбранными файлами еще какие-то действия (просматривать, копировать, перемещать, удалять и так далее). После вывода на панель можно нажать <Ctrl>+<R> для возврата к обычному списку файлов.
Кроме того, имеется возможность задать список каталогов, которые команда Поиск файла будет пропускать в ходе поиска (например, вы знаете, что искомого файла нет на CD-ROM или не хотите искать в каталогах, подключенных через NFS по очень медленному каналу). Каталоги, которые надо пропустить, должны быть указаны в переменной find_ignore_dirs в секции Misc Вашего файла ~/.mc/ini.
Имена каталогов разделяются двоеточиями, следующим образом:
[Misc]
find_ignore_dirs=/cdrom:/nfs/wuarchive:/afs
Вы можете использовать перенаправление вывода на панель (см. ниже Критерий панелизации) для выполнения некоторых усложненных последовательностей действий, в то время как Поиск файла позволяет выполнять только простые запросы.
Команда Переставить панели (<Ctrl>+<U>) меняет местами содержимое правой и левой панелей.
По команде Отключить панели (<Ctrl>+<O>) показывается вывод последней из выполнявшихся команд shell. Эта команда работает только через xterm и на консоли Linux.
По команде Сравнить каталоги (<Ctrl-X>, <D>) сравнивается содержимое каталогов, отображаемых на левой и правой панелях.
Существует три метода сравнения. При быстром методе сравниваются только размер и дата создания файлов с одинаковыми именами. В результате в обоих каталогах будут подсвечены файлы, отсутствующие во втором каталоге, или более новые версии соответствующих файлов. После этого вы можете воспользоваться командой Копировать (<F5>) для того, чтобы сделать содержимое каталогов одинаковым.
При побайтном методе сравнивается содержимое файлов (побайтно). Этот метод недоступен, если машина не поддерживает системный вызов mmap(2). При сравнении по размеру сравниваются только размеры соответствующих файлов, а дата создания не проверяется.
Команда меню Критерий панелизации (который правильнее было бы назвать "Перенаправление вывода на панель") позволяет вам выполнить внешнюю программу, сделав ее вывод содержимым текущей активной панели (характерный пример - панелизация вывода команды find). Например, если вы хотите выполнить какое-то действие над всеми символическими ссылками текущего каталога, вы можете использовать команду Критерий панелизации для запуска следующей команды:
[user]$ find . -type l -print
После выполнения этой команды в текущей панели будет отображено не содержимое соответствующего каталога, а только все символические ссылки, в нем расположенные.
Если вы захотите, то можете сохранить часто используемые команды панелизации под отдельными информативными именами, чтобы иметь возможность их быстро вызвать по этим именам. Для этого нужно набрать команду в строке ввода (строка "Команда") и нажать кнопку Добавить. После этого вам потребуется ввести имя, по которому вы будете вызывать команду. В следующий раз вам достаточно будет выбрать нужное имя из списка, а не вводить всю команду заново.
Команда меню История команд выводит окно со списком ранее выполнявшихся команд. Подсвеченную строку из истории можно скопировать в командную строку оболочки (перемещение подсветки - клавишами <Стрелка вверх> и <Стрелка вниз>, копирование - по клавише <Enter>).
Доступ к истории команд можно получить также по комбинациям клавиш <Alt>+<P> или <Alt>+<N>, однако в этом случае вы не видите окна с перечнем команд. Вместо этого в командную строку выводится одна команда из списка и по комбинации <Alt>+<P> происходит смена этой команды на предыдущую, а по <Alt>+<N> - на следующую команду из истории команд.
Команда меню Справочник каталогов (<Ctrl>+<\>) позволяет создать список каталогов, которые часто используются, и обеспечить быстрый переход к нужному каталогу из этого списка. Для этого создается список меток (условных имен), присвоенных наиболее часто используемым каталогам. Этот список можно использовать для быстрого перехода в нужный каталог. Пользуясь диалоговым окном справочника каталогов, вы можете добавить новую метку в список или удалить ранее созданную пару метка/каталог. Для добавления метки можно также использовать комбинацию клавиш (<Ctrl>+<X>, <H>), по которой текущий каталог добавляется в справочник каталогов. Программа выдаст запрос на ввод метки для этого каталога.
Команда меню Фоновые задания позволяет вам управлять фоновыми заданиями, запущенными из Midnight Commander (такими заданиями могут быть только операции копирования и перемещения файлов). Используя эту команду меню или "горячие" клавиши <Ctrl>+<X>, <J>, вы можете остановить, возобновить или снять любое из фоновых заданий.
После выбора команды меню Файл расширений вы получаете возможность редактировать файл mc.ext, в котором можете связать с определенным расширением файла (окончанием имени после последней точки) программу, которая будет запускаться для обработки (просмотра, редактирования или выполнения) файла с таким расширением. Запуск выбранной программы будет осуществляться после установки подсветки на имя файла и нажатия клавиши <Enter>.
Команда Файл меню используется для редактирования пользовательского меню (которое появляется после нажатия клавиши <F2>).
Настройка программы Midnight Commander
Программа Midnight Commander имеет ряд установок (опций), каждая из которых может быть включена или выключена, для чего служат несколько диалоговых окон, доступных через меню Настройки. Опция включена, если поставлена (с помощью клавиши пробела) звездочка или знак "x" в скобках перед названием опции. Рассмотрим последовательно команды меню Настройки, через которое включаются / отключаются эти опции.
Команда Конфигурация.
При выборе этой команды меню появляется диалоговое окно, изображенное на рис. 6.7. Параметры конфигурации, задаваемые в этом окне, делятся на три группы: "Настройки панелей", "Пауза после исполнения" и "Прочие настройки".
В поле "Настройки панелей" вы задаете значения следующих параметров.
· Показывать резервные файлы. По умолчанию программа Midnight Commander не показывает файлы, имена которых заканчиваются на '~' (подобно опции -B команды ls ).
· Показывать скрытые файлы. По умолчанию Midnight Commander показывает все файлы, в том числе файлы, имена которых начинаются точкой (как ls -a).
Рис. 6.7. Окно настроек параметров конфигурации
· Отметка перемещает курсор. Когда вы отмечаете файл (клавишами <Ctrl>+<T> или <Insert>), то по умолчанию подсветка на имени файла смещается на одну строку вниз.
· Выпадение меню при вызове. Если эта опция включена, то при вызове главного меню нажатием клавиши <F9>, будет сразу отображаться перечень команд меню (выпадающее меню). В противном случае активизируются только команды главного меню и вы должны (после выбора одного из них клавишами стрелок) нажать клавишу <Enter>, либо выбрать нужную команду по первой букве названия, и только после этого получите возможность выбрать команду выпадающего меню.
· Смешивать файлы/каталоги. Если эта опция включена, имена файлов и каталогов отображаются вперемежку. Если опция отключена, каталоги (и ссылки на каталоги) показываются в начале списка, а имена файлов - после имен всех каталогов.
· Быстрая загрузка каталога. По умолчанию эта опция выключена. Если вы активизируете ее, Midnight Commander будет использовать для вывода содержимого каталога следующий трюк: содержимое каталога перечитывается только в том случае, если изменилась запись в i-node каталога, т. е. если в каталоге создавались или удалялись файлы; если изменялись только записи в i-node файлов каталога (изменялся размер файла, режим доступа или владелец и т.п.) содержимое панели не обновляется. В этом случае (если опция включена) вы должны обновлять список файлов вручную (клавишами <Ctrl>+<R>).
Поле Пауза после исполнения. После выполнения Вашей команды Midnight Commander может обеспечить паузу, чтобы вы могли просмотреть и изучить вывод команды. Есть три варианта установки этой опции.
· Никогда. Это значит, что вы не хотите видеть вывод команды. На консоли Linux или при использовании xterm вы можете просмотреть этот вывод, нажав <Ctrl>+<O>.
· На "тупых" терминалах. Пауза будет создаваться на терминалах, которые не способны обеспечить показ вывода последней из выполнявшихся команд (это любые терминалы, отличные от xterm или Linux-консоли).
· Всегда. Программа обеспечит паузу после выполнения любой команды.
В поле Прочие настройки вы задаете значения следующих параметров:
· Детали операций (Verbose operation). Этот переключатель определяет, будет ли при выполнении операций копирования, перемещения и удаления выводится дополнительное окно, отображающее ход выполнения операции. Если у вас медленный терминал, вы можете отключить этот вывод. Он отключается автоматически, если скорость Вашего терминала меньше 9600 bps.
· Подсчитывать общий размер (Compute totals). Если эта опция включена, Midnight Commander перед выполнением операций копирования, перемещения и удаления подсчитывает общее число обрабатываемых файлов и их суммарный размер и показывает ход выполнения операции над этими файлами в виде диаграммы-полоски (правда, это слегка замедляет выполнение операций). Эта опция не работает, если отключена опция "Детали операций".
· Образцы в стиле shell (Shell Patterns). По умолчанию команды отметки группы файлов (Select), снятия отметки (Unselect) и вывода списка файлов по фильтру (Filter) используют регулярные выражения, которые строятся по правилам, действующим в оболочке. Для того, чтобы достичь такого эффекта, выполняются следующие преобразования: '*' заменяется на '.*' (ноль или больше символов); '?' заменяется на '.' (в точности один символ) и '.' заменяется на обычную точку (literal dot). Если опция отключена, то регулярные выражения должны строиться так, как описано в man 1 ed.
· Автосохранение настроек. Если эта опция включена, то при выходе из программы Midnight Commander значения всех настраиваемых параметров сохраняются в файле ~/.mc/ini.
· Автоматические меню. Если эта опция включена, пользовательское меню будет автоматически вызываться на экран при запуске программы. Это бывает полезно, если на компьютере работают неопытные пользователи (операторы), которые должны выполнять только стандартные операции.
· Встроенный редактор. Если эта опция включена, то для редактирования файлов вызывается встроенный редактор. Если опция выключена, то будет использоваться редактор, указанный в переменной окружения EDITOR. Если такой редактор не задан, будет вызываться vi.
· Встроенный просмотр. Если эта опция включена, для просмотра файлов вызывается встроенная программа просмотра. Если опция выключена, вызывается программа, указанная в переменной окружения PAGER. Если такая программа не задана, используется команда view.
· Дополнение: показывать все. В процессе ввода команд Midnight Commander может выполнять "Завершение ввода" при нажатии на клавиши <Alt>+<Tab>, пытаясь угадать окончание вводимой команды. По умолчанию при первом нажатии <Alt>+<Tab> он ищет все возможные варианты завершения и, если завершения неоднозначны (имеется много разных вариантов), то только издает звуковой сигнал. При втором нажатии <Alt>+<Tab> отображаются все возможные завершения. Если вы хотите видеть все возможные варианты завершения после первого нажатия <Alt>+<Tab>, включите эту опцию.
· Вращающийся индикатор. Если эта опция включена, Midnight Commander отображает в верхнем правом углу вращающуюся черточку, как индикатор того, что выполняется какое-то задание (операция).
· Навигация в стиле lynx. Если эта опция включена, вы имеете возможность использовать клавиши <à> для перехода в подсвеченный в данный момент каталог и <ß> для перехода в родительский по отношению к текущему каталог (при условии, что командная строка пуста). По умолчанию опция отключена.
· Расширенная команда chown. Если эта опция включена, то при обращении к командам chmod или chown вместо них будет вызываться Расширенная команда chown.
· Смена каталога по ссылкам. Установка этой опции приводит к тому, что Midnight Commander будет следовать логической цепочке подкаталогов при выполнении команд смены каталога как в панели, так и по команде cd. Так же ведет себя по умолчанию bash. Если же опция не включена, Midnight Commander будет при выполнении команды cd следовать реальной структуре каталогов, так что если вы вошли в текущий каталог по ссылке на него, то по команде cd .. вы окажетесь в его родительском каталоге, а не в той директории, где расположена ссылка.
· Безопасное удаление. Если эта опция включена, непреднамеренно удалить файл будет сложнее. В диалоговом окне подтверждения удаления предлагаемая по умолчанию кнопка изменяется с "Да" на "Нет" и операция удаления непустого каталога должна будет подтверждаться путем выбора кнопки "Да". По умолчанию эта опция отключена.
Диалоговое окно Внешний вид дает вам возможность изменить некоторые параметры отображения главного окна программы Midnight Commander .
Используя команду меню Подтверждения, вы можете сделать так, чтобы перед выполнением операций удаления, перезаписи и запуска файла на выполнение, а также перед выходом из программы mc, выдавался дополнительный запрос на подтверждение (либо отменить такие запросы, что несколько рискованно).
Команда Распознавание клавиш: (Learn keys:) вызывает диалоговое окно, в котором вы можете протестировать работу некоторых клавиш (<F1> - <F20>, <Home>, <End>), которые работают не на всех типах терминалов. В диалоговом окне появляется таблица с названиями клавиш, которые подлежат тестированию. Вы можете перемещать подсветку по названиям, используя клавишу <Tab> или клавиши, применяемые в редакторе vi (<h> - влево, <j> - вниз, <k> -вверх, <l>- вправо). Если один раз нажать на клавиши со стрелками, после чего возле их названий в таблице появится пометка OK, то их тоже можно будет использовать для управления перемещением.
Команда Виртуальные ФС вызывает диалоговое окно, в котором вы можете задать значения некоторых параметров, связанных с использованием виртуальных файловых систем.
Команда Сохранить настройки обеспечивает сохранение выбранных значений параметров в ini-файле программы.
Я надеюсь, что приведенный в этом разделе материал позволит вам начать работать с программой Midnight Commander. Но возможности этой программы гораздо шире, чем это описано в настоящем разделе. В гл. 12 вы еще прочитаете о встроенном редакторе CoolEdit программы Midnight Commander. Кроме того, можно воспользоваться встроенной подсказкой, вызываемой по клавише <F1>. Перевод файла подсказки на русский язык (в виде bzip2-архива) вы можете найти на сайте http://linux-ve.chat.ru. Разархивируйте его, поместите в каталог /usr/lib/mc, заменив расположенный там файл mc.hlp, и вы будете при нажатии клавиши <F1> получать подсказку на русском языке.
При работе с программой Midnight Commander практически в любой момент можно обратиться к интерактивной подсказке, вызов которой осуществляется нажатием клавиши <F1>. Подсказка организована как гипертекст, т. е. в ее тексте встречаются гипертекстовые ссылки на другие ее разделы. Такие ссылки выделены голубым фоном.
Для перемещения в окне просмотра подсказки вы можете использовать клавиши перемещения курсора (стрелки) или мышь. Кроме общих комбинаций управления перемещением, приведенных в табл. 6.1, программа просмотра помощи воспринимает также комбинации, используемые в подпрограмме просмотра файлов:
Таблица 6.2. Управление перемещением при просмотре файлов
Клавиша |
Выполняемое действие |
<B> или <Ctrl>+<B> или <Ctrl>+<H> или <Backspace> или <Delete> |
Перемещение на одну страницу назад |
<Пробел> |
Перемещение на одну страницу вперед |
<U> ( <D> ) |
Перемещение на половину страницы назад (вперед) |
<G> (<Shift>+<G>) |
Перемещение к началу (к концу) |
Кроме уже перечисленных комбинаций клавиш могут быть использованы еще некоторые, работающие только при просмотре подсказки (они приведены в табл. 6.3).
Таблица 6.3. Управление перемещением при просмотре подсказки.
Клавиша |
Выполняемое действие |
<Tab> |
Переход на следующую ссылку |
<Alt>+<Tab> |
Переход на предыдущую ссылку |
<Стрелка вниз> |
Переход на следующую ссылку или смещение текста на одну строку вверх |
<Стрелка вверх> |
Переход на следующую ссылку или смещение текста на одну строку вниз |
<Стрелка вправо> или <Enter> |
Переход по текущей ссылке |
<Стрелка влево> или < L> |
Возврат к ранее просмотренным разделам подсказки |
<F1> |
Помощь по использованию самой подсказки |
<N> |
Переход к следующему разделу помощи |
<P> |
Переход к предыдущему разделу помощи |
<C> |
Переход к оглавлению подсказки |
<F10>, <Esc> |
Выход из окна просмотра подсказки |
Вы можете использовать клавишу пробела для перехода к следующей странице подсказки и клавишу <B> для перехода к предыдущей странице. Программа запоминает последовательность переходов по ссылкам и позволяет вернуться к ранее просмотренным разделам, воспользовавшись клавишей < L>.
1. Каким образом можно просмотреть информацию о правах собственности на файл?
2. В каком виде хранятся права доступа и как их установить?
3. Для чего используются ссылки? Какие существуют типы ссылок?
Литература
1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005
2. ??
Глава 8. Управление процессами
Любая выполняемая программа в системе называется процессом. Все, от системы X Window до системных программ (демонов), которые запускаются при включении компьютера, является процессом. Каждый процесс запускается от имени какого-то пользователя. Процессы, которые были запущены при загрузке системы, обычно выполняются от имени пользователя root или от имени пользователя nobody. Процессы, запущенные пользователем, обычно выполняются от его имени.
Пользователи могут управлять теми процессами, которые они запустили. Кроме того, root может управлять всеми процессами в системе, даже теми, которые выполняются другими пользователями. Процессами можно управлять и наблюдать за ними при помощи специальных программ, а так же при помощи некоторых команд оболочки.
Для управления процессами используются следующие команды:
& - запуск программы в фоновом режиме;
<Ctrl>+<Z> - приостановка текущего процесса;
bg - перевод приостановленного процесса в фоновый режим;
fg - возврат процесса из фонового режима;
jobs - список процессов в фоновом режиме;
ps - список программ, выполняемых на терминале;
kill, killall - принудительное завершение процессов;
top - вывод динамической информации о процессах;
nice- изменение приоритета;
Перевод в фоновый режим
Программы, запущенные из командной строки, обычно выполняются на переднем плане (foreground) и связаны с терминалом. Это позволяет пользователю видеть весь вывод программы и взаимодействовать с ней. Но бывают такие случаи, когда требуется, чтобы программа не занимала терминал, тогда ее запускают в фоновом режиме (foneground).
Существует несколько способов перевода программ в фоновый режим. Первый способ - это добавление символа & в конце строки, запускающей программу. Предположим, необходимо воспользоваться mp3-проигрывателем amp для проигрывания файлов из каталога, заполненного mp3-файлами, но пользователь не хочет, чтобы терминал был занят проигрывателем, так как ему в то же самое время надо делать что-то еще. Следующая команда запустит amp в фоновом режиме:
$ amp *.mp3 &
Программа будет выполняться, как и должна, а на терминале будет приглашение командной строки.
Другой способ позволяет переводить программы в фоновый режим уже во время их выполнения. После запуска программы необходимо нажать комбинацию клавиш <Ctrl>+<Z>. Это приостановит процесс (что-то вроде паузы). Программа моментально прекратит выполняться, но может в любой момент быть продолжена. Как только процесс будет приостановлен, терминал будет возвращен к приглашению командной строки и для перевода процесса в фоновый режим, необходимо ввести команду:
$ bg
Таким образом, приостановленный процесс будет переведен в фоновый режим.
Вывод из фонового режима
Если понадобилось взаимодействовать с фоновым процессом, его можно вернуть на передний план. Если в системе только один фоновый процесс, его можете вернуть, введя команду:
$ fg
Иногда случается, что программа, выполняемая в фоновом режиме, завершает свою работу. В этом случае будет выведено сообщение такого вида:
[1]+ Done /bin/ls $LS_OPTIONS
Это указывает, что фоновый процесс (в данном случае ls) завершился.
В фоновом режиме может одновременно выполнять несколько процессов. При этом необходимо знать, какой из процессов требуется вернуть на передний план. Простое выполнение fg вернет процесс, который последним был переведен в фоновый режим. Для перечисления всех выполняющихся процессов в оболочке BASH имеется команда jobs. Например:
$ jobs
[1] Stopped vim
[2]- Stopped amp
[3]+ Stopped man ps
Команда выведет список всех фоновых процессов, и все они будут приостановлены. Номера - это идентификаторы для всех фоновых процессов. Если возле номера отображается знак плюс, то это означает, что этот процесс будет выведен из фонового режима по команде fg без указания аргументов.
Если же требуется перевести на передний план vim, то придется ввести:
$ fg 1
В результате vim будет возвращен обратно на экран терминала. Перевод процессов в фоновый режим может быть очень полезен, если имеется всего один терминал, открытый через dialup-соединение. Это позволяет одновременно выполнять несколько программ и переключаться между ними в любой последовательности.
Список выполняемых программ
Простой ввод ps выдаст список программ, выполняемых на терминале. Довольно часто этот список будет невелик:
$ ps
PID TTY TIME CMD
7923 ttyp0 00:00:00 bash
8059 ttyp0 00:00:00 ps
При использовании утилиты ps выводится следующая информация:
q PID - идентификационный номер (ID) процесса. Каждый выполняющийся процесс получает уникальный идентификатор. В ядрах 2.4.х ID процессов может быть любым числом от 1 и до 232. Каждому новому процессу присваивается свободный PID;
q TTY - идентификатор терминала, на котором выполняется процесс. Простое выполнение ps покажет процессы, выполняемые на текущем терминале, так что для всех процессов в столбце TTY будет выведена идентичная информация. Как видно из примера, оба показанных процесса выполняются на терминале ttyp0. Это говорит нам о том, что эти процессы запущены либо удаленно, либо из какого-то X-терминала;
q TIME - счетчик процессорного времени выполнения процесса. Оно не является фактическим временем, с момента запуска процесса. Так как Linux многозадачная операционная система, то в любой момент времени есть несколько выполняемых процессов, и каждый из этих процессов получает небольшую порцию процессорного времени. Так вот, информация, указанная в столбце TIME, показывает время, которое гораздо меньше фактического времени выполнения процесса. Если это время больше, чем несколько минут у одного из процессов, то, скорее всего, что-то не так;
q CMD - сведения о программе. Отображается только имя программы - опции командной строки и аналогичная информация не выводится. Для того чтобы увидеть эту информацию, необходимо воспользоваться дополнительными опциями при запуске ps.
Далее будут описаны некоторые наиболее часто используемые опции утилиты ps.
Расширенный список процессов можно получить, выдав команду:
$ ps -ax
PID TTY STAT TIME COMMAND
1 ? S 0:03 init [3]
2 ? SW 0:13 [kflushd]
3 ? SW 0:14 [kupdate]
4 ? SW 0:00 [kpiod]
5 ? SW 0:17 [kswapd]
11 ? S 0:00 /sbin/kerneld
30 ? SW 0:01 [cardmgr]
50 ? S 0:00 /sbin/rpc.portmap
54 ? S 0:00 /usr/sbin/syslogd
57 ? S 0:00 /usr/sbin/klogd -c 3
59 ? S 0:00 /usr/sbin/inetd
61 ? S 0:04 /usr/local/sbin/sshd
63 ? S 0:00 /usr/sbin/rpc.mountd
65 ? S 0:00 /usr/sbin/rpc.nfsd
67 ? S 0:00 /usr/sbin/crond -l10
69 ? S 0:00 /usr/sbin/atd -b 15 -l 1
77 ? S 0:00 /usr/sbin/apmd
79 ? S 0:01 gpm -m /dev/mouse -t ps2
94 ? S 0:00 /usr/sbin/automount /auto file /etc/auto.misc
106 tty1 S 0:08 -bash
108 tty3 SW 0:00 [agetty]
109 tty4 SW 0:00 [agetty]
110 tty5 SW 0:00 [agetty]
111 tty6 SW 0:00 [agetty]
Большинство из этих процессов запускаются при загрузке почти любого компьютера, работающего под Linux. Поскольку индивидуальные настройки компьютеров обычно различаются, то каждый пользователь в своей системе, скорее всего, увидит что-то другое. Но все же, большинство из перечисленных процессов будут присутствовать в системе. Как видно из примера, опции заданные команде, заставляют ее выводить не только имена программ, но и опций с которыми они были запущены. А так же еще несколько новых столбцов с интересной информацией.
В системе большинство из процессов выполняются на устройстве "?". Это процессы, запущенные с более неактивного терминала. И поэтому они больше не принадлежат определенному терминалу.
Столбец STAT показывает состояние (status) процесса: S используется для спящего (sleeping) процесса (процесс ожидает, пока что-то произойдет); Z используется для зомбированных процессов (zombied). Зомбированные процессы - это такие процессы, родительский процесс которых завершился, оставив дочерние процессы рабочими, что не всегда корректно.
Если требуется получить больше информации о выполняемых процессах, можно применить такую команду:
$ ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 344 80 ? <st1:place>S Mar02<st1:place> 0:03 init [3]
root 2 0.0 0.0 0 0 ? <st1:place>SW Mar02<st1:place> 0:13 [kflushd]
root 3 0.0 0.0 0 0 ? <st1:place>SW Mar02<st1:place> 0:14 [kupdate]
root 4 0.0 0.0 0 0 ? <st1:place>SW Mar02<st1:place> 0:00 [kpiod]
root 5 0.0 0.0 0 0 ? <st1:place>SW Mar02<st1:place> 0:17 [kswapd]
root 11 0.0 0.0 1044 44 ? <st1:place>S Mar02<st1:place> 0:00 /sbin/kerneld
root 30 0.0 0.0 1160 0 ? <st1:place>SW Mar02<st1:place> 0:01 [cardmgr]
bin 50 0.0 0.0 1076 120 ? <st1:place>S Mar02<st1:place> 0:00 /sbin/rpc.port
root 54 0.0 0.1 1360 192 ? <st1:place>S Mar02<st1:place> 0:00 /usr/sbin/sysl
root 57 0.0 0.1 1276 152 ? <st1:place>S Mar02<st1:place> 0:00 /usr/sbin/klog
root 59 0.0 0.0 1332 60 ? <st1:place>S Mar02<st1:place> 0:00 /usr/sbin/inet
root 61 0.0 0.2 1540 312 ? <st1:place>S Mar02<st1:place> 0:04 /usr/local/sbi
root 63 0.0 0.0 1796 72 ? <st1:place>S Mar02<st1:place> 0:00 /usr/sbin/rpc.
root 65 0.0 0.0 1812 68 ? <st1:place>S Mar02<st1:place> 0:00 /usr/sbin/rpc.
root 67 0.0 0.2 1172 260 ? <st1:place>S Mar02<st1:place> 0:00 /usr/sbin/cron
root 77 0.0 0.2 1048 316 ? <st1:place>S Mar02<st1:place> 0:00 /usr/sbin/apmd
root 79 0.0 0.1 1100 152 ? <st1:place>S Mar02<st1:place> 0:01 gpm
root 94 0.0 0.2 1396 280 ? <st1:place>S Mar02<st1:place> 0:00 /usr/sbin/auto
chris 106 0.0 0.5 1820 680 tty1 <st1:place>S Mar02<st1:place> 0:08 -bash
root 108 0.0 0.0 1048 0 tty3 <st1:place>SW Mar02<st1:place> 0:00 [agetty]
root 109 0.0 0.0 1048 0 tty4 <st1:place>SW Mar02<st1:place> 0:00 [agetty]
root 110 0.0 0.0 1048 0 tty5 <st1:place>SW Mar02<st1:place> 0:00 [agetty]
root 111 0.0 0.0 1048 0 tty6 <st1:place>SW Mar02<st1:place> 0:00 [agetty]
Это достаточно полный набор информации. Здесь имеются новые столбцы, которые описывают следующее: какой пользователь запустил процесс, сколько системных ресурсов использует процесс (%CPU, %MEM, VSZ и RSS столбцы) и дату, когда процесс был запущен. Очевидно, здесь предоставлено достаточно информации о процессах, которая может быть полезна для системного администратора. В случае если информация не помещается на экран, следует использовать опцию -w.
Принудительное завершение процессов
Для принудительного завершения процессов в системе используется утилита kill. Необходимость в этом появляется, если процесс вышел из-под контроля, забирает много системных ресурсов или остался в памяти после завершения работы программы.
Для того чтобы принудительно завершить процесс, пользователю надо знать либо его PID, либо имя. Чтобы получить PID, можно воспользоваться утилитой ps. Например, чтобы завершить процесс 4747, необходимо задать такую команду:
$ kill 4747
Для того чтобы завершить процесс, пользователю надо быть его владельцем. Это сделано в целях безопасности. Если бы была возможность завершать процессы других пользователей, открылась бы возможность произведения множества злонамеренных действий в системе. Разумеется, root может завершить любой процесс в системе.
Также имеется другая разновидность утилиты kill, которая называется killall. Функция утилиты соответствует ее названию. Она завершает все из запущенных программ, с указанным именем. Если требуется завершить все выполняемые процессы vim, то следует воспользоваться такой командой:
$ killall vim
Все процессы vim, выполняемые пользователем, будут завершены. Если эту команду выполнит root, то она принудительно завершит вообще все процессы vim, выполняемые любым из пользователей. Это предоставляет интересный способ "выбрасывания" всех пользователей из системы:
#killall bash
Некоторые процессы не могут быть завершены обычной командой kill, и понадобится воспользоваться дополнительными опциями. Если процесс с PID 4747 не завершился после выполнения kill, то можно попробовать следующую команду:
$ kill -9 4747
Практически наверняка, это заставит процесс 4747 завершиться. Можно воспользоваться этим же ключом с утилитой killall. Этот ключ позволяет посылать различные сигналы программам. Обычный kill посылает процессу сигнал SIGTERM (terminate - завершить). kill -9 посылает SIGKILL (kill - убить). В распоряжении пользователей целый набор различных сигналов и можно запросить их список, выполнив:
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD
18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN
22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO
30) SIGPWR
Номера используются для kill, а имя без предшествующего SIG используется для killall. Вот пример:
$ killall -KILL vim
Еще один вариант использования kill - это перезапуск процесса. Послав сигнал SIGHUP можно заставить процесс перечитать свои конфигурационные файлы. Это очень полезно, если для какой-то программы было изменено содержание конфигурационных файлов.
Динамическая информация о процессах
Утилита top обеспечивает вывод динамической информации о процессах, выполняемых в системе.
$ top
Эта команда выдаст полный экран информации о выполняемых процессах, а так же некоторую общую информацию о системе: средняя загрузка, количество выполняемых процессов, состояние процессора, информацию о свободной памяти. Для каждого из процессов выводится: PID, пользователь, приоритет, использование CPU и памяти, время выполнения и имя программы.
Называется она top потому, что программы, наиболее требовательные к процессору будут отражены в начале списка. Утилита top является довольно удобным инструментом для отслеживания загрузки системы и выявления программ, которые вышли из-под контроля и должны быть завершены.
1. Какими процессами в системе могут управлять пользователи?
2. Для чего используется фоновый режим? Как можно перевести программу в фоновый режим?
3. Какая информация о программах выводится при использовании утилиты ps?
4. Какую информацию выдает расширенный список программ?
5. В каких случаях следует принудительно завершить процесс?
6. Для чего используется утилита top?
Литература
1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005
2. ??
Глава 9. Настройка сетевых служб
Практически в каждом компьютере имеются сетевые устройства. Для их нормальной работы необходимо правильно установить и настроить программное обеспечение поддержки сети. В этой главе описана работа со следующими сетевыми утилитами:
ifconfig - настройка сетевого интерфейса резидентной части ядра;
route - ведение таблицы маршрутов;
netconfig - установление сетевого соединения;
netstat - показывает информацию о текущих сетевых соединениях;
В главе также приведены сведения для работы со следующими конфигурационными файлами:
/etc/rc.d/rc.modules - описание модулей устройств;
/etc/inetd.conf - конфигурирование сетевых служб;
/etc/resolv.conf - описание серверов имен;
/etc/hosts - список компьютеров в сети;
Сетевое оборудование
Подключение компьютера к сети требует наличие специального аппаратного оборудования. Обычно, для подключения к сети используется сетевой адаптер (NIC, Network Interface Card), а для подключения к провайдеру Интернет - модем.
Модули ядра, которые должны быть загружены во время загрузки компьютера, загружаются из файла rc.modules, расположенного в каталоге /etc/rc.d. В стандартном файле rc.modules есть раздел Network device support, в этом разделе после блока if, находится список сетевых устройств, в виде строк, каждая из которых закомментирована. Необходимо найти нужное устройство и раскомментировать соответствующую ему строку, затем - сохранить изменения в файл. Если сценарий rc.modules будет выполнен пользователем root, то драйвер сетевого устройства должен загрузиться (так же, как и все остальные раскомментированные модули). Примечательно, что некоторые модули (такие, как драйвер ne2000) требуют указания параметров, поэтому необходимо убедиться, что выбрана правильная строка.
Сетевые устройства PCMCIA настроить проще, чем остальные. При установке системы в каталоге /etc/rc.d создается файл rc.pcmcia и каталог /etc/pcmcia, а также установятся драйверы в каталог /lib/modules/<версия_ядра>/pcmcia. Ядро автоматически определяет подключение поддерживаемых PCMCIA-устройств. В том случае, если будет вставлено сетевое устройство PCMCIA, то при загрузке необходимого модуля прозвучит звуковой сигнал. При извлечении карты, ее модуль будет автоматически выгружен.
Сетевые утилиты
Утилита ifconfig
Утилита ifconfig используется для настройки сетевого интерфейса резидентной части ядра.
Если не заданы параметры, то команда ifconfig выводит состояние устройств, активных на данный момент. Если задан только параметр interface, то ifconfig выводит только состояние заданного интерфейса; если задан аргумент -a, то будет выведено состояние всех устройств, в том числе и нефункционирующих. В остальных случаях, команда ifconfig служит для настройки. Утилиту ifconfig лучше всего изучать на примерах. Типичный вариант инициализации интерфейса выглядит следующим образом:
# ifconfig eth0 192.168.1.10 broadcast 192.168.1.255 netmask \ 255.255.255.0
Эта строка активирует сетевую карту (eth0 - первый сетевой интерфейс для ethernet; для token ring используется tr0; для ppp - ppp0 и т.д.) с IP-адресом 192.168.1.10, широковещательным адресом 192.168.1.255 и сетевой маской 255.255.255.0.
Утилита route
Утилита route служит для внесения или удаления записей из таблицы маршрутов (как "на лету", так и при начальной загрузке). Команда route -n отобразит таблицу маршрутов с IP-адресами вместо имен, что используется в случае возникновения затруднений с сервером имен.
Утилита netconfig
Утилита netconfig - это часть программы установки, но может быть использована самостоятельно. Утилита netconfig достаточно проста в использовании и обеспечивает установку обычного сетевого соединения. Она может быть особенно полезна, если пользователь недостаточно подготовлен или ему просто не нравится работать с конфигурационными файлами.
Конфигурационные файлы
Файл /etc/inetd.conf
В операционной системе, ориентированной на применение в сетях, предусматривается запуск различных сетевых служб, которые представляют собой программы, загруженные в память и отслеживающие запросы по соединениям. Если в системе будет запущено слишком много различных служб, то ее можно перегрузить. Для уменьшения загрузки системы существует служба inetd (интернет-суперсервер), она отслеживает запросы и передает управление соответствующей сетевой службе для обработки. Таким образом, вместо нескольких ожидающих, запущена только одна служба.
Файл настроек для inetd - /etc/inetd.conf. В нем определяется, какая служба, для какого соединения должна быть запущена. Например:
ftp stream tcp nowait root /usr/sbin/tcpd proftpd -l -i -a
Эта строка относится к FTP-серверу (File Transfer Protocol, протокол передачи данных). В приведенном примере, для обработки поступающих запросов должна быть запущена программа tcpd, которая расположена в каталоге /usr/sbin/. Эта программа обеспечивает основные требования безопасности для FTP-сервера proftpd.
Как и в большинстве системных файлов, строки в inetd.conf комментируются символом #. Активизировать и (или) остановить службу в inetd можно раскомментировав или закомментировав соответствующие строки в этом файле с последующим перезапуском inetd.
Файл /etc/resolv.conf
Этот файл конфигурации содержит информацию, которая читается процедурами разрешения имен при первом их вызове процессом. В нем перечислены все серверы имен, которые используются в системе, а так же имя домена сети. Вот пример этого файла:
domain home
nameserver 192.168.1.1
search home. rpunet.ru
Первая строка описывает имя домена, в данном случае - home. Вторая строка - сервер имен локальной сети, их может быть записано столько, сколько необходимо. Когда какой-то программе понадобится найти IP-адрес, она просматривает сервера имен в том порядке, в котором они записаны.
Последняя строка содержит список имен доменов, в которых следует искать сетевые имена компьютеров. Предположим, имеются компьютеры shaman.home и ws.rpunet.ru. Чтобы пропинговать их, можно просто выполнить - ping shaman и ping ws. Программа ping вначале попробует добавить .home к имени shaman, и найдет соответствующий компьютер. Для ws вначале будет опробовано имя ws.home. Соответствующий компьютер не будет обнаружен, и поэтому будет произведен поиск ws.rpunet.ru. Следует отметить, что все домены, перечисленные в search должны заканчиваться на .>, за исключением последнего.
Файл /etc/hosts
Файл hosts представляет собой список компьютеров и их IP-адресов и позволяет осуществить простейший способ поиска компьютеров в домене. Этот файл используется во время загрузки системы, когда сервер имен еще не доступен, а также в небольших сетях, где использование сервера имен не оправдано. Например, файл может содержать следующие строки:
127.0.0.1 localhost
192.168.1.32 pc.home pc
Первая строка должна быть самодостаточной. Второй строки может и не быть. Допускается указывать столько имен и синонимов для одного адреса, сколько необходимо, разделяя их пробелами. В данном случае 192.168.1.32 переводится в pc.home (и наоборот), но синоним pc так же может быть использован, когда нет желания набирать .home.
Сценарии инициализации сетевых интерфейсов
/etc/rc.d/rc.inet1
Сценарий rc.inet1 используется для сетевой инфраструктуры, он инициализирует устройства и устанавливает адреса и пути.
/etc/rc.d/rc.inet2
Сценарий rc.inet2 относится к другой части - установке служб и демонов и оперирует с настройками сети, обычно представляющими интерес для пользователей. Например, сценарий может содержать следующие блоки строк:
#Start the NAMED/BIND name server:
if [ -f $NET/named ]; then
echo -n "named"
$NET/named -u daemon -g daemon
fi
В примере важна четвертая строка, которая запускает named(8). Все остальное лишь дополнения: if проверяет, существует ли программа named там, где она должна быть, а echo выводит сообщение, что программа named запускается. Большинство служб, запускаемых из rc.inet2, загружаются аналогичными блоками.
Сетевая файловая система
Сетевая файловая система используется для предоставления доступа к файлам по сети. NFS разработана таким образом, что один компьютер может подключать разделяемые ресурсы другого и обходиться с ними, как с локальными директориями.
Для настройки NFS необходимо проделать несколько действий. Во-первых, должны быть запущенны соответствующие службы на сервере: portmap(8), nfsd(8) и mountd(8). Во-вторых, сервер должен соответствующим образом экспортировать дерево файловой системы клиенту, что осуществляется через файл /etc/exports(5).
Первая часть выполняется установкой пакета tcpip-*-*-*.tgz (из раздела N) и добавкой разрешения выполнения для сценария rc.inet2.
Файл /etc/exports представляет больше интереса. Предположим, имеется каталог с образами на компьютере с именем battlecat.home, который необходимо подключить к компьютеру pc.home. На battlecat.home должна быть строка в файле /etc/exports, которая выглядит следующим образом:
/var/media/images pc.home(ro)
Теперь, чтобы на компьютере pc.home подключить каталог образов к локальному каталогу /mnt возможно задать команду:
#mount -t nfs battlecat.home:/var/media/images /mnt
В данном примере запись в подключенный каталог запрещена, что определяется указанием параметра ro(только для чтения) в файле /etc/exports компьютера battlecat.home. Все дополнительные параметры указываются в скобках после имени клиента и разделяются запятыми. Например:
/var/media/images pc.home(rw,no_root_squash)
Параметр rw (чтение-запись) указывает, что пользователям с pc.home разрешается запись в разделяемый каталог.
Система безопасности tcp_wrappers
Система tcp_wrappers - это основная система предотвращения (а также и разрешения) доступа к службам с определенных компьютеров. Она работает следующим образом: inetd запускает много служб, большинство из которых "окутаны" (от английского wrap) программой tcpd. Другими словами, службы запускает tcpd, но inetd не знает этого (или, точнее, его это не интересует). tcpd журналирует попытки соединения и проверяет файлы /etc/hosts.allow и /etc/hosts.deny на наличие разрешения на доступ к запрашиваемой службе.
Правила, определенные в этих файлах, могут быть довольно сложными. Вот простой пример файла /etc/hosts.deny:
ALL: pyramid.home
Смысл этой строки должен быть очевиден: она перекрывает доступ pyramid.home ко всем службам на данном компьютере, которые защищены при помощи tcpd.
Система tcp_wrappers гибка в настройках, а также очень полезна и эффективна. Более подробную информацию можно найти в man-страницах tcpd(8), hosts_access(5) и hosts_options(5).
1. Каким образом загружается драйвер устройства?
2. Для чего используется утилита ifconfig?
3. Для чего используется утилита route?
4. Для чего используется утилита netconfig?
5. Какая информация приводится в файле /etc/inetd.conf?
6. Какая информация приводится в файле /etc/resolv.conf?
7. Какая информация приводится в файле /etc/hosts?
8. Назовите основные сценарии инициализации сетевых интерфейсов.
9. Что представляет из себя сетевая файловая система?
10. Каким образом работает система безопасности tcp_wrappers?
Литература
1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005
2. ??
Глава 10. Настройка графического сервера X Window
Система X Window является стандартным GUI (Graphical User Interface, графический интерфейс пользователя) для всех UNIX платформ, включая и Linux. В отличие от MS Windows и MacOS, в Linux и UNIX, GUI не имеет ничего общего с ядром операционной системы. Ядро и GUI - независимые части. Это придает системе большую стабильность - если GUI зависает, это не приводит к зависанию всей системы. Единственная проблема с X Window, заключается в том, что ее достаточно трудно настроить.
Первый из разделов описывает использование xorgsetup - утилиты, поставляемой с дистрибутивами Slackware и MOPSLinux, для облегчения настройки X Window System. Второй из разделов относится к утилите xorgconfig - классической программе в стиле командной строки, для настройки X Window.
Утилита xorgsetup
Это наиболее простой способ настройки системы Х Window. Необходимо только набрать в командной строке:
# xorgsetup
Пользователю будет предложено выбрать разрешение монитора и глубину цвета, после чего программа самостоятельно произведет корректирование файла /etc/X11/xorg.conf. По-умолчанию будет использоваться стандартный драйвер видеокарты VESA, монитор будет настроен на частоту обновления 60Гц, а переключение раскладок клавиатуры будет осуществляться одновременным нажатием клавиш Ctrl+Shift.
Утилита xorgcfg
Xorgcfg - это программа для настройки X Window, поставляемая разработчиками X. Программа имеет оконный интерфейс на английском языке (рис. 2.2). Настройка параметров осуществляется в диалоговом режиме.
Рисунок 2.1. Главное окно программы xorgcfg
Утилита xorgconfig
xorgconfig - это утилита для настройки X Window, поставляемая разработчиками. Настройка параметров осуществляется в диалоговом режиме. Из предлагаемых вариантов необходимо выбрать ответы, наиболее подходящие настраиваемой системе. В результате работы программа создаст файл /etc/Х11/xorg.conf. После этого все будет готово к запуску X Window. При ошибке следует прервать выполнение программы нажатием комбинации клавиш <Ctrl>+<C> и повторить все с начала.
Полезно до запуска xorgconfig собрать как можно больше информации о видеокарте и мониторе, установленных в компьютере. Информацию о видеокарте можно найти в файле /proc/pci, выполнив следующую команду:
# cat /proc/pci
Например, информация для видеокарты Matrox Millenium G400 имеет следующий вид:
Bus 1, device 0, function 0:
VGA compatible controller: Matrox Graphics, Inc. MGA G400 AGP (rev 133).
IRQ 16.
Master Capable. Latency=32. Min Gnt=16.Max Lat=32.
Prefetchable 32 bit memory at 0xda000000 [0xdbffffff].
Non-prefetchable 32 bit memory at 0xfe9fc000 [0xfe9fffff].
Non-prefetchable 32 bit memory at 0xfe000000 [0xfe7fffff].
Рекомендуется записать информацию об установленной видеокарте или переключиться на другой виртуальный терминал (используя комбинацию клавиш <Alt>+<Fx>, где x - число от 1 до 6) и запустить там xorgconfig. Информация о видеокарте понадобится позже. Утилита xorgconfig должна запускаться пользователем root, так как она записывает файлы и создает символические ссылки в местах, где только у пользователя root есть права на запись.
После запуска программы, на мониторе отображаются сведения о ее возможностях. В программе не предусмотрен возврат к предыдущему действию, и в случае ошибки необходимо начать заново.
Mouse protocol (протокол мыши)
Рисунок 2.2. Выбор типа мыши
Тип установленной мыши должен быть выбран из списка (рис. 2.3). Большинство компьютеров поставляются с PS/2 или Microsoft Intellimouse.
Emulate3Buttons (эмуляция третей кнопки).
Рисунок 2.3. Выбор режима эмуляции третьей кнопки
Если у мыши только две кнопки, то можно выбрать режим эмуляции третьей кнопки (рис. 2.4). Нажатие на обе кнопки одновременно будет интерпретировано, как нажатие третьей кнопки. Если установлена трехкнопочная мышь, то этот запрос и ответ на него будут проигнорированы.
Mouse device name (имя устройства).
Рисунок 2.4. Выбор имени файла устройства
Вариант по умолчанию - /dev/mouse (рис. 2.5), подойдет для большинства пользователей, использующих мышь, подключенную к последовательному или PS/2 порту.
XKEYBOARD extension (расширение XKEYBOARD).
Рисунок 2.5. Выбор расширения клавиатуры
При положительном ответе на вопрос будет включено расширенное управление раскладкой клавиатуры (рис. 2.6). То есть, в отличие от предыдущих версий X Window, где при старой раскладке клавиатуры кнопки <Backspace> и <Delete> не работали, здесь они будут работать нормально.
Bindings for alt keys (назначение дополнительных кнопок).
Эту опцию необходимо включить, если будут использоваться различные раскладки клавиатуры.
Horizontal sync range (диапазон синхронизации по горизонтали).
Рисунок 2.6. Выбор диапазона горизонтальной синхронизации
Это первый из вопросов об установленном мониторе. Здесь очень важно сделать правильный выбор. Не допускается выбор диапазона, выходящего за пределы спецификации установленного монитора. Это не так важно на новых мониторах, так как у них есть защита, а более старые мониторы, при указании диапазона превосходящего его возможности, могут быть повреждены. Так что, если есть сомнения, лучше перестраховаться и выбрать консервативный диапазон. Очень полезно иметь в наличии документацию от установленного монитора. Для большинства современных мониторов можно выбрать 31.5-82.0 или 31.5-95.0. При этом допускается ввести свой диапазон частот, если подходящий в списке не указан.
Vertical sync range (диапазон синхронизации по вертикали).
Рисунок 2.7. Выбор диапазона вертикальной синхронизации
Для ответа на этот вопрос также необходимо знать спецификацию установленного монитора. При сомнениях рекомендуется выбирать меньший диапазон. Безопасный выбор, будет 50-90 или 50-100. При этом допускается ввести свой диапазон частот, если подходящий в списке не указан.
Identification strings (строка идентификации).
Здесь будут предложены три вопроса об идентификации монитора. В этом пункте допускается ввод любых имен. Так как эти данные будут использованы только в конфигурационном файле для идентификации монитора, то их можно пропустить путем нажатия клавиши <Enter>.
Video card database (база данных видеокарт).
Рисунок 2.8. Выбор типа видеоадаптера
Этот подраздел по настройке X Window относится к установленному видеоадаптеру. Документация от видеоадаптера и информация, полученная ранее, помогут при настройке. Для выбора видеоадаптера из списка, необходимо ответить y (да). Для перехода к следующей странице необходимо нажать на клавишу <Enter>.
В базе данных есть около 800 видеокарт. В левом столбце указан номер видеокарты, и ее наименование. В правом столбце содержится информация о чипсете данной видеокарты (рис. 2.9). Для просмотра списка необходимо нажимать на клавишу <Enter>, пока не будет найдена нужная видеокарта, после этого необходимо ввести соответствующий ей номер. Если тип установленной видеокарты неизвестен, то можно поискать видеокарту по названию в файле /proc/pci, либо можно выбрать пункт generic SVGA. Многие видеокарты, для которых нет их собственного X-сервера, поддерживаются стандартным SVGA-сервером. После выбора типа видеокарты пользователю будет предоставлена детальная информация о ней. Например, для указанной выше карты Matrox G400 будет получено такое сообщение:
Your selected card definition:
Identifier: Matrox Millennium G400
Chipset: mgag400
Driver: mga
Do NOT probe clocks or use any Clocks line.
Video memory (видео память).
Рисунок 2.9. Выбор размера видеопамяти
Необходимо выбрать размер имеющейся видеопамяти (рис. 2.10). Для получения этой информации можно использовать файл /proc/meminfo. Если в списке нет подходящего варианта, то можно выбрать Other и ввести вручную объем (в Кбайт) имеющейся видеопамяти.
Identification strings (строки идентификации).
Будет предложено ввести три идентификационных строки. Как и с монитором, можно просто нажать три раза клавишу <Enter> или ввести любые названия.
Теперь можно будет выбрать, в каких режимах будет работать X-сервер. На экране появятся четыре строки с указанием различных глубин цвета - 1bpp, 8bpp, 16bpp и 24bpp. Возле каждого из них есть список различных видеорежимов, которые могут быть использованы с этой глубиной цвета. X-сервер запустится с глубиной цвета по умолчанию и с первым из перечисленных для этой глубины разрешением. Для сохранения предложенного порядка режимов необходимо выбрать Ok.
В этом месте можно изменить разрешение по умолчанию. Сначала необходимо выбрать глубину цвета, для которой требуется сделать изменения. Например, будет предоставлен следующий выбор:
"640x480" "800x600" "1024x768" "1280x1024" for 1bpp
"640x480" "800x600" "1024x768" "1280x1024" for 8bpp
"640x480" "800x600" "1024x768" "1280x1024" for 16bpp
"640x480" "800x600" "1024x768" for 24bpp
Если требуется, чтобы X Window по умолчанию запускалась с другим разрешением, то вначале необходимо выбрать глубину цвета, которую требуется изменить, а затем следовать указаниям программы. Она предложит ввести цифры, соответствующие разрешениям в выбранном порядке. Если требуется просто поменять порядок разрешений, то достаточно ввести:
Which modes? 5432
Также возможно удалить те разрешения, которые не нужны. Если установленная видеокарта не может работать при разрешении 1280 × 1024, то нет никакого смысла пробовать этот режим. Можно удалить этот режим, введя:
Which modes? 432
После выбора режимов для этой цветовой глубины, программа спросит о необходимости использовать виртуальный экран, который больше, чем имеющийся физический экран. При подводе курсора к краю виртуального экрана, он будет "пролистываться". Это позволяет разместить больше окон, но из-за невозможности сразу видеть весь экран может возникнуть раздражение.
После этого программа возвратиться в список видеорежимов. После изменения для глубины 16bpp он будет выглядеть следующим образом:
"640x480" "800x600" "1024x768" "1280x1024" for 1bpp
"640x480" "800x600" "1024x768" "1280x1024" for 8bpp
"1280x1024" "1024x768" "800x600" "640x480" for 16bpp
"640x480" "800x600" "1024x768" for 24bpp
При желании можно продолжить изменения для остальных глубин цвета. После установки видеорежимов необходимо выбрать Ok для продолжения.
Write the config file (запись конфигурационного файла).
Для записи настройки X Window в файл /etc/Х11/xorg.conf необходимо ответить y (да).
На этом настройка X Window завершена.
Для запуска оконного менеджера наберите:
$
startx
Если все настроено правильно, то запустится оконный менеджер, выбранный вами в процессе устновки. Если программа завершается с ошибкой, необходимо провести настройку X Window еще раз.
Существует несколько комбинаций клавиш, которые весьма полезны при использовании X Window.
q <Ctrl>+<Alt>+<Backspace> - принудительно завершит X Window и вернет пользователя в текстовый режим.
q <Ctrl>+<Alt>+<функциональная_клавиша>. Используется для переключения из X Window на терминалы командной строки.
q <Ctrl>+<Alt>+<Num+> и <Ctrl>+<Alt>+<Num-> переключает видеорежимы.
Сессионные файлы настроек
/etc/X11/xinit/xinitrc и ~/.xinitrc
xinit(1) - программа, запускающая X Window. Она выполняется из startx(1), а ее конфигурационный файл определяет, какие программы (включая и оконный менеджер) должны быть запущены при загрузке X Window. Сначала xinit проверяет, есть ли в домашнем каталоге файл .xinitrc. Если она находит его, то он выполняется, а если нет - выполняется /etc/X11/xinit/xinitrc (системный файл по умолчанию). Пример файла xinitrc:
# !/bin/sh
# $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap
# merge in defaults and keymaps
if [ -f $sysresources ]; then
xrdb -merge $sysresources
fi
if [ -f $sysmodmap ]; then
xmodmap $sysmodmap
fi
if [ -f $userresources ]; then
xrdb -merge $userresources
fi
if [ -f $usermodmap ]; then
xmodmap $usermodmap
fi
# start some nice programs
twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &
exec xterm -geometry 80x66+0+0 -name login
Все из этих if-блоков используются для подключения разных конфигурационных файлов. Наибольший интерес представляет часть файла, расположенная в конце - это та часть, где запускаются различные программы. Эта X-сессия начнется с оконным менеджером TWM, часами и тремя терминалами. Команда exec в строке запуска последнего из терминалов (xterm(1)) указывает, что этот терминал заменит текущую оболочку (ту, которая запустила xinit). Когда пользователь выйдет из этого терминала, X-сессия закончится.
Если при запуске X Window, необходимо запускать дополнительные программы, то нужно скопировать /etc/X11/xinit/xinitrc в ~/.xinitrc и отредактировать его, разместив нужные строки. Например, если вместо TWM вы хотите использовать KDE, то в ~/.xinitrc следует добавить:
# Start the window manager:
exec startkde
Примечательно, что в каталоге /etc/X11/xinit/ есть несколько файлов xinitrc.*, которые соответствуют разным оконным менеджерам. По желанию можно воспользоваться любым из них.
.Xresources и .Xdefaults
Для получения различных настроек пользователя (цвета, шрифты, и т. д.) многие из программ X Window используют X Resource Database. Эта база данных обслуживается при помощи программы xrdb(1), которая напрямую практически никогда не запускается. В системе она запускается автоматически из файла xinitrc. Файл, из которого xinitrc указывает программе xrdb загружать настройки, - .Xresources. Программа xrdb так же загрузит .Xdefaults. Минимальный файл .Xresources выглядит следующим образом:
xterm*background: black
xterm*foreground: gray
xterm*scrollBar: true
xterm*font: -*-lucidatypewriter-*-r-*-*-15-*-*-*-*-*-*-*
Эти четыре строки определяют настройки для программы xterm. В общем случае файл .Xresource имеет следующую структуру:
program*option: setting/value
Таким образом, содержание .Xresources должно быть самодостаточным. Шрифты для X Window всегда описываются так, как указано в четвертой строке.
Серверы и оконные менеджеры
Изначально система X Window была разработана, для работы в вычислительной сети. Предполагалось, что один большой сервер выполняет X-программы, а на экран они выводятся на других компьютерах-клиентах, подключенных к сети. Возможность удаленно выводить на экран программы может иметь множество преимуществ. Однако, главные недостатки этой концепции в том, что она менее безопасна, чем локально выполняемые программы, а так же требовательна к сетевым ресурсам.
Даже если X Window будет запущен на отдельном компьютере, пользователь имеет дело с моделью клиент-сервер. Сервер - это часть, которая определяется видеокартой. Выбором видеокарты при настройке X Window было определено, какой X-сервер будет использоваться. Клиентская часть - это все остальные программы, которые выполняются в X Window. Внешний вид конкретной X-сессии определяется специфическим клиентом, оконным менеджером.
Работа оконного менеджера заключается в том, чтобы формировать окна на экране, а так же обрабатывать ввод с мыши и клавиатуры. Современные оконные менеджеры - сложные программы, в них можно настроить практически все. В них есть все мыслимые опции, которые позволяют сделать рабочий стол пользователя отличным от всех других.
Большое количество оконных менеджеров действительно отличает Linux от MS Windows, в котором имеется одна основная оконная среда. В Linux можно пользоваться любым из многих оконных менеджеров с различным внешним видом и различными настройками. Некоторые относят это к недостаткам, так как нет одного стандартного внешнего вида. Но большинство пользователей Linux называют это достоинством, так как имеется возможность настроить систему по желанию пользователя.
Выбор рабочего стола
Многие годы UNIX использовался исключительно как операционная система для серверов и мощных профессиональных рабочих станций. Им пользовались люди с техническими наклонностями, поэтому графические интерфейсы представляли собой скелеты, разработанные для запуска нескольких необходимых приложений, вроде CAD-программ (Computer-Aided Design, автоматизированное проектирование) и программ обработки изображений. Управление файлами и системой производилось исключительно из командной строки. Различные производители (Sun Microsystems, Silicon Graphics и т. д.) продавали рабочие станции с наличием удобного графического интерфейса, но большое разнообразие сред разработки для GUI привело к тому, что единого стандарта для рабочего стола не существует. Полоса прокрутки в разных программах может выглядеть по-разному, меню расположены в различных частях окна, в программах встречаются разные кнопки и переключатели. До тех пор, пока пользователями были лишь технические профессионалы, это было несущественно.
С появлением свободных UNIX-подобных ОС, а также растущим числом различных графических приложений, X Window стал использоваться в качестве рабочего стола. Для устранения всех недостатков были созданы два проекта с открытыми исходными текстами программ: The K Desktop Environment или KDE и GNU Network Object Model Environment, известный как GNOME. Каждый из них имеет широкий спектр приложений, от панелей задач и менеджеров файлов, до игр и офисных пакетов и предоставляет универсальный и завершенный рабочий стол.
Различия между KDE и GNOME не очень велики. Они выглядят по-разному, так как написаны с помощью различных средств. KDE основан на Qt-библиотеке компании Troll Tech AS, в то время как GNOME основан на GTK, наборе инструментов, изначально разработанном для GIMP (GNU Image Manipulation Program, программа для работы с изображениями). Так как проекты независимы, то и разрабатываются они разными дизайнерами и программистами, с разными стилями разработки и с различной философией. Тем не менее, результат в обоих случаях, фундаментально идентичен: полная, тесно интегрированная рабочая среда и набор приложений. По функциональности и внешнему виду оба оконных менеджера предоставляют богатые возможности, к тому же они бесплатны.
Чтобы упростить выбор рабочего стола, дистрибутив включает в себя утилиту xwmconfig, которая позволяет выбрать пользователю, какой из рабочих столов или оконных менеджеров использовать. Для ее запуска необходимо ввести следующую команду:
$ xwmconfig
Пользователю будет предложен список всех рабочих столов и оконных менеджеров, установленных в системе. По желанию может быть выбран любой из них. Каждый пользователь в системе должен выполнить эту утилиту, так как разные пользователи могут использовать разные рабочие столы. И возможно, не все захотят пользоваться тем, который установлен по умолчанию, при установке системы.
Экспортирование экрана
Для выполнения процедуры запуска X-программы на одном компьютере и вывода ее на экран на другом необходимо, чтобы вычислительная сеть обладала достаточно большой скоростью передачи данных. Поэтому при подключении к сети удаленного компьютера через модемное соединение, этот режим практически не используется. При этом существует еще одна проблема: экспортирование экрана небезопасно, так как в сети возможно наблюдение за работой пользователя. Но в локальной сети удаленное выполнение программ может быть полезно.
Компьютер, который выполняет X-программы и посылает изображение, будет называться сервером, а компьютер, на котором изображение будет выводиться на экран, - клиентом.
В предлагаемом для рассмотрения примере будет использоваться два компьютера: golf.foc - довольно мощный сервер, расположенный в неудобном месте. На нем установлено ОЗУ большой емкости, мощный процессор, а также много X-программ, но нет монитора. В другом конце комнаты расположен couch.foc - старый компьютер с небольшим объемом ОЗУ и маленьким диском. На нем нет достаточных ресурсов для запуска программы вроде Netscape. Компьютер couch имеет два существенных преимущества: у него есть монитор и он расположен прямо возле удобного кресла. Пользователю даже не надо вставать, чтобы пользоваться компьютером. Задача заключается в том, чтобы обеспечить возможность запустить программу Netscape с компьютера couch. Решение - экспортирование экрана.
Для удаленного запуска программ необходимо войти в систему на couch, запустить X Window и запустить любую установленную в системе терминальную программу (xterm, rxvt, eterm, aterm или любую другую). Первый шаг при настройке удаленного отображения X-программ - настройка клиента так, чтобы другие компьютеры могли показывать вывод программ. Для этого используется программа xhost, которая позволяет пользователю выбрать тех, кто сможет "смотреть", что делается на его компьютере:
couch $ xhost + golf.foc
golf.foc being added to access control list
Теперь только golf.foc может выводить информацию на экран компьютера couch. Пользователь может проверить, у кого есть доступ для вывода на экран информации, запустив xhost без аргументов:
couch $ xhost
access control enabled, only authorized clients can connect
INET:golf.foc
INET:localhost
INET:couch.foc
LOCAL:
Теперь клиент готов. Следующий шаг - настроить сервер, чтобы он знал, куда выводить изображение вместо монитора.
Настройка сервера проста. После того, как пользователь соединился с сервером, ему надо изменить переменную $DISPLAY. По умолчанию, вероятно, она будет пустая. Переменной должно быть присвоено значение, равное удаленному хосту, а также указано число, соответствующее тому, на какую X-сессию выводить экран. Скорее всего, у пользователя будет только одна X-сессия, так что тут никаких проблем возникнуть не должно.
В данном примере переменная $DISPLAY должна быть установлена следующим образом (в других случаях, если на сервере используется BASH, суть такая же, но синтаксис будет немного отличен):
golf $ export DISPLAY=couch.foc:0.0
Это все, что необходимо сделать для настройки сервера. Теперь, не отсоединяясь, можно запускать X-программы с него. Весь вывод программ по сети будет направляться на экран пользователя на компьютере couch.
Для запуска netscape на сервере golf пользователь компьютера couch должен ввести команду:
golf $ netscape &
Так как переменная $DISPLAY указывает на couch, все будет выводиться на этот компьютер. Пользователю даже не придется вставать из-за своего компьютера для того, чтобы запускать программы на сервере. При этом следует помнить, что на сервере должны быть установлены все библиотеки, и другие файлы, необходимые для выполнения программ. В то же время, на сервере не понадобится файл конфигурации xorg.conf, так как на его экран ничего не выводится.
Отключить экспортирование экрана пользователь может, убрав сервер из списка доступа на своем клиенте:
couch $ xhost - golf.foc
golf.foc being removed from access control list
При этом следует быть осторожным, так как любой компьютер может быть сервером Х-приложений для удаленных клиентов, а его пользователь даже может не знать об этом.
1. Какие существуют утилиты для настройки X Window?
2. Каковы функции программы xinit(1)?
3. Где хранятся настройки пользователя?
4. Каковы главные недостатки удаленного вывода программ на экран?
5. Какая утилита используется для выбора рабочего стола?
6. В чем заключается суть экспортирования экрана?
Литература
1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005
2. ??
Глава 11. Управление пакетами системы
Пакет программ - это упакованный набор связанных программ, которые готовы для установки. Когда пользователь скачивает архив исходных текстов программ, ему надо конфигурировать, компилировать и устанавливать все вручную. С пакетом программ все это уже было проделано предварительно. Пользователю только потребуется установить пакет. Другое очень удобное преимущество пакетов в том, что их можно очень легко удалить или обновить. Система поставляется со всеми необходимыми средствами для управления пакетами, и пользователь очень легко может устанавливать, удалять, обновлять, создавать и проверять пакеты.
Обзор формата пакетов
Перед тем, как приступить к изучению утилит, следует ознакомиться с форматом пакетов системы. Пакет, это tar-архив, сжатый при помощи архиватора gzip. Пакет устроен таким образом, что он может быть развернут в корневом каталоге файловой системы.
Здесь приведена вымышленная программа и пример ее пакета:
./
usr/
usr/bin/
usr/bin/makehejaz
usr/doc/
usr/doc/makehejaz-1.0/
usr/doc/makehejaz-1.0/COPYING
usr/doc/makehejaz-1.0/README
usr/man/
usr/man/man1
usr/man/man1/makehejaz.1.gz
install/
install/doinst.sh
Система управления пакетами развернет этот файл в корневом каталоге, чтобы установить его. Будет сделана соответствующая запись в базе данных пакетов, включающая содержание этого пакета, чтобы позже можно было его обновить или удалить.
В примере имеется специальный каталог install/, который может содержать сценарий, который будет выполнен после копирования файлов. Сценарий называется doinst.sh. Если система обработки пакета найдет такой сценарий, то после установки пакета он будет выполнен.
Утилиты управления пакетами
Есть четыре основные утилиты для управления пакетами. Они могут устанавливать, удалять и обновлять пакеты.
Утилита pkgtool
Pkgtool - это меню-управляемая утилита, позволяющая производить установку и удаление пакетов. Основное меню представлено на рис. 2.10.
Рисунок 2.10. Главное окно утилиты pkgtool
Установка может быть произведена из текущего каталога, другого каталога или с гибких дисков. После выбора pkgtool проверит выбранное расположение на наличие пакетов для установки.
Также имеется возможность просмотреть список пакетов (рис. 2.11).
Рисунок 2.11. Просмотр установленных пакетов
Если требуется удалить пакеты, то необходимо выбрать опцию remove, и утилита отобразит список всех установленных пакетов, с возможностью выбора нескольких из них для удаления. Необходимо пометить те пакеты, которые должны быть удалены, и выбрать OK.
Некоторые пользователи предпочитают pkgtool утилитам командной строки. Тем не менее, следует отметить, что утилиты командной строки предоставляют гораздо больше возможностей.
Утилита installpkg
Утилита installpkg(8) обеспечивает установку новых пакетов. Она имеет следующий синтаксис:
# [ROOT=<path>] installpkg [option] <package name>...
Утилита installpkg имеет три опции, но при вызове может быть использована только одна из них. Опции приведены в табл. 3.6.
Таблица 2.2. Опции installpkg
Опция |
Действие |
-m |
Производит операцию makepkg с текущим каталогом. |
-warn |
Показывает, что случится, если пакет будет установлен. Это довольно полезно, так как можно предварительно посмотреть, что случится при установке пакета. |
-r |
Рекурсивно установит все пакеты из текущего каталога. |
|
<package name> так же может быть маской имен. |
Если переменная окружения ROOT была задана до выполнения installpkg, то для установки, вместо корневого каталога, будет использован путь, указанный в данной переменной. Это полезно при настройке новых дисков для корневого каталога. Они обычно подключены к каталогу /mnt или какому-то другому, отличному от /.
База данных установленных пакетов есть не что иное, как набор файлов, расположенных в каталоге /var/log/packages. Для каждого из пакетов в этом каталоге создается текстовый файл. Если в пакете есть послеустановочный сценарий, он записывается в файл /var/log/scripts/<packagename>.
При установке можно указать несколько пакетов или даже использовать шаблоны для имен пакетов. При этом installpkg ничего не сообщит, если переписывается уже установленный пакет. Она просто установит новый пакет поверх старого. Если необходимо, чтобы файлы от старого пакета были гарантированно удалены из системы, рекомендуется воспользоваться утилитой upgradepkg.
Утилита removepkg
Removepkg обеспечивает удаление пакетов, уже установленных в системе. Синтаксис таков:
# [ROOT=<path>] removepkg [option] <package name>...
Утилита removepkg имеет четыре опции, но при вызове может быть использована только одна из них. Опции приведены в табл. 3.7.
Таблица 2.3. Опции removepkg
Действие |
|
-copy |
Пакет будет скопирован в резервный каталог. Это создаст дерево каталогов оригинального пакета, без его удаления. |
-keep |
Сохраняет временные файлы, которые создаются при удалении. |
|
Полезно только для тестирования правильности работы. |
-preserve |
Пакет удаляется из системы, но в то же время, его копия |
|
сохраняется в резервный каталог. |
-warn |
Показывает, что произойдет, если пакет будет удален. |
Если переменная окружения ROOT была задана до выполнения removepkg, то для установки, вместо корневого каталога, будет использован путь, указанный в данной переменной.
Утилита removepkg проверяет остальные пакеты и удаляет только файлы, являющиеся уникальными для удаляемого пакета. Утилита так же просмотрит постустановочный сценарий пакета и удалит все символические ссылки, которые были созданы им.
Во время процесса удаления отображается статус. После удаления база данных пакета перемещается в каталог /var/log/removed_packages, а постустановочный сценарий в /var/log/removed_scripts.
Как и в случае с installpkg, имеется возможность указывать несколько пакетов или использовать шаблоны для имен пакетов.
Утилита upgradepkg
Upgradepkg(8) обновит пакет, уже присутствующий в системе. Синтаксис утилиты таков:
# [ROOT=<path>] upgradepkg <package name>...
или
# [ROOT=<path>] upgradepkg <old package name>%<new package name>
Утилита upgradepkg вначале устанавливает новый, а затем удаляет старый пакет. Таким образом, файлы от старого пакета не будут мертвым грузом висеть в каталогах. Если имя обновляемого пакета изменилось, рекомендуется воспользоваться вторым вариантом обращения к утилите, указав имя старого пакета (который установлен в системе) и после знака процента имя нового пакета (который должен быть установлен).
Если переменная окружения ROOT была задана до выполнения upgradepkg, то для установки, вместо корневого каталога, будет использован путь, указанный в данной переменной.
Утилита upgradepkg небезупречна. Рекомендуется всегда создавать копии конфигурационных файлов. Если они будут переписаны, то сохранится копия оригиналов.
Как и с installpkg и removepkg, можно указать несколько пакетов или использовать шаблоны для имен пакетов.
Утилита rpm2tgz/rpm2targz
Red Hat Package Manager (RPM) - это популярный сегодня тип системы пакетов. Многие разработчики предоставляют свои программы в формате RPM. Так как этот формат "неродной" для Slackware и MOPSLinux, то пользователям этих систем не рекомендуется его использовать. Тем не менее, некоторые программы доступны только в RPM (даже исходные тексты).
В состав дистрибутива включены утилиты, которые конвертирует пакеты RPM в формат .tgz. Они позволяют распаковать пакет (при помощи команды explodepkg) во временный каталог и исследовать его содержимое.
Утилита rpm2tgz создаст пакет с расширением .tgz, а утилита rpm2targz создаст архив с расширением .tar.gz.
Создание пакетов
Для создания пакетов системы нет определенных требований, единственное - пакет должен быть в виде файла tar gziped и, если нужен послеустановочный сценарий, он должен быть в каталоге /install/doinst.sh.
Если пользователи заинтересованы в создании пакетов для своей системы или для сети, которую они обслуживают, им следует посмотреть на различные build-сценарии в дереве каталогов исходных текстов системы. Есть несколько методов, которые используются для создания пакетов.
Утилита explodepkg
Утилита explodepkg(8) служит для разворачивания содержимого пакета в текущий каталог.
Если посмотреть на дерево каталогов исходных текстов системы, то можно увидеть, как используется эта команда для "структурных" пакетов. Эти пакеты содержат скелет того, как конечный пакет будет выглядеть. Они хранят все необходимые имена файлов (нулевой длины), права доступа и принадлежности.
Утилита makepkg
Утилита makepkg(8) запакует текущий каталог в формат пакета tgz. Она найдет все символьные ссылки в дереве и добавит блоки их создания в постустановочный сценарий пакета. Так же утилита выдаст сообщение, если обнаружит файлы нулевой длины в дереве пакета.
Эта утилита обычно выполняется после того, как было создано дерево каталогов нового пакета.
1. Что такое пакет программ?
2. Каковы основные утилиты упраления пакетами?
3. Какие методы используются для создания пакетов?
Литература
1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005
2. ??
Глава 12. Использование WEBMIN для настройки служб и сервисов ОС
???расписать или нет???
Часть III. Конфигурирование периферийного оборудования
Глава 13. Подключение принтеров и настройка систем печати
Общие сведения о принтерах и системах печати
Для печати на персональных компьютерах используются матричные, лазерные и струйные принтеры. Причем, матричные принтеры встречаются все реже и реже, а лазерные и струйные принтеры полностью захватили рынок. Используемые в офисах лазерные принтеры чаще подключаются к сети Ethernet, а не к последова-тельному или параллельному порту. В индивидуальном пользовании остаются струйные принтеры.
Исходя из используемого интерфейса, принтеры разделяются на сетевые, последовательные, параллельные, USB и по типам данных, кото-рые они воспринимают на текстовые, графические и другие.
Для взаимодействия с принтерами разработано семейство языков описания страниц (Page Description Langauge, PDL), которые повышают эффективность работы приложений. Наиболее распространенными языками описания страниц являются PostScript, PCL и PDF. Самый популярный в Linux-системах - язык PostScript. Практически все программы компоновки страниц генерируют выходные данные на языке PostScript. Для генерации данных на языках PCL и PDF в Linux-системах чаще всего требуется использование специальных программных фильтров.
Некоторые принтеры нельзя использовать в Linux, так как они не поддерживают ни одного языка семейства PDL и изначально предназначены для работы в MS Windows. Такие принтеры называют WinPrinters. Информация, необхо-димая для взаимодействия с такими принтерами производителями не публикуется, а драйверы патентуются и имеют ограничения по распространению. Поэтому перед покупкой принте-ра это следует проверить.
Для Linux существует несколько различных систем печати. Наиболее распространенными являются системы LPD, LPRng и CUPS.
Система LPD (Line Printer Daemon - демон построчной печати) основана на системе печати BSD, которая была разработана в университете Беркли и много лет использовалась в среде UNIX. Разновидности этой системы до сих пор применяются в различных версиях UNIX.
LPRng - система следующего поколения, обладающая повышенной гибкостью и рас-ширенными функциональными возможностями.
В MOPSLinux включена перспективная и популярная в настоящее время система печати CUPS (Common UNIX Printing System - общая сис-тема печати UNIX) разработанная компанией Easy Software Products. Она была недавно перенесена в Linux и может использоваться в орга-низациях, где применяются разные версии Linux, и требуется кросс-платформенная печать. Система CUPS имеет набор дополнительных утилит для эмуляции систем печати LPD и LPRng. Информацию об этой системе можно найти на Web-узле www. cups. org.
Необходимую информацию можно найти на Web-узле www.linuxprinting.org.
В Linux-системах процесс печати осуществляется следующим образом. Пользовательская программа формирует задание на печать и передает его системной программе, которая называется спулер, или сервер печати. Спулер принимает задания на печать, записывает их в буферный каталог и в соответствии с приоритетом последовательно посылает на принтер.
Для подключения принтера необходимо подключить сам принтер и настроить систему печати.
Принтеры последовательного доступа требуют дополнительной конфигурации. Про-граммное обеспечение спулера должно "знать" подходящие значения скорости передачи в бодах и другие параметры последовательного порта, чтобы иметь возможность взаимо-действовать с принтером на понятном ему языке. Подробнее об этом можно узнать из описаний систем печати.
Параллельные порты являются более быстродействующими, чем стандартные после-довательные порты, и, как правило, не требуют дополнительной настройки. В Linux параллельный порт называется /dev/lp0.
Более современная технология последовательного доступа называется USB (Universal Serial Bus - универсальная последовательная шина). USB-принтеры подключаются к файлам устройств /dev/usb/lp*.
Некоторые принтеры имеют сетевые интерфейсы, которые позволяют непосредственно подключать их к компьютерной сети. Данные на сетевые принтеры можно посылать быст-рее, чем на принтеры, подключенные к последовательным или параллельным портам.
Для упрощения администрирования следует организовать сеть так, чтобы все сетевые принтеры контролировались небольшим числом компьютеров. Другие компьютеры должны просто посылать свои задания на эти серверы печати. Подобный подход позволит избежать ненужных трудозатрат, поскольку администратору не придется обслуживать систему печати на каждом компьютере. Кроме того, при возникновении проблем с печа-тью потребуется исследовать лишь несколько серверных конфигураций.
Многие современные сетевые лазерные принтеры включают в себя сервер LPD. Благодаря этому Linux-клиенты могут посылать файлы на принтер точно так же, как они отправляли бы их на другой сервер Linux.
Старые сетевые принтеры требуют, чтобы задания на печать посылались через ТСР-порт 9100. Такую конфигурацию трудно поддерживать в системе LPD, зато легко - в системах LPRng и CUPS.
Для сетевой печати можно также использовать систему CIFS (Common Internet File System -общая файловая система для Internet), известную как Samba. CIFS позволяет серверам UNIX, Linux и Windows совместно работать с принтерами, благодаря чему любой из компьютеров может выступать в качестве сервера сетевой печати. Однако, такая конфигурация не рекомендуется для работы со сверхвысокопроизводительными принтерами, поскольку могут возникнуть проблемы с блокировками файлов. Система CIFS особенно удобна, когда при-ходится использовать Linux-принтеры совместно с клиентами Windows.
PostScript-принтеры хорошо поддерживаются системами печати в Linux, и конфигу-рировать такие принтеры относительно несложно. К сожалению, принтеры, не пони-мающие формат PostScript, в частности струйные и некоторые лазерные прин-теры, использовать труднее.
Для печати на таком принтере часто требуется специальное программное обеспече-ние, осуществляющее "перевод" задания на соответствующую разновидность языка се-мейства PDL. Некоторые поставщики предоставляют такие программы для Linux, и это, конечно, лучший вариант. Популярной альтернативой является пакет ghostscript, кото-рый может преобразовывать задания формата PostScript в PDL-страницы. В MOPSLinux не возникает подобных проблем, так как дистрибутив содержит пакет ghostscript, взаимодействующий с системой печати CUPS.
Общие сведения о CUPS
В MOPSLinux используется система печати CUPS версии 1.1
Система печати CUPS - это современная система печати, которая работает с новыми принтерами, устройствами и протоколами. Она совместима с существующими приложениями UNIX и использует Интернет-протокол печати (Internet Printing Protocol - "IPP") IPP/1.1, который разработан инженерной группой по развитию Интернета (Internet Engineering Task Force - "IETF"). CUPS является свободным программным обеспечением и распространяется в соответствии с условиями Общественной Лицензии Проекта GNU (GNU General Public License - GNU GPL) и Общественной Лицензии Библиотеки Проекта GNU (GNU Library General Public License).
Первая версия системы CUPS (основанная на протоколе IPP/1.0) вышла в октябре 1999 года. С тех пор, что касается безопасности, мобильности и ошибок в работе, программный код системы CUPS 1.0 был усовершенствован, но функциональных изменений не произошло.
Версия CUPS 1.1 основана на протоколе IPP/1.1. Она представляет собой версию системы, улучшенную в соответствии с запросами пользователей. Как и у версии 1.0, программный код версии CUPS 1.1 будет усовершенствован в случае обнаружения проблем в работе системы.
Структура
Как и большинство систем печати, CUPS является центром процесса планирования печати, который координирует печатные работы, обрабатывает управляющие команды, сообщает информацию о статусе принтера локальным и удаленным программам, а также информирует пользователей при необходимости. На рисунке 1 показана общая организация системы CUPS.
Рисунок 3.1. Диаграмма блоков системы печати CUPS
Планировщик
Планировщик представляет собой приложение сервера HTTP/1.1, которой обрабатывает HTTP запросы. Помимо обработки запросов на печать посредством IPP POST запросов, планировщик также выполняет роль полноценного веб-сервера для создания документов, отслеживания статуса и управления.
Планировщик также следит за списком доступных принтеров локальной сети и, используя соответствующие фильтры и программы передачи, при необходимости распределяет печатные работы.
Конфигурационные файлы
Блок конфигурационных файлов содержит:
- Конфигурационный файл HTTP сервера.
- Файлы, задающие принтер и класс.
- Файлы MIME типа и файлы правил преобразования.
- Файлы описания принтеров со шрифтами PostScript (PostScript Printer Description - PPD).
Конфигурационный файл HTTP сервера похож на файл конфигурации сервера Apache и задает для сервера все параметры контроля доступа.
Файлы, задающие принтер и класс, представляют собой списки всех доступных очередей принтеров и их классов. Классами принтеров называются группы принтеров. Задание, которое дается классу, передается первому свободному принтеру класса (по кругу).
В файлах MIME типа содержатся все поддерживаемые типы MIME (text/plain, application/postscript и др.), а также правила для автоматического определения формата файла. Они используются HTTP сервером для определения поля Тип_содержания (Content-Type) для запросов GET и HEAD, а также обработчиком IPP запросов для определения типа поля при получении запроса на Печать (Print-Job) или Доставку (Send-File) с форматом_документа (document-format) application/octet-stream.
Файлы преобразования MIME содержат список доступных фильтров. Фильтры используются при распределении работы (печати), чтобы дать возможность приложению посылать системе печати файл удобного формата, а в необходимый печатный формат файл будет преобразован уже непосредственно этой системой. С каждым фильтром связана относительная <стоимость>, и алгоритм фильтрации выбирает такой набор фильтров, которые преобразуют формат файла с наименьшими <затратами>.
Файлы PPD описывают возможности всех принтеров (не только принтеров со шрифтами PostScript). Существует один PPD файл для каждого принтера. Для поддержки драйверов принтера PPD файлы для принтеров, не поддерживающих шрифты PostScript, определяют дополнительные фильтры с помощью атрибутов cupsFilter.
CUPS API
Блок CUPS API содержит характерные для CUPS функции для создания очереди печатных работ, получения информации о принтере, доступа к ресурсам посредством HTTP и IPP, а также для управления PPD файлами. В отличие от остальных систем CUPS, CUPS API распространяется в соответствии с условиями лицензии GNU LGPL, так что ее можно использовать в приложениях, не относящихся к GPL.
<st1:city><st1:place>Berkeley<st1:place><st1:city> and System V Commands
Для
распределения работы и проверки статуса принтера система CUPS предлагает интерфейсы командной строки System V и Berkeley. Команды lpstat
и lpc
status
также отображают принтеры сети ("printer@server"),
если активирован поиск принтеров.
Команды System V
используются для управления принтерами и их классами. Средство управления
принтерами Berkeley (lpc
) поддерживается исключительно в режиме
"только_чтение" для проверки текущего статуса планировщика и очередей
принтеров.
Фильтры
Программа фильтрации считывает данные из стандартного входного потока или из файла, если указано его имя. Все фильтры должны поддерживать стандартный набор опций, включая имя принтера, идентификатор заданий, название заданий, количество копий и свойства задания. Выходные данные передаются в стандартный выходной поток.
Фильтры могут работать с различными форматами файлов. Существуют фильтры для файлов изображений и растровые фильтры PostScript, которые поддерживают принтеры, не поддерживающих шрифты PostScript. Чтобы получить необходимый выходной формат, параллельно запускаются несколько фильтров.
Растровый фильтр PostScript основан на ядре GNU Ghostscript 5.50. Чтобы обеспечить поддержку любого растрового принтера, этот фильтр системы CUPS использует драйвер общего растрового принтера и внешний интерфейс CUPS, а не драйверы принтеров и внешний интерфейс Ghostscript. Это позволяет использовать фильтр, работающий с тем же драйвером принтера, для печати растровых данных с любого фильтра.
Обработка изображений (CUPS Imaging)
Библиотека изображений CUPS дает возможность работать с большими изображениями, выполняя преобразования цветов и их обработку, масштабирование изображений для печати и обработку растровых страниц. Библиотека используется фильтрами файлов изображений системы CUPS, процессором растровых изображений (PostScript RIP) и всеми драйверами растровых принтеров.
Программа передачи
Программа передачи представляет собой специальный фильтр, который передает данные для печати устройству или соединению с сетью. В системе CUPS 1.1 представлены программы передачи для параллельных, серийных, USB, LPD, IPP и AppSocket (JetDirect) соединений.
Система SAMBA 2.0.6,
а также более поздние версии системы, включают в себя программу передачи SMB (smbspool
),
которую можно использовать с системой CUPS 1.0
или 1.1 для печати в Windows.
Сетевая печать
Система CUPS предоставляет возможность <поиска принтера>, которая позволяет пользователям автоматически видеть и использовать принтеры любого сервера локальной сети. Это означает, что здесь требуется лишь сконфигурировать сервер, и пользователи автоматически увидят принтеры и классы, поддерживаемые им.
К тому же, система CUPS может автоматически объединить несколько идентичных сетевых принтеров в <скрытый класс>. Это позволяет пользователю передать документ на печать классу и напечатать его на первом свободном принтере или сервере. А функции надежности и выравнивания загрузки легко активируются: необходимо просто определить один и тот же принтер на нескольких серверах!
Общие сведения о возможностях в системы печати CUPS 1.1
1. Программы передачи
Интерфейс программ передачи информации системы CUPS 1.1 предоставляет пользователям увеличенный список доступных устройств. Это позволяет управляющим интерфейсам запрашивать список доступных устройств у планировщика системы CUPS, автоматически конфигурировать принтеры (если предоставлена информация об устройстве), а также предоставлять пользователю список доступных устройств, нежели полагать, что он знает, какие устройства сконфигурированы в системе.
CUPS 1.1 также включает в себя программу передачи информации USB принтерам.
2. Поддержка баннерной страницы
Система CUPS 1.1 поддерживает баннерные страницы в течение всего процесса работы. Эти страницы могут иметь любой формат файла и поддерживать различные <подстановки> для названий процессов, имен пользователей и др. По умолчанию баннерные страницы связаны с каждым принтером. С помощью опций командной строки пользовать может изменить их.
3. Комплексная (digest) идентификация
Комплексная идентификация представляет собой более безопасный метод разрешения доступа к системе печати. В отличие от основной (Basic) идентификации, комплексная идентификация не передает пароли <в чистом виде>, то есть вероятность несанкционированного доступа к системе гораздо ниже.
В системе
CUPS 1.1 комплексная идентификация реализуется при
использовании специального файла паролей MD5 (вместо файла паролей UNIX). Работа с данным файлом осуществляется с помощью
новой команды lppasswd
.
4. Служба каталогов
Чтобы облегчить использование системы CUPS в больших локальных (LAN) и глобальных (WAN) сетях, в CUPS 1.1 имеется служба каталогов (<поиск принтеров>"). Она позволяет запрашивать у удаленного сервера информацию о принтере и передавать ее сети, а также ограничить количество обрабатываемой информации о принтерах (например, что <спрятать> серверы, домены или сети, которые вы не хотите видеть).
5. Изменения в структуре каталогов
Система CUPS 1.1 использует структуру каталогов, которая соответствует стандарту иерархии файловых систем (Filesystem Hierarchy Standard - "FHS") 2.0.
6. Документация
Для системы CUPS 1.1 имеется руководство администратора, руководство программиста, руководство по использованию протокола IPP и другая документация.
7. Драйверы
Система CUPS 1.1 содержит драйверы для матричных и струйных принтеров EPSON. Как и в случае с драйверами HP PCL, драйверы EPSON не всегда предоставляют наилучшие выходные данные для каждого принтера, но обеспечивают нормальное качество для ежедневной печати.
8. Фильтры
В системе CUPS 1.1 реализованы фильтры изображений, шрифтов PostScript, формата PDF, а также текстовые фильтры. Фильтры изображений также поддерживают файлы Windows BMP и Alias PIX.
Фильтр шрифтов PostScript работает с принтерами высокого разрешения и поддерживает большинство языковых особенностей шрифтов PostScript третьего уровня (Level 3 PostScript).
Фильтр формата поддерживает автоматическое масштабирование страниц. Он представляет собой более быстрое, компактное и более надежное средство фильтрации в отличие от GNU Ghostscript PDF, используемого в CUPS 1.0.
Текстовый фильтр поддерживает двунаправленный текст и при необходимости может внедрять шрифты.
9. Поддержка протокола IPP
Видимая
часть системы CUPS представляет собой реализацию
протокола IPP. Система CUPS 1.1 реализует все требуемые протоколом IPP/1.1 операции и атрибуты, а также большинство
дополнительных. В настоящее время выполняются дополнительные операции Create-Job и Send-File, что дает
возможность лучшей совместимости со службой печати System V (один
идентификатор задания на команду lp
) и поддержки баннерных страниц.
10. Сохранение задания
Система CUPS 1.1 позволяет сохранять задания. Это означает, что все задания сохраняются даже после перезагрузки (в версии CUPS 1.0 такой возможности не было).
К тому же CUPS 1.1 позволяет сохранять информацию о выполненной работе после завершения процесса печати, что дает возможность составить историю печати (количество напечатанных страниц, время завершения печати и др.), но не сохранять сами файлы. Свойство можно изменить, чтобы удалять всю информацию после завершения процесса печати или сохранять сами файлы (с целью их повторной печати позже).
11. Поддержка LPD-клиентов
Система CUPS 1.1 поддерживает клиентов на основе LPD, используя минидемон, обрабатывающий LPD-запросы и передающий их главному серверу.
12. Принтеры и опции, определяемые пользователем
Система
печати CUPS 1.1 дает возможность пользователю задать принтеры и
опции, используя новую команду lpoptions
. Такие принтеры представляют собой отдельные экземпляры доступных
принтеров (например, "printer/instance" или "printer@server/instance"), которые могут иметь свои собственные свойства
по умолчанию: размер данных, разрешение и т.д. Команду lpoptions
можно также использовать для образования другой
очереди принтера по умолчанию.
13. Интерфейс администрирования сети
Система CUPS 1.0 обладала небольшим количеством функций интерфейса управления классами и работой принтеров для веб-браузеров. В системе же CUPS 1.1 реализован новый интерфейс администрирования, который позволяет добавлять, изменять, удалять, конфигурировать и налаживать классы и работу принтеров.
Применение службы печати CUPS
Существуют два графических интерфейса, поддерживающих систему CUPS. Проект KUPS предоставляет интерфейс для CUPS на основе KDE ( http://kups.sourceforge.net). Проект XPP (X Printing Panel - панель печати X) предлагает графическую панель печати для CUPS (http://www.phy.uni-bayreuth.de/till/xpp/). Различные фильтры, драйверы, учебные пособия и многое другое можно найти на странице http://www.cups.org/links.php. Программа ESP Print Pro использует систему CUPS, чтобы получить драйверы для тысяч различных принтеров (ее можно найти на странице http://www.easysw.com/printpro).
Общая система печати UNIX CUPS дает возможность использовать современный интерфейс при работе с UNIX-приложениями. Чтобы обеспечить совместимость с уже существующими приложениями, программа обладает интерфейсом командной строки, совместимым с System V и Berkeley. Система CUPS 1.1 обладает огромным набором возможностей, что делает ее наиболее удобной службой печати под UNIX.
Использование службы печати CUPS
В данном разделе рассказано, как послать документ на печать, запросить печать документа и отменить печать для различных принтеров.
Система печати CUPS поддерживает команды как System V (lp), так и Berkeley (lpr). Чтобы напечатать файл на принтере, указанном по умолчанию в настройках системы (или же на единственном принтере), необходимо указать:
lp имя_файла ENTER
или:
lpr имя_файла ENTER
Система CUPS напрямую распознает многие типы файлов, включая файлы PostScript и изображения. Это дает возможность печати прямо из приложения или командной строки, как вам удобнее.
Многие системы дают пользователю возможность использовать несколько принтеров. Эти принтеры могут подключаться к локальной системе с помощью параллельного, серийного или USB порта, а могут быть доступными через сеть.
Для получения списка доступных принтеров, используется команда lpstat:
lpstat -p -d ENTER
Опция -p указывает на то, что необходимо получить список принтеров, а опция -d сообщает о текущем принтере или классе, принимаемом по умолчанию.
Чтобы напечатать документ на определенном принтере, используется опция -d вместе с командой lp:
lp -d принтер имя_файла ENTER
или опция -P вместе с командой lpr:
lpr -P принтер имя_файла ENTER
При работе со многими типами файлов может вполне хватать настроек принтера по умолчанию. Однако, в некоторых случаях может потребоваться изменить свойства принтера.
Команды lp и lpr позволяют передать настройки принтера с помощью опции -o:
альбомная масштаб лист
lp -o landscape -o scaling=75 -o media=A4 имя_файла.jpg ENTER
lpr -o landscape -o scaling=75 -o media=A4 имя_файла.jpg ENTER
Список доступных свойств зависит от принтера. Стандартные свойства приведены в разделе <Стандартные свойства печати>.
Вывод на печать нескольких копий
Обе команды: lp и lpr - позволяют вывести на печать более одной копии файла:
lp -n колич_копий имя_файла ENTER
lpr -#колич_копий имя_файла ENTER
Копии обычно не упорядочиваются. Чтобы их
упорядочить, необходимо задать опцию
-o Collate=True:
lp -n колич_копий -o Collate=True имя_файла ENTER
lpr -#колич_копий -o Collate=True имя_файла ENTER
Проверка статуса принтера из командной строки
Команду lpstat можно использовать, чтобы проверить документы, которые были отправлены на печать:
lpstat ENTER
Принтер-1 johndoe 4427776
Принтер-2 johndoe 15786
Принтер-3 johndoe 372842
Данные располагаются в том порядке, в котором они будут напечатаны. Чтобы увидеть активные принтеры и файлы, используется опция -p:
lpstat -p ENTER
принтер DeskJet в данный момент печатает документ DeskJet-1.
Чтобы получить всю информацию необходимо одновременно задать опции -o и -p:
lpstat -o -p ENTER
Принтер-1 johndoe 4427776
Принтер-2 johndoe 15786
Принтер-3 johndoe 372842
принтер DeskJet в данный момент печатает документ DeskJet-1.
Проверка статуса принтера из сети
Так как система CUPS использует протокол IPP, то она также является полнофункциональным веб-сервером. Чтобы использовать веб-браузер для проверки принтеров системы, необходимо открыть унифицированный указатель информационного ресурса (Uniform Resource Locator - URL): http://localhost:631.
Оттуда можно увидеть статус классов, документов и принтеров, просто нажав кнопку.
Команды cancel и lprm отменяют печать документа:
cancel job-id ENTER
lprm job-id ENTER
В поле job-id необходимо указать номер, полученный после выполнения команды lp или lpstat.
В данном разделе описаны стандартные свойства печати, доступные при печати с помощью команд lp и lpr.
Приведенные ниже свойства используются при печати файлов всех типов.
1) Выбор размера листа, типа и источника
Опция -o media=xyz задает размер листа, тип и/или источник:
лист
lp -o media=Letter имя_файла ENTER
lp -o media=Letter,MultiPurpose имя_файла ENTER
lpr -o media=Letter,Transparency имя_файла ENTER
lpr -o media=Letter,MultiPurpose,Transparency имя_файла ENTER
В зависимости от принтера можно использовать разные размеры листа, типы и источники, но большинство принтеров поддерживают следующие (обычный случай):
- Letter - письмо США (8.5x11 дюймов или 216x279 мм)
- Legal - стандарт США (8.5x14 дюймов или 216x356 мм)
- A4 - A4 ИСО (8.27x11.69 дюймов или 210x297 мм)
- COM10 - конверт США #10 (9.5x4.125 дюймов или 241x105мм)
- DL - конверт DL ИСО (8.66x4.33 дюймов или 220x110 мм)
- Transparency - прозрачный тип данных или источник
- Upper - верхний загрузочный лоток для бумаги
- Lower - нижний загрузочный лоток для бумаги
- MultiPurpose - универсальный загрузочный лоток для бумаги
- LargeCapacity - загрузочный лоток для большого количества бумаги
Точные параметры принтера указаны в его PPD файле: опции PageSize, InputSlot и MediaType.
Опция -o landscape используется для поворота страницы на 90 градусов (для печати альбомной страницы):
lp -o landscape имя_файла ENTER
lpr -o landscape имя_файла ENTER
Опции -o sides=two-sided-short-edge и -o sides=two-sided-long-edge используются для установки режима двусторонней печати (если принтер ее поддерживает). Опция -o sides=two-sided-short-edge подходит для печати альбомных страниц, а опция -o sides=two-sided-long-edge - для книжных:
lp -o sides=two-sided-short-edge имя_файла ENTER
lp -o sides=two-sided-long-edge имя_файла ENTER
lpr -o sides=two-sided-long-edge имя_файла ENTER
По умолчанию печать производится на одной стороне страницы:
lp -o sides=one-sided имя_файла ENTER
lpr -o sides=one-sided имя_файла ENTER
Приведенные ниже свойства используются при печати файлов всех типов.
1) Выбор баннерной страницы (страниц)
Опция -o jobsheets=start,end задает баннерную страницу (-ы), которую необходимо использовать для печати:
lp -o job-sheets=none имя_файла ENTER
lp -o job-sheets=standard имя_файла ENTER
lpr -o job-sheets=classified,classified имя_файла ENTER
Если указан только один баннерный файл, то он будет напечатан первым из всех файлов, отосланных на печать. Если указан второй баннерный файл, он печатается после всех файлов.
Наличие доступных баннерных страниц зависит от конфигурации локальной системы; система печати CUPS включает следующие баннерные файлы:
- none - не создавать баннерную страницу.
- classified - баннерная страница с надписью "classified" (закрытый) вверху и внизу.
- confidential - баннерная страница с надписью "confidential" (кониденциальный) вверху и внизу.
- secret - баннерная страница с надписью "secret" (секретный) вверху и внизу.
- standard - баннерная страница без надписи.
- topsecret - баннерная страница с надписью "top secret" (совершенно секретный) вверху и внизу.
- unclassified - баннерная страница с надписью "unclassified" (незакрытый) вверху и внизу.
Приведенные ниже свойства используются при печати файлов всех типов.
Опция -o page-ranges=pages используется для определения набора страниц, которые необходимо напечатать:
lp -o page-ranges=1 имя_файла ENTER
lp -o page-ranges=1-4 имя_файла ENTER
lp -o page-ranges=1-4,7,9-12 имя_файла ENTER
lpr -o page-ranges=1-4,7,9-12 имя_файла ENTER
Как показано выше, значение pages может задавать одну страницу, диапазон страниц или комбинацию из номеров и диапазонов страниц, разделенных запятыми. Страницы всегда будут печататься по порядку (в документе) несмотря на порядок указания их в опции page-ranges.
По умолчанию печатаются все страницы.
2) Выбор четных или нечетных страниц
Чтобы напечатать четные или нечетные страницы, используется опция -o page-set=set:
lp -o page-set=odd имя_файла ENTER
lp -o page-set=even имя_файла ENTER
lpr -o page-set=even имя_файла ENTER
По умолчанию печатаются все страницы.
Чтобы задать порядок вывода страниц, используется опция -o outputorder=order:
lp -o outputorder=normal имя_файла ENTER
lp -o outputorder=reverse имя_файла ENTER
lpr -o outputorder=reverse имя_файла ENTER
4) Несколько страниц на листе
Чтобы напечатать несколько страниц на листе, используется опция -o number-up=value. Система печати CUPS поддерживает печать 1, 2, 4, 6, 9 и 16 страниц на одном листе; по умолчанию на листе печатается одна страница:
lp -o number-up=1 имя_файла ENTER
lp -o number-up=2 имя_файла ENTER
lp -o number-up=4 имя_файла ENTER
lpr -o number-up=16 имя_файла ENTER
С помощью опции -o page-border=value можно задать рамку вокруг каждой страницы:
- -o page-border=double; двойная рамка (тонкая) вокруг каждой страницы
- -o page-border=double-thick; двойная рамка (толстая) вокруг каждой страницы
- -o page-border=none; без рамки (по умолчанию)
- -o page-border=single; обычная рамка (тонкая) вокруг каждой страницы
- -o page-border=single-thick; обычная рамка (толстая) вокруг каждой страницы
С помощью опции -o number-up-layout=value можно задать расположение страниц на каждом листе:
- -o number-up-layout=btlr; Нижняя часть к верхней, левая часть к правой
- -o number-up-layout=btrl; Нижняя часть к верхней, правая часть к левой
- -o number-up-layout=lrbt; Левая часть к правой, нижняя часть к верхней
- -o number-up-layout=lrtb; Левая часть к правой, верхняя часть к нижней (по ум.)
- -o number-up-layout=rlbt; Правая часть к левой, нижняя часть к верхней
- -o number-up-layout=rltb; Правая часть к левой, верхняя часть к нижней
- -o number-up-layout=tblr; Верхняя часть к нижней, левая часть к правой
- -o number-up-layout=tbrl; Верхняя часть к нижней, правая часть к левой
5) Зеркальное копирование документа
Чтобы зеркально отобразить документ, используется опция -o mirror:
lp -o mirror имя_файла ENTER
lpr -o mirror имя_файла ENTER
Это свойство удобно использовать при печати на копировальной бумаге для футболок, кружек и др.
С помощью опции -o brightness=percent можно изменить яркость печати:
lp -o brightness=120 имя_файла ENTER
lpr -o brightness=120 имя_файла ENTER
При значениях выше 100 картинка будет светлее, а при значениях ниже 100 - темнее.
С помощью опции -o gamma=value можно произвести гамма-коррекцию печати:
lp -o gamma=1700 имя_файла ENTER
lpr -o gamma=1700 имя_файла ENTER
При значениях выше 1000 картинка будет светлее, а при значениях ниже 1000 - темнее. По умолчанию значение параметра равно 1000.
Приведенные ниже свойства используются при печати текстовых файлов.
1) Количество символов на дюйм
Используя опцию -o cpi=value, можно задать количество печатаемых символов на дюйм:
lp -o cpi=10 имя_файла ENTER
lp -o cpi=12 имя_файла ENTER
lpr -o cpi=17 имя_файла ENTER
По умолчанию на один дюйм приходится 10 символов.
Используя опцию -o lpi=value, можно задать количество печатаемых строк на дюйм:
lp -o lpi=6 имя_файла ENTER
lpr -o lpi=8 имя_файла ENTER
По умолчанию на один дюйм приходится 6 строк.
Используя опцию -o columns=value, можно задать количество колонок, на которые разбивается текст:
lp -o columns=2 имя_файла ENTER
lpr -o columns=3 имя_файла ENTER
По умолчанию количество колонок равно 1.
Обычно поля страницы максимально расширяются (насколько это позволяет принтер). Чтобы изменить поля, используйте опции -o page-left=value, -o page-right=value , -o page-top=value и -o page-bottom=value:
lp -o page-left=value имя_файла ENTER
lp -o page-right=value имя_файла ENTER
lp -o page-top=value имя_файла ENTER
lp -o page-bottom=value имя_файла ENTER
lpr -o page-bottom=value имя_файла ENTER
Значение value измеряется в точках; каждая точка составляет 1/72 дюйма или 0.35мм.
С помощью опции -o prettyprint на каждую страницу можно поместить заголовок, содержащий номер страницы, название документа (обычно имя файла) и дату. Также высвечиваются ключевые слова языка C и C++, а закомментированные строки выделяются курсивом:
lp -o prettyprint имя_файла ENTER
lpr -o prettyprint имя_файла ENTER
Приведенные ниже свойства используются при печати изображений.
1) Позиционирование изображения
Расположение изображения на странице задается с помощью опции -o position=name:
- center - центр страницы (по ум.)
- top - центр верхней части страницы
- left - центр левой части страницы
- right - центр правой части страницы
- top-left - верхний левый угол страницы
- top-right - верхний правый угол страницы
- bottom - центр нижней части страницы
- bottom-left - нижний левый угол страницы
- bottom-right - нижний правый угол страницы
2) Масштабирование изображения
С помощью опций -o scaling=percent, -o ppi=value и -o natural-scaling=percent можно изменить размер печатаемого изображения:
lp -o scaling=percent имя_файла ENTER
lp -o ppi=value имя_файла ENTER
lpr -o natural-scaling=percent имя_файла ENTER
Параметр scaling=percent может принимать значения от 1 до 800. Он означает размер объекта относительно страницы (а не изображения). При масштабе в 100 процентов страница будет занята настолько, насколько это позволяет сделать геометрическое соотношение размеров изображения. При масштабе в 200 процентов изображение будет напечатано на 4 страницах.
Параметр ppi=value может принимать значения от 1 до 1200. Он означает разрешение изображения и измеряется в пикселях на дюйм. Например, изображение разрешением 3000x2400 пикселей будет напечатано размером 10x8 дюймов (25.4х20.32 см) при 300 пикселях на дюйм. Если указанное разрешение приводит к тому, что изображение не помещается на одной странице, то оно будет напечатано на нескольких страницах.
Параметр natural-scaling=percent может принимать значения от 1 до 800. Он означает размер объекта относительно настоящего размера изображения. При масштабе в 100 процентов изображение будет напечатано в натуральную величину, а при масштабе в 50 процентов оно будет уменьшено вдвое. Если указанное разрешение приводит к тому, что изображение не помещается на одной странице, то оно будет напечатано на нескольких страницах.
3) Изменение цвета (оттенка) изображения
С помощью опции -o hue=value можно изменить цвет печатаемого изображения (как оттенок у телевизора):
lp -o hue=value имя_файла ENTER
lpr -o hue=value имя_файла ENTER
Величина value может принимать значения от -360 до 360 (это оттенок цвета). Ниже приведена таблица с возможными вариациями различных цветов:
Таблица 3.1. Вариации различных цветов
Исходный цвет |
оттенок=-45 |
оттенок=45 |
Красный |
Фиолетовый |
Светло-оранжевый |
Зеленый |
Желто-зеленый |
Сине-зеленый |
Желтый |
Оранжевый |
Желто-зеленый |
Синий |
Голубой |
Фиолетовый |
Пурпурный |
Индиго (темно-синий) |
Малиновый |
Голубой |
Сине-зеленый |
Цвет морской волны |
По умолчанию значение параметра равно 0.
4) Изменение насыщенности (цвета) изображения
С помощью опции -o saturation=percent можно изменить насыщенность цветов изображения (как кнопка цвета у телевизора):
lp -o saturation=percent имя_файла ENTER
lpr -o saturation=percent имя_файла ENTER
Величина percent может принимать значения от 0 до 200 (это насыщенность цвета). При значении параметра, равном 0, печать будет черно-белая, а при значении параметра 200 цвета будут чень яркими.
По умолчанию значение параметра равно 100.
Приведенные ниже свойства используются при работе с файлами HP-GL/2.
С помощью опции -o blackplot можно задать, чтобы все принтеры использовали черные чернила:
lp -o blackplot имя_файла ENTER
lpr -o blackplot имя_файла ENTER
По умолчанию используются цвета, указанные в файле печати или стандартные цвета, указанные в руководстве по файлам HP-GL/2 фирмы Hewlett Packard.
2) Размещение изображения (чертежа) на листе
Опция -o fitplot используется для того, чтобы подогнать размер изображения к размеру листа:
lp -o fitplot имя_файла ENTER
lpr -o fitplot имя_файла ENTER
По умолчанию используются расстояния, указанные в файле изображения.
ВНИМАНИЕ: Это свойство зависит от команды, задающей точный размер изображения (plot size - PS). Если размер в файле не указан, то фильтр HP-GL/2 считает его равным ANSI E.
3) Толщина <пера> при печати
С помощью опции -o penwidth=value можно для файлов HP-GL/2 задать толщину пера по умолчанию:
lp -o penwidth=value имя_файла ENTER
lpr -o penwidth=value имя_файла ENTER
Значение value определяет толщину пера в микрометрах. Если толщина пера равна 1000, то будут напечатаны линии толщиной в 1 миллиметр. Если задать толщину пера, равной 0, то будут напечатаны линии толщиной в 1 пиксель.
ВНИМАНИЕ: Данная настройка игнорируется, если толщина пера задается в файле изображения.
Необработанные (или не отфильтрованные) выходные данные
С помощью опции -o raw можно посылать файлы принтеры напрямую (без фильтрации). Это свойство требуется при печати из приложений, которые имею собственные <драйверы> для вашего принтера:
lp -o raw имя_файла ENTER
lpr -o raw имя_файла ENTER
Чтобы посылать файлы принтеру напрямую, можно также использовать опцию -l с командой lpr:
lpr -l имя_файла ENTER
Сохранение свойств и стандартных настроек принтера
В данном разделе описывается, как сохранить свойства принтера и создать стандартные настройки.
Каждый принтер поддерживает большое количество настроек, о которых можно прочитать в разделе <Стандартные свойства печати>. Чтобы не переопределять эти свойства каждый раз при печати, CUPS дает возможность сохранить настройки в качестве <стандартных> (по умолчанию).
Команда lpoptions сохраняет настройки для принтера. Как и команды lp и lpr, эта команда распознает настройки принтера через опцию -o:
lpoptions -o prettyprint ENTER
lpoptions -o media=A4 -o sides=two-sided-long-edge ENTER
lpoptions -o media=Legal -o scaling=100 ENTER
Если настройки сохранены, то команды lp и lpr будут всегда использовать их при печати.
ВНИМАНИЕ: При запуске команды lpoptions в качестве пользователя root (или любого другого пользователя с идентификатором UID, равным 0) настройки будут сохранены для всех пользователей. Учетная запись root не имеет своих собственных стандартных настроек.
Настройки для определенного принтера
В предыдущем примере было показано, как сохранить настройки для принтера <по умолчанию>. Опция -p printer задает настройки для другого принтера:
lpoptions -p laserjet -o prettyprint ENTER
lpoptions -p laserjet -o media=A4 -o sides=two-sided-long-edge ENTER
lpoptions -p deskjet -o media=Legal -o scaling=100 ENTER
В предыдущих примерах было показано, как сохранить настройки для принтера по умолчанию и для определенного принтера. Ниже показано, как удалить настройки с помощью аргумента -r:
lpoptions -r prettyprint ENTER
lpoptions -p laserjet -r prettyprint ENTER
Команду lpoptions можно использовать для просмотра текущих настроек без указания в командной строке новых:
lpoptions ENTER
media=A4 sides=two-sided-long-edge
lpoptions -p deskjet ENTER
media=Legal scaling=100
Просмотр настроек определенного принтера
Настройки принтера также можно увидеть, используя команду lpoptions с опцией -l, как показано ниже:
lpoptions -p laserjet -l ENTER
Настройка принтера по умолчанию
Обычно администратор задает стандартные настройки принтера, при которых производят печать все пользователи системы. Чтобы пользователю задать собственные настройки, необходимо задать опцию -d printer:
lpoptions -d deskjet ENTER
Принтер может быть как локальным (deskjet), так и удаленным (deskjet@server).
Кроме создания настроек для каждой очереди печати, система CUPS поддерживает образцы принтеров, что позволяет задавать несколько разных групп настроек для каждого принтера. Чтобы задать такой образец, используется символ косой черты (/):
lpoptions -p laserjet/duplex -o sides=two-sided-long-edge ENTER
lpoptions -p laserjet/legal -o media=Legal ENTER
Команды lp и lpr распознают также следующие записи:
lp -d laserjet/duplex filename ENTER
lpr -P laserjet/legal filename ENTER
Чтобы удалить образец принтера, который больше не нужен, используется опция -x printer/instance:
lpoptions -x laserjet ENTER
lpoptions -x laserjet/duplex ENTER
lpoptions -x laserjet/legal ENTER
Опция -x удаляет только настройки по умолчанию для указанного принтера и образца; исходная очередь печати останется до тех пор, пока ее не удалит администратор командой lpadmin.
Добавление нового принтера в систему печати CUPS
Вариант 1. Добавления принтера в среде KDE
Для этого необходимо выполнить следующие действия:
- Запустить "Центр управления" из главного меню KDE
- В левом окне выбрать Периферия/Принтеры
- В поле "Используемая система печати:" выбрать "Система печати CUPS"
Рисунок 3.2. Центр управления
- Выбрать действие Добавить/Принтер. Запустится мастер установки принтера
Рисунок 3.3. Мастер установки принтера - Введение
- Выбрать тип, устанавливаемого принтера
Рисунок 3.4. Мастер установки принтера - Выбор протокола низшего уровня
Далее рассмотрим вариант установки локального принтера.
- Выбрать порт подключения локального принтера
Рисунок 3.5. Мастер установки принтера - Выбор локального порта
- Выбрать производителя и модель принтера
Рисунок 3.6. Мастер установки принтера - Выбор модели принтера
- При необходимости можно провести дополнительную настройку драйвера принтера и проверить правильность конфигурации, распечатав тестовую страницу
Рисунок 3.7. Мастер установки принтера - Тест принтера
- Выбрать страницы-разделители для принтера или отказаться от их использования
Рисунок 3.8. Мастер установки принтера - Выбор страницы-разделителя
- Установить квоты на печать для пользователей или отказаться от использования квот
Рисунок 3.9. Мастер установки принтера - Мастер установки квот принтера
- Определить группу пользователей, которым разрешен доступ к данному принтеру или разрешить доступ всем пользователям
Рисунок 3.10. Мастер установки принтера - Настройка допуска пользователей
- Ввести общие данные о добавляемом принтере
Рисунок 3.11. Мастер установки принтера - Общие сведения
- Подтвердить добавление принтера, нажав кнопку "Готово"
Рисунок 3.12. Мастер установки принтера - Подтверждение
Вариант 2. Добавление принтера с помощью собственной системы управления CUPS
Для этого необходимо выполнить следующие действия:
- Запустить веб-браузер Konqueror
- В строке адреса ввести http://localhost:631
Рисунок 3.13. Веб-браузер Konqueror - Главная страница
Главная страница содержит следующие разделы:
- Do Administration Tasks - задачи, выполняемые администратором системы
Рисунок 3.14. Веб-браузер Konqueror - Раздел Admin
- Manage Printer Classes - управление классами принтеров
Рисунок 3.15. Веб-браузер Konqueror - Раздел Class
- Manage Jobs - управление заданиями печати
Рисунок 3.16. Веб-браузер Konqueror - Раздел Jobs
- Manage Printers - управление принтерами
Рисунок 3.17. Веб-браузер Konqueror - Раздел Printers
- On-Line Help - набор документации по системе CUPS
Рисунок 3.18. Веб-браузер Konqueror - Раздел Documentation
- Download the Current CUPS Software - загрузка новых версий системы CUPS
Рисунок 3.19. Веб-браузер Konqueror - CUPS
1. Каким образом в Linux-системах осуществляется процесс печати?
2. Какой протокол использует система печати CUPS?
3. Какова структура системы печати CUPS?
4. Каковы основные возможности системы печати CUPS?
5. Какие графические интерфейсы поддерживаются систему CUPS?
6. Какие команды используются для опрделения свойств печати?
7. Какая команда испольузется для сохранения настроек принтера?
Литература
1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005
2. ??
Глава 14. Подключение и настройка модемов
К персональному компьютеру может быть подключен как внутренний, так и внешний модем. Внутренний модем выполнен в виде платы расширения и устанавливается в специальный слот расширения на системной плате компьютера. Внешний модем, в отличие от внутреннего, выполнен в виде отдельного устройства, т.е. в отдельном корпусе и со своим блоком питания. Внешний модем может подключаться к последовательному или параллельному порту компьютера, а также к USB-интерфейсу.
Перед тем, как приобретать внутренний модем, необходимо проверить, поддерживается ли он в Linux. К сожалению, для встроенных модемов (обобщенно называемых Winmodems) требуются специализированные драйверы, которые не всегда поддерживаются в Linux. Информацию по этому вопросу можно найти на Web-узле http://www.linmodems.org. Внутренние модемы обычно конфигурируют так, что для пользовательских программ они будто бы подключаются через виртуальный последовательный порт. Подобное соглашение позволяет отделить логические функции модема от его аппаратной реализации. Стандартные программы работают с модемом, не располагая сведениями о его особенностях.
В связи с проблематичностью установки и настройки специализированных драйверов для Winmodems, рекомендуется в Linux использовать внешние COM/USB-модемы.
В Linux последовательные порты представляются в системе файлами устройств, которые расположен-ы в каталоге /dev. У большинства компьютеров имеется два встроенных последовательных порта: /dev/ttyS0 и /dev/ttySl. Дистрибутив MOPSLinux включает полный набор файлов устройств для дополнительных после-довательных портов, но до тех пор, пока в систему не будет добавлено соответствующее оборудование, эти файлы следует игнорировать.
По историческим причинам в Linux основным последовательным портам системы (/dev/ttyS0 и /dev/ttySl) соответствуют также файлы /dev/cua0 и /dev/cual. Раньше файлы cua* при-менялись для управления модемами, которые обрабатывали как входные, так и выходные звонки. Теперь все эти функции реализуются посредством файлов ttyS*, поэтому рабо-тать с файлами сua* не рекомендуется.
При подключении USB-модема используются файлы устройств /dev/ttyACM*, /dev/ttyUSB*.
При установке MOPSLinux в разделе "Конфигурирование модема" производится выбор файла устройства, соответствующего типу используемого модема. При этом создается системная ссылка /dev/modem на выбранный файл устройства.
Настройка параметров последовательного порта
Последовательным портам персональных компьютеров можно назначать различные адреса ввода-вывода и номера запросов на прерывание (IRQ). Параметры портов считываются из BIOS при включении питания компьютера. Менять их приходится, только если какое-нибудь устройство требует выделения ему ре-сурсов, обычно закрепленных за одним из последовательных портов. К сожалению, драйвер последовательных портов не всегда способен автоматически распознать подобные изменения конфигурации и в этом случае могут потребоваться дополнительные настройки.
Для изменения параметров последовательного порта можно воспользоваться командой setserial. При указании параметра -g она отображает текущие установки порта. Например,
# setserial -g /dev/ttyS0
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
При определении параметров порта, нужно сначала указать файл устройства, а затем - последо-вательность названий параметров и их значений. Например, команда
# setserial /dev/ttySl port 0x02f6 irq 3
устанавливает адрес ввода-вывода и номер прерывания для порта ttySl. Важно уяснить, что эта команда ни в коей мере не меняет аппаратную конфигурацию системы. Она лишь сообщает конфигурационные параметры драйверу последовательных портов Linux. Фи-зические установки изменяются через BIOS.
Изменения, производимые командой setserial, не сохраняются при перезагрузке сис-темы и для того, чтобы сделать их постоянными, в MOPSLinux включены дополнительные конфигурационные файлы:
· /etc/serial.conf - содержит строки описаний параметров портов;
· /etc/rc.d/rc.serial - стартовый сценарий системы, использующий файл /etc/serial.conf для установки параметров портов.
Примерное содержание файла /etc/serial.conf:
# Описания стандартных портов COM1- COM4
/dev/ttyS0 uart 16450 port 0x3F8 irq 4
/dev/ttyS1 uart 16450 port 0x2F8 irq 3
/dev/ttyS2 uart 16450 port 0x3E8 irq 4
/dev/ttyS3 uart 16450 port 0x2E8 irq 3
где,
/dev/ttyS0 - файл устройства;
uart 16450 - тип микросхемы порта;
port 0x3F8 - адрес ввода-вывода;
irq 4 - номер прерывания.
Конфигурирование программного обеспечения
После подключения устройства к системному блоку компьютера необходимо оп-ределенным образом сконфигурировать программное обеспечение, чтобы устройство ра-ботало эффективно. Перечень конфигурационных задач, которые необходимо решать при подключении нового устройства, зависит от типа устройства и приложений, в кото-рых оно будет использоваться.
В состав дистрибутива MOPSLinux включены универсальные программы KPPP и minicom, которые обеспечивают эмуляцию терминала, поддерживают протоколы передачи данных, а также дополнительные возможности по настройке модема и соединения.
Порядок работы с этими программами описан далее в этом разделе.
KPPP - это программа дозвона и графический интерфейс для демона ppp, позволяющая интерактивно генерировать скрипты и настраивать сеть. Она автоматизирует процесс дозвона до вашего Интернет-провайдера, а также позволяет вам легко управлять всем процессом.
KPPP предоставляет в ваше распоряжение богатый набор статистических средств и ведет учет времени, проведенного вами в Интернете.
Встроенные терминал и генератор скриптов делают настройку соединения простой. Далее вам не понадобятся дополнительные терминальные программы (например, seyon и minicom) для настройки и проверки соединений.
В функции KPPP входит учет стоимости телефонных звонков, так что вы сможете сами вести учет своих расходов на пребывание в Интернете. Надеемся, что программа KPPP окажется для вас полезной.
Если на вашем компьютере установлена свежая версия ОС Linux, вы можете счесть эту информацию ненужной. Программа KPPP включает в себя мастер настройки, который в большинстве случаев настроит работоспособное соединение с Интернетом за несколько минут.
Вне зависимости от того, используете вы мастер или нет, вам понадобится следующая информация перед тем, как вы начнете:
1) Телефонный номер модемного пула вашего Интернет-провайдера;
2) Имя пользователя и пароль, предоставленные вашим Интернет-провайдером;
3) Адрес DNS-сервера вашего Интернет-провайдера (одного адреса достаточно, но предпочтительнее иметь два);
4) А также дополнительные сведения, которые дадут вам полный доступ к сервисам вашего Интернет-провайдера:
- адреса серверов входящей почты (часто это pop.ваш_провайдер.ru или mail.ваш_провайдер.ru);
- узнайте также, поддерживает ли ваш Интернет-провайдер протоколы POP3 или IMAP;
- адреса серверов исходящей почты (SMTP) (могут совпадать с серверами входящей почты или же называются примерно так: smtp.ваш_провайдер.ru);
- адрес NNTP-сервера групп новостей Usenet (возможно, news.ваш_провайдер.ru или nntp.ваш_провайдер.ru);
- адрес прокси-сервера вашего Интернет-провайдера (если таковые имеются).
Вполне вероятно, что эти сведения будут предоставлены вам вашим Интернет-провайдером в письменном виде после подписания контракта, или же вы можете получить их, обратившись в службу технической поддержки вашего Интернет-провайдера.
Получив эти сведения и установив на свой компьютер свежую версию ОС Linux, вы можете легко настроить соединение с Интернет с помощью мастера подключения KPPP.
Запуск мастера подключения
Вы можете запустить мастер подключения из начального экрана KPPP. Запустите KPPP из K-меню: программа находится в разделе Интернет под названием Подключение к Интернету.
Появится следующий диалог:
Рисунок 3.20. Начальный экран программы дозвона KPPP
Скорее всего, начальный экран не содержит ни одной записи, и для начала нам придется создать хотя бы одну.
Нажмите кнопку Настройка для создания нового соединения с Интернет.
Рисунок 3.21. Мастер подключения предложит вам нажать одну из трех кнопок: Мастер, Ручная настройка и Отмена.
Мастер подключения задаст вам вопрос о том, что вы хотите сделать.
Отмена
Нажмите на эту кнопку, если вы действительно не хотите создавать соединение в данный момент. Окно сообщения будет убрано с экрана, останется только окно программы дозвона.
Мастер
Если в вашем распоряжении находится современный модем и вы используете одного из крупнейших Интернет-провайдеров в вашей стране, то, скорее всего, мастер подключения тут же настроит ваше соединение. В любом случае, перед ручной настройкой попытайтесь использовать мастер подключения.
Ручная настройка
Если вы не преуспели в создании соединения с помощью мастера подключения или же хотите настроить соединение сами, нажмите на эту кнопку. На данный момент использовать мастер подключения целесообразно людям в небольшом количестве стран (и для ограниченного числа Интернет-провайдеров).
В этом разделе мы рассмотрим подключение с использованием Мастера подключения, ручная же настройка будет описана позднее.
Мастер подключения: оставшиеся шаги
Начальный экран содержит вступительный текст, поясняющий те вещи, о которых вы прочли в самом начале руководства. Нажмите на кнопку Далее, чтобы продолжить.
На следующем экране вам будет предложено указать вашу страну. Не все страны перечислены в списке, и если ваша страна отсутствует, то нажмите на кнопку Отмена, - в этом случае будет запущена Диалоговая настройка.
На следующем экране будет показан список Интернет-провайдеров, известных KPPP для страны, выбранной вами этапом раньше. Если ваш Интернет-провайдер не указан в списке, нажмите на кнопку Отмена и настройте соединение в режиме Диалоговой настройки.
Вам будет предложено ввести ваши имя пользователя и пароль для соединения с Интернет. Обратите внимание, что у некоторых Интернет-провайдеров имя пользователя и пароль на доступ отличны от имени пользователя почтового ящика и его пароля - будьте внимательны! Нажмите на кнопку Далее, чтобы продолжить.
В следующем диалоге вы можете ввести префиксы дозвона (если таковые применяются), например, если вам необходимо набрать <0> для доступа на внешнюю линию, или если у вас есть префикс для отключения режима ожидания. Нажмите на кнопку Далее для продолжения.
Вот и все! Если вы хотите перепроверить введенные данные, то используйте кнопки Назад и Далее для перемещения по диалогам. По завершении проверки нажмите на кнопку Завершить для окончания настройки.
Конечно же, любая информация может быть изменена позднее, через диалог настройки KPPP.
Диалоговая настройка соединения
Диалоговая настройка соединения не намного сложнее настройки с применением мастера.
Диалоговая настройка запускается точно так же, как и мастер подключения. Запустите KPPP из K-меню: программа находится в разделе Интернет под названием Подключение к Интернету.
Появится следующий диалог:
Рисунок 3.22. Начальный экран программы дозвона KPPP
Скорее всего, начальный экран не содержит ни одной записи, и для начала нам придется создать хотя бы одну.
Нажмите кнопку Настройка для создания нового соединения с Интернет.
На сей раз нажмите на кнопку Диалоговая настройка, и вы увидите следующий диалог:
Рисунок 3.23. Диалог Новое соединение
Диалог Новое соединение содержит следующие разделы:
- Дозвон;
- IP-адрес;
- Шлюз;
- DNS-серверы;
- Скрипт подключения;
- Выполнить;
- Статистика.
Как правило, вам не потребуется заполнение всех разделов целиком, тем не менее, каждый из разделов детально описан ниже.
Вкладка Дозвон
На вкладке Дозвон находятся следующие опции:
1) Название соединения
Любому соединению должно быть дано название. Назовите его по своему усмотрению, но названия должны быть уникальными, если вы настраиваете более одного соединения.
2) Номер телефона
Укажите номер телефона для дозвона. Вы можете использовать символы, такие как <->, для лучшей читаемости номера. Если вы укажете несколько номеров, разделенных двоеточием (например, 1111111:2222222:3333333), то KPPP при получении сигнала Занято начнет дозвон по следующему в последовательности номеру. Нажмите на кнопку Добавить для добавления номера, кнопку Удалить - для удаления номера из списка, а стрелки вверх и вниз используйте для изменения порядка дозвона.
3) Протокол авторизации
Выберите соответствующий способ авторизации, который KPPP будет использовать при регистрации на сервере. За дополнительными сведениями обратитесь к вашему провайдеру. Использование PAP и CHAP описывается в разделе PAP и CHAP.
4) Сохранить пароль
Отметьте этот флажок, если хотите, чтобы KPPP сохранил ваш пароль.
5) Ручная настройка демона ррр...
При нажатии на эту кнопку появится диалог настройки аргументов демона ppp. В этом диалоге вы можете указать желаемые опции, которые KPPP передаст демону ppp. На man-странице демона ppp вы найдете список доступных опций, однако вы должны иметь четкое представление о том, что делаете, в противном случае воздержитесь от манипулирования аргументами.
Вкладка IP-адрес
Рисунок 3.24. Вкладка IP в разделе Соединения
1) Динамический IP-адрес
Отметьте этот флажок, если ваш Интернет-провайдер использует динамическую IP-адресацию. В этом случае при каждом соединении с провайдером вашему компьютеру будет присваиваться новый IP-адрес.
2) Статический IP адрес
Отметьте этот флажок, если ваш Интернет-провайдер выделил вам статический IP-адрес. В этом случае пропишите этот адрес в поле IP-адрес и укажите Маску подсети, если таковая необходима. Проконсультируйтесь у вашего Интернет-провайдера, если не знаете точно. Подавляющее большинство Интернет-провайдеров используют динамическое присваивание адресов, и в большинстве случаев правильным будет использование динамического IP-адреса.
3) Автоконфигурация имени хоста с этого IP-адреса
Отметьте эту опцию, если вы хотите, чтобы программа KPPP настроила домен и имя хоста для вашего компьютера после установления ppp-соединения. Автоконфигурация имени хоста происходит путем запроса сервера доменных имен об имени, присвоенном IP-адресу данного ppp-соединения.
Последняя опция необходима для одиночных компьютеров, которым необходимо использование таких протоколов, как talk, и для которых имя хоста должно совпадать с названием компьютера в Интернет. Эта опция изменяет значение опции Доменное имя в разделе DNS; установки принимают значения по умолчанию по прекращении ppp-соединения.
Эта опция НЕ нужна, если вам необходимо просто подключиться к Интернету, получить почту, войти в чат или же просмотреть содержимое WWW-страниц. Побочным эффектом использования этой опции является невозможность подключения к Х-серверу, иными словами, вы не сможете запустить ни одно приложение с графическим интерфейсом.
Отметьте в том случае, если это вам необходимо.
Вкладка Шлюз
Рисунок 3.25. Вкладка Шлюз в разделе Соединения
1) Шлюз по умолчанию
Отметьте для назначения демону ppp статуса шлюза по умолчанию. По умолчанию эта опция включена.
2) Статический шлюз
Отметьте для назначения к использованию шлюза, отличного от заданного по умолчанию.
3) Назначить шлюз маршрутом по умолчанию
В большинстве случаев оставьте без изменений (отмечено по умолчанию)
Вкладка DNS-серверы
Рисунок 3.26. Вкладка DNS в разделе Соединения
1) Доменное имя
Укажите доменное имя вашего компьютера. Также как и в случае серверов DNS, оно вернется к начальному значению, указанному в файле /etc/resolv.conf, после разъединения. Если это поле не будет заполнено, доменное имя будет взято из файла /etc/resolv.conf
2) Настройка
Выберите способ: Автоматически (Интернет-провайдер автоматически назначает адрес сервера DNS при соединении) и Вручную. Если вы выберете ручную настройку, становится доступным раздел IP-адрес сервера DNS.
3) IP-адрес сервера DNS
Этот раздел доступен в том случае, если вы отметили опцию настройки Вручную. Добавьте сервера доменных имен, назначенные вашим Интернет-провайдером. Вам необходимо указать хотя бы один сервер доменных имен, чтобы ваша ОС могла переводить в IP-адреса имена доменов, к примеру, ftp.kde.org. Адреса серверов DNS должны быть заданы в численном виде, например, 128.231.231.233. Во время исполнения программы эти адреса будут добавлены в файл /etc/resolv.conf.
Нажмите на кнопку Добавить для добавления адреса нового DNS-сервера к списку. Нажмите на кнопку Удалить для удаления из списка.
4) Игнорировать заданные сервера DNS во время соединения
Если вы отметите эту опцию, то все сервера DNS, перечисленные в файле /etc/resolv.conf, будут проигнорированы в течение данного сеанса связи.
Вкладка Скрипт подключения
Рисунок 3.27. Вкладка Скрипт подключения в разделе Соединения
Этот диалог предназначен для создания скрипта дозвона для соединения с вашим Интернет-провайдером. Вы можете использовать мини-терминал и сведения, предоставленные вашим Интернет-провайдером, для создания необходимого скрипта.
Выберите опцию из раскрывающегося списка слева, а затем укажите параметры для выбранного действия в окне редактирования справа. Используйте кнопку Добавить для добавления записи в конец скрипта, который отображается в нижней части диалога. Используйте кнопку Вставить для вставки записи в любое место скрипта, а также кнопку Удалить для удаления строки из скрипта.
Доступные опции:
1) Ожидать
KPPP будет ожидать получения заданной строки.
2) Отправить
KPPP отправит заданную строку.
3) Сканировать
KPPP будет сканировать входящий поток данных на предмет наличия заданной строки и сохранит все символы, начиная от конца строки и до начала новой, во внутреннем буфере. Символы Пробел как в начале строки, так и в конце, будут игнорированы.
4) Сохранить
Постоянно хранить заранее просканированную строку в заданном регистре. На данный момент единственным доступным является регистр password.
5) Приостановить
Приостановить на заданное число секунд.
6) Повесить трубку
KPPP отдаст модему команду повесить трубку.
7) Ответ
KPPP установит модем в режим ответа.
8) Timeout
Изменить таймаут по умолчанию на заданное число секунд при выполнении скрипта. При необходимости можно изменять таймаут в скрипте несколько раз.
9) Prompt
Запросить у пользователя KPPP ввод строки в ответ на заданную строку-подсказку. Набранные символы будут видны пользователю. Если в заданной строке содержится метка ##, то она будет заменена на содержимое внутреннего буфера сканирования, то есть на значение, сохраненное командой scan.
10) PWPrompt
Запросить у пользователя KPPP ввод строки в ответ на заданную строку-подсказку. Каждый введенный пользователем символ будет отображен символом Звездочка.
11) Имя пользователя
Если поле Имя пользователя на главном экране KPPP заполнено, это означает, что нужно отправить имя пользователя. Если поле Имя пользователя не заполнено, нужно запросить пользователя KPPP ввести имя пользователя в ответ на заданную строку-подсказку. Набранные символы будут отображены. На следующем шаге, например, в цикле повторения или же при авторизации в режиме обратного звонка, запрос будет выводиться вне зависимости от заполнения поля Имя пользователя.
12) Пароль
Если поле Пароль на главном экране KPPP заполнено, это означает, что нужно отправить пароль. Если поле Пароль не заполнено, нужно запросить пользователя KPPP ввести пароль в ответ на заданную строку-подсказку. Каждый набранный символ будет отображен символом Звездочка. На следующем шаге, например, в цикле повторения или же при авторизации в режиме обратного звонка, запрос будет выводиться вне зависимости от заполнения поля Пароль.
13) Начало цикла
KPPP будет ожидать получения заданной строки и сохранит ее для использования переменной Конец цикла.
14) Конец цикла
KPPP будет ожидать получения заданной строки для выхода из цикла. Если сперва будет получена строка, заданная как Начало цикла, это вызовет переход к строке после Начала цикла и повторение парного диалога имя_пользователя/пароль.
Примеры скриптов
Пример 1. Пример простого скрипта подключения.
Ниже приведен пример простого скрипта, который можно использовать для подключения к Интернет-провайдеру.
Expect ID: # ожидать имя пользователя
Send myid # замените myid на ваше имя пользователя
Expect word: # ожидать пароль
Send 4u3fjkl # отправить пароль '4u3fjkl'
Expect granted # провайдер при успешной регистрации сообщает 'Permission granted'
Send ppp # эта команда запускает ppp-соединение
# на удаленном компьютере Интернет-провайдера
Пример 2. Скрипт подключения, запрашивающий имя пользователя и пароль, а затем зацикливающийся.
Ниже приведен пример скрипта с запросом имени пользователя и пароля. Этот скрипт каждый раз запрашивает имя пользователя и пароль, вне зависимости от заполнения полей Имя пользователя и пароль на главном экране KPPP.
Этот скрипт также поясняет применение структуры Начало цикла/Конец цикла. Если при процедуре регистрации происходит сбой (например, при наборе пароля допущена ошибка), Интернет-провайдер выдаст сообщение об ошибке и повторно начнет цикл имя_пользователя/пароль, отправив строку ID:. Если строка ID: будет получена до обработки параметра Конец цикла, KPPP начнет выполнение скрипта со строки с параметром Начало цикла.
LoopStart ID: # ожидать имя пользователя
Prompt Enter ID: # запрос на ввод имени пользователя с последующей отправкой
Expect word: # ожидать пароль
PWPrompt Enter Password: # запрос на ввод пароля с последующей отправкой
LoopEnd granted # провайдер при успешной регистрации сообщает 'Permission granted'
Send ppp # запуск ppp-соединения на удаленном компьютере
Пример 3. Запрашивает сведения, не указанные в основном диалоге.
Можно использовать данный скрипт для подключения к своему Интернет-провайдеру. Скрипт запрашивает имя пользователя и пароль только в том случае, если не заполнены соответствующие графы в главном диалоге KPPP.
LoopStart ID: # ожидать имя пользователя
ID Enter ID: # запрос на ввод имени пользователя с последующей отправкой
Expect word: # ожидать пароль
Password Enter Password # запрос на ввод пароля с последующей отправкой
LoopEnd granted # провайдер при успешной регистрации сообщает 'Permission granted'
Send ppp # эта команда запускает ppp-соединение на
# удаленном компьютере Интернет- провайдера
Пример 4. Скрипт для соединения с Интернет-провайдером, использующим авторизацию с ответами на запросы.
Ниже приведен скрипт, который можно использовать для подключения к Интернет-провайдеру, который требует авторизации с ответами на запросы. Обычно у вас есть устройство типа смарт-карты с дисплеем и калькулятором, предоставленное вам вашим провайдером. Чтобы использовать его, вам необходимо знать пароль. Дозвонившись до провайдера, вы увидите запрос, который нужно будет ввести в устройство и получить динамический пароль на вход. Его вам и надо будет ввести.
LoopStart ID: # ожидать имя пользователя
ID Enter ID: # запрос на ввод имени пользователя с последующей отправкой
Scan Challenge: # сканировать поток до значения 'Challenge' и сохранить все последующие
#данные до начала новой строки
Expect Password: # ожидать пароль
Prompt Your token is ## - Enter Password # запрос на ввод пароля с последующей отправкой
LoopEnd granted # провайдер при успешной регистрации сообщает 'Permission granted'
Send ppp # Эта команда запускает ppp-соединение на
# удаленном компьютере Интернет- провайдера
Пример 5. Использование опций сканирования и сохранения в скриптах
Здесь приводится пример подключения к несуществующему Интернет-провайдеру, который изменяет пароль при каждом новом соединении. Новый пароль должен быть проверен и сохранен для использования при следующем соединении.
<st1:place><st1:placetype>University<st1:placetype> of <st1:placename>Lummerland<st1:placename><st1:place>
Login:mylogin
Password:
The password for your next session is: YLeLfkZb # пароль для следующего сеанса связи
Please record and enter it for verification. # пожалуйста запишите его и введите для проверки
Verification:YLeLfkZb
1 = telnet
2 = SLIP
3 = PPP
Your choice: # ваш выбор
KPPP выполнит всю эту работу вместо вас, при этом устранит риск потери клочка бумаги, на котором записан ваш пароль. Ключевым моментом следующего скрипта является использование комбинации опций Сканировать/Сохранить (Scan/Save).
7 Expect Login: # ожидать запрос на подключение
ID # отправить имя пользователя
Expect Password: # ожидать запрос на пароль
Password # отправить пароль
Scan is: # ожидать значения '... next session is:' и сканировать значение пароля
Save password # сохранить новый пароль для следующего подключения
Expect Verification: # ожидать значения 'Verification:'
Password # отправить новый пароль
Expect choice: # ожидать запрос на выбор типа соединения (telnet, SLIP, PPP)
Send 3 # выбрать опцию 3, т. е. PPP
Вкладка Выполнить
Рисунок 3.28. Вкладка Выполнить в разделе Соединения
Задайте команды для выполнения на разных этапах соединения. Все команды выполняются с вашими правами пользователя, поэтому вы не можете выполнить команды с root-привилегиями, разумеется, если не работаете в системе как root (что плохо по многим причинам!).
Убедитесь в правильности задания полного пути к программе, иначе KPPP не сможет ее найти.
Вы можете добавить команды, которые могут быть выполнены в четыре заданных моментах времени в процессе соединения:
1) Перед установлением соединения
Выполнить эту команду перед дозвоном; к моменту соединения с вашим Интернет-провайдером команда уже будет выполняться.
2) При установлении соединения
Выполнить команду только при установлении соединения.
3) Перед разъединением
Выполнить команду перед разъединением.
4) После разъединения
Выполнить команду после разъединения.
К примеру, вам может понадобиться выполнить программу leafnode как только соединение будет установлено, или же вам необходимо проверить почту. Вы можете проверить, вся ли почта из очереди была отправлена перед разъединением. Вам может понадобиться скрипт ?очистки? логов и кэша после разъединения.
Вкладка Учет
Рисунок 3.29. Вкладка Учёт в разделе Соединения
Отметьте опцию Включить учет для включения или же отключения возможности учета стоимости телефонных звонков для этого соединения.
Выберите из списка правило, соответствующее вашему провайдеру телекоммуникационных услуг.
Если вы не нашли ни одного подходящего, то можно написать свое правило на основе шаблона, который приведен в приложении.
Последней опцией в этом разделе является Учет трафика, описанный ниже.
Учет трафика
- Что такое учет трафика?
Учет трафика состоит в подсчете количества переданных и полученных байт. KPPP может вести учет как переданных, так и полученных байт, или же обоих вместе. Выбор учета зависит от вас.
- Для чего я должен использовать учет трафика?
Многие Интернет-провайдеры выставляют счет за свои услуги на основе количества использованного трафика. Причем, чаще всего, Интернет-провайдеры предлагают фиксированную оплату до определенного значения трафика, каждый же последующий мегабайт должен быть оплачен. KPPP отображает текущее состояние трафика и поможет вам минимизировать счета за услуги. И, конечно же, если счет за услуги не зависит от трафика, вы можете использовать его для удовлетворения собственного любопытства.
- Какой тип учета трафика я должен выбрать?
Это зависит от вашего провайдера. Большинство провайдеров ведут учет полученных из Интернета данных и игнорируют исходящий трафик. В таком случае вы должны использовать Входящий трафик. Если вы оплачиваете весь трафик, выберите Входящий и исходящий трафик. Исходящий трафик приведен в программе для полноты, так как провайдер с таким типом учета пока не известен. Эта опция может оказаться полезной, если вы используете WWW- или FTP-сервер дома.
Недостатки
К сожалению, учет трафика имеет и свои недостатки. KPPP считает только количество трафика, вне зависимости от его происхождения. Многие провайдеры устанавливают ограничения только на доступ в Интернет, а не для трафика в их собственной сети. У некоторых провайдеров существуют различные ограничения на трафик в собственной сети, трафик по стране и весь остальной трафик. Если вы мало путешествуете по сети, по большей части используя страницы из кэша прокси-сервера вашего Интернет-провайдера, то, скорее всего, ваш провайдер не выставляет счет за это. KPPP не определяет принадлежность IP-пакетов к прокси-серверу, поэтому они будут учтены. Если эта ситуация похожа на вашу или, например, если ваш провайдер использует кэширование сервера новостей nntpcached, то учтенный в KPPP трафик может оказаться больше реального объема, подлежащего оплате. С другой стороны, KPPP никогда не преуменьшит ваши счета.
Приведенные здесь изменения действительны для всех соединений в KPPP.
Вкладка Соединения
Рисунок 3.30.
Вкладка
Соединения
Этот диалог предназначен для управления соединениями. Названия соединений приводятся в виде списка слева от диалога.
Для удаления соединения нажмите на кнопку Удалить. Перед окончательным удалением у вас будет запрошено подтверждение.
Вы можете создать копию соединения, нажав на кнопку Копировать. К примеру, это можно использовать для разделения доступа среди членов семьи, хотя, как правило, в таком случае лучше предоставить раздельный доступ к ОС каждому. Или же, у вас может быть несколько соединений с одним и тем же Интернет-провайдером, и вы используете их все.
Нажатие на кнопку Редактировать приведет к появлению диалога, описанного в разделе Диалоговая настройка, со сведениями для выбранного соединения.
Нажав на кнопку Новое соединение, вы сможете выбрать метод настройки: Мастер подключения или же Диалоговая настройка. Оба метода были описаны ранее.
Если вы выберете соединение, для которого включен Учет, в таком случае накопленные об этом соединении сведения появятся в двух панелях соответственно: Телефонные расходы: и Трафик:.
Слева от табло учета расположены две кнопки: Сброс и Просмотр логов.
Нажатие на кнопку Сброс вызовет сброс данных о Телефонных расходах: и Трафике до значения 0. Как правило, это может понадобиться раз в месяц или в квартал, когда вы получите счет за телефон и оплатите расходы. Каждый из параметров может быть обнулен независимо от другого, вам будет предложено сделать выбор при нажатии на кнопку Сброс.
При нажатии на кнопку Просмотр журнала откроется новое окно, с записями всех звонков, сделанных из KPPP. Если вы сохраняли все записи, вы можете просматривать их помесячно. Это может оказаться полезным, если вы получили неправдоподобно большой счет за телефон и проводите расследование.
Вкладка Устройство
Рисунок 3.31.
Вкладка Устройство
В этом разделе вы можете выбрать и настроить ваш модем.
1) Укажите имя модема
2) Выберите соответствующее устройство.
/dev/ttys0
В ОС DOS или Windows? это устройство соответствует COM1, COM2 - /dev/ttys1, и так далее. Обычно именно эти устройства используются в ОС Linux?.
/dev/cua0
Первый последовательный порт (COM1). COM2 обычно называется /dev/cua1 и так далее. Эти устройства обычно применяются в BSD-системах: FreeBSD, NetBSD и OpenBSD. Старые Linux?-системы также могут использовать их, с некоторых пор в ОС Linux? они переименованы в /dev/ttySx.
/dev/ttyI0
В ОС Linux? так называются внутренние ISDN-платы. Эти устройства эмулируют Hayes-совместимые модемы. /dev/ttyI0 - первая плата, /dev/ttyI1 - вторая ISDN-плата и так далее. Эти устройства доступны только в ОС Linux?.
/dev/modem
Большинство дистрибутивов ОС Linux? создают символическую ссылку на реальное модемное устройство: /dev/modem. Избегайте использования ссылки. Используйте реальное устройство.
3)Управление потоком
Выберите аппаратное (CRTSCTS) или программное (XON/XOFF) управление потоком, или же отключите его. Рекомендуется использовать аппаратное управление потоком.
4) Окончание строки
Выберите соответствующий символ ?Enter? для вашего модема. Большинство модемов используют символы ?CR/LF?, тогда как для некоторых модемов может понадобиться другая строка. Если при выполнении скрипта возникают проблемы, попробуйте изменить этот параметр.
5) Скорость соединения
Выберите из списка скорость соединения, соответствующую вашему последовательному порту. Обратите внимание на то, что последовательный порт поддерживает куда большую скорость, нежели модем. Возможно, имеет смысл начать с выбора максимальной скорости и уменьшать ее в случае возникновения проблем при попытке соединения.
6) Использовать файл блокировки модема
Используйте эту опцию, если хотите, чтобы KPPP создал файл блокировки. В Linux? каталог для таких файлов - /var/lock. Поведение программ, таких как mgetty, зависит от существования файлов блокировки, поэтому KPPP не может работать совместно с mgetty, если опция файла блокировки выключена. Убедитесь, что вы не используете опцию lock для демона pppd, если хотите, чтобы KPPP заблокировала модем, так как опция lock указывает демону pppd попытаться заблокировать модем. Так как KPPP уже заблокирует устройство, демон pppd вернет ошибку, а KPPP выдаст сообщение об ошибке: демон ppp внезапно прекратил работу.
7) Таймаут модема
Показывает, сколько секунд KPPP будет ожидать от модема ответа CONNECT. Значение таймаута, равное 30 секундам, является наиболее универсальным.
Вкладка Модем
Рисунок 3.32. Вкладка Модем
1) Ожидание при состоянии Занято
Время после получения сигнала Занято, через которое модем будет пытаться соединиться повторно. Примите во внимание ограничения вашего провайдера телекоммуникационных услуг на значение этого параметра.
2) Громкость динамика модема
Используйте ползунок для установки громкости динамика модема. По мере смещения вправо громкость увеличивается. Для некоторых модемов низший уровень громкости соответствует выключению звука, а для других средний и высший уровень - одно и то же.
3) Команды модема
В этом диалоге вы можете задать соответствующие вашему модему команды. Если у вас Hayes-совместимый модем, скорее всего, вам не понадобится менять заданные по умолчанию значения, тем не менее, прочитайте главу Команды для Hayes-совместимых модемов в этом файле. Приведенные там сведения могут оказаться очень полезными при отладке проблем с настройкой стабильного соединения с вашим Интернет-провайдером. В частности, параметры Задержка до инициализации и Задержка после инициализации помогут решить проблемы с подвисанием модема. Эти параметры указывают KPPP сделать паузу перед отправкой строки инициализации модему и после нее. Параметр Задержка до инициализации также отправляет по умолчанию символ возврата каретки (CR), если вы не установили интервал задержки в значение 0.
4) Опрос модема
При нажатии на эту кнопку KPPP пошлет модему запрос на идентификацию. При успешной обработке запроса результат будет отображен в диалоге. В зависимости от модели модема опрос может содержать ценные сведения.
5) Терминал
Нажатие на кнопку Терминал вызывает окно мини-терминала. Вы можете использовать мини-терминал для тестирования модема и экспериментирования с протоколами установки ppp-соединения с вашим Интернет-провайдером. Вам не понадобятся такие терминальные программы как minicom или Seyon.
Вкладка График
Рисунок 3.33. Вкладка График
Здесь вы можете установить цвета, которые KPPP использует для графиков. Вы можете установить разные цвета для Фона, Текста, Входящих байт и Исходящих байт.
Вкладка Разное
Рисунок 3.34. Вкладка Разное
Приведенные здесь опции не относятся к входящим в этот раздел, тем не менее, они могут оказаться весьма полезными.
1) Версия демона ррр
Номер версии демона ppp в вашей системе
2) Таймаут демона
KPPP будет ожидать заданное количество времени после выполнения скрипта и запуска демона ppp до установки демоном ppp ppp-соединения; если таковое не было установлено, процесс демона ppp будет прекращен.
3) Встроить в панель при установлении соединения
Если эта опция выбрана, KPPP будет встроен в панель и отображен маленькой иконкой. Щелчок левой кнопкой мыши по иконке восстановит окно KPPP. Щелчок правой кнопкой мыши вызовет всплывающее меню со следующим выбором: восстановить окно, показать статистику или разъединиться. Эта опция отменяет опцию Свернуть окно при соединении.
4) Автодозвон при разъединении
Если эта опция выбрана, то в случае разъединения KPPP постарается соединиться заново.
5) Показывать время в строке заголовка
KPPP будет отображать время длительности соединения в строке заголовка окна KPPP в течение всего сеанса связи.
6) Разъединиться при остановке X-сервера
Выбор этой опции указывает KPPP по порядку завершить ppp-соединение, разъединить модем и завершить учет при останове X-сервера. Это может оказаться полезным, если вы забудете о том, что находитесь в Интернете, когда остановите процесс X-сервера или если не хотите завершать сеанс связи вручную. Если вы не хотите, чтобы KPPP указывал модему повесить трубку при остановке X-сервера, оставьте эту опцию неотмеченной. Если у вас включен режим учета и вы не включили эту опцию, в таком случае ведение учета продолжается с момента останова X-сервера до завершения работы KPPP.
7) Выход при разъединении
Указывает, будет ли KPPP завершать работу при разъединении с провайдером.
8) Свернуть окно при соединении
Если эта опция отмечена, при установлении соединения окно KPPP будет свернуто. Время соединения будет отображено в панели задач.
Вкладка О программе
Вкладка О программе содержит информацию о версии, лицензии и авторе программы KPPP.
В основном этот раздел предназначен для суперпользователей (root), людей с высокими потребностями в безопасности и тех, кто просто интересуется безопасностью. Нет необходимости в прочтении этого материала тем, кто использует Linux? дома, тем не менее, кое-какие знания можно почерпнуть и отсюда.
Запрет доступа к KPPP
Системный администратор может ограничить доступ на использование KPPP. Существует два способа для достижения этого.
1) Разрешение доступа на уровне привилегий группы
Создайте новую группу (назовите её, к примеру, dialout или как-нибудь в этом роде) и добавляйте в неё тех пользователей, кому разрешено использовать KPPP. Затем наберите в командной строке:
# chown root.dialout /opt/kde/bin/kppp
# chmod 4750 /opt/kde/bin/kppp
Здесь подразумевается, что KDE установлена в каталог /opt/kde/ и что новая группа называется dialout.
2) Запрет доступа с непосредственным использованием KPPP
С самого начала KPPP проверяет, существует ли файл /etc/kppp.allow. Если такой файл существует, только перечисленные в нем пользователи могут использовать программу. Этот файл должен быть открыт для всех на чтение (но, конечно, НЕ на запись.) Распознаваемыми являются только имена пользователей, вы не можете использовать UID в этом файле. Короткий пример:
# /etc/kppp.allow
# строки комментариев игнорируются,
# как и пустые строки
fred
karl
daisy
В приведённом примере только пользователи fred, karl и daisy могут использовать программу, а также пользователи с UID 0 (нет необходимости добавлять суперпользователя в этот файл).
У KPPP присутствует SUID-бит. А безопасность?
Представляется невозможным написать программу дозвона без использования SUID-бита, безопасную и простую в использовании неопытными пользователями. В плане безопасности KPPP использует следующую стратегию.
Процессы программы KPPP разветвляются в самом начале выполнения программы. Основной процесс, ответственный за операции с GUI (например, взаимодействие с пользователем), теряет бит SUID после разветвления и выполняется с привилегиями обычного пользователя. Порождённый процесс сохраняет привилегии и отвечает за все действия, которым нужны привилегии суперпользователя. Для обеспечения безопасности этой части в ней не используются вызовы библиотек KDE и Qt?, а только вызовы обычных библиотек. Исходный код этого процесса короток (около 500 строк) и хорошо документирован, его легко проверить на наличие дыр в безопасности.
Головной и порождённый процессы взаимодействуют согласно стандартному IPC (взаимодействие процессов) ОС UNIX?.
Начиная с номера версии 0.9.1, KPPP поддерживает наиболее распространенную форму авторизации - PAP.
PAP в KPPP
Существуют два различных способа использования PAP.
1) Авторизация клиента
Этот способ используется многими коммерческими Интернет-провайдерами. Это означает, что вы (ваш компьютер) должен представиться PPP-серверу Интернет-провайдера. PPP-сервер не должен представляться вашему компьютеру. К вопросам безопасности это не относится, так как вы должны знать, куда происходит подключение.
Если ваш Интернет-провайдер, назначая вам имя пользователя и пароль, просит вас использовать PAP-авторизацию, вы должны использовать именно этот способ.
2) Двусторонняя авторизация
Аналогичен выше приведенному, но в этом случае ваш компьютер запрашивает PPP-сервер Интернет-провайдера представиться. Для осуществления соединения вы должны выбрать метод авторизации На основе скрипта, а не PAP, а также вручную отредактировать файл /etc/ppp/pap-secrets. Несмотря на то, что у KPPP нет встроенной поддержки этого способа, установить соединение легко.
Подготовка KPPP для использования PAP
- Убедитесь, что файл /etc/ppp/options (и ~/.ppprc, если таковой существует) НЕ содержит ни одного из ниже перечисленных аргументов:
+pap
-pap
papcrypt
+chap
+chap
+ua
remotename
Маловероятно, что какая-нибудь из приведенных опций будет включена, но на всякий случай проверьте.
- Запустите KPPP;
- Нажмите кнопку Настройка;
- Выберите соединение, с которым вы намерены использовать PAP и нажмите кнопку Редактировать;
- Выберите вкладку Дозвон;
- Выберите PAP в разворачивающемся списке Авторизация.
Если каждый раз при соединении вы не хотите набирать пароль заново, то выберите Сохранить пароль. Этим вы сохраните пароль в файле, поэтому убедитесь, что никто кроме вас не использует ваш доступ в систему.
Вот и все. Закройте все диалоги, наберите имя пользователя и пароль, назначенные вам Интернет-провайдером, и нажмите кнопку Соединиться.
Существует альтернативный метод использования PAP и CHAP в программе KPPP.
Поясним работу KPPP с обычным PAP или CHAP соединениями. Если ваш Интернет-провайдер присвоил вам имя пользователя и пароль для соединения, то можете пропустить этот раздел и использовать инструкции, приведенные выше.
На первый взгляд PAP кажется сложнее, чем на самом деле. Сервер (компьютер, к которому происходит подключение) указывает клиенту (вашему компьютеру) идентифицировать себя с использованием PAP. Клиент (демон ppp) ищет в специальном файле запись с указанием соответствующего имени сервера и имени клиента для этого соединения, а затем отправляет найденный там же пароль. Вот и все!
Как же это осуществить? Предположительно, у вас установлен демон ppp версии 2.2.x или выше; установка стандартная, файлы конфигурации находятся в каталоге /etc/ppp.
К примеру, вы пользуетесь услугами Интернет-провайдера glob.net, ваше имя пользователя userbaz, а ваш пароль - foobar.
Для начала вам необходимо добавить нижеследующее к файлу /etc/ppp/pap-secrets. Формат записи таков:
USERNAME (имя пользователя) SERVERNAME (имя сервера) PASSWORD (пароль)
Добавьте следующую строку к файлу /etc/ppp/pap-secrets и сохраните файл :
userbaz glob foobar
Замечание
Вы можете указать любое имя сервера, так как вы используете то же самое имя в аргументах демона ppp, как вы вскоре увидите. В примере мы указали сокращенное имя glob, которое используется для определения правильного пароля.
Далее вам нужно настроить соединение в KPPP. Это делается точно так же, как и любое другое соединение, поэтому вдаваться в детали мы не будем, разве что оговорим, что файл /etc/ppp/options пуст и вам не нужно создавать скрипт подключения.
В диалоге настройки KPPP, внизу на вкладке Дозвон есть кнопка аргументы демона ррр. Нажатие вызовет диалог редактирования. Вы можете указать значения, которые будут отправлены демону ppp в виде аргументов командной строки, а в случае аргументов множественных значений каждое значение должно быть указано отдельно от других, в необходимом порядке.
Сперва задайте аргументы, которые вы используете. Затем добавьте аргументы, которые демон ppp использует для осуществления PAP-авторизации. В этом примере мы добавим user, userbaz, remotename и glob по порядку. Опция user указывает демону ppp, какое имя пользователя из файла pap-secrets следует отправить серверу. Имя удаленного компьютера задается демону ppp для соответствия с записью в файле pap-secrets, таким образом, вы можете задать любое значение с условием его совпадения с записью в файле pap-secrets.
Вот и все, теперь вы настроили соединение с сервером, использующим PAP-авторизацию. CHAP-авторизация не сильно отличаеся. В Linux? Network Administrators Guide вы найдете описания формата файла chap-secrets и используемых аргументов демона ppp, а все остальное окажется простым.
Этот раздел предназначен для того, чтобы дать представление об искусстве работы с модемом. Все команды, которые здесь описываются, относятся к стандарту Hayes AT и к стандартному Hayes-совместимому модему. Однако не все модемы одинаковы, и ваш случай может отличаться от изложенного.
Сеанс связи с модемом
В модемном сеансе вы работаете с модемом непосредственно. Вы набираете команды, а модем отвечает. Для начала сеанса связи с модемом нажмите на кнопку Настройка. В открывшемся диалоге перейдите на вкладку Модем и нажмите кнопку Терминал. Откроется окно интерактивной настройки модема. Наберите команду ATZ (она сбрасывает установки модема). Модем должен отозваться и ответить OK. Используйте Файл->Закрыть для завершения сеанса.
Схемы настроек модема
Вы можете захотеть сохранить различные схемы настроек модема, а не вводить команды заново при каждом соединении. Это можно осуществить, записав их в память модема, и именно для этого вам понадобится работать непосредственно в сеансе связи с модемом. У модема может быть несколько сохраненных схем под номерами 0, 1 и т.д. Командой AT&V вы можете просмотреть их все. Обычно схема по умолчанию - это 0 (ее можно изменить командой AT&Y). Текущая схема, с которой работает модем, называется <активной>.
Когда вы меняете настройку, активная схема изменяется. Команда ATZ сбрасывает настройки модема и восстанавливает схему настроек модема по умолчанию (#0), при этом не сохраняются сделанные вами изменения. Для сохранения изменений загрузите схему, которую вы хотите изменить, командой ATZn (где n - номер схемы). Сделайте необходимые изменения, а затем сохраните ее командой AT&Wn. Чтобы использовать нужную схему, измените строку инициализации модема (Настройка Модем Команды модема Строка инициализации). К примеру, команда ATZ1 сбросит настройки модема и загрузит сохраненную схему #1.
Если вы хотите сбросить установки модема в некоторое начальное состояние, выполните команду AT&F&W, которая восстановит заводские настройки модема и сохранит их в качестве схемы по умолчанию.
Примеры изменения схемы модема приведены в следующем разделе.
Как заставить модем повесить трубку
Может случиться так, что модем никак не хочет вешать трубку. Это чаще всего происходит из-за несоответствия настроек KPPP и модема. У стандартного модема есть два метода повесить трубку: Командный и DTR. В командном методе модему отправляется ESC-последовательность, которая переводит модем в командный режим, а затем выполняется команда повесить трубку (ATH).
Если вы настраиваете демон ppp вручную, не используя KPPP, чаще всего имеет смысл использовать командный метод для завершения терминального сеанса и запуска демона ppp. В других случаях более подходит метод DTR, так как он проще.
Метод DTR (AT&Dn)
В методе DTR модем вешает трубку, как только KPPP завершает использование модема. Если в сеансе связи с модемом вы опрашиваете модем командой AT&V и в настройках активной схемы видите &D0, это значит, что метод DTR отключен. Чтобы включить метод DTR, нажмите на кнопку Терминал для начала сеанса связи с модемом, а затем наберите:
ATZ # сбросить установки в схему по умолчанию
AT&D2 # Установить состояние Повесить трубку при выходе из DTR
AT&W # Записать в схему по умолчанию
Как работает метод DTR
Всякий раз, когда сигнал Data Terminal Ready (DTR) на линии между компьютером и модемом возрастает выше определенного предела, модем вешает трубку. Когда KPPP открывает последовательный порт, сигнал DTR понижается, и на внешнем модеме вы можете видеть, как зажигается лампочка DTR (или TR). Когда лампочка TR гаснет, поскольку KPPP закрыл последовательный порт (или по еще более худшей причине), модем вешает трубку.
Командный метод
Модем, находящийся в режиме соединения, можно также заставить повесить трубку (если в AT&Dn n не равно 2), переведя его в командный режим и отправив ему команду на выполнение. Чтобы корректно повесить трубку, откройте сеанс связи с модемом и установите короткую задержку, например:
ATZ
ATS12=5
AT&W
Используйте ползунок Защитный интервал в разделе Команды модема для установки значения регистра S12 равным 5. После этого модем будет вешать трубку корректно.
Как работает командный метод
Когда локальный модем подключен к удаленному модему, он находится в режиме соединения (?connect?) и передает все получаемые им символы удаленному модему. Для того чтобы модем воспринял символы как команду себе, его нужно перевести в командный режим. Это осуществляется ESC-кодом.
ESC-код - это три сигнала, длительность которых задается регистром S12 (в пятидесятых долях секунды):
- отсутствие сигнала в течение времени дольше, чем S12/50 сек;
- три подряд символа ESC (который задается в регистре S2, значение по умолчанию - ?+?), повторенные с интервалами менее S12/50 сек каждый;
- отсутствие сигнала в течение времени дольше, чем S12/50 сек;
Как только модем войдет в командный режим, вы можете отправлять ему команды. Для того чтобы повесить трубку, отправьте команду ATH. ЕSC-коды и команда модему повесить трубку, используемые в KPPP, указываются в диалоге Команды модема. Они должны соответствовать вашему модему.
Как ускорить режим тонального набора номера
В тональном режиме время набора задается регистром S11. В нем записывается длительность (в сотых долях секунды) отправки каждого тонального сигнала во время дозвона. Значением по умолчанию, как правило, является 95 (почти секунда). Быстрота набора номера зависит от качества телефонного коммутатора на вашей телефонной станции. Минимальное значение - 50, почти в два раза быстрее, и часто оно срабатывает.
ATZ # восстановить установки схемы по умолчанию
ATS11=50 # самый быстрый дозвон (используйте большие значения, если возникнут проблемы)
AT&W # записать в схему по умолчанию
Настройка KPPP на режим обратного звонка
Сервер обратного звонка под управлением ОС UNIX? или Linux?
В этом разделе рассказывается об обратном звонке в ОС UNIX? (Linux?) и о том, как KPPP должна быть настроена для соединения с сервером обратного звонка под управлением ОС UNIX?, особое внимание уделяется ОС Linux? и ее серверу обратного звонка на основе скриптов.
Что такое Обратный звонок
Для использования Обратного звонка есть несколько причин. Вот некоторые из них:
1) увеличение безопасности вашей локальной сети;
2) сокращение расходов ваших сотрудников, звонящих извне;
3) контроль стоимости телефонных звонков, по статье организационных расходов.
Представьте себе, что некто дозвонился на ваш сервер входящих звонков и взломал пароль доступа. Зачем же, в таком случае, конфигурировать брандмауэр для вашей сети, если можно таким простым способом получить к ней доступ?
Программное обеспечение обратного звонка запрашивает ваше имя, а затем разъединяется. Далее производится звонок по вашему номеру, который хранится в базе данных на сервере. Клиент поднимает трубку и продолжается процедура установления соединения, если не возникло сбоев. Сервер запрашивает ваше имя пользователя и пароль, зная, что звонили вы (согласно вашему звонку), или же зная, откуда вы звонили. Устанавливается соединение и запускается демон ppp.
Вопрос: как указать клиенту поднять трубку, когда сервер перезванивает ему. Нужна ли специальная программа типа mgetty? Ответ: нет, вам не понадобится специальная программа. В общем, любой клиент может быть использован при соединении с обратным звонком, вы можете использовать даже обыкновенную терминальную программу: minicom, например.
Вам только надо отдать модему команду Ответить автоматически на телефонный звонок при поступлении сигнала RING. Для этого задайте модему следующую команду:
AT&SO=1
Эта команда указывает модему поднять трубку после одного звонка (RING).
Подобно большинству других программ-клиентов, KPPP проверяет, не прекращено ли соединение сервером, а затем закрывает текущую сессию, если определен сигнал NO CARRIER. Это является настоящей проблемой при настройке обратного звонка. Сигнал NO CARRIER, конечно, будет получен в момент прекращения соединения сервером обратного звонка. Некоторые серверы используют специальные программы регистрации. Так как решить эту проблему? Укажите модему всегда показывать CARRIER UP (это не вызовет проблем при указании клиенту повесить трубку). Вы можете осуществить это следующей командой модему:
AT&C0
Если вам хочется проверить, как все это работает, используйте обыкновенную терминальную программу, например, minicom, позвоните на ваш сервер обратного звонка и посмотрите, что произойдет.
Настройка KPPP
Теперь, когда вы увидели применение теории на практике, как настроить KPPP для осуществления соединения?
Как показано, процедура весьма несложная.
Сперва укажите модему принимать входящие соединения, а не прерывать сессию установки соединения при разъединении с сервером обратного звонка при первом звонке. Обе эти опции можно добавить на вкладке Модем в настройках KPPP, добавив в опцию Строка дозвона следующее: AT&C0S0=1DT.
Более никаких изменений в KPPP не потребуется. Если у вас возникнут проблемы с инициализацией и сбросом установок модема, обратитесь к разделу Устранение неисправностей для получения более детальных сведений.
Не забудьте о сервере. Помните, что ОС UNIX?, Windows? и Macintosh по-разному обрабатывают концы строк в текстовых файлах и, таким образом, и в процедурах регистрации. Если вы подключаетесь к серверу под управлением ОС Windows?, используйте CR/LF, для сервера под управлением ОС UNIX? используйте CR, а при подключении к серверу Macintosh используйте LF.
Следующие инструкции применимы к случаю дозвона на сервер обратного звонка под управлением ОС Linux? с использованием обычной авторизации (не PAP или ей подобной).
Установите стиль Авторизация во вкладке Дозвон в конфигурации соединения в положение На основе скрипта.
Сейчас вам надо создать скрипт регистрации. Редактирование этого скрипта является одной из наиболее приятных функций программы KPPP. Эта опция доступна на вкладке Скрипт подключения в диалоге Редактирование соединения.
В этом примере пользователь userxyz должен вызвать следующий скрипт. Серверу обратного звонка уже задана таблица имен и соответствующие телефонные номера, в целях безопасности создать псевдоним для соответствующего вам номера телефона.
Для каждой строки выберите критерий из раскрывающегося списка в левой стороне диалога и введите действие в поле справа. Нажмите на кнопку Добавить для добавления строки в скрипт. Кнопкой Вставить добавляйте строки в середину скрипта, а кнопкой Удалить удаляйте строку, если в ней допущена ошибка.
Полностью скрипт будет выглядеть примерно так (без комментариев, начинающихся здесь с символа #)
Expect login: # помните, что это обыкновенный теминальный логин
ID "" # kppp отправляет имя пользователя, установленное в главном экране
Expect for userxyz: # отображается список доступных номеров, пользователь должен выбрать
Send userxyz-home # пользователь хочет, чтобы ему перезвонили по домашнему номеру
Expect login: # выполняется процесс обратного дозвона, новое соединение и новый логин
ID
Expect password: # отправить пароль
Expect > # ожидать приглашения (оно может отличаться)
Send start_ppp # эта команда запускает демон ppp
После появления запроса на вход пользователь отправляет свое имя пользователя и ожидает появления списка доступных этому пользователю телефонных номеров. Затем он указывает серверу, по какому из предложенных номеров нужно произвести звонок. Для этого KPPP может создать диалог, если вы часто переезжаете, к примеру, если вы являетесь агентом по продажам и переезжаете из гостиницы в гостиницу. Теперь сервер ожидает имя пользователя и пароль для авторизации, тем временем, сервер прерывает соединение и перезванивает пользователю. Данные для авторизации отправлены, KPPP ожидает приглашения системы и запускает небольшой скрипт (здесь start_ppp), который запускает демон ppp на сервере.
Скрипт start_ppp выглядит примерно так, как показано ниже:
#!/bin/sh
stty -echo
exec /usr/sbin/pppd -detach silent modem
Конечно, настройка PPP-сервера выходит за рамки этого документа. Детальные сведения находятся на man-странице демона ppp. Замечательное описание сервера обратного звонка доступно по адресу: http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback
Все остальные настройки, такие как настройка демона ppp или настройки IP-протокола, будут работать нормально, и для дозвона вам не понадобятся другие программы.
Замечание
Обратный звонок в KPPP и другие программы типа mgetty или же faxgetty могут выполняться на одном последовательном порте. Проблем с дозвоном быть не должно, так как KPPP создает файл блокировки и указывает программе getty, что другое приложение (в этом случае KPPP) использует порт.
Устранение неисправностей
Известные проблемы с программой KPPP, работающей в режиме обратного звонка:
1) Так как вы инициализируете модем для ответов на звонок, после разъединения нужно сбросить установки модема в начальное состояние. Иначе модем продолжит отвечать на звонки, что не так уж и хорошо, если рассмотренная телефонная линия является основной для вас.
2) У KPPP есть мелкие недостатки, когда она использует одну линию наряду с другой программой, такой как mgetty. Если mgetty в процессе выполнения использует ту же линию, то KPPP не может правильно инициализировать модем.
3) KPPP не в состоянии запросить некоторый тип ввода во время регистрации на основе скрипта. К сожалению, при использовании примера скрипта, приведенного выше, KPPP также запрашивает имя пользователя второй раз, при запросе сервера обратного звонка. От этого можно избавиться, если прописать ваше имя пользователя в скрипт регистрации.
Ресурсы Интернета о серверном программном обеспечении
Программное обеспечение для сервера обратного звонка под управлением ОС Linux? доступно во многих местах.
Хорошо известная мощная программа mgetty способна работать с соединениями по принципу обратного звонка. Описание настройки mgetty для этой цели находится по адресу http://www.dyer.demon.co.uk/slug/tipscrip.htm, написанное Colin McKinnon, (colin AT new.co.uk).
Существует готовый к использованию пакет для ОС Linux?: http://www.icce.rug.nl/docs/programs/callback/callback.html.
Программа дозвона minicom
Minicom представляет собой программу для общения и немного напоминает испытательную версию программы TELIX, но она распространяется свободно и работает под большинством ОС UNIX. Особенностями программы являются каталог набора номера с автоматическим повторным набором, поддержка блокировочных файлов типа UUCP на серийных (или последовательных ??) устройствах, отдельный интерпретатор скриптового языка, сбор данных в файл, поддержка большого количества пользователей с индивидуальными настройками и другое.
-s
Запуск Setup. С помощью данной опции пользователь root задает настройки всей системы в файле /etc/minirc.dfl. Во время использования этой опции программа minicom не запускает процесс инициализации, и вы сразу попадаете в меню конфигурации. Это очень удобно, если minicom отказывается запускаться из-за изменений в системе или при первом ее использовании. Для большинства систем подходящие настройки уже заданы.
-o
Не инициализировать. Программа minicom проскочит код инициализации. Опцию удобно использовать, если вы вышли из программы, но не перезагружались, и хотите заново запустить minicom. Однако существуют некоторые проблемы: например, файлы блокировки не проверяются, следовательно, обычный пользователь может столкнуться с такими вещами, как uucp... Вполне возможно, что скоро этот недостаток будет устранен. На данный момент считается, что пользователи, имеющие доступ к модему, несут определенную ответственность за свои действия.
-m
Заменить командный ключ на Meta- или ALT-ключ. Опция принимается по умолчанию в версии 1.80 и может быть сконфигурирована в одном из меню программы minicom. Однако, если вы всегда используете разные терминалы, некоторые из которых не имеют Meta- или ALT-ключей, удобно в качестве командного ключа по умолчанию принять комбинацию клавиш Ctrl-A и прибегать к данной опции только тогда, когда на клавиатуре присутствуют Meta- или ALT-кнопки. Minicom считает, что Meta-ключ посылает префиксную операцию ESC, а не ту, что устанавливает старший бит символа.
-M
То же, что и -m, но считается, что Meta-ключ устанавливает восьмой бит символа (посылает 128 + код символа).
-z
Использовать терминальную строку статуса. Опция работает только на тех терминалах, которые ее поддерживают и имеют соответствующую информацию в базе данных termcap или terminfo.
-l
Дословный перевод (Literal translation) символов, у которых установлен старший бит. Если флаг установлен, программа minicom не будет преобразовывать символы строки (IBM) к коду ASCII, а передаст их напрямую. Многие unix-подобные системы будут отображать их корректно и без преобразования (Linux в специальном режиме, Coherent и Sco).
-w
При запуске по умолчанию включает linewrap (оболочка строки).
-a
Использование атрибутов (Attribute usage). У некоторых терминалов, в особенности теле- и видео-, плохое управление атрибутам (последовательное вместо параллельного). По умолчанию программа minicom используют '-a on' (включено), но если у вас такой терминал, вы можете (должны!) поддерживать опцию '-a off' (отключено). Указание 'on' или 'off' обязательно.
-t
Тип терминала (Terminal type). Если данный флаг установлен, вы можете заменить переменную среды TERM. Опцию удобно использовать для переменной MINICOM-среды; можно создать специальную запись termcap для использования ее с программой minicom в консоли, которая переведет экран в <сырой> режим (raw mode), т.е. в сочетании с флагом символы строки IBM будут отображаться не преобразованными.
-c
Использование цветов (Color usage). Некоторые терминалы (например, консоль в Linux) поддерживают цвета в стандартных esc-последовательностях (escape sequences) ANSI. Эти esc-последовательности закодированы в minicom, т.к. поддержки цветов при использовании termcap нет. Поэтому эта опция по умолчанию отключена. Опцию можно включить, набрав '-c on'.
-S
Скрипт (script). Запустить указанный скрипт при запуске программы. Пока что поддержка передачи имени пользователя и пароля стартовому скрипту не реализована. Если для начала набора номера при запуске использовать также опцию -d, то скрипт -S будет запущен ДО набора номера, указанного в опции -d.
-d
При запуске набрать номер (Dial) из каталога. Можно указать собственно номер или же подстроку имени в записи. При указании имени, соответствующего нескольким записям в каталоге, все номера объединяются. Можно также указать несколько имен или номеров, разделив их запятыми. После завершения всех остальных процедур инициализации начнется набор номера, соответствующего первой указанной записи.
-p
Псевдо терминал (Pseudo terminal), который можно использовать. Данный параметр заменяет порт терминала, указанный в конфигурационных файлах, но только если это псевдо tty (pseudo tty). Указанное имя файла должно иметь следующий вид: (/dev/)tty[p-z/][0-f], (/dev/)pts[p-z/][0-f] или (/dev/)pty[p-z/][0-f]. Например, /dev/ttyp1, pts/0 или /dev/ptyp2.
-C
Имя файла (filename). При запуске открыть файл (capture file).
-8
Восьми битные символы передавать без изменений. <Непрерывно> ('continuous') означает, что никаких управляющих последовательностей местоположением/атрибутами (locate/attribute control sequences) вставляться не должно, если ни то, ни другое не изменилось на самом деле. Данный режим используется для отображения многобайтных символов (например, японских) и совершенно не нужен при использовании языков с восьми битными символами (например, финский язык).
При запуске программы minicom для аргументов командной строки она сначала ищет переменные MINICOM-среды, которые в командной строке могут быть заменены. Таким образом, при указании следующих данных (или эквивалентных им) и последующем запуске программы minicom она будет считать, что терминал имеет Meta или <ALT> ключи, а также поддерживаются цвета:
MINICOM='-m -c on'
export MINICOM
Если затем, указав в стартовом файле (.profile или эквивалент), зарегистрироваться с терминала, не поддерживающего цвета, и не переустановить переменную среды, можно указать 'minicom -c off' и работать без поддержки цветов во время данной сессии.
configuration
Параметр configuration представляет наибольший интерес. Обычно программа minicom выбирает настройки по умолчанию из файла "minirc.dfl". Однако, если попытаться передать программе параметр, она попробует выбрать настройки по умолчанию из файла "minirc.configuration". Таким образом, существует возможность создать много конфигурационных файлов для различных портов, различных пользователей и т.д. Наиболее благоразумным было бы использовать имена устройств (например, tty1, tty64, sio2 и др.). Если пользователь создает свой собственный конфигурационный файл, он будет отображен в его домашней директории как '.minirc.dfl'.
Minicom является оконной программой. Чтобы вызвать окно с определенной функцией, необходимо нажать Control-A (далее будем использовать C-A), а затем функциональную клавишу (a-z или A-Z). При нажатии сначала C-A, а затем клавиши 'z', появляется окно подсказки, содержащее краткую информацию о всех командах. Данную комбинацию можно изменить при конфигурировании программы (опция -s или C-A O), но здесь мы будем использовать Control-A.
Для каждого меню можно использовать следующие клавиши:
UP стрелка <вверх> или 'k'
DOWN стрелка <вниз> или 'j'
LEFT стрелка <влево> или 'h'
RIGHT стрелка <вправо> или 'l'
CHOOSE Enter (ввод)
CANCEL ESCape (выход)
Экран разделен на две части: верхние 24 строки представляют собой экран эмулятора терминала. В этом окне интерпретируются esc-последовательности ANSI или VT100. Если внизу остается строка, то туда помещается строка состояния. Если нет такой возможности, строка состояния будет отображаться при нажатии C-A. На терминалах, у которых нет специальной строки состояния, эта комбинация будет использоваться в том случае, если готова информация termcap и выставлен флаг -k.
Ниже в алфавитном порядке приведены возможные команды.
C-A
При нажатии комбинации клавиш C-A она будет передана удаленной системе. В случае изменения <символа выхода> ("escape character"), ход действий останется неизменным.
A
Активирует или деактивирует состояние <Добавить перевод строки> ('Add Linefeed'). Если состояние активировано, перевод строки добавляется перед каждым возвратом каретки (carriage return), отображенным на экране.
B
Дает доступ к буферу информации (scroll back buffer). Прокручивать строки вверх можно с помощью u, вниз - с помощью d, страницы прокручиваются вверх посредством b, вниз - клавишей f. Можно также использовать стрелки и клавиши page up/page down. Текст в буфере можно искать с помощью s (с учетом регистра клавиатуры) или S (без учета регистра клавиатуры). Применение N поможет найти следующее использование строки в тексте, а c активирует режим цитирования (citation mode). При появлении курсора для определения начальной строки следует нажать кнопку Enter. После окончания режима обратной прокрутки (scroll back mode) будет отослано сообщение с префиксом '>'.
C
Очистить экран.
D
Набрать номер или обратиться к каталогу набора номера.
E
Включить или отключить Toggle локальное эхо (если ваша версия программы minicom его поддерживает).
F
Модему посылается сигнал прерывания.
G
Запуск скрипта (Go). Запускается скрипт регистрации.
H
<Зависание> (hangup).
I
Переключить тип esc-последовательности, которая посылается между нормальным и прикладным режимами (см. также комментарий к строке статуса, приведенный ниже).
J
Переключиться к оболочке. При возврате весь экран будет обновлен.
K
Очистка экрана, запуск программы kermit и обновление экрана при возврате.
L
Отключить файл сбора информации (capture file). Если файл подключен, все выходные данные, выводимые на экран, будут также указаны в файле.
M
Отправка строки инициализации модему. Если установлено соединение и в настройках активирована DCD строка, то перед инициализацией у пользователя запрашивается подтверждение.
O
Сконфигурировать minicom. Пользователь попадает в меню конфигурации.
P
Параметры связи (общения). Позволяет менять скорость передачи (bps rate), контроль по четности и количество бит.
Q
Выйти из программы minicom, не перезагружая модем. Если макросы были изменены, но не сохранены, пользователю будет предоставлена такая возможность.
R
Получить файлы. Выбрать из разных протоколов (внешних). Если для выбора файла появляется специальное окно, а для поиска каталога, в который будут загружаться файлы, существует подсказка, то для выбора этого каталога будет также появляться специальное окно. В противном случае будет использоваться каталог, указанный в имени файла, а также меню пути (paths menu).
S
Отправить файлы. Выбрать протокол, как в предыдущем случае. Если для выбора файла не появляется специальное окно (в меню протоколов передачи файлов), то придется указать имя файла в диалоговом окне. Если же окно для выбора файла появляется, то в нем будут отображаться имена файлов в каталоге, из которого они будут выгружаться (upload directory). Можно добавлять или удалять файлы нажатием клавиши пробел, а при нажатии клавиш j/k курсор двигается вверх/вниз. Имена выбранных файлов выделены. Имена каталогов приводятся в квадратных скобках [], и курсор в дереве каталогов можно перемещать вверх или вниз, нажимая пробел два раза. Чтобы отослать файлы, следует нажать клавишу ENTER, а чтобы выйти - клавишу ESC.
T
Выбрать эмуляцию терминала: Ansi (цветной) или vt100. Здесь можно изменить клавишу backspace (возврат назад на одну позицию), включить или отключить строку статуса, а также задать при необходимости задержку (в миллисекундах) после каждой новой строки.
W
Включить или отключить автоматический переход на новую строку (linewrap).
X
Выйти из программы minicom, перезагрузить модем. Если макросы были изменены, но не сохранены, пользователю будет предоставлена такая возможность.
Z
Вызвать окно с подсказкой.
Нажав комбинацию клавиш C-A D, пользователь попадает в каталог набора номера. Чтобы выбрать команду, необходимо нажать соответствующую букву (в режиме прописных букв) или переместить курсор вправо/влево с помощью стрелок или клавиш h/l и нажать Enter. Можно добавлять, удалять или редактировать записи, а также перемещать их вверх и вниз в списке каталога. Если указать, что необходимо набрать какой-либо номер из объединенных записей или если записи не объединены, будет набран номер, приведенный в выделенной на данный момент записи. Пока набирается номер, можно нажать клавишу escape, чтобы прервать процесс. Нажатие любой другой клавиши приведет к закрытию окна, но не прервет сам процесс. Каталог набора номера будет сохранен в файл ".dialdir" в домашнем каталоге. Чтобы пролистывать записи вверх и вниз, можно использовать стрелки или же клавиши PageUp или PageDown, чтобы пролистывать страницы. Если таковых клавиш не имеется, используйте Control-B (назад) и Control-F (вперед). Чтобы объединить несколько номеров, воспользуйтесь клавишей пробел, и программа minicom будет по очереди набирать указанные номера, если не удается установить соединение. В каталоге перед именами объединенных записей указывается символ '>'.
Ниже кратко описано меню <редактировать> ("edit").
A - Name
Имя для данной записи
B - Number
и телефонный номер.
C - Dial string #
Указывается, какую строку набора номера пользователь хочет использовать для установки соединения. В меню Модем и набор номера (Modem and dialing) можно сконфигурировать три строки набора номера (префиксы и суффиксы).
D - Local echo
для данной системы можно включить или отключить (если ваша версия программы minicom поддерживает такую возможность).
E - Script
Указывается скрипт, который необходимо выполнить после удачной установки соединений (см. руководство по запуску скриптов).
F - Username
Имя пользователя, которое передается программе запуска скрипта (runscript program). Информация передается в строке среды "$LOGIN".
G - Password
Пароль передается как "$PASS".
H - Terminal Emulation
Используемая эмуляция (ANSI или VT100).
I - Backspace key sends
Код, передаваемый клавишей backspace (Backspace или Delete).
J - Linewrap
Может быть включен или отключен.
K - Line settings
Скорость (бит/с), биты информации, контроль по четности и количество стоповых бит, которые следует использовать для данного соединения. Для скорости можно выбрать параметр current, и программа установит скорость, используемую на данный момент (удобно при наличии нескольких модемов).
L - Conversion table
Здесь можно задать таблицу преобразования символов, которая будет загружаться каждый раз при использовании данной записи, причем до загрузки скрипта регистрации. Если данное поле пусто, таблица преобразований не меняется.
Меню редактирования также показывает дату и время последнего использования записей, а также общее количество обращений к ним. Эти параметры изменить нельзя, они обновляются автоматически при установке пользователем соединения.
Команда moVe позволяет перемещать в каталоге набора номера выделенную запись вверх или вниз с помощью стрелок вверх/вниз или клавиш k и j. Чтобы завершить перемещение, нажмите Enter или ESC.
Нажав комбинацию клавиш C-A O, пользователь попадает в меню настройки (setup menu). Большинство настроек в меню может поменять любой пользователь, но есть несколько, доступ к которым имеет только пользователь root. Такие привилегированные настройки отмечены здесь звездочкой (*).
Имена файлов и путей к файлам
В данном меню задаются каталоги по умолчанию.
A - Каталог для загрузки (Download directory) куда помещаются загружаемые файлы.
B - Каталог для выгрузки (Upload directory) откуда считываются передаваемые файлы.
C - Каталог скриптов (Script directory) где хранятся скрипты регистрации.
D - Программа скрипта (Script program)
Указана программа, которую следует использовать в качестве интерпретатора скрипта. По умолчанию это программа "runscript", но при желании можно использовать другую (например, /bin/sh или "expect"). Средства stdin и stdout соединены с модемом, а stderr - с экраном.
Если путь является относительным (т.е. не начинается с символа косая черта), то он относится к Вашему домашнему каталогу, за исключением интерпретатора скрипта.
E - Программа Kermit (Kermit program)
Место, где хранится исполняемый файл программы kermit и где можно настроить ее опции. К некоторым простым макросам можно получить доступ их командной строки: '%l' позволяет получить полное имя файла подключаемого выходного устройства (dial out-device), '%f' позволяет получить последовательный порт файлового дескриптора, а '%b' - скорость используемого на данный момент последовательного порта.
F - Настройки регистрации (Logging options) Настройки записей файла регистрации.
A - Имя файла (File name)
Здесь можно указать имя файла регистрации. Файл будет помещен в домашний каталог пользователя, а его имя по умолчанию принимается "minicom.log". Если указать пустую строку, регистрация отменяется.
B - Регистрация соединений и обрывов связи (Log connects and hangups)
Здесь определяется, нужно ли заносить записи в файл регистрации, когда соединение устанавливается или разрывается. Или если вы сами разрываете соединение или же остаетесь на линии.
C - Регистрация передачи файлов (Log file transfers)
Указывается, нужно ли регистрировать прием и передачу файлов.
Команда 'log' в скриптах не подвержена влиянию опций B и C. Она выполняется всегда, если вы указываете имя файла регистрации.
Протоколы передачи файлов
Описанные ниже протоколы появляются при нажатии C-A s/r. Поле <имя> ("name") в начале строки является именем, которое затем указывается в меню. Поле <программа> ("program") представляет собой путь к протоколу. В следующем поле <имя> ("name") указывается, нужен ли программе аргумент, например, файл, который необходимо передать. U/D определяет, появится ли данная запись в меню загрузки или выгрузки. Fullscr определяет, как будет работать программа: занимая весь экран, или же в окне будет отображена только строка stderr программы minicom. IO-Red определяет, подключит ли minicom стандартный вход и выход программы к порту модема. "Multi" сообщает окну выбора имени файла, может ли протокол отсылать несколько файлов, используя одну команду. Параметр не влияет на протоколы загрузки (прием файлов), а также игнорируется протоколами выгрузки (передача файлов), если вы не используете окно выбора имени файла. Старые протоколы (??) sz и rz не полноэкранные, параметр IO-Red у них установлен. Однако, как минимум для протокола rz существуют версии, основанные на обязательных действиях, которые отказываются от перенаправления stdin и stdout и работают, занимая весь экран. Все протоколы передачи файлов работают с UID конкретного пользователя, а не с UID=root. '%l', '%f' и '%b' можно использовать при работе в командной строке, как в случае с kermit. С помощью данного меню можно также указать, нужно ли использовать окно выбора имени файла при сообщении о передаче файлов и нужно ли выдавать подсказку о приеме файлов в каталог загрузки каждый раз, когда загрузка начинается автоматически. Если отключить такую подсказку, то будет использоваться каталог загрузки, указанный в меню файлов и каталогов.
Настройка последовательного порта
*A - Последовательное устройство (Serial device)
Для большинства пользователей это /dev/tty1 или /dev/ttyS1. При работе под Linux в принципе еще можно использовать /dev/cua<n>, но уже не рекомендуется, т.к. эти устройства устарели и многие недавно установленные системы с ядром 2.2.x или более новым ядром их не поддерживают. Лучше использовать /dev/ttyS<n>. Можно также использовать /dev/modem для связи (symlink) с реальным устройством. Если имеются в наличии модемы, подключенные к двум или более последовательным портам, их можно перечислить здесь, разделяя пробелом, запятыми или точкой с запятой. При запуске программы minicom в списке ищется имеющийся в наличии модем для последующего его использования. (Однако пока нет возможности указать различные строки инициализации для них).
*B - Местонахождение файла блокировки (Lock file location)
В большинстве систем должно быть указано /usr/spool/uucp. Системы Linux используют /var/lock. Если данный каталог не существует, minicom не будет использовать файлы блокировки (lockfiles).
*C - Программа дозвона (Callin program)
Если на последовательном порту стоит uugetty или что-то похожее, может получиться, что для переключения cq. порта модема в режим dialin/dialout понадобится специальная программа. Это программа для переключения в режим dialin.
*D - Программа для прерывания связи (Callout program)
А это программа для переключения в режим dialout.
E - Bps/Par/Bits
Параметры по умолчанию при запуске.
Если одна из записей не заполнена, она не будет использована. Таким образом, если нет нужды в блокировке и на модемной линии не работает программа getty, записи B - D заполнять не следует. Внимание! Программы дозвона и прерывания связи работают с идентификатором пользователя "root", например, 0!
Модем и установка соединения
Здесь определяются параметры модема.
Следует заметить, что управляющие символы можно пересылать, указав префикс '^', причем '^^' означает сам символ '^', и символ '\' тоже следует дублировать ('\\'), т.к. обратная косая черта используется в основном в определении макросов. Однако некоторые опции больше влияют не на работу модема, а непосредственно на работу программы minicom:
M - Время соединения (Dial time)
Количество секунд, которое выжидает программа minicom, если соединение не установлено.
N - Задержка перед повторным набором (Delay before redial)
Minicom попробует повторить набор номера, если соединение не было установлено, но сначала выждет паузу.
O - Количество попыток (Number of tries)
Максимальное количество попыток установить соединение, которое предпримет программа minicom.
P - Время DTR (Drop DTR time)
Если приравнять параметр 0, minicom прерывает соединение, посылая последовательность символов типа Hayes. Если указать значение, не равное нулю, работа DTR линии будет прервана и, следовательно, соединение разорвано. Значение параметра означает время в секундах, в течение которого поддерживается работа DTR линии.
Q - Автоматическая регистрация скорости (Auto bps detect)
Если параметр активирован, minicom пытается регистрировать скорость соединения. При использовании большинства модемов НЕ рекомендуется, т.к. модем заносит в буфер дату и преобразует скорость.
R - Модем имеет DCD линию
Если модем и ОС поддерживают DCD линию (после установки соединения переходит в состояние 'high'), minicom будет ее использовать. Если активировать данную опцию, minicom НЕ начнет установку соединения, пока не будет статуса онлайн (online).
S - Строки статуса отображает скорость DTE/линии (Status line shows DTE speed/line speed)
Существует возможность настроить строку статуса на отображение скорости DTE (на этой скорости minicom работает с модемом) или скорости работы линии (на этой скорости модем обменивается данными с другим модемом). Следует отметить, что скорость работы линии может меняться во время соединения, но отображаться будет скорость, с которой начиналось соединение. Так происходит потому, что модем не сообщает программа об изменении скорости. К тому же чтобы увидеть скорость работы линии, необходимо, чтобы в настройках модема было указано, что нужно показывать скорость в строке соединения. В противном случае в качестве скорости работы линии будет отображаться 0.
T - Разбиение строк (Multi-line untag)
Можно настроить параметр на разбиение записей из каталога набора номера после установления соединения с многоканальной системой BBS (multi-line BBS). Все объединенные записи, имеющие одинаковые имена, разбиваются.
Следует отметить, что для данного меню существует исключение: каждый пользователь может менять все параметры, приведенные здесь, но некоторые из них не будут сохранены.
Экран и клавиатура
A - Командная клавиша (Command key is)
которая представляет собой <горячую клавишу> ('Hot Key'), которая переводит работу в командный режим. Если указано значение 'ALT' или <мета клавиша> ('meta key'), можно напрямую вызывать команды, нажав клавишу alt (alt-key), а не <горячую клавишу> (HotKey-key).
B - Передача кода Backspace (Backspace key sends)
До сих пор существуют системы, где VT100 передает код DEL, а не BS. С помощью данной опции можно избежать этого недоразумения.
C - Строка статуса (Status line is)
Включена или отключена. На некоторых медленных терминалах (например, X-терминалы) строка статуса прыгает <вверх и вниз> во время прокрутки, поэтому при желании можно ее отключить. Она все равно будет отображаться в командном режиме.
D - Звуковой сигнал (Alarm sound)
Если сигнал включен, программа minicom озвучит сигнал (только в консоли) после успешной установки соединения, а также после завершения приема/передачи файлов.
E - Цвет изображения, меню (Foreground Color, menu)
Указывается цвет, который следует использовать для всех окон конфигурации в программе minicom.
F - Цвет фона, меню (Background Color, menu)
Указывается цвет, который следует использовать для всех окон конфигурации в программе minicom. Следует отметить, что minicom не позволит указать одинаковые цвета для изображений и фона.
G - Цвет изображения, терминал (Foreground Color, term)
Указывается цвет, который следует использовать в окне терминала.
H - Цвет фона, терминал (Background Color, term)
Указывается цвет, который следует использовать в окне терминала. Следует отметить, что minicom не позволит указать одинаковые цвета для изображений и фона.
I - Цвет изображения, статус (Foreground Color, stat)
Указывается цвет, который следует использовать в строке текущего состояния.
J - Цвет фона, статус (Background Color, stat)
Указывается цвет, который следует использовать в строке текущего состояния. Следует отметить, что minicom не позволит указать одинаковые цвета для изображений и фона, т.к. строка состояния станет невидимой, но если вы действительно этого хотите, смотрите соответствующие опции.
K - Размер буфера (History buffer size)
Указывается количество строк, которые необходимо хранить в буфере (для просмотра).
L - Файл макросов (Macros file)
Указывается полный путь к файлу, который содержит макросы. Макросы дают возможность определить, какую строку следует передавать при нажатии определенной клавиши. В программе minicom можно задать, чтобы при нажатии функциональных клавиш F1-F10 передавалось до 256 символов [настраивается во время компиляции]. Указываемое имя файла проверяется при нажатии клавиши ENTER. Если у пользователя нет разрешения на создание указанного файла, будет выдано сообщение об ошибке и необходимо будет ввести другое имя файла. В противном случае программа minicom проверяет, не создан ли уже указанный файл. Если такой файл имеется, программа начинает работать с ним. В противном случае имя файла принимается.
M - Редактирование макросов (Edit Macros)
Открывается окно, которое позволяет редактировать макросы F1-F10.
N - Макросы активированы (Macros enabled)
- Да или Нет (Yes/No). Если макросы отключены, то при нажатии клавиш F1-F10 будут передаваться esc-последовательности функциональных клавиш VT100/VT220.
O - Преобразование символов (Character conversion)
Здесь отображается имя файла таблицы активных преобразований (active conversion table). Если имя не отображается, все проебразования отключены. При нажатии клавиши O пользователь попадет в меню редактирования таблицы преобразований.
Редактировать макросы (Edit Macros)
Здесь задаются макросы F1-F10. В нижней части окна отображается список комбинаций символов, имеющих специальное значение. Они позволяют использовать специальные управляющие символы открытым текстом, указывая в начале '^', причем сочетание '^^' означает сам сивол '^'. С помощью кода '^~' можно огранизовать задержку в 1 секунду. Эту возможность удобно использовать при регистрации, если доступ через ftp или telnet уже получен. В макрос также можно включить текущее имя пользователя и пароль из абоненсткого списка, используя '\u' и '\p' соответственно. Если требуется наличие символа обратной косой черты в макросе, нужно набрать '\\'. Чтобы редактировать макрос, следует указать число (или букву для F10), и пользователь попадет в конец макроса. При редактировании для перемещения можно использовать стрелки влево/вправо, клавиши Home/End, Delete/BackSpace, а также ESC и RETURN. Нажатие клавиши ESC отменяет любые изменения, а клавиши ENTER - наоборот.
Преобразование символов
Здесь пользователь может редактировать таблицу преобразований символов. Во многих языках мира есть символы, которые не включены в таблицу ASCII. Раньше они могли заменять менее важные символы таблицы ASCII, но в настоящее время они обычно соответствуют коду, превышающему 127. Существует много различных способов представления таких символов. Именно здесь есть возможность внести изменения в таблицу преобразования для систем, использующих набор символов, отличный от применяемого на вашем компьютере.
A - Загрузка таблицы (Load table)
Данная команда загружает таблицу с диска. Пользователь должен ввести имя файла для таблицы. В программу должны быть включены таблицы .mciso, .mcpc8 и .mcsf7. Таблица .mciso не несет никаких преобразований. Таблица .mcpc8 используется для соединения с системами, работающими с набором символов 8-bit pc. Таблица .mcsf7 обеспечивает совместимость с системами, использующими старый способ кодирования 7-bit, что позволяет заменить символы {|}[]\ диакритическими символами в финском и шведском языках.
B - Сохранение таблицы (Save table)
Данная команда сохраняет текущую таблицу под именем файла, указанным пользователем.
C - Редактирование символов (edit char)
Здесь пользователь может внести свои изменения в существующую таблицу. Сначала запрашивается код символа (десятичное число), чье значение требуется изменить. Затем следует указать символ, который должен отображаться на экране при появлении извне указанного выше символа. А затем спрашивается, что должно отсылаться при вводе того символа с клавиатуры.
D - следующий экран (next screen)
E - предыдущий экран (prev screen)
Возможно, вы заметили, что данный экран отображает активные преобразования. Обычно экран слишком мал, чтобы отобразить сразу всю таблицу в удобном формате. С помощью данных клавиш можно прокручивать таблицу влево и вправо.
F - преобразования при сборе информации (convert capture)
Определяется, используется ли таблица преобразований при записи информации в файл.
Сохранить настройки как стандартные (Save setup as dfl)
Сохранить параметры как стандартные для следующего запуска программы. Вместо dfl может появиться любое другое имя (зависит от того, какое имя использовалось при запуске программы).
Сохранить настройки как (Save setup as..)
Сохранить параметры под специальным именем. Каждый раз при запуске программы Minicom с указанным именем в качестве аргумента, она будет использовать именно эти параметры. Данной опцией может пользоваться только root.
Выход (Exit)
Выйти из данного меню без сохранения изменений. Нажатие клавиши ESC приведет к такому же результату.
Выйти из программы minicom (Exit from minicom)
Данный пункт меню может видеть только пользователь root, если при запуске minicom он/она использовать опцию '-s'. Таки образом, можно изменить конфигурацию без собственно работы программы minicom.
У строки состояния есть несколько индикаторов, значение которых вполне понятно. В принципе объяснения требует только индикатор APP или NOR. Клавиши управления курсором VT100 могут работать в двух режимах: прикладной режим и курсорный. Режим задается esc-последовательностью. Если после регистрации обнаружилось, что клавиши управления курсором не работают, например, в vi, следует посмотреть, в каком режиме они работают. Для этого используется данный индикатор. С помощью комбинации клавиш C-A I можно переключаться между режимами. Если после этого клавиши заработали, то, вероятно, в строках инициализации (is) termcap удаленной системы есть ошибка.
В настоящее время программа Minicom поддерживает различные языки. Это означает, что большинство сообщений (и других записей) на английском языке можно перевести на другой язык, для чего потребуется лишь настроить переменную среды LANG. Программой поддерживаются бразильский португальский, финский, японский, французский, польский, чешский, русский и испанский языки.
Так как программа Minicom на некоторых компьютерах работает с правами пользователя root, возможно, кому-то захочется ограничить к ней доступ. Для этого используется файл конфигурации "minicom.users", который находится в той же директории, что и стандартные файлы. Ниже приведен синтаксис данного файла:
<username> <configuration> [configuration...]
<имя_пользователя> <конфигурация> [конфигурация...]
Чтобы пользователь 'miquels' имел возможность использовать стандартную конфигурацию, в файл следует добавить следующую строку:
miquels dfl
Чтобы пользователи имели возможность использовать не только стандартную конфигурацию, нужно просто добавить названия конфигураций после имен пользователей. Если никаких названий после имени пользователя не указано, программа minicom считает, что пользователь имеет доступ ко всем конфигурациям.
Если программа minicom зависла, следует воспользоваться средством SIGTERM. Это означает аварийное завершение работы (kill -15) или же, так как sigterm является стандартом, просто "kill <minicompid>". Таким образом можно завершить работу программы, причем будут выполнены все необходимые действия. Завершить работу программы можно также из скрипта с помощью команды "! killall -9 minicom", причем линия не будет зависать. Если не использовать параметр -9, minicom сначала зависает, а затем прекращает работу.
Так как многие esc-последовательности начинаются с ESC (стрелка вверх означает ESC [ A), программа Minicom не может определить, нажал ли пользователь клавишу escape, или же это часть управляющей последовательности.
В старой версии программы Minicom V1.2 эта проблема решалась довольно грубо: чтобы указать, что нажата клавиша escape, ее нужно было нажать дважды.
Что касается версии 1.3, то тут есть другое решение: как и в vi, здесь встроена задержка в 1 секунду. Для систем, обладающих системным вызовом (select() system call) задержка составляет 0.5 секунды. А также был добавлен специальный модуль (hack). Теперь программа minicom может различать Esc-последовательности и нажатие клавиши escape. Как это было реализовано, можно посмотреть в файле wkeys.c.
Программа Minicom хранит свои файлы конфигурации в одной директории. Обычно это /var/lib/minicom, /usr/local/etc или /etc. Чтобы узнать, какая использовалась директория, наберите команду minicom -h. Вероятно, вы также обнаружите демо-файлы для команды runscript(1) и примеры таблиц преобразования символов в данной директории или поддиректориях /usr/doc/minicom*.
minicom.users
minirc.*
$HOME/.minirc.*
$HOME/.dialdir
$HOME/minicom.log
/usr/share/locale/*/LC_MESSAGES/minicom.mo
1. В каком каталоге располагаются файлы устройств в Linux?
2. Что представляет собой программа KPPP?
3. Каким образом можно просмотреть все схемы настроек модема?
4. Каким образом можно заставить модем повесить трубку?
5. В чем заключается суть метода DTR (AT&Dn)?
6. В чем заключается суть командного метода?
7. Можно ли ускорить режим тонального набора номера? Если да, то как?
8. Что такое обратный звонок?
9. Что представляет собой программа minicom?
Литература
1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005
2. ??
Глава 15. Подключение сканера и настройка системы
сканирования
Поддержка сканеров в Linux
В MOPSLinux поддержка сканеров обеспечивается при помощи общего программного интерфейса под названием SANE (Scanner Access Now Easy - <доступ к сканерам теперь прост>), который обеспечивает доступ к драйверам (backends) для сканеров.
SANE представляет собой универсальный интерфейс между сканером и программой сканирования и предоставляет возможность использовать различные программы для сканирования или эксплуатировать одновременно несколько сканеров через одинаковый интерфейс, что, важно при наличии широкого перечня программ сканирования от различных производителей сканеров.
В состав SANE входят три программы сканирования:
scanimage - консольная утилита, для первоначальной настройки сканера и для создания различных сценариев;
sane-find-scanner - программа конфигурирования и настройки сканера;
saned - сетевой сервер сканирования, обеспечивающий доступ к сканеру в сети.
Для настройки сканера в системе вначале нужно убедиться в том, что он поддерживается SANE. Информацию об этом можно найти в Internet на сайте разработчиков пакета (http://www.sane-project.org/sane-mfgs.html).
Настройка системы сканирования
Общие сведения по интерфейсам сканеров
Сканеры могут подключаться к компьютерам по следующим типовым интерфейсам: параллельный, последовательный, USB, SCSI или IEEE-1394. Существуют также сканеры, которые имеют свой оригинальный интерфейс и соответствующую интерфейсную плату, которая устанавливается в компьютер. Подключение и настройку встроенного устройства, выполняющего функции сканера, принтера и/или факса, можно выполнить по приведенным ниже рекомендациям и используя соответствующий интерфейс как для обычного сканера. Обладателям офисной техники фирмы Hewlett-Packard желательно будет обратиться к сайту проекта <Драйверы под ОС Linux для офисной техники> (the HP Officejet Linux Driver project site) в сети Internet на http://hpoj.sourceforge.net, где детально описывается использование выпускаемых фирмой устройств при работе под ОС Linux.
SCSI-сканер управляется контроллером SCSI. Список контроллеров SCSI поддерживаемых в Linux можно найти в сети Internet на http://tldp.org/HOWTO/Hardware-HOWTO/scsi.html. Если контроллер поставлялся в комплекте со сканером, существует вероятность, того, что он не поддерживается системой или поддерживается частично, поскольку может не выполнять функции полноценного контроллера SCSI.
При возникновении трудностей во время конфигурирования SCSI-сканера следует обратиться к руководству man sane-scsi.
При использовании USB-сканера особых проблем возникнуть не должно, поскольку этот интерфейс поддерживается практически во всех современных Linux-системах.
Сканеры с параллельными портами можно использовать, если есть работающий с ними буфер, однако, если устройство имеет функционирующий буфер и интерфейс USB, то настоятельно рекомендуется использовать порт USB, так как его значительно легче конфигурировать.
Интерфейс IEEE 1394 (FirewireT, i.LinkT) поддерживается в Linux, начиная с серии ядра 2.4-. Для работы сканерам с интерфейсом IEEE 1394 в компьютере необходимо наличие PCI-адаптера IEEE 1394 или же наличие порта IEEE 1394 в системной плате, а также поддержка IEEE 1394 в ядре или в качестве подгружаемого модуля. При этом следует проверить поддержку устройств интерфейсом SANE и прочитать руководство по использованию устройства.
Поддержка сканеров
Поддержка интерфейса SCSI
При работе с интерфейсом SCSI, кроме поддержки определенного SCSI адаптера, потребуется также поддержка общих SCSI устройств. Эти устройства обычно называются /dev/sg0, /dev/sg1.... Для поддержки конкретного устройства SCSI необходимо загрузить соответствующий модуль на правах пользователя root:
# modprobe CARD_MODULE_NAME
Желательно
создать символическую ссылку /
dev
/
scanner
на существующее
устройство. Например, если сканер соединен с первой шиной scsi (scsi-bus) устройства SCSI,
необходимо связать его с соответствующим устройством:
# ln -s /dev/sg0 /dev/scanner
Поддержка интерфейса USB
Чтобы реализовать поддержку USB-сканеров, ядро должно поддерживать USB-подсистему с использованием протоколов usb-ohci или usb-ehci. USB сканерам соответствуют файлы устройств /dev/usb/scanner*.
При включении сканера вывод команды dmesg должен содержать подобные строки:
hub.c: USB new
device connect on bus1/1, assigned device number 2
usb.c: USB device 2
(vend/prod 0x4b8/0x11e) is not claimed by any active driver.
scanner.c:
probe_scanner: User specified USB scanner -- Vendor:Product - 4b8:11e
scanner.c:
0.4.6:USB Scanner Driver
В файле /proc/bus/usb/devices
появится запись о подключенном устройстве:
# cat
/proc/bus/usb/devices
...
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 2.00
Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs= 1
P: Vendor=04b8
ProdID=011e Rev= 1.00
S:
Manufacturer=EPSON
S: Product=EPSON
Scanner
C:* #Ifs= 1 Cfg#= 1
Atr=c0 MxPwr= 2mA
I: If#= 0 Alt= 0
#EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=81(I)
Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=02(O)
Atr=02(Bulk) MxPS= 64 Ivl=0ms
...
Информацию о производителе (Vendor) и модели
сканера (ProdID) полезно добавить в файл /etc/modules.conf:
# echo
"options scanner vendor=0x04b8 product=0x011e" >>
/etc/modules.conf
Поддержка параллельного порта
Поддержка
параллельного порта в ядре может быть организована статически или в качестве
модуля. Чтобы убедиться, что модуль parport
(параллельный порт) загружен, необходимо проверить
файл /var/log/dmesg
или воспользоваться командой lsmod. При использовании dmesg | less,
помимо прочего, должна появиться следующая запись:
Mar 3 <st1:time minute="0" hour="8">08:00:25<st1:time> K7 kernel: parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE]
Mar 3 <st1:time minute="0" hour="8">08:00:25<st1:time> K7 kernel: parport0: irq 7 detected
Параллельный порт желательно использовать в режиме "EPP" или, в качестве альтернативы, ECP/EPP. В <двунаправленном> ("bidirectional", т.е. "BPP" или "PS/2") режиме порт работать будет, хотя и значительно медленнее. <Однонаправленный> ("unidirectional") режим для сканирования не используется. Все указанные настройки доступны в меню BIOS.
Группы и права
Пользователю удобно знать, что его учетная запись может получить доступ к устройству. Самым безопасным способом осуществить это, является добавление возможности доступа к сканеру определенной группе. Так, члены группы 'scanner' имеют право доступа к сканеру. Например, добавить пользователя 'jhs' в группу 'scanner' можно следующим образом:
# adduser jhs scanner
SANE
Последним шагом реализации доступа к сканеру является программа (backend) SANE и соответствующий интерфейс SANE (frontend). Первая представляет собой драйверы и средства доступа низкого уровня, которые взаимодействуют со сканером, а интерфейс - это графические приложения для работы со сканером в среде X. Для доступа к сканеру требуется только выходной буфер, хотя и интерфейс настоятельно рекомендуется для управления изображениями, а также для возможности их просмотра в оконной среде перед выводом на печать.
Конфигурирование SANE
Работа по сети
Чтобы сделать сканер доступным для удаленного компьютера по сети, необходимо выполнить следующие действия:
1) отредактировать файл saned
.
conf
в конфигурационном каталоге сервера (компьютер
со сканером) /
etc
/
sane
.
d
. Обычно в файле есть запись
'scan-client.somedomain.firm', которую
следует заменить именем хоста клиента, для которого необходимо сделать сканер
доступным. При желании можно использовать IP-адрес клиента;
2) на сервере, кроме демона inetd, также следует запустить демон saned. Чтобы уточнить, какие изменения необходимо внести в файл inetd.conf, необходимо обратиться к руководству man saned;
3) в файл /
etc
/
services
добавить порт 6566:
sane 6566/tcp
4) в файл net.conf клиента (компьютер без сканера) добавить запись об имени серверного компьютера, т.е. 'scan-server.somedomain.firm'.
5) убедиться, что в файле dll.conf клиента не закомментирована запись <net>.
Использование SANE с устройством Video4linux
Устройства Video4linux (видео для Linux)
включают в себя веб-камеры (webcams),
стационарные камеры (still
cameras) и устройства фиксации изображения (video capture devices). SANE также позволяет получить к ним доступ. Для этого файл
v
4
l
.
conf
необходимо поместить в конфигурационный каталог (/
etc
/
sane
.
d
).
Содержание файла будет примерно следующим:
# In order to use the v4linux backend you have to give the device
# You can enable multiple lines if
# you really have multible [sic] v4l devices.
#
/dev/bttv0
/dev/video0
/dev/video1
/dev/video2
/dev/video3
В первой строке файла указано, что для использования
средств v4linux необходимо
указать имя устройства. Помните об этом, начиная тестирование сканера. При этом
необходимо убедиться, что устройство, в качестве которого ядро идентифицирует
камеру или другие устройства v4l, не закомментированы (т.е. впереди нет символа #).
Естественно все эти действия необходимо выполнять на правах root. К тому же убедитесь, что в файле dll
.
conf
не закомментирована строка 'v4l'.
Тестирование сканера
Если сканер подключен к компьютеру через соответствующий интерфейс и включен, то можно приступить к тестированию оборудования. При использовании сканера SCSI или USB в командной строке необходимо ввести следующую команду, которая должна найти и идентифицировать сканер из списка возможных устройств:
$ sane-find-scanner
...
sane-find-scanner: found USB scanner (vendor = 0x04b8, product = 0x011e) at
device /dev/usb/scanner0
Если сканер не обнаруживается, то на правах root можно указать команду scanimage --list-devices, которая выдаст информацию обо всех подключенных устройствах. Например, в результате можно получить следующую информацию:
device `v4l:/dev/video0' is a Noname BT878 video (Hauppauge (bt878)) virtual device
device `epson:/dev/scanner0' is a Epson Perfection1240 flatbed scanner
Обратите внимание на информацию 'backend:device'; это будет имя устройства для получения доступа к сканеру из командной строки.
Файл устройства для сканера рекомендуется прописать в конфигурационный файл sane. Для этого в конфигурационный файл для сканера от соответсвующего производителя (для Epson - /etc/sane.d/epson.conf) необходимо добавить строку "usb /dev/usb/scanner0":
# echo "usb
/dev/usb/scanner0">>/etc/sane.d/epson.conf
где /dev/usb/scanner0 - файл устройства для сканера.
Теперь необходимо проверить способность сканера захватывать изображение. Можно использовать одну из утилит (интерфейсов), или же работать из командной строки следующим образом:
$ scanimage -d backend:/dev/scanner --format pnm > outfile.pnm
Таким образом, например, при использовании модулей Epson необходимо указать:
$ scanimage -d epson:/dev/scanner --format pnm > outfile.pnm
Для выбора одного из нескольких сканеров потребуется
лишь опция -d. Например,
если есть сканер Epson и сканер Mustek, достаточно указать "-d epson" или
"-d mustek".
Указание полного пути необходимо только тогда, когда есть несколько сканеров с
одним названием. В поле /dev/scanner должно быть указано сконфигурированное сканирующее
устройство (например, указать /
dev
/
video
0
в случае использования
устройства v4l или же libusb, как было
показано в примере sane-find-scanner).
Значение --format может
быть pnm или tiff (по
умолчанию pnm). Формат '.pnm' означает 'portable anymap'. Это
стандартный формат графических файлов в Linux, который можно преобразовать к любому другому формату
изображений с помощью Imagemagick (см.
http://www.imagemagick.org/script/index.php) или netpbm (см.
http://netpbm.sourceforge.net/).
Интерфейсы (frontends) SANE
MOPSLinux предоставляет следующие графические интерфейсы SANE:
· xsane - графический интерфейс на основе GTK+, позволяет сохранять изображение в разнличных форматах, а также легко взаимодействует с программой редактирования изображений GIMP.
· Kooka - программа для среды KDE, обладает интерфейсом, который легко сочетается с другими приложениями KDE и может значительно облегчить работу с большим количеством изображений.
Более полный список интерфейсов SANE приводится на странице интерфейсов SANE (the SANE frontends page) по адресу: http://www.sane-project.org/sane-frontends.html.
1. Какой интерфейс в MOPSLinux обеспечивает поддержку сканеров?
2. По каким интерфейсам сканеры могут подключаться к компьютерам?
3. Для чего используются группы пользователей?
4. Каким образом можно сделать сканер доступным для удаленного компьютера по сети?
5. Какие графические интерфейсы SANE представлены в MOPSLinux?
Литература
1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005
2. ??
Глава 16. Подключение и настройка USB-устройств
Глава 17. Особенности работы с Bluetooth-устройствами
Bluetooth - это технология связи, предназначенная для беспроводного соединения различных устройств. Обычно передача информации осуществляется на небольшом расстоянии (10-30 м) с невысокой скоростью (720 Кбит/с), но в настоящее время уже есть устройства, покрывающие расстояние до 100 м (на открытом пространстве), и разрабатываются устройства со скоростями свыше 2 Мбит/с.
В технологии Bluetooth используется нелицензируемый диапазон радиочастот 2.4 ГГц, то есть для создания и распространения таких устройств не требуется специальное разрешение. Bluetooth не является альтернативой радио-ethernet (Wi-Fi), скорее, это взаимодополняющие технологии. Wi-Fi - это именно радио-ethernet, в то время как Bluetooth может соединять совершенно разнородные устройства: компьютеры, сотовые телефоны, клавиатуры, мыши, принтеры, ПДУ и телевизоры/видеомагнитофоны. Устройства Bluetooth могут объединяться в сети, причем каждое устройство может принадлежать нескольким сетям.
Протоколом в вычислительной технике называется стандарт, который определяет, как происходит обмен информацией между различными ее источниками и приемниками. Протокол позволяет абстрагировать процесс передачи информации от низкоуровневых деталей реализации, а также от содержимого передаваемой информации. Например, протокол HTTP определяет понятия "ресурс", "запрос", "ответ", синтаксис запроса и ответа, но не определяет, какая именно информация будет передаваться в запросах и ответах; одна программа (робот) может сохранять результаты запросов (ответы) в файлы или базу данных, другая (браузер) отображает эту информацию (интерпретируя HTML, картинки и прочие типы файлов).
Протоколы группируются в стеки, где один протокол использует другой в качестве транспорта, несущего его высокоуровневую информацию, причем таких слоёв может быть довольно много. Например, протокол TCP использует протокол IP в качестве транспорта, передающего его (протокола TCP) данные. Протокол HTTP использует в качестве транспортного уровня уже TCP, а протокол XML-RPC использует HTTP.
Реализации протоколов тоже выстраиваются в стеки. На самом нижнем уровне доступ к конкретному устройству осуществляет драйвер устройства. Ядро операционной системы предоставляет пользовательским программам стандартный интерфейс к драйверам. В свою очередь хорошо написанные программы не сами реализуют этот доступ, а пользуются библиотеками, реализующими протоколы более высоких уровней.
Конкретно для Linux существует 3 стека протоколов Bluetooth, то есть 3 реализации. Основной, Bluez, был разработан компанией Qualcomm и включён в ядро Linux, начиная с версии 2.4.18. Другой стек, включённый в ядро, разработан фирмой Axis и называется OpenBT. Оба стека требуют программ и библиотек, которые можно найти на соответствующих страницах в Интернете. Третий стек, Affix, разработан фирмой Nokia. Он не включён в ядро Linux, поэтому для его установки требуется скачать и установить патч ядра, а также необходимые библиотеки и программы. Недостатком стека Affix является именно то, что он не интегрирован в ядро. С другой стороны, он имеет такое достоинство, как PyAffix. Это патч для модуля сокета стандартной библиотеки языка программирования Python, добавляющий протокол Bluetooth к списку поддерживаемых протоколов.
Bluetooth в Linux
Оболочка KDE Bluetooth представляет собой набор средств, созданных на основе стека BlueZ. Разработчики MOPSLinux и KDE стремились обеспечить для пользователей легкий доступ к наиболее распространенным профилям Bluetooth и упрощение, насколько это возможно, обмена информацией компьютера с телефонами, поддерживающими Bluetooth, и карманными компьютерами (PDA).
Ниже описывается настройка kdebluetooth как целостной системы, рассматривается использование и настройка каждой сервисной программы.
Компоненты
Kbluetoothd: сердце оболочки KDE Bluetooth
KBluetoothD является главной частью оболочки KDE Bluetooth. Обычно программа работает постоянно и запускает такие сервисы, как сервер OBEX, или же сервисы, приостановленные по запросу. Системная иконка сообщает о текущих соединениях bluetooth, а также дает возможность быстрого доступа к конфигурации сервиса, последним использованным сервисам, различным устройствам и др.
Запуск kbluetoothd
Для запуска KbluetoothD необходимо набрать в командной строке kbluetoothd, либо выбрать ее в меню K-Menu (обычно System/kbluetoothd).
KBluetoothD отображается иконкой, но при желании в контекстном меню можно отключить опцию "Всегда отображать". В этом случае программа будет работать без какого-либо видимого пользователю интерфейса, даже если ее перезапустить. Чтобы вернуть иконку, необходимо просто запустить kbluetoothd заново. Если иконка была отключена, на время bluetooth соединения она все же появится.
Если программа kbluetoothd работает до выключения системы, она будет автоматически запущена, когда пользователь опять войдет в систему. Чтобы этого не произошло, необходимо закрыть ее и указать, что запускать kbluetoothd при следующем входе в систему не нужно.
Работа kbluetoothd
Самой важной частью программы kbluetoothd является метасервер Bluetooth. Так как kbluetoothd работает постоянно, он ко всему прочему сканирует адаптер Bluetooth, сообщает об установлении соединений и помещает в кэш запросы имен. Так происходит, потому что kbluetoothd является единственной программой для работы с bluetooth, которая должна работать постоянно и иметь доступ ко всем активным сервисам.
Метасервер
Метасервер программы kbluetoothd функционирует аналогично демону inetd в Linux-системе: он ожидает установления соединений устройствами управления реальными сервисами и запускает их при необходимости. Таким образом, не требуется постоянно работающий obex-сервер (он будет запущен автоматически, если кто-либо попробует передать в компьютер файл посредством OBEX).
Такой принцип используется по нескольким причинам:
1. Уменьшается объем используемой памяти при работе с несколькими сервисами. Оболочка KDE Bluetooth с настоящее время поставляется с 4-мя серверными программами: obex-сервер, клиент handsfree, клиент bemused (программа управления WinAmp'ом с мобильного телефона) и программа для интерактивной переписки (serial chat tool). Даже если вы не собираетесь использовать эти приложения часто, их можно не отключать, т.к. ресурсы затрачиваться не будут.
2. Системная панель (system tray) не будет загромождаться различными редко используемыми ярлыками.
3. Повышается уровень безопасности, и упрощается контроль доступа. Если пришел запрос на установление соединения, программа kbluetoothd по умолчанию высветит диалог, спрашивая разрешение. Для каждого сервиса и устройства пользователь может временно разрешить или запретить соединение. Таким образом, контроль доступа для каждого приложения, управляемого программой kbluetoothd, осуществляется независимо.
4. Повысится надежность сервисов bluetooth. Каждый сервер запускается для каждого нового соединения, поэтому при сбое сервера вы можете начать работу заново, не перезагружая его.
Для веб-сервера управление демоном inted может быть помехой, но в случае работы с Bluetooth настройка соединения занимает как минимум несколько секунд, причем каждое действие инициируется пользователем, что позволяет стабильно работать с метасервером.
5. Служебная регистрация с использованием SDP-сервера очень проста. Для получения информации о регистрации с использованием SDP-сервера приложений, управляемых программой kbluetoothd, рекомендуется обратиться к специальной литературе по разработке в KDE.
6. Для работы bluetooth сервера можно использовать простые серверные программы и даже скрипты, не прибегая непосредственно к функциям для работы с bluetooth.
Имеется возможность включить/выключить сервисы, используемые программой kbluetoothd, с помощью центрального модуля управления в таблице <Локальные сервисы> ("Local services"). Здесь же можно сконфигурировать отдельные опции сервиса, выбрав сервис и нажав на кнопку <Конфигурация:> ("Configure...").
С помощью таблицы <Подтверждение> ("Confirmation") можно задать реакцию программы на запросы об установлении соединения.
Сервис обнаружения устройств
Для многих приложений необходима информация о том, доступно ли определенное устройство в данный момент, а также иногда требуется получать уведомления о подключении или отключении того или иного устройства. В отличие от USB, где оболочка hotplug сообщает о новых устройствах, для соединений bluetooth таких сервисов нет.
В программе kbluetoothd эта проблема решена с помощью сервиса обнаружения устройств (Device Discovery Service). Периодически сервис проверяет наличие расположенных поблизости устройств и составляет список тех, что являются доступными. Чтобы получить доступ к обнаруженному устройству, необходимо правой кнопкой мыши нажать на ярлык программы kbluetoothd и просмотреть меню <Недавно открытые> ("Open recent"). Это меню содержит один раздел для недавно использованных сервисов (например, "obex ftp on MyPhone" - obex ftp для МоегоТелефона>), а также, при наличии уже обнаруженных устройств, второй раздел, предоставляющий список этих устройств. Нажав на одно из них, можно увидеть сервисы для данного устройства.
С помощью центрального модуля управления можно задать частоту поиска устройств или же отключить поиск (<Периодически обновлять список устройств> - "Periodially update neighbor list"). Рекомендуется использовать интервалы не менее минуты, так как у других приложений могут возникать проблемы при поиске устройств, потому что большинство устройств не рассчитаны на одновременное использование bluetooth другими приложениями.
Многие устройства не поддаются обнаружению из соображений конфиденциальности или безопасности. В этом случае их нельзя будет обнаружить во время поиска устройств. Вместо этого kbluetoothd попытается получить доступ к каждому из этих устройств. Чтобы добавить устройство в список не поддающихся обнаружению, необходимо нажать на опцию <Дополнительные свойства поиска для необнаруживаемых устройств> ("Additional search options for non-discoverable devices"). Следует помнить, что необходимо либо временно разрешить обнаружение устройства, либо узнать адрес оборудования для включения его в список.
Это не позволит другим программам начать поиск устройств или даже установить соединение с другим устройством в течение примерно 30 секунд для каждого устройства, если в данный момент устройство недоступно. Поэтому здесь желательно использовать довольно длинный интервал времени (около 10 минут). Рекомендуется попробовать различные значения и определить наименьший временной интервал, при котором работа идет нормально.
Наличие одного списка доступных на данный момент устройств не очень полезно. Можно использовать сервис обнаружения устройств для выполнения проверок при появлении и исчезновении устройства. Эти проверки представляют собой простые скрипты. Пользователь может легко написать свой собственный скрипт, но следует отметить, что kbluetoothd уже имеет некоторые скрипты, основные из них описываются ниже:
Discovery protocol (протокол обнаружения)
Данный скрипт создает html-страницу с некоторой технической информацией по каждому устройству при первом его обнаружении. Можно использовать данный скрипт, если необходимо узнать, кто еще неподалеку использует bluetooth. Ничего страшного, если данный скрипт будет активирован постоянно, т.к. попытка получить доступ к устройству будет осуществлена только при первом его обнаружении или же после того, как соответствующая html-страница будет удалена.
Kopete_AutoAway
Данный скрипт установит статус готовности kopete в зависимости от того, находится ли bluetooth-устройство в зоне достижимости.
Экранная заставка (screensaver)
Запускает или отменяет экранную заставку каждый раз, когда появляется или исчезает устройство.
Для корректной работы большинство скриптов сначала необходимо сконфигурировать. Нажав на кнопку <сконфигурировать> ("configure"), вы увидите окно kedit, содержащее набор параметров скрипта. Следует проявлять осторожность при ограничении предложенных для каждого задания устройств, если нет необходимости, чтобы скрипт выполнялся каждый раз, как кто-либо с включенной на телефоне функцией bluetooth пройдет мимо.
Список "недавно использованных сервисов"
Для получения быстрого доступа к сервисам, которые использовались раньше, необходимо обратиться к подменю программы kbluetoothd <Недавно использованные> ("Recently used"). Если посредством kbtobexclient уже пересылались какие-либо файлы на мобильный телефон с именем <Мой телефон> ("My phone"), то будет виден пункт меню <Клиент Obex - Мой телефон> ("Obex push client - My phone"), с помощью которого можно запустить kbtobexclient и сразу же будет установлено соединение с телефоном, минуя процесс обработки запроса.
Следует отметить, что kbluetoothd отображает все недавно использованные сервисы не зависимо от того, доступно ли определенное устройство в данный момент.
Это свойство должно поддерживаться соответствующим приложением.
Посмотрев на иконку программы kbluetoothd, можно определить, установлено ли в данный момент соединение bluetooth. Если соединения нет, иконка серая. Иконка мигает, если соединение устанавливается, и становится голубой, если соединение уже установлено.
Чтобы получить более подробную информацию о текущем соединении, необходимо щелкнуть правой клавишей мыши на иконку и выбрать пункт <Свойства соединения:> ("Connection details...").
Здесь отображаются ACL-связи (ACL-links), а не Rfcomm-соединения. Если было установлено соединение с отдельным устройством несколькими программами (например, handsfree и bemused), то все равно эта связь будет отображаться как одно соединение, т.к. в определенный момент времени может существовать только одна ACL-связь.
Конфигурирование программы kbluetoothd
Обычно программа kbluetoothd и управляемые ею сервисы работают идеально, но все же имеется возможность изменить некоторые опции. Чтобы сконфигурировать kbluetoothd, можно использовать центр управления KDE. Для этого необходимо запустить центр управления KDE и выбрать Интернет и Сеть -> Сервисы Bluetooth (Internet&Network -> Bluetooth services) или нажать правой клавишей мыши на иконку программы и выбрать Конфигурация -> Сервисы (Configuration -> Services)...
Подтверждение входящих соединений
В данной таблице можно изменить настройки подтверждения входящих соединений. По умолчанию программа kbluetoothd запустит диалог подтверждения до начала работы собственно серверной программы (например, сервер передачи OBEX). Имеется возможность отключить диалог подтверждения для некоторых устройств/сервисов или указать, чтобы kbluetoothd просто отклоняла входящие соединения.
Записи о новых устройствах будут добавляться, если в параметрах подтверждения будет выбран пункт <Всегда принимать> ("Always accept").
Локальные сервисы
В данной таблице можно включать или отключать отдельные сервисы Bluetooth, управляемые программой kbluetoothd. У некоторых сервисов также есть некоторые опции конфигурации, например, сервер bemused. В этом случае пункт меню Конфигурация: (Configure...) будет доступен, если будет выбран соответствующий сервис.
Так как программа kbluetoothd автоматически назначает сервисам rfcomm-каналы, то каналы, используемые отдельным сервисом, могут измениться при использовании других серверов bluetooth. При необходимости программа сообщит о том, какой канал назначен определенному сервису.
Средства bluetooth/SDP-kioslaves: поиск устройств и сервисов
Средства bluetooth- и sdp-kioslaves позволяют находить другие устройства bluetooth, помещать их в список и использовать их сервисы с помощью konqueror (или же с помощью любого другого файлового менеджера, который может использовать оболочку KDE File IO).
Использование средств Bluetooth/SDP-kioslves
Чтобы найти новое устройство, в менеджере konqueror необходимо ввести bluetooth:/. На экране сразу же отобразится запись для системы, а затем будут появляться другие устройства, которые удастся обнаружить.
Также на панели konqueror можно нажать на иконку Bluetooth в таблице <Сервисы> ("Services"), а затем выбрать LAN- и Audio-CD-браузер. Если иконки не видны, возможно, следует перезагрузить панель, выбрав Кнопка конфигурации (config-button) -> Добавить (Add new) -> Вернуться к параметрам по умолчанию (Rollback to system default).
Чтобы устройства появились, их нужно не только включить, но и сделать их видимыми. В противном случае можно попробовать установить с ними соединение только тогда, когда известен адрес, но они не будут откликаться на запрос.
После выбора устройства отображается список сервисов, которые ему соответствуют. Если сервис поддерживается системой kdebluetooth, можно нажать на него, и запустится соответствующее приложение. Пока он не будет отключен, менеджер konqueror будет высвечивать на экране стандартный диалог открытия файла (file-open-dialog). Если сервис неизвестен, то будет отображаться другой диалог открытия (open-with-dialog).
Для продвинутых пользователей
Если пользователь уверены в своих действиях, то он может попробовать открыть определенный сервис (например, kbthandsfree) с помощью приложения bluetooth, которое не было специально разработано для данного профиля, для чего необходимо нажать на иконку сервиса правой клавишей мыши и выбрать приложение. Каждый сервис, работающий с командами AT при rfcomm-соединениях, можно открыть, например, с помощью kbtserialchat.
Также имеется возможность изменить связь между приложениями и (известными) профилями точно так же, как выбирается приложение, которое должно открывать видео формата mpeg или файлы pdf: kio_obex присваивает каждому указанному в списке профилю тип MIME (mimetype) и каждое клиентское приложение системы kdebluetooth связано с поддерживаемыми им профилями. Поддержку еще не распознанных профилей можно добавить с помощью файлов в каталоге $PREFIX/share/services (например, sdpmime-serial-port-profile.desktop).
Средство OBEX-kioslave: просмотр папок через Bluetooth
Краткие сведения
Прокол OBEX был разработан для использования в мобильных устройствах. Каждый раз при передаче ("beamed") данных с одного мобильного устройства на другое используется OBEX. Но существуют также другие применения протокола OBEX. Особенно часто он используется для просмотра файловых систем. Если мобильное устройство понимает данный протокол, то можно просматривать, скачивать и загружать файлы с его накопителя информации, используя данное клиентское приложение. С протоколом OBEX связаны такие протоколы синхронизации, как IrMCSync и SyncML, и к ним можно получить доступ с помощью данного клиента, если синхронизация не используется в среде konquerror.
Протоколы OBEX могут использовать различные способы передачи. Сначала применялся IrDA, но сейчас существуют средства передачи через Bluetooth, последовательные каналы и tcp/ip соединения.
OBEX поддерживает 2 типа идентификации. К первому, самому известному, относится идентификация клиентов на сервере. Таким образом, серверное приложение может изменять особенности клиентов и наоборот. При идентификации применяется контрольная сумма MD5, что дает гарантию, что пароли не будут передаваться в незашифрованном виде.
Формат URL
К ресурсам OBEX можно получить доступ, используя URL. Протокольная часть (protocol part) представляет собой непосредственно obex:. Составляющая, отвечающая за путь доступа, (path component) хранит его на сервере. Хостовая часть (host part) немного сложнее.
Для серверов, доступ к которым осуществляется посредством tcp/ip, хостовая часть стандартная. Для установления соединения можно использовать имя хоста или IP адрес хоста сервера. К тому же, если сервер использует нестандартный порт (стандартный порт - 650), можно указать номер порта. Пример: OBEX://hostname:port/path).
Для средств передачи IrDA или Bluetooth можно использовать адрес аппаратного обеспечения в стандартной записи (разделение двоеточиями). Пример: obex://[ef:01:23:45]/path или obex://[12:34:ef:01:23:45]/path.
Существует возможность задать псевдонимы хостов для использования их в протоколе OBEX. Эти псевдонимы задаются в модуле OBEX KControl. Можно указать имя человека, обнаружить устройство, а затем указать соответствие адреса этому имени. Через эти псевдонимы можно также получить доступ к устройствам, использующим последовательный способ передачи. Для IrDA и Bluetooth существуют удобные псевдонимы irda и bluetooth. В обоих случаях идет обнаружение устройства и попытка установить соединение с первым найденным.
Подсказки
Как и в случае с другими средствами kioslave, имеется возможность напрямую открывать и сохранять файлы в устройствах bluetooth с помощью kio_obex. Например, если имеется список покупок, то его можно подготовить в редакторе kedit и сохранить на телефон.
Выполнение этой процедуры можно ускорить, добавив закладку в список закладок диалога сохранения файла.
Клиент передачи OBEX: отправка файлов
KBTObexClient представляет собой программу, которая позволяет передавать файлы с персонального компьютера любому устройству bluetooth, которое поддерживает протокол OBEX (обмен данными, объектами). Этот протокол поддерживается (почти) всеми сотовыми телефонами с функцией bluetooth, карманными компьютерами и, конечно, другими персональными компьютерами с устройством bluetooth. Данную программу можно вызвать с помощью среды Konqueror, используя kio_sdp (набрать sdp:/ в панели), или необходимо нажать правой клавишей мыши на файл, который необходимо отравить, и выбрать действие <Отправить с через Bluetooth> ("Send with Bluetooth").
Сервер передачи OBEX: получение файлов
С большинства карманных компьютеров (PDA) и сотовых телефонов, снабженных функцией Bluetooth, можно передать файлы на персональный компьютер. В то же время было бы гораздо удобнее использовать для такой передачи средство OBEX FTP kioslave, но далеко не все устройства его поддерживают. С другой стороны, передача информации OBEX поддерживается большинством устройств Bluetooth.
Использование сервера передачи OBEX
Сервер передачи OBEX управляется программой kbluetoothd и запускается автоматически, если он активирован, и кто-то пытается передать в персональный компьютер некоторые файлы.
Если передаются файлы с мобильного устройства на компьютер, то иконка программы kbluetoothd станет голубой и появится новое окно. По умолчанию (в зависимости от настроек для входящих соединений) сначала нужно будет принять соединение, а затем появится главное окно OBEX и начнется передача файлов.
Входящие файлы сохраняются в каталог /tmp и стираются при закрытии сервера передачи OBEX. Для сохранения этих файлов, применяются две опции:
Нажать OK, чтобы сохранить полученные файлы в указанное место.
Переместить один или несколько файлов в другое место. Особенно полезна эта опция, если требуется передать файлы по электронной почте, т.к. можно передать файлы напрямую клиенту kmail без их временного сохранения.
Сервисная программа kbtserialchat: простое средство общения
Программа kbtserialchat представляет собой очень простой клиент-сервер (client&server) для общения. Его основной задачей является отладка. Он также может использоваться в качестве примера для написания Bluetooth сервера, управляемого программой kbluetoothd, и клиента, который может быть запущен посредством SDP kioslave.
Использование средства общения
Программа kbtserialchat использует протокол последовательного порта (Serial Port), поэтому при ее запуске будут показаны все устройства, предоставляющие профиль последовательного порта. Сюда относятся и другие компьютеры, где есть оболочка KDE Bluetooth, и телефоны, поддерживающие данный профиль.
При установлении соединения с другим сервером kbtserialchat в другой системе появится окно kbtserialchat, после чего можно обмениваться текстовыми сообщениями. Также имеется возможность установить соединение с последовательным портом телефона, обладающего функцией Bluetooth, и посылать различные AT-команды. Например, чтобы позвонить по определенному номеру, необходимо указать ATD<номер>;.
В то время как может показаться бессмысленным соединение сервера kbtserialchat с последовательным портом устройства, использующим его для обмена двоичными данными, его можно использовать для соединения не только с последовательными портами различных сервисов, а также с сервисами на основе Rfcomm (например, профиль handsfree или headset). Эти сервисы не указываются в начальном диалоге, поэтому можно поступить следующим образом: найти сервисы устройства с помощью kio_sdp (используя sdp:/-URL). В этом случае необходимо нажать на сервис правой клавишей мыши и выбрать пункт Открыть с помощью: (Open with...). В диалоге необходимо указать kbtserialchat и нажать Enter.
Дополнительные средства
В данном разделе описываются некоторые возможности и скрипты, входящие в пакет kdebluetooth. Большинство из приведенных здесь утилит используются отдельно, но вызываются с помощью скриптов или других программ.
kioclient: доступ к оболочке KIO с помощью скриптов
Это небольшая утилита, которая используется для доступа к средствам kioslaves из командной строки. Таким образом, по сути kioclient является основной утилитой.
С помощью kioclient можно скопировать, просмотреть содержимое, удалить любые файлы или каталоги, доступные оболочке KIO. С помощью WebDAV имеется возможность напрямую скопировать файл с FTP-сервера на другой сервер или посредством SSH (используя kio_fish) посмотреть содержимое каталога. Или же с помощью kio_obex можно получить доступ к файлам мобильного телефона. Утилита kioclient используется в образце скрипта, входящего в пакет kbluetoothd (скрипт copy_images).
Следует помнить, что, несмотря на то, что kioclient является программой командной строки, запускать ее нужно из KDE.
kbtsearch: поиск устройств посредством скриптов
Как и kioclient или kdialog оболочки KDE, kbtsearch представляет собой программу командной строки, которая используется в скриптах. Она обладает интерфейсом командной строки для двух стандартных диалогов системы kdebluetooth - диалог поиска устройств и диалог поиска сервисов.
Эту программу можно использовать, если необходимо, чтобы пользователь выбрал устройство bluetooth или нашел определенный сервис среди заданных устройств. Как всегда, диалог выбора сервиса помнит найденные устройства и сразу заполняет список сервисов записями о ранее найденных сервисах, а доступные в данный момент - добавляются в список через несколько секунд.
Чтобы начать поиск устройства, необходимо просто набрать kbtsearch --device. Когда пользователь нашел устройство или ввел адрес и нажал ОК, программа kbtsearch выведет адрес устройства в stdout и вернет статус 0. Если пользователь нажал кнопку Отмена, ничего не выводится и возвращается код статуса 1.
С помощью kbtsearch --uuid <Service-UUID> также можно осуществить поиск устройства, поддерживающего данный профиль Bluetooth. Программа kbtsearch позволяет задать псевдонимы для часто используемых профилей. Чтобы получить список возможных псевдонимов, необходимо выполнить kbtsearch --aliases.
Если пользователь выбирает сервис и нажимает OK, программа kbtsearch возвращает 0 и выводит строку вида <[адрес] [rfcomm-канал]> ('[address] [rfcommchannel]'). Понятно, что это подходит лишь для тех сервисов, которые задают rfcomm-канал. Например, на данный момент нет способа отыскать L2CAP PSM.
Для получения информации о дополнительных опциях необходимо обратиться к kbtsearch --help.
kbtfax: отправка факса посредством приложений KDE
Это вспомогательный скрипт, который облегчает отправку факса из любого приложения KDE. Он зависит от efax (третья система), kdeprintfax и kdesu (части kdebase) и rfcomm tool (часть bluez).
Если осуществляется попытка отправить факс с помощью kdeprintfax, то можно указать, что выход факса (fax backend) должен использоваться утилитой kdeprintfax. Появится опция "EFax", а также пункт "Other" (другое). Необходимо выбрать пункт "Other", а затем в системе kdebluetooth найти скрипт kbtfax. Далее в командной строке необходимо ввести то, что указано в самом скрипте.
Безопасность Bluetooth: объединение (pairing) устройств
Что такое <объединение>?
Очень часто требуется идентификация (подтверждение подлинности) устройства для его доступа к сервису. В этом случае необходимо объединить два устройства. Когда два устройства объединены, каждое из них может быть уверено в подлинности другого. Если не прибегать к объединению, то придется доверять указанному адресу или имени другого устройства, а их можно легко подделать.
Обычно два устройства объединяются единожды, после чего связь между ними будет подтверждаться автоматически.
Чаще всего процесс объединения запускается автоматически при необходимости. При этом не нужно беспокоиться, что устройства не будут объединены, если необходим доступ к его сервисам. При неудачной идентификации, процесс объединения запустится автоматически.
Как это происходит?
Устройства объединяются для того, чтобы удостовериться в подлинности другой стороны. Однако первый шаг не может быть выполнен автоматически. Необходимо знать, кто хочет объединиться с вашим устройством. Для этого на обоих устройствах набирается PIN-код. Определение "PIN" широко распространено, однако вводит в заблуждение. Это не тот код, который вы должны набрать, чтобы получить деньги из банкомата, т.е. вам совершенно не обязательно его запоминать, а после (!) объединения не нужно хранить в тайне. Единственное, что желательно проверить, это что никто больше не знает этого номера, пока он не набран на обоих устройствах.
Для большей безопасности следует не только хранить PIN-код в тайне во время процесса объединения, но и использовать случайное число, которое сложно отгадать. Средства KDE Bluetooth помогут в этом, генерируя случайное восьмизначное число самостоятельно. В коде могут использоваться буквы, но в этом случае могут возникнуть проблемы при наборе кода на мобильном телефоне.
PIN-код
Но куда вводить PIN-код? Как было сказано выше, устройства сами запрашивают код, когда это необходимо. Что касается стека BlueZ, то тут немного сложнее. Существует несколько способ получения PIN-кода от пользователя.
Обычно в параметрах входящего в пакет BlueZ демона hcid (файл /etc/bluetooth/hcid.conf) указывается, что необходимо использовать <Приложение-помощник для ввода PIN-кода> ("PIN helper application") и задать <безопасного пользователя> ("security user"). Этот демон представляет собой небольшую программу, которая только запрашивает пользователя ввести число и выводит его в stdout. Bluez содержит собственную программу-помощника "bluepin", которая работала достаточно проблематично. Лучше использовать программу "bluez-pin" или помощника системы kdebluetooth под названием "kbluepin".
Работа с объединенными устройствами
После объединения устройств можно задаться различными вопросами. Например, какие устройства объединены, а какие - нет. У пользователя также может появиться желание разъединить устройства. Однако не все так просто.
Во-первых, ни одно устройство не может знать точно, с какими устройствами оно объединено. Когда два устройства объединены, они используют секретный ключ запуска, который был создан в процессе объединения и основывается на PIN-коде и некоторой другой информации. Поскольку любая из сторон может удалить ключ запуска без уведомления, наличие ключа для данного устройства не гарантирует существования его у другого устройства. Если один из ключей запуска удален, устройства разъединяются. Конечно, можно быть уверенным, что если в компьютере этого ключа нет, то с устройством объединения нет.
Каким же образом удалить ключ запуска? Это зависит от устройства. У большинства телефонов или карманных компьютеров (PDA) есть списки <объединенных> или <дружественных> устройств, из которых можно удалить некоторые записи. В Bluez версии 2.6 ключи запуска обычно указываются в файле /etc/bluetooth/link_key. Так как они должны храниться в секрете, доступ к этому файлу разрешен только пользователю root. Можно удалить этот файл, но тогда абсолютно все устройства будут разъединены. А так как файл двоичный, редактировать его можно только с использованием специальных средств. В настоящее время система kdebluetooth не обладает такими средствами, т.к. в скором времени принципы работы утилиты Bluez с ключами должны измениться.
Существует один нюанс при частом переключении между различными операционными системами, работающими с bluetooth (обычно Linux<->Windows): объединив телефон с компьютером под ОС Linux и дальше загрузив Windows, ОС Windows не будет знать ключей запуска, сгенерированных утилитой Bluez. Получается, что компьютер <потерял> ключ запуска и придется запустить процесс объединения снова. В зависимости от устройства может случиться так, что новое объединение невозможно, пока не будет удален <старый> ключ запуска. Такая же проблема может возникнуть, если будет выбран пункт <единичное объединение> ("paring single") в файле /etc/bluetooth/hcid.conf. Чтобы не попасть в такую ситуацию, не рекомендуется использовать Bluetooth в разных ОС или использовать различные адаптеры Bluetooth для разных ОС.
Программа KBluetoothD
В данном разделе описано, как использовать программу kbluetoothd для различных приложений или получить к ней доступ из скриптов, чтобы найти имена устройств в кэше.
Кэш имен
Кэш имен отслеживает все поступающие запросы имен и сохраняет результаты. С его помощью другие приложения и сама программа kbluetoothd может найти имя другого устройства bluetoothd по его уникальному адресу, даже если устройство в данный момент недоступно. Такая схема используется по большей части из-за более дружественного интерфейса, т.к. адреса bluetooth типа 00:60:AB:13:83:3D довольно сложно запомнить. Однако, возможно, она устареет, как только выйдет версия BlueZ с собственным постоянным кэшем имен.
Получить доступ к кэшу имен можно с помощью dcop. Чтобы найти в нем адрес, из командной строки необходимо набрать dcop kbluetoothd DeviceNameCache getCachedDeviceName <address>. Чтобы определить имя устройства, использованного последним, можно указать dcop kbluetoothd DeviceNameCache resolveCachedDeviceName <name>. Данная команда не обращает внимания на регистр букв. Следует отметить, что несколько устройств могут использовать одно имя.
Мета сервер
Если необходимо использовать серверное приложение с новым протоколом bluetooth, то его можно легко объединить с программой kbluetoothd, и сервер будет запускаться автоматически.
Необходимо иметь XML файл, описывающий SDP-записи, и соответствующий файл рабочего стола. В этом случае программа kbluetoothd автоматически сформирует SDP-запись, назначит rfcomm-канал и начнет прослушивание выбранного канала. Если кто-то установит соединение с этим сервисом, программа kbluetoothd запустит его (сервис) и передаст ему сокет для уже принятого соединения. Количество идентификаторов передается в качестве аргумента командной строки.
Пакет kdebluetooth содержит утилиту kbtserialchat, которая (кроме использования ее для отладки и общения) представляет собой довольно простой образец программы для интегрирования приложения в оболочку kdebluetooth. Так как kbtserialchat является клиентом и сервером одновременно, то не придется рассматривать все аргументы командной строки.
Формат SDP/XML-файлов должен быть самоописывающимся, если пользователь имеет представление о том, как структурируются SDP-записи. Важно отметить, как параметр для выбранных rfcomm-каналов находит путь к SDP-записи для сервера. Так как канал выбирается программой kbluetoothd автоматически, то нет возможности вносить его в файл SDP-регистрации. Вместо этого в качестве структурного нуля можно использовать <uint valref='rfcommchannel' size='8'/>. Используемые rfcomm-каналы указаны в соответствующем файле рабочего стола.
Сервис обнаружения устройств
Программа kbluetoothd может искать другие устройства и выполнять команды, как только устройство появилось или исчезло. Данный сервис можно сконфигурировать в модуле центра управления (таблица <Обнаружение устройств> - "Device Discovery").
Список активных работ по обнаружению, как показано в модуле центра управления, представляет собой просто список исполняемых файлов, найденных в каталоге $HOME/.kde/share/apps/kbluetoothd/discovery_jobs/. Имеется возможность также добавить новые скрипты в глобальный каталог (global template directory) в $PREFIX/share/apps/kdebluetooth/job-templates/. Скрипты в этом каталоге, название которых заканчивается на ".template", будут отображены, когда пользователь выберет пункт <Добавить новое задание:> ("Add new job..."), а затем будут скопированы в активную директорию пользовательского домашнего каталога.
Включенные в программу скрипты разбиваются на два, чтобы облегчить их обновление (без переустановки). Часть ".template" содержит только те настройки, которые копируются в домашний каталог и которые пользователь может изменить. Этот скрипт затем вызывает часть ".real", которая остается во временном каталоге.
Чтобы написать собственное задание на поиск, необходимо выбрать пункт <Добавить новое задание:> ("Add new job..."), а затем выбрать Custom_Job. Скрипт Custom_Job.template будет скопирован в рабочий каталог. Затем нажать <Сконфигурировать:> ("Configure..."), чтобы изменить скрипт. Данный скрипт отображает все опции командной строки и переменные среды, к которым есть доступ.
Следует заметить, что, удалив скрипт из списка активных заданий, все эти изменения исчезнут. Если требуется его распространить, то рекомендуется разбить его на две части: template для настроек и real для выполнения собственно работы.
Чтобы иметь возможность передать файлы, получить или удалить их из такого задания, можно использовать kioclient.
1. Что такое Bluetooth?
2. Что такое протокол? Какие стеки протоколов Bluetooth существуют конкретно для Linux?
3. Что представляет собой KbluetoothD?
4. Каким образом функционирует метасервер программы kbluetoothd?
5. Для чего используется сервис обнаружения устройств?
6. Какие средства позволяют находить другие устройста Bluetooth?
7. Какова область применения протокола OBEX?
6. Что представляет собой объединение устройств и для чего оно использется?
Литература
1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005
2. ??
Глава 18. Добавление новых дисков (HDD, CD, DVD)
Одну из наибольших трудностей для новичков в Linux представляет собой добавление еще одного жесткого диска, а также копирование файлов с одного жесткого диска на другой. Некоторые из пользователей настолько привыкли к Windows, что попросту не могут думать иначе, поэтому они иногда заходят в тупик с такими утверждениями, как "Мне нужны программы fdisk и format, но в Линуксе их нет!"
В действительности, процедура добавления нового жесткого диска в Linux не так уж трудна, и иногда можно потратить даже меньше времени на те же вещи, чем в Windows. Чтобы проиллюстрировать это, следует с самого начала объяснять процедуру в деталях.
Прежде всего, следует обратить внимание на то, что перед тем, как пользователь пытается подключить новый жесткий диск, ему следует изучить основы разделения диска на разделы, некоторую информацию о файловых системах и уяснить, в чем состоит разница между Primary, Extended и логическими разделами. Также следует знать, как добавить новый диск в компьютер физически (это обычно объясняется в документации к диску). Предполагается, что пользователь с такой информацией знаком, поэтому далее будет описано, как научить Linux работать с новым диском.
Все жесткие диски в операционной системе Linux имеют специальные имена, которые состоят из трех частей, две из которых указаны ниже:
два символа "hd" или "sd" для IDE и SCSI дисков
Один символ в диапазоне от "a" до "t" для дисков IDE, или в диапазоне от "a" до "h" для дисков SCSI.
Второй символ обозначает номер устройства. SCSI диски определяются по номерам, которые зависят от идентификатора устройства. IDE схема несколько отличается от этого, поэтому рассмотрим ее поподробнее:
a и b - Master и Slave диски на первичном интерфейсе первого контроллера IDE
c и d - Master и Slave диски на вторичном интерфейсе первого контроллера IDE
e и f - Master и Slave диски на первичном интерфейсе второго контроллера IDE
g и h - Master и Slave диски на вторичном интерфейсе второго контроллера IDE
...и так далее.
При подсоединении нового диска IDE к материнской плате следует быть готовым запомнить, как он подсоединен: какой интерфейс какого контроллера используется и как он назначен - master или slave.
Если материнской платы с IDE контроллерами нет или конфигурация сервера не имеет дополнительных контроллеров IDE, использовать названия устройств, начинающихся с "hde", не рекомендуется.
Третья часть имени представляет собой номер раздела (партиции). Это номер в диапазоне от 1 до 32 для жестких дисков IDE и от 1 до 15 для SCSI дисков.
Все партиции нумеруются следующим образом: 1-4 - primary и extended, 5-32(15) - логические. Таким образом, в одной системе не можем быть более четырех первичных разделов, а на одном физическом диске не может быть более 11 логических.
Если этот номер отсутствует, это означает, что имя представляет весь диск.
Чтобы получить список всех имен дисков в системе, необходимо ввести следующую команду на правах суперпользователя 'root' для дисков IDE:
# ls /dev/hd*
или
# ls /dev/sd*
для дисков SCSI.
Если вы еще новичок во всем этом, помните, что данная команда не генерирует список подключенных дисков, а только выдает список возможных имен. С помощью этого списка можно определить время и имя подключения последнего диска. Так что не следует удивляться, если список будет очень большим.
Все действия необходимо выполнять на правах суперпользователя 'root'. Внимание: следует быть очень аккуратным, чтобы не повредить данные на дисках. Было бы неплохо произвести резервное копирование всей информации.
Добавление жесткого диска с данными
Например, на руках имеется жесткий диск, который отформатирован в системе MS Windows или даже в Linux, и на нем есть некоторые важные файлы, которые необходимо сохранить.
Прежде всего, конечно, нужно физически подсоединить диск к компьютеру, который, к примеру, будет мастером на втором интерфейсе. В этом случае имя диска в системе будет hdc. После запуска Linux необходимо проверить, нашла ли система новое устройство. Для этого используйте следующую команду:
# ls /proc/ide
Результатом будет строка вида:
drivers hda hdc ide0
Итак, в списке найдено устройство hdc. Кажется, все в порядке. Если устройства в списке нет, следует проверить опять все шаги физического подключения диска к компьютеру.
Теперь посмотрим, какие разделы на этом диске доступны:
# fdisk -l /dev/hdc
Disk /dev/hdc: 64 heads, 63 sectors, 787 cylinders
Units = cylinders of 4032 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hdc1 * 1 610 1229728+ 83 Linux
/dev/hdc2 611 787 356832 5 Extended
/dev/hdc5 611 787 356800+ c Win95 FAT32(LBA)
Легко понять, что в этом примере имеются три раздела на жестком диске и два из них (первый и пятый) содержат некоторые данные. Первый раздел - это первичный раздел Linux, а пятый - это логический диск Windows FAT32. Первый раздел является загрузочным (об этом говорит символ '*' в колонке Boot).
Теперь нужно присоединить эти разделы к файловой системе компьютера. Такая операция присоединения разделов (точнее говоря - присоединения файловых систем) в Linux называется монтированием (mounting) и выполняется с использованием команды 'mount'. Есть также обратная операция, известная как демонтирование (unmounting), которая выполняется командой 'umount'.
При монтировании раздела в Linux следует связать его с директорией где-то в файловой системе. Это называется созданием точки монтирования. Обычно создаются точки монтирования для каждого раздела, например:
# mkdir /mnt/hdc1
# mkdir /mnt/hdc5
Конечно, можно использовать уже существующие директории. Только необходимо помнить два правила:
1. В Linux обычно практикуется (но не обязательно) группировать все точки монтирования в одном месте, за исключением монтирования системных разделов (таких как /usr, /home, /var, и т.д.);
2. Директория, используемая под точку монтирования, должна быть пустой, иначе ее содержание будет недоступно до тех пор, пока раздел не будет демонтирован.
Теперь воспользуемся командой 'mount' и присоединим некоторые разделы:
# mount /dev/hdc1 /mnt/hdc1
# mount /dev/hdc5 /mnt/hdc5
Здесь /dev/hdc1 и /dev/hdc5 представляют собой названия устройств, а /mnt/hdc1 и /mnt/hdc5 - точки монтирования. Разумеется, названия директорий для точек монтирования не должны быть точно похожи на названия разделов.
Теперь, перейдя в директорию /mnt/hdc1 или /mnt/hdc5, можно будет увидеть содержимое разделов.
При монтировании раздела, использующего иную файловую систему, чем та, в которой вы работаете, необходимо помнить, что тип файловой системы указывается ключом -t в команде mount. Если раздел уже присоединен, не забудьте демонтировать его командой 'umount' перед использованием ключа -t для указания файловой системы "иностранной" партиции:
# umount /mnt/hdc5
# mount -t vfat /dev/hdc5 /mnt/hdc5
Наиболее общие значения ключа -t :
msdos - FAT12 and FAT16
vfat - FAT16 с поддежкой длинных имен файлов, FAT32
ext2 - первичная файловая ситема Linux;
ext3 - совместимая с ext2 файловая система с поддержкой журналирования
reiserfs - новая файловая система Linux с поддержкой журналирования
Полный список поддерживаемых файловых систем (более 30) можно найти на страницах руководства mount.
Некоторые читатели, после следования всем вышеперечисленным инструкциям, могут заметить, что вместо понятных символов в именах файлов в разделах FAT будут только вопросительные знаки. Простой пример этого - русские символы в именах файлов в файловой системе FAT.
Это не значит, что Linux не поддерживает русский язык в именах файлов. В действительности Linux поддерживает множество национальных кодовых страниц - нужно только установить, какую из них следует использовать. Это делается с помощью ключа -o.
После демонтирования раздела используйте эти команды. Для раздела FAT созданного в Windows 98 и/или Windows NT:
# mount -t vfat -o iocharset=koi8-r,codepage=866 /dev/hdc5 /mnt/hdc5
Для раздела FAT, созданного в Windows ME и/или Windows 2000/XP:
# mount -t vfat -o iocharset=koi8-r,codepage=866,uni_xlate=1 /dev/hdc5 /mnt/hdc5
Разница здесь в дополнительном аргументе uni_xlate. Этот аргумент необходимо указывать, потому что Windows ME/2000/XP используют Unicode в именах файлов.
Итак, теперь можно установить русские имена файлов. Можно использовать переменную iocharset variable для своего собственного языка с этой командой.
Для разделов FAT также неплохо использовать аргументы uid и quiet. Это очень важно, потому что FAT не имеет никаких служб для ограничения доступа к файлам.
Аргумент uid=user определяет владельца файловой системы, кто имеет все права на запись и создание новых файлов на диске. Аргумент quiet прячет все сообщения об ошибках, которые появляются из-за невозможности изменить владельца файла и доступ к файлу при копировании его на раздел FAT.
Добавление нового (пустого) жесткого диска
В следующем примере попробуем добавить абсолютно новый жесткий диск.
Есть только одно различие от предыдущей методики, в том, что перед монтированием нового диска нужно разделить его на разделы и отформатировать в той файловой системе, в которой он будет использоваться.
Для простоты предположим, что новый диск подключен в качестве мастера на вторичный интерфейс (hdc), также как и в первом примере.
Разделение на разделы производится с помощью утилиты 'fdisk':
# fdisk /dev/hdc
Command (m for help): _
Для короткой справки введем команду 'm':
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): _
Нам нужно знать лишь несколько необходимых команд: d, p, n, q, w. Не бойтесь использовать их - все изменения будут сделаны только в памяти, а записаны будут после введения команды 'w'. При ошибке нужно только отменить все изменения командой 'q'.
Прежде всего, убедимся, что диск пустой:
Command (m for help): p
Disk /dev/hdc: 64 heads, 63 sectors, 787 cylinders
Units = cylinders of 4032 * 512 bytes
Device Boot Start End Blocks Id System
Command (m for help): _
Часто продавцы компьютеров и комплектующих производят предварительное разбиение дисков на разделы. В этом случае для удаления всего, что не нужно, можно использовать команду 'd', описанную ниже.
Итак, с помощью команды 'n' создадим новый раздел, отвечая на все вопросы следующим образом:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
Выбираем тип раздела - первичный (primary) или расширенный (extended) - введем P для первичного раздела.
Выбирая номер раздела в этом примере, назначим все дисковое пространство одному разделу. Так как это будет первый и единственный раздел, назначим ему номер 1:
Partition number (1-4): 1
Когда выбирается значение первого цилиндра раздела, можно использовать значение по умолчанию (оно запишется, если просто нажать Enter):
First cylinder (1-787, default 1): Using default value 1
Установка последнего цилиндра в этом разделе проста, так как мы заполняем разделом весь диск. Вновь необходимо просто нажать Enter для ввода значения по умолчанию, (вместо номера цилиндра можно установить размер партиции в байтах, килобайтах или мегабайтах):
Last cylinder or +size or +sizeM or +sizeK (1-787, default 787): Using default value 787
Command (m for help): _
Теперь раздел создан. Взглянем на таблицу разделов командой 'p':
Command (m for help): p
Disk /dev/hdc: 64 heads, 63 sectors, 787 cylinders
Units = cylinders of 4032 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hdc1 1 787 1586560+ 83 Linux
Command (m for help): _
Если нам по какой-либо причине не понравилось расположение или число разделов, то их можно удалить командой 'd':
Command (m for help): d
Partition number (1-4): 1
Command (m for help): _
Если диск необходимо разделить на несколько партиций, то следует повторить все эти операции несколько раз. Важно помнить одну вещь: при количестве разделов более четырех нужно делать не первичные, а расширенные разделы на всем диске. Внутри этой партиции вы можете создавать столько логических частей, сколько требуется.
Запомните, пожалуйста, что логические разделы всегда нумеруются с 5 номера; неважно, сколько первичных разделов вы создали до этого (один, три или ни одного).
Тип нового (только что созданного) раздела на новом жестком диске всегда будет установлен 83 (Linux type), хотя утилита 'fdisk' поддерживает управление и создание большого числа типов. Получить их список можно при помощи команды 'l'. Можно также изменить тип раздела, используя команду 't'. Начинающим пользователям НЕ рекомендуется использовать эту возможность в системе Linux; лучше всего использовать только два типа - 83 (Linux) и 82 (Linux swap).
После всех манипуляций с 'fdisk' необходимо установить соответствующую конфигурацию. Следует выйти из утилиты 'fdisk' и сохранить все результаты командой 'w'.
Компьютер перезагружать не обязательно. К сожалению, иногда 'fdisk' не может обновить таблицу разделов в памяти, но об этой проблеме будет сообщено. Если это произойдет, то придется перезагрузить компьютер.
Конечно, перед использованием раздела, его необходимо отформатировать. Помните, что до тех пор, пока мы работаем с разделами на жестком диске, мы имеем дело с устройством /dev/hdc, но форматировать мы будем раздел /dev/hdc1.
Это форматирование можно провести при помощи утилиты 'mkfs'. Обычно для разделов Linux используется одна из трех файловых систем: ext2, ext3 или reiserfs. Существует также возможность использования других ФС, например, ext, XFS, JFS. Однако следует заметить, что ФС ext слишком старая и больше не используется, а установка систем XFS и JFS требует глубокого знания настроек и конфигурирования операционной системы Linux.
Для форматирования раздела в файловую систему ext2 можно выполнить следующую команду:
# mkfs -t ext2 /dev/hdc1
(ключ '-t' указывает на тип файловой системы)
Для форматирования в ext3:
# mkfs -t ext2 -j /dev/hdc1
ВНИМАНИЕ! Это не опечатка. Устанавливается тип ext2. Но так как ext3 - это "потомок" ext2, он имеет прямую и обратную совместимость со своим "родителем". На файловую систему ext3 указывает параметр "-j" (журналируемая система).
Для форматирования раздела в ReiserFS:
# mkfs -t reiserfs /dev/hdc1
Как только 'mkfs' закончит свою работу, раздел готов к монтированию.
Все методы, описанные выше, имеют один недостаток: после каждого запуска системы, необходимо вручную монтировать разделы на правах суперпользователя root. Идеально было бы автоматизировать эту процедуру на вашем компьютере во время загрузки. Это легко сделать. В директории конфигурации системы /etc есть файл под названием 'fstab'. В нем содержится список подсоединенных разделов, который выглядит примерно следующим образом:
# cat /etc/fstab
/dev/hda5 swap swap defaults 0 0
/dev/hda1 / reiserfs notail,usrquota,grpquota 1 1
/dev/hdb /mnt/cdrom auto user,iocharset=koi8-r,umask=0,exec,codepage=866,ro,noauto 0 0
/dev/fd0 /mnt/floppy auto user,iocharset=koi8-r,umask=0,sync,exec,codepage=866,noauto 0 0
none /dev/pts devpts mode=0620 0 0
none /proc proc defaults 0 0
Каждая строка данного файла содержит описание каждого раздела для монтирования в шести колонках (полях):
- наименование устройства;
- точка монтирования;
- тип файловой системы;
- дополнительные аргументы монтирования (некоторые из них являются общими для всех, некоторые специфичны для своей файловой системы);
- ID номер в запросе на проверку целостности файловой системы при загрузке; такой запрос производится периодически (если его значение равно 0, проверка не проводится);
- значение резервного копирования: 0 или 1 (этот аргумент используется некоторыми утилитами резервного копирования).
Вернемся немного назад в нашем примере. Раздел hdc1 был отформатирован в ФС ext3 и должен быть смонтирован в точку /mnt/hdc1 во время загрузки. Для выполнения этого добавим следующую строку в конец файла /etc/fstab:
/dev/hdc1 /mnt/hdc1 ext3 default 2 1
Это очень важно: не забудьте добавить "перевод строки" в конец файла /etc/fstab. В противном случае последняя строка будет проигнорирована! В действительности, это не так уж важно в последних версиях Linux. Но сделайте это своей привычкой, чтобы избежать проблем с компьютером при работе с другим программным обеспечением Unix или старыми версиями Linux.
Теперь следует убедиться: все ли было сделано правильно в fstab?
# mount /mnt/hdc1
Если никаких сообщений об ошибке не получено, значит, этот раздел будет автоматически монтироваться при каждой загрузке компьютера.
Следует запомнить этот короткий вид команды 'mount'. Когда используется только один аргумент, вся остальная необходимая информация берется из файла /etc/fstab.
В данном разделе мы проверили несколько вариантов и правил подключения нового жесткого диска в Linux. Заметьте, что мы не рассматривали множество специализированных тонких настроек, которые могли бы сделать в более продвинутых операциях (например, это настройка системы на поддержку журналирования, определение прав доступа к смонтированным разделам и тому подобное). Надеемся, что данная информация даст достаточно ясное понимание принципов добавления дополнительного жесткого диска в системе Linux.
1. Как записывается имя хесткого диска в операционной системе Linux?
2. Каким образом можно получить список всех имен дисков в системе?
3. Что такое монтирование и как оно осуществляется?
4. Каким образом нумеруются логические разделы?
Литература
1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005
2. ??
Часть IV. Настройка серверных приложений
Глава 19. Настройка Web-сервера Apache
Если по тем или иным причинам перед пользователем встала задача сделать WEB-сервер, первое, о чем следует позаботиться (после того, как решены вопросы с арендой каналов у провайдера, закупкой и установкой операционной системы на компьютер, который будет использоваться в качестве WEB-сервера), это о самой программе WEB-сервера. То есть той самой программе, которая будет принимать запросы у WEB-браузеров клиентов пользователя и отсылать им определенную информацию.
Как всегда в мире Открытых Систем есть две альтернативы: купить WEB-сервер или использовать свободно-распространяемую программу аналогичной функциональности. Первый путь в данной главе не рассматривается, поэтому рассмотрим второй путь.
В настоящее время день миру известны как минимум три подобных WEB-сервера: CERN, NCSA и Apache. Однако на сегодняшний день сервер CERN морально устарел и не развивается, про NCSA ходят подобные слухи, поэтому для рассмотрения в данной главе выбран сервер Apache, который базируется на ранней версии NCSA и по настойке и функциональным возможностям сильно схож с ним.
Еще одна проблема для создателя русскоязычного WEB-сайта - проблема русской кодировки. На сегодняшний день их существует не менее четырех: Koi-8, CP-1251, ibm866 и iso8859-5. Можно, конечно, весь сервер хранить в koi и все. Однако, это неуважение к пользователям ОС Windows. И наоборот, сервер, видный только в CP-1251, будет недоступен пользователям открытых систем. И именно Apache поможет Вам в решении этой проблемы.
Нами была взята одна из ранних версий Apache. Благодаря возможности включения в код сервера внешних модулей, был разработан так называемого RussianApache, позволяющий разработчику WEB-сайта не заботиться о кодировках, а сосредоточиться на разработке содержимого сайта, переложив заботу о кодировках на администратора WEB-сервера. И, следует отметить, RussianApache в этом очень сильно поможет.
Итак, необходим WEB-сервер, причем именно RussianApache. Самый простой способ его достать - открыть любой WEB-браузер или, воспользовавшись программой ftp, зайти по адресу ftp://apache.lexa.ru/pub/apache-rus и взять последнюю версию WEB-сервера. Далее необходимо определиться, в какой директории будет находиться программное обеспечение сервера. Считается, что лучше взять /usr/local/etc/httpd, но можно и /usr/httpd (чтобы далеко не лазить). Оба этих решения абсолютно идентичны с точки зрения функционирования Apache, поэтому, чтобы не заострять на этом внимания, опишем переменную окружения:
www% setenv HTTP_HOME /usr/httpd
и в дальнейшем будем пользоваться этой переменной для именования файлов Apache.
Теперь необходимо собрать Apache. В папке ${HTTP_HOME} лежит файл apache_1.2.4rusPL21.3.tar.gz, представляющий собой последнюю версию сервера. Нужно перейти в директорию /tmp и выполнить следующую команду:
www% gzip -c -d ${HTTP_HOME}/apache_1.2.5rusPL21.4.tar.gz | tar xvf -
Если в системе все настроено правильно, то пользователь увидит множество файлов, которые развернутся в директории apache_1.2.5rusPL21.4. Необходимо зайти в директорию apache_1.2.5rusPL21.4/src и отредактировать файл httpd.h: нужно найти в нем строчку
#define HTTPD_ROOT "/usr/local/etc/httpd"
и заменить этот путь на тот, где будет стоять Apache (например, /usr/httpd ).
После этого необходимо применить стандартную процедуру сборки свободно распространяемых программ. Для этого в текущей директории (apache_1.2.5rusPL21.4/src) следует дать последовательность команд:
www% ./Configure
www% make
Если все было проделано правильно, то на экране будут отображаться сообщения об успешной компиляции. Процесс может длиться от 5 до 30 минут, поэтому следить за строчками необязательно.
В результате выше описанных действий должен получиться исполняемый файл под называнием httpd. Это и есть Apache, который нужно было собрать. Но не следует расслабляться - Apache, как и всякая нетривиальная программа, для своей работы требует настройки.
Но, прежде чем приступать к настройке, желательно скопировать Apache в его рабочую директорию:
www% cp httpd ${HTTP_HOME}
www% cd ..
www% cp -r LICENSE README conf htdocs icons support ${HTTP_HOME}.
Итак, на настоящий момент имеются:
- определенная переменная окружения HTTP_HOME;
- файл ${HTTP_HOME}/httpd, представляющий собой собранный Apache;
- директория ${HTTP_HOME}/conf/, в которой будут лежать файлы конфигурации;
Этого набора достаточно для успешной работы Apache. Желательно еще создать директорию ${HTTP_HOME}/logs для лог-файлов Apache.
Первый файл, который нужен для работы Apache, - это ${HTTP_HOME}/conf/httpd.conf. В поставку входит пример такого файла ( ${HTTP_HOME}/conf/httpd.conf-dist ), но для того, чтобы хорошо научиться настраивать Apache, создадим его самостоятельно.
Необходимо создать этот файл и загрузить его в любой редактор (textedit, vi и др.). Первое, что нужно определить, это режим работы Apache.
Издавна повелось, что многие UNIX-сервисы запускались специальным демоном, который называют суперсервером Internet (inetd). Этот демон слушал порты соответствующих сервисов, и при запросе определенного типа сервиса (например, telnet или ftp) запускал программу-демона, определенную для этого сервиса. Такой алгоритм был введен, когда памяти в компьютерах было мало, и, чтобы не держать в памяти множество сложных демонов, сеть слушал достаточно простой inetd.
Apache тоже является одним из сервисов Internet, и, в принципе, может пускаться под управлением inetd. Однако такой механизм работы не рекомендуется для использования даже разработчиками Apache. Причина в том, что при старте Apache должен прочитать несколько конфигурационных файлов, что сказывается не лучшим образом на его производительности. Кроме того, время необходимо и на запуск программы.
Итак, первой строчкой файла httpd.conf будет строка, задающая режим функционирования:
ServerType standalone
Далее нужно задать порт, на котором Apache будет слушать запросы. По умолчанию это порт 80, и при стандартном обращении к Вашему серверу программа Netscape использует этот порт. Поэтому следующая строчка имеет вид:
Port 80
Считается, что все стандартные сервисы UNIX имеют номера портов, меньшие 1024. Поэтому порты с номерами, меньшими 1024, называют привилегированными портами, и открывать их может только суперпользователь. Сделано это для того, чтобы программа злоумышленника не смогла замаскироваться под стандартный сервис. Поэтому, задав для Apache 80-й порт, пользователь обязал себя запускать его на правах суперпользователя.
Однако для нормального функционирования Apache привилегии суперпользователя вовсе не нужны. Более того, такой режим функционирования является достаточно опасным для системы, на которой работает Apache.
Привилегии суперпользователя нужны Apache только при старте, чтобы открыть 80-й порт, а далее он может функционировать под именем другого пользователя. Рекомендуется завести для него специального пользователя http, входящего в группу http, и максимально уменьшить права данного пользователя в системе. В идеале, этот пользователь должен иметь доступ только к тем директориям, которые будут видны через Ваш WEB-сервер. Создав пользователя, добавим в httpd.conf следующие строки:
User http
Group http
обязав тем самым Apache работать от имени этого бесправного пользователя.
Далее необходимо задать имя сервера, на которое будет откликаться Ваш сервер. Делается это директивой
ServerName www.your-domain.ru
Теперь необходимо задать расположение файлов, которые следует показывать на сервере. Apache имеет богатые возможности по конфигурированию ресурсов такого рода, так как основная задача Apache как HTTP-сервера - выдавать документы, то есть файлы, хранящиеся на диске. Однако сейчас предположим, что все файлы собраны в одной директории и имеют иерархическую структуру. Apache нужно сказать, где расположена эта директория:
DocumentRoot /usr/httpd/htdocs
(здесь предполагается, что все документы находятся в директории /usr/httpd/htdocs. Также рекомендуется задать именно эту директорию, если еще нет никаких документов - в /usr/httpd/htdocs находится стандартное руководство в HTML-формате, поставляемое с дистрибутивом Apache).
В принципе, этого было бы достаточно, если бы не одна тонкость. Разработчики Apache, понимая, что при существующих порядка 150-ти директивах указание их в одном файле сделало бы его трудно читаемым, решили упростить жизнь пользователям. Они предполагают использование трех файлов: httpd.conf (общие директивы конфигурации сервера), srm.conf (конфигурация ресурсов сервера - информация о том, где расположены документы, как их обрабатывать и т.д.) и access.conf (конфигурация доступа к серверу - пароли, права на определенные директории). Однако при запуске Apache определяет только положение файла httpd.conf. По умолчанию это ${HTTP_HOME}/conf/httpd.conf, но существует возможность переопределения местоположения этого файла. А вот расположение остальных двух файлов Apache ищет в httpd.conf. Но так как в приведенной здесь конфигурации эти файлы не нужны (всю работу Apache опишем в httpd.conf), то можно просто отключить остальные файлы:
AccessConfig /dev/null
ResourceConfig /dev/null
Вот и все. Мы получили работающий WEB-сервер. Запускаем (здесь необходимо воспользоваться правами пользователя root):
www# /usr/httpd/httpd
www#
У Вас получился работающий WEB-сервер! Можете запустить Netscape и набрать в нем адрес сервера http://www.your-domain.ru - и Вы увидите свои документы. Однако это, конечно, не все. Здесь была описана только простейшая настройка Apache. В следующем разделе рассказано о некоторых возможностях работы WEB-сервера Apache.
Http-акселерация
Изначально Apache работает как web-сервер, но с помощью нехитрых манипуляций его можно переключить в режим http-акселерации. Сама суть механизма сводится к следующему: есть frontend-сервер, который отвечает на запросы пользователя и кэширует информацию, и есть backend сервер, который занимается генерацией страниц.
Прежде, чем предпринимать какие-либо действия, следует проверить, с какими модулями скомпилирован ваш сервер apache. Это делается просто:
[root bin]#./httpd -l
Compiled-in modules:
http_core.c
mod_charset.c
........
mod_proxy.c
........
и так далее. Apache обязательно должен быть собран с модулем mod_proxy.
Итак, есть какой-либо хост lnx.open.by. Установленный на нем web-сервер будет работать на пределе. Необходимо выбрать любой свободный порт для организации backend сервера и перевести существующий сервер на работу через этот порт. Это делается только для того, чтобы отключить генерацию логов (чтобы не вводить в заблуждение их анализаторы).
Ниже приводится примерное описание существующего сервера (подразумевается, что он построен через vhost; IP-адреса и имена хостов вымышленные):
ServerName lnx.open.by
DocumentRoot /home/httpd/html/lnx-server
ServerAdmin admin@lnx.open.by
ErrorLog /var/log/httpd/lnx-server-errorlog
CustomLog /var/log/httpd/lnx-server-accesslog combined
Для построение backend сервера делаем следующие изменения:
ServerName lnx.open.by
DocumentRoot /home/httpd/html/lnx-server
ServerAdmin admin@lnx.open.by
Теперь в файле httpd.conf следует сделать несколько поправок:
Listen 8081
# тем самым мы разрешаем соединяться с 8081 портом и обрабатывать запросы, приходящие на него.
ProxyRequests On
# включаем прокси
ProxyVia On
# разрешаем передавать сведения о том, от кого пришел запрос
CacheRoot "/usr/local/apache/cache/"
# тут у нас будет храниться сам кэш
CacheSize 50000
# размер кэша указываем в килобайтах
CacheGcInterval 2
#интервал в часах, по истечении которого будет проверяться лимит объема кэша и необходимость удаления старых страниц
CacheMaxExpire 2
# максимальное время, которое станицы могут лежать в КЭШе
NoConcurrentCacheUpdates On
# разрешает обновление кэша различными программами
В принципе этого должно хватить. Более подробную информацию о модуле mod_proxy можно найти по адресу: http://www.apache.org/docs/mod/mod_proxy.html.
Попробуем создать frontend сервер.
ServerName lnx.open.by
ProxyPass / http://192.168.0.1:8081/
ProxyPassReverse / http://192.168.0.1:8081/
CacheRoot "/usr/local/apache/cache/"
ErrorLog /var/log/httpd/lnx-server-errorlog
CustomLog /var/log/httpd/lnx-server-accesslog combined
NoCache chat
Теперь необходимо создать каталог /usr/local/ apache/cache/ с полными правами для пользователя, от имени которого запускается Apache сервер (обычно это nobody).
[root bin]# mkdir /usr/local/apache/cache
[root bin]# chown nobody.nobody /usr/local.apache/cache
Следует заметить, что кэш можно создавать в любом месте файловой системы.
Собственно, строки, начинающиеся с Proxy, и говорят акселератору обращаться за исходными страницами, расположенными на 8081 порту. Примечание: можно вместо строки:
ProxyPass / http://192.168.0.1:8081/
Написать что-нибудь такое:
ProxyPass /info http://info.lnx.open.by:8081/
И при обращении пользователя к http://lnx.open.by/info он получит данные с http://info.lnx.open.by. Это иногда бывает полезным при объединении нескольких серверов в один.
Команда NoCache указывает на те слова в URL, при встрече которых информация не будет кэшироваться на диске. Такое может понадобиться для быстро обновляющихся страниц, которые не оказывают большой нагрузки на сервер.
Похоже, это все, при условии, что настроено все у вас правильно. И после перезапуска сервера, все запросы будут прокэшированы. Проверить это очень легко.
[root@lnx home]# cd /usr/local/apache/cache
[root@lnx cache]# ls
2 8 E H J M O R U W _ c i v
3 B G I L N P T V Z b h j z
[root@lnx cache]#
А теперь рассмотрим, как работает эта связка. На 80-й порт по адресу 192.168.0.1 приходит запрос. Apache разбирает его и смотрит, для какого виртуального сервера он предназначен. Если для lnx.open.by, прокси разбирает запрос и смотрит в кэше, не делал ли кто-нибудь такой запрос раньше. Если делали и время "протухания" страницы еще не подошло, то просто отдаем закэшированную страницу и вес. Если не делали или страница "протухла", то посылается запрос к backend-серверу на 8081-й порт и заново выданная страница кэшируется. Все очень просто и надежно.
Итак, теперь сервер работает достаточно быстро. Попробуем обеспечить достаточный уровень безопасности, для чего воспользуемся SSL.
Сначала необходим сам сервер Apache. Если уже имеется собранное и работающее дерево apache, то желательно скопировать его в безопасное место. Если нет, то следует вытянуть самую последнюю версию Apache и развернуть его.
Будем рассматривать настройку на базе следующих пакетов:
ftp://ftp.modssl.org/source/mod_ssl-2.6.4-1.3.12.tar.gz
ftp://ftp.openssl.org/source/openssl-0.9.5a.tar.gz
и непосредственно самого Apache 1.3.12.
Распаковываем архивы:
[root@lnx tmp]# gzip -d -c mod_ssl-2.6.4-1.3.12.tar.gz | tar xvf -
[root@lnx tmp]# gzip -d -c openssl-0.9.5a.tar.gz | tar xvf -
Далее:
[root@lnx tmp]# cd openssl-0.9.5a
[root@lnx openssl-0.9.5a]#./config
[root@lnx openssl-0.9.5a]# make
Необходимо сконфигурировать и собрать openssl - пакет, который и будет обеспечивать шифрование. Рекомендуется дать еще команду make install, после которой в /usr/local/ssl будет лежать это пакет.
Далее...
[root@lnx openssl-0.9.5a]# cd..
[root@lnx tmp]# cd mod_ssl-2.6.4-1.3.12
[root@lnx mod_ssl-2.6.4-1.3.12]#./configure -with-apache=../apache_1.3.12
-with-ssl=../openssl-0.9.5a -prefix=/usr/local/apache)
Этими командами модуль mod_ssl включется в число собираемых модулей для Apache. (в нашем случае Apache находится в директории: tmp/apache_1.3.12).
Теперь нужно просто перейти в каталог с Apache и дать команду make - все необходимые модули будут собраны. Если у вас раньше были собраны нестандартные модули, они никуда не исчезнут и будут тоже откомпилированы.
Далее....
make certificate
На вопросы необязательно отвечать, можно просто нажимать клавишу Enter, тем самым вы сгенерируете свои сертификаты.
make install
Этой командой Apache инсталлируется в предназначенное для него место (/usr/local/apache).
Теперь можно попробовать запустить apache следующей командой:
/usr/local/apache/bin/apachectl startssl
Если сервер запустился, то все было проделано правильно.
Теперь надо чуть-чуть <подпилить> сервер apache, для чего нужно открыть в редакторе файл httpd.conf.
Listen 443
NameVirtualHost 192.168.0.1:443
Эти команды указывают Apache слушать 443 порт (стандартный порт для secure http (https)) и обслуживать на нем виртуальные серверы.
Необходимо добавить описание виртуального сервера.
SSLEngine on
SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key
SSLLog /usr/local/apache/logs/ssl_engine_log
SSLLogLevel warn
SSLOptions +StdEnvVars
Здесь добавляются стандартные для этого места директивы.
Следует перезапустить сервер, в первый раз после перезапуска он должен спросить парольную фразу. Но следует обратить внимание, что это происходит лишь однажды и такое неприемлемо для уже рабочего https-сервера.
Теперь делаем следующее:
Входим в каталог с ssl.key
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
Вводим пароль для дешифровки
chmod 400 server.key
Закрываем файл с отрытым ключом от посторонних глаз. Сервер больше не будет спрашивать пароль. На данном этапе уже должен работать SSL. То есть, набирая https://ваш.хост.ltd, вы должны получать запрос браузера на использование этого сертификата.
Чтобы немного автоматизировать процесс запуска Apache вместе с SSL, можно отредактировать bin/apachectl. В нем условие start заменим на startold, а startssl - просто на start. Затем скопируем его в /etc/rc.d/ init.d/httpd. Теперь по умолчанию при загрузке сервера будет запускаться Apache с поддержкой SSL.
Чтобы не мучаться с PATH, сделаем, чтобы openssl запускался нормально.
cd /usr/local/bin
ln -s /usr/local/ssl/bin/openssl openssl
Итак, теперь сгенерируем нормальные сертификаты.
Генерируем ключ.
openssl genrsa -des3 -out server.key 1024
На данном этапе мы создали server.key, теперь генерируем запрос в службу верификации.
openssl req -new -key server.key -out server.csr
Будьте аккуратны в ответах, ведь это потом увидят все. Если ошиблись, все можно повторить заново. CommonName - это адрес хоста без http://.
Если вы получили следующую надпись, то запрос сгенерирован правильно:
You now have to send this Certificate Signing Request (CSR)
to a Certifying Authority (CA) for signing
Если подписывать у нас некому, будем сами подписывать себя. Хотя если вам необходимо подписать свой сертификат именно у глобальных авторизационных центров, то на modssl.org вы найдете все необходимые адреса и ссылки.
openssl genrsa -des3 -out ca.key 1024
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
Генерируем подпись авторизационного центра на год (можно и больше), процедура полностью схожа с генерацией ключа.
Копируем sign.sh из pkg.contrib из пакета mod_ssl в каталог с ключами и подписываем свой же запрос
./sign.sh server.csr
Получив надпись, содержащую
Now you have two files: server.key and server.crt. These now can be used as following
можно порадоваться, все собрано так, как надо. Нужно скопировать server.key и server.crt на место старых, но в каталоге с crt файлом Makefile не трогать. Скопировав новый .crt файл, необходимо дать команду make в этом же каталоге - он создаст некий хеш файл.
Следует перезапустить Apache, и можно наслаждаться тем, что вы сделали собственный WWW сервер, защищенный с помощью SSL.
Проверить защищенность можно, посмотрев информацию о сертификатах или соединении в info-окнах браузеров. Если вы им не доверяете, дайте команду
openssl s_client -connect localhost:443 -state -debug
Она выведет полностью всю информацию, которую она сможет выжать из вашего SSL сервера.
1. Ограничение доступа к файлу
Как правило, Directory применяется только к каталогам. Ограничение доступа к отдельным файлам директивой может быть основано на ограничении доступа к запрошенному URL. Следовательно, это может быть применимо к отдельным файлам. К примеру, для ограничения доступа к файлу /prices/internal.html для всех, кроме 'domain.com', можно использовать
order deny,allow
deny from all
allow from .domain.com
2. Проблема с NCSA .htaccess файлами
В учебнике NCSA по поводу .htaccess файлов приведен пример подобный данному:
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName EnterPassword
AuthType Basic
order deny,allow
deny from all
allow from .my.domain
Это предназначено для ограничения доступа, основанного на адресе браузера, и здесь не требуется запрос для авторизации остальных пользователей. Проблема в том, что Apache выводит запрос для ввода пароля, который не проходит, потому что тот не был установлен. В Apache наличие Auth* директив необязательно. Это правится удалением строк содержащих Auth*.
3. Как увеличить скорость Apache
Имеются некоторые пути, которые позволяют управлять производительностью сервера. Один быстрый и эффективный путь - это уменьшение количества .htaccess файлов, которые опрашиваются при каждом запросе.
Всякий раз, когда Apache обрабатывает запрос, опрашиваются файлы .htaccess, которые определяют разрешение доступа и где могут быть установлены другие параметры (например AddType). При этом проверяются и обрабатываются файлы .htaccess в том же самом каталоге, что и запрашиваемый файл, а также во всех родительских каталогах.
Например, если Вы запрашиваете URL /docs/about.html и Ваш корневой документ /usr/local/etc/httpd/htdocs, Apache пробует обработать файлы .htaccess во всех этих каталогах:
/
/usr
/usr/local
/usr/local/etc
/usr/local/etc/httpd
/usr/local/etc/httpd/htdocs
/usr/local/etc/httpd/htdocs/docs
Обычно, выше корня сервера не будет файлов .htaccess, но Apache все еще должен проверить файловую систему, чтобы в этом удостовериться. Это может быть устранено, используя уловку, что опция AllowOverride установлена в None, и Apache не будет производить проверку для файлов .htaccess.
Так для каталога ' / ' AllowOverride Вы установите в None и включите AllowOverride с Вашими необходимыми параметрами для каталога /usr/local/etc/httpd/htdocs.
Например, следующий код в access.conf ускорил бы Apache:
AllowOverride None
AllowOverride All
Второй раздел Directory включает AllowOverrides, так, чтобы файлы .htaccess были обработаны снова. Запись 'all' может быть заменена любой другой, необходимой для Вас.
Если имеются web-документы в различных каталогах, помимо корня документа, нужно включить файлы .htaccess также и в них (если необходимо). Например, если при использовании UserDir, чтобы разрешить доступ к файлам в домашних каталогах, нужно установить подходящий AllowOverride (и, возможно, другие ограничения), подобно этому:
AllowOverride FileInfo Indexes IncludesNOEXEC
4. Смена log файлов без завершения транзакций
Посылка родительскому процессу USR1, делающая закрытие текущих log файлов с последующим их открытием без потери соединения, в настоящее время находится в разработке. Это будет использовано вместо HUP сигнала в каком-либо скрипте для смены log-ов. Этот скрипт должен будет, во-первых, переименовать файл текущего лога в файл с новым именем (log остается открытым на данной стадии). Затем он должен послать сигнал USR1 родительскому процессу Apache. Родительский процесс должен сообщить дочерним о завершении после обработки своего текущего запроса и открыть log файл для новых дочерних процессов (так как старые файлы были переименованы, открытые файлы будут созданы заново). Поскольку старые дочерние процессы заканчивают их текущие запросы, они должны закрыть обработчики старых log файлов и завершить работу. Когда все дочерние процессы умерли, можно безопасно обрабатывать старые log-и (например, сжимая их). Так как невозможно точно знать, когда дочерние процессы завершают свою работу, лучшим путем является перевести скрипт в режим ожидания после посылки сигнала USR1.
Альтернативным путем для смены log-ов является посылка log сообщений программе по вашему выбору через потоки. Эта программа может решить, каким образом и когда менять log файлы. Программы, которые могут быть полезны для, этого доступны на cronolog (не входит в Apache).
5. Использование одного конфигурационного файла *
Apache начинался с использованием трех различных конфигурационных файлов (srm.conf, access.conf и httpd.conf). Тем не менее, все они идентичны друг другу. Таким образом, вся конфигурация помещена в один файл httpd.conf, который читается первым. Этот файл включает директивы
AccessConfig /dev/null
ResourceConfig /dev/null
что предотвращает сообщения о пропуске srm.conf и access.conf файлов.
6. Запуск CGI программ с правами прочих пользователей
CGI программы всегда запускаются с правами пользователя, что и Apache сервер. Это устанавливается директивой User в конфигурационном файле, в основном это обычный пользователь, как, например, 'www' или 'nobody'. В большинстве случаев этого достаточно, так как CGI скрипты должны запускаться с малыми привилегиями, чтобы исключить опасность разрушения системы. Тем не менее, в некоторых случаях нужно запускать CGI программы с правами других пользователя. Например:
На одном виртуальном хосте с несколькими заказчиками CGI скрипты должны запускаться с правами заказчика для обеспечения возможности чтения из файлов и внесения в них записей.
В прочих системах с несколькими пользователями CGI скрипты должны запускаться из домашних каталогов пользователей.
Способность для запуска CGI программ с правами прочих пользователей относится к 'running setuid', после чего файловая система Unix способна запустить программу с правами прочих пользователей .Самая большая проблема с наличием setuid средства CGI на web-сервере - это защита.
Нужно быть очень осторожным, чтобы программа, выполняющая setuid, не могла быть вызвана, и система не была повреждена. Наличие setuid программы в системе может быть опасно, особенно, если Вы не доверяете другим пользователям системы. Риск состоит в том, что другие пользователи могут выполнять setuid программу вручную (из командной строки) и давать команды, которые заставят выполнить эти нежелательные действия. Риск при использовании setuid программ известен Unix администраторам, но многие администраторы сети не имеют так большого опыта Unix или setuid программирования.
Программа suEXEC, включенная в Apache, предоставляет один из методов для запуска CGI программ с правами прочих пользователей.
7. Игнорирование файлов
Некоторые файлы никогда не должны запрашиваться пользователем: файлы, называемые .htaccess, .htpasswd, *.pl, * ~ и так далее. Это моно осуществить, закрыв доступ к этим файлам, использующим раздел. Например
order allow,deny
deny from all
8. Создание HTML сценариев
Простым способом добавления в сервер новых возможностей без большого объема программирования является использование "включаемых HTML". Это закрытая сторона сервера, которая позволяет использовать переменные, условные выражения, циклы и так далее. Подобно SSI, эти сценарии исполняются на стороне сервера и работают со всеми браузерами. Эти дополнительные включения в HTML сценарии снова доступны: SSI (часть Apache); NeoScript (прилинкован к apache как модуль); PHP.
9. Принудительное выполнение обработчиков или mime типов
Чтобы все файлы в указанном каталоге были обработаны данным обработчиком или были возвращены с указанным типом, были добавлены новые директивы. Чтобы установить обработчик, используйте SetHandler, а тип mime устанавливайте, используя ForceType.
Обратите внимание, что с использованием данных директив определенный тип или обработчик применяется ко всем файлам в разделе, независимо от расширения, отображающего правила.
Например, каталог может использовать "ForceType applicaton/octet-stream" в .htaccess, чтобы передать браузеру сведения, что файл нужно сохранить, а не пытаться отобразить на экране.
Или все файлы в каталоге могут быть обработаны как программы CGI
SetHandler cgi-script