diff --git a/ru_RU.KOI8-R/books/handbook/advanced-networking/chapter.sgml b/ru_RU.KOI8-R/books/handbook/advanced-networking/chapter.sgml
index c7ef95d252..cb259da419 100644
--- a/ru_RU.KOI8-R/books/handbook/advanced-networking/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/advanced-networking/chapter.sgml
@@ -1,4498 +1,4498 @@
АндрейЗахватовПеревод на русский язык: Сложные вопросы работы в сетиКраткий обзорЭта глава охватывает множество различных сетевых тематик
повышенной сложности.После чтения этой главы вы будете знать:Основные понятия о маршрутизации и маршрутах.Как настроить IEEE 802.11 и &bluetooth;.Как заставить FreeBSD работать в качестве сетевого
моста.Как настроить загрузку по сети для бездисковой машины.Как настроить трансляцию сетевых адресов.Как соединить два компьютера посредством PLIP.Как настроить IPv6 на машине FreeBSD.Как настроить ATM в &os; 5.X.Перед чтением этой главы вы должны:Понимать основы работы скриптов
/etc/rc.Свободно владеть основными сетевыми терминами.Знать как настраивать и устанавливать новое ядро FreeBSD
().Знать как устанавливать дополнительное программное
обеспечение сторонних разработчиков
().CoranthGryphonТекст предоставил Сетевые шлюзы и маршрутымаршрутизацияшлюзподсетьЧтобы некоторая машина могла найти в сети другую, должен иметься
механизм описания того, как добраться от одной машине к другой. Такой
механизм называется маршрутизацией.
Маршрут задаётся
парой адресов: адресом назначения (destination) и
сетевым шлюзом (gateway). Эта пара указывает на то, что
если Вы пытаетесь соединиться с адресом назначения,
то вам нужно устанавливать связь через сетевой шлюз.
Существует три типа адресов назначения: отдельные хосты, подсети и
маршрут по умолчанию (default). Маршрут по
умолчанию (default route) используется, если не подходит ни один
из других маршрутов. Мы поговорим немного подробнее о маршрутах по
умолчанию позже. Также имеется и три типа сетевых шлюзов: отдельные
хосты, интерфейсы (также называемые подключениями
(links)) и аппаратные адреса Ethernet (MAC-адреса).ПримерДля иллюстрации различных аспектов маршрутизации мы будем
использовать следующий пример использования команды
netstat:&prompt.user; netstat -r
Routing tables
Destination Gateway Flags Refs Use Netif Expire
default outside-gw UGSc 37 418 ppp0
localhost localhost UH 0 181 lo0
test0 0:e0:b5:36:cf:4f UHLW 5 63288 ed0 77
10.20.30.255 link#1 UHLW 1 2421
example.com link#1 UC 0 0
host1 0:e0:a8:37:8:1e UHLW 3 4601 lo0
host2 0:e0:a8:37:8:1e UHLW 0 5 lo0 =>
host2.example.com link#1 UC 0 0
224 link#1 UC 0 0маршрут по умолчаниюВ первых двух строках задаются маршрут по умолчанию (который
будет описан в следующем
разделе) и маршрут на localhost.устройство loopbackИнтерфейс (колонка Netif), который указан в
этой таблице маршрутов для использования с
localhost и который назван
lo0, имеет также второе название, устройство
loopback. Это значит сохранение всего трафика для указанного адреса
назначения внутри, без посылки его по сети, так как он все равно
будет направлен туда, где был создан.EthernetMAC адресСледующими выделяющимися адресами являются адреса, начинающиеся с
0:e0:.... Это аппаратные адреса Ethernet,
или MAC-адреса. FreeBSD будет автоматически распознавать любой хост
(в нашем примере это test0) в локальной сети Ethernet
и добавит маршрут для этого хоста, указывающий непосредственно на
интерфейс Ethernet, ed0. С этим типом
маршрута также связан параметр таймаута (колонка
Expire), используемый в случае неудачной попытки
услышать этот хост в течении некоторого периода времени. Если такое
происходит, то маршрут до этого хоста будет автоматически удалён.
Такие хосты поддерживаются
при помощи механизма, известного как RIP (Routing Information
Protocol), который вычисляет маршруты к хостам локальной сети при
помощи определения кратчайшего расстояния.подсетьFreeBSD добавит также все маршруты к подсетям для локальных
подсетей (10.20.30.255 является
широковещательным адресом для подсети 10.20.30, а имя example.com является именем домена, связанным
с этой подсетью). Назначение link#1 соответствует
первому адаптеру Ethernet в машине. Отметьте отсутствие
дополнительного интерфейса для этих строк.В обеих этих группах (хосты и подсети локальной сети) маршруты
конфигурируются автоматически даемоном, который называется
routed. Если он не запущен, то будут
существовать только статически заданные (то есть введенные явно)
маршруты.Строка host1 относится к нашему хосту, который
известен по адресу Ethernet. Так как мы являемся посылающим хостом,
FreeBSD знает, что нужно использовать loopback-интерфейс
(lo0) вместо того, чтобы осуществлять
посылку в интерфейс Ethernet.Две строки host2 являются примером того, что
происходит при использовании алиасов в команде &man.ifconfig.8;
(обратитесь к разделу об Ethernet для объяснения того, почему мы это
делаем). Символ => после интерфейса
lo0 указывает на то, что мы используем не
просто интерфейс loopback (так как это адрес, обозначающий локальный
хост), но к тому же это алиас. Такие маршруты появляются только
на хосте, поддерживающем алиасы; для всех остальных хостов в локальной
сети для таких маршрутов будут показаны просто строчки
link#1.Последняя строчка (подсеть назначения 224) имеет отношение к многоадресной посылке,
которая будет рассмотрена в другом разделе.И наконец, различные атрибуты каждого маршрута перечисляются в
колонке Flags. Ниже приводится краткая таблица
некоторых из этих флагов и их значений:
-
+ UUp: Маршрут актуален.HHost: Адресом назначения является отдельный хост.GGateway: Посылать все для этого адреса назначения на
указанную удаленную систему, которая будет сама определять
дальнейший путь прохождения информации.SStatic: Маршрут был настроен вручную, а не автоматически
сгенерирован системой.CClone: Новый маршрут сгенерирован на основе указанного для
машин, к которым мы подключены. Такой тип маршрута обычно
используется для локальных сетей.WWasCloned: Указывает на то, что маршрут был автоматически
сконфигурирован на основе маршрута в локальной
сети (Clone).LLink: Маршрут включает ссылку на аппаратный адрес
Ethernet.Маршруты по умолчаниюмаршрут по умолчаниюКогда локальной системе нужно установить соединение с удаленным
хостом, она обращается к таблице маршрутов для того, чтобы определить,
существует ли такой маршрут. Если удаленный хост попадает в подсеть,
для которой известен способ ее достижения (маршруты типа Cloned), то
система определяет возможность подключиться к ней по этому
интерфейсу.Если все известные маршруты не подходят, у системы имеется
последняя возможность: маршрут default. Это маршрут
с особым типом сетевого шлюза (обычно единственным, присутствующим
в системе), и в поле флагов он всегда помечен как c.
Для хостов в локальной сети этот сетевой шлюз указывает на машину,
имеющую прямое подключение к внешнему миру (неважно, используется ли
связь по протоколу PPP, канал DSL, кабельный модем, T1 или какой-то
другой сетевой интерфейс).Если вы настраиваете маршрут по умолчанию на машине, которая сама
является сетевым шлюзом во внешний мир, то маршрутом по умолчанию
будет являться сетевой шлюз у Вашего провайдера Интернет (ISP).Давайте взглянем на примеры маршрутов по умолчанию. Вот типичная
конфигурация:
[Local2] <--ether--> [Local1] <--PPP--> [ISP-Serv] <--ether--> [T1-GW]
Хосты Local1 и Local2 находятся в
нашей сети. Local1 подключён к ISP через
коммутируемое соединение по протоколу PPP. Этот компьютер с сервером
PPP подключён посредством локальной сети к другому шлюзовому компьютеру
через внешний интерфейс самого ISP к Интернет.Маршруты по умолчанию для каждой из ваших машин будут
следующими:
-
+ ХостМаршрут по умолчаниюИнтерфейсLocal2Local1EthernetLocal1T1-GWPPPЧасто задаётся вопрос Почему (или каким образом) в качестве
шлюза по умолчанию для машины Local1 мы указываем
T1-GW, а не сервер провайдера, к которому
подключаемся?.Запомните, что из-за использования PPP-интерфейсом адреса в сети
провайдера Интернет с вашей стороны соединения, маршруты для всех
других машин в локальной сети провайдера будут сгенерированы
автоматически. Таким образом, вы уже будете знать, как достичь машины
T1-GW, так что нет нужды в промежуточной точке при
посылке трафика к серверу ISP.В локальных сетях адрес X.X.X.1 часто используется в качестве адреса
сетевого шлюза. Тогда (при использовании того же самого примера)
если пространство адресов класса C вашей локальной сети было задано
как 10.20.30, а ваш провайдер использует
10.9.9, то маршруты по умолчанию будут
такие:
-
+ ХостМаршрут по умолчаниюLocal2 (10.20.30.2)Local1 (10.20.30.1)Local1 (10.20.30.1, 10.9.9.30)T1-GW (10.9.9.1)Вы можете легко задать используемый по умолчанию маршрутизатор
посредством файла /etc/rc.conf. В нашем примере
на машине Local2 мы добавили такую строку в файл
/etc/rc.conf:defaultrouter="10.20.30.1"Это также возможно сделать и непосредственно из командной строки
при помощи команды &man.route.8;:&prompt.root; route add default 10.20.30.1Для получения дополнительной информации об управлении таблицами
маршрутизации, обратитесь к справочной странице по команде
&man.route.8;.Хосты с двойным подключениемхосты с двойным подключениемЕсть еще один тип подключения, который мы должны рассмотреть, и это
случай, когда хост находится в двух различных сетях. Технически,
любая машина, работающая как сетевой шлюз (в примере выше
использовалось PPP-соединение), считается хостом с двойным
подключением. Однако этот термин реально используется для описания
машины, находящейся в двух локальных сетях.В одном случае у машины имеется два адаптера Ethernet, каждый
имеющий адрес в разделенных подсетях. Как альтернативу можно
рассмотреть вариант с одним Ethernet-адаптером и использованием
алиасов в команде &man.ifconfig.8;. В первом случае используются два
физически разделённые сети Ethernet, в последнем имеется один
физический сегмент сети, но две логически разделённые подсети.В любом случае таблицы маршрутизации настраиваются так, что для
каждой подсети эта машина определена как шлюз (входной маршрут) в
другую подсеть. Такая конфигурация, при которой машина выступает в
роли маршрутизатора между двумя подсетями, часто используется, если
нужно реализовать систему безопасности на основе фильтрации пакетов или
функций брандмауэра в одном или обоих направлениях.Если вы хотите, чтобы эта машина действительно перемещала пакеты
между двумя интерфейсами, то вам нужно указать FreeBSD на включение
этой функции. Обратитесь к следующей главе, чтобы узнать, как это
сделать.Построение маршрутизаторамаршрутизаторСетевой маршрутизатор является обычной системой, которая
пересылает пакеты с одного интерфейса на другой. Стандарты Интернет и
хорошая инженерная практика не позволяют Проекту FreeBSD включать эту
функцию по умолчанию во FreeBSD. Вы можете включить эту возможность,
изменив значение следующей переменной в YES в файле
&man.rc.conf.5;:gateway_enable=YES # Set to YES if this host will be a gatewayЭтот параметр изменит значение &man.sysctl.8;-переменной
net.inet.ip.forwarding в
1. Если вам временно нужно выключить маршрутизацию,
вы можете на время сбросить это значение в 0.Вашему новому маршрутизатору нужна информация о маршрутах для того,
чтобы знать, куда пересылать трафик. Если ваша сеть достаточно проста,
то вы можете использовать статические маршруты. С FreeBSD также
поставляется стандартный даемон BSD для маршрутизации &man.routed.8;,
который умеет работать с RIP (как версии 1, так и версии 2) и IRDP.
Поддержка BGP v4, OSPF v2 и других сложных протоколов маршрутизации
имеется в пакете net/zebra. Также
существуют и коммерческие продукты, применяемые как более комплексное
решение проблемы маршрутизации в сети, такие как
&gated;.BGPRIPOSPFДаже когда FreeBSD настроена таким образом, она не полностью
соответствует стандартным требованиям Интернет для маршрутизаторов.
Однако для обычного использования такое неполное соответствие
достаточно.AlHoangПредоставил Настройка статических маршрутовРучная настройкаПредположим, что у нас есть следующая сеть:
INTERNET
| (10.0.0.1/24) Default Router to Internet
|
|Interface xl0
|10.0.0.10/24
+------+
| | RouterA
| | (FreeBSD gateway)
+------+
| Interface xl1
| 192.168.1.1/24
|
+--------------------------------+
Internal Net 1 | 192.168.1.2/24
|
+------+
| | RouterB
| |
+------+
| 192.168.2.1/24
|
Internal Net 2
В этом сценарии, RouterA это наш
компьютер с &os;, который выступает в качестве
маршрутизатора в сеть Интернет. Его маршрут по умолчанию
настроен на 10.0.0.1, что позволяет ему
соединяться с внешним миром. Мы будем предполагать, что
RouterB уже правильно настроен и
знает все необходимые маршруты (на этом рисунке все
просто; добавьте на RouterB маршрут
по умолчанию, используя 192.168.1.1 в качестве шлюза).Если мы посмотрим на таблицу маршрутизации
RouterA, то увидим примерно следующее:&prompt.user; netstat -nr
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 10.0.0.1 UGS 0 49378 xl0
127.0.0.1 127.0.0.1 UH 0 6 lo0
10.0.0/24 link#1 UC 0 0 xl0
192.168.1/24 link#2 UC 0 0 xl1С текущей таблицей маршрутизации RouterA
не сможет достичь внутренней сети 2 (Internal Net 2).
Один из способов обхода этой проблемы — добавление
маршрута вручную. Следующая команда добавляет
внутреннюю сеть 2 к таблице маршрутизации
RouterA с 192.168.1.2 в качестве следующего
узла:&prompt.root; route add -net 192.168.2.0/24 192.168.1.2Теперь RouterA сможет достичь любого хоста
в сети
192.168.2.0/24.Постоянная конфигурацияПредыдущий пример прекрасно подходит для настройки статического
маршрута в работающей системе. Однако, проблема заключается в
том, что маршрутная информация не сохранится после перезагрузки
&os;. Способ сохранения добавленного маршрута заключается в
добавлении его в файл /etc/rc.conf:# Добавление статического маршрута в Internal Net 2
static_routes="internalnet2"
route_internalnet2="-net 192.168.2.0/24 192.168.1.2"В переменной static_routes находятся
строки, разделенные пробелами. Каждая строка означает имя
маршрута. В примере выше в static_routes
есть только одна строка, это
internalnet2. Затем мы добавили
переменную
route_internalnet2,
куда помещены все параметры, которые необходимо передать
команде &man.route.8;. В примере выше была использована
команда:&prompt.root; route add -net 192.168.2.0/24 192.168.1.2поэтому нам потребуется
"-net 192.168.2.0/24 192.168.1.2".Как было сказано выше, мы можем добавить в
static_routes более чем одну строку.
Это позволит создать несколько статических маршрутов.
В следующем примере показано добавление маршрутов для сетей 192.168.0.0/24 и 192.168.1.0/24 (этот маршрутизатор не
показан на рисунке выше:static_routes="net1 net2"
route_net1="-net 192.168.0.0/24 192.168.0.1"
route_net2="-net 192.168.1.0/24 192.168.1.1"Распространение маршрутовраспространение маршрутовМы уже говорили о том, как мы задаем наши маршруты во внешний мир,
но не упоминали о том, как внешний мир находит нас.Мы уже знаем, что таблицы маршрутизации могут быть настроены так,
что весь трафик для некоторого диапазона адресов (в нашем примере это
подсеть класса C) может быть направлен заданному хосту в той сети,
которая будет перенаправлять входящие пакеты дальше.При получении адресного пространства, выделенного Вашей сети,
Ваш провайдер настроит свои таблицы маршрутизации так, что весь трафик
для Вашей подсети будет пересылаться по PPP-соединению к Вашей сети.
Но как серверы по всей стране узнают, что Ваш трафик нужно посылать
Вашему ISP?Существует система (подобная распределению информации DNS), которая
отслеживает все назначенные пространства адресов и определяет точку
подключения к магистрали Интернет. Магистралью называют
главные каналы, по которым идет трафик Интернет внутри страны и по
всему миру. Каждая магистральная машина имеет копию основного набора
таблиц, согласно которой трафик для конкретной сети направляется по
конкретному магистральному каналу, и затем, передаваясь по цепочке
провайдеров, он достигает вашей сети.Задачей вашего провайдера является объявить на магистрали о том,
что он отвечает за подключение (и поэтому на него указывает маршрут)
вашей сети. Этот процесс называется распространением маршрута.Устранение неполадокtracerouteИногда с распространением маршрута возникают проблемы, и некоторые
сайты не могут к вам подключиться. Наверное, самой полезной командой
для определения точки неверной работы маршрутизации является
&man.traceroute.8;. Она также полезна и когда вы сами не можете
подключиться к удаленной машине (то есть команда &man.ping.8; не
срабатывает).Команда &man.traceroute.8; запускается с именем удаленного хоста, с
которым вы хотите установить соединение, в качестве параметра. Она
показывает промежуточные сетевые шлюзы по пути следования, в конце
концов достигая адрес назначения или прерывая свою работу из-за
отсутствия соединения.За дополнительной информацией обратитесь к странице Справочника по
&man.traceroute.8;.Маршрутизация многоадресного трафикаmulticastoptions MROUTINGFreeBSD изначально поддерживает как приложения, работающие с
многоадресным трафиком, так и его маршрутизацию. Такие приложения не
требуют особой настройки FreeBSD; обычно они работают сразу.
Для маршрутизации многоадресного трафика требуется, чтобы поддержка
этого была включена в ядро:options MROUTINGКроме того, даемон многоадресной маршрутизации, &man.mrouted.8;,
должен быть настроен посредством файла
/etc/mrouted.conf на использование туннелей и
DVMRP. Дополнительную информацию о настройки
многоадресного трафика
можно найти на страницах справочной системы, посвящённых даемону
&man.mrouted.8;.EricAndersonТекст предоставил АндрейЗахватовПеревёл на русский язык Беспроводные сетибеспроводные сети802.11беспроводные сетиВведениеБыло бы весьма полезным иметь возможность использовать компьютер
без хлопот, связанных с постоянно подключенным сетевым кабелем.
FreeBSD может использоваться как клиент беспроводной сети, и даже
в качестве точки доступа к ней.Режимы работы беспроводной связиСуществуют два варианта конфигурации устройств беспроводного
доступа 802.11: BSS и IBSS.Режим BSSРежим BSS является наиболее часто используемым. Режим BSS также
называют режимом инфраструктуры. В этом режиме несколько точек
доступа беспроводной сети подключаются к проводной сети передачи
данных. Каждое беспроводная сеть имеет собственное имя. Это имя
является идентификатором SSID сети.Клиенты беспроводной сети подключаются к этим точкам доступа
беспроводной сети. Стандарт IEEE 802.11 определяет протокол,
используемый для связи в беспроводных сетях. Клиент сети
беспроводного доступа может подключаться к некоторой сети, если
задан её SSID. Клиент может также подключаться к любой сети, если
SSID не задан.Режим IBSSРежим IBSS, также называемый ad-hoc, предназначен для соединений
точка-точка. На самом деле существуют два типа режима ad-hoc. Один
из них является режимом IBSS, называемый также режимом ad-hoc или
IEEE ad-hoc. Этот режим определён стандартами IEEE 802.11. Второй
режим называется демонстрационным режимом ad-hoc, или Lucent ad-hoc
(или, иногда неправильно, режимом ad-hoc). Это старый,
существовавший до появления 802.11, режим ad-hoc, и он должен
использоваться только для старых сетей. В дальнейшем мы не будем
рассматривать ни один из режимов ad-hoc.Режим инфраструктурыТочки доступаТочки доступа представляют собой беспроводные сетевые устройства,
позволяющие одному или большему количеству клиентов беспроводной сети
использовать эти устройства в качестве центрального сетевого
концентратора. При использовании точки доступа все клиенты работают
через неё. Зачастую используются несколько точек доступа для полного
покрытия беспроводной сетью некоторой зоны, такой, как дом, офис или
парк.Точки доступа обычно имеют несколько подключений к сети: адаптер
беспроводной связи и один или большее количество сетевых
ethernet-адаптеров для подключения к остальной части сети.Точки доступа могут быть либо приобретены уже настроенными, либо
вы можете создать собственную при помощи FreeBSD и поддерживаемого
адаптера беспроводной связи. Несколько производителей выпускают
точки беспроводного доступа и адаптеры беспроводной связи с
различными возможностями.Построение точки доступа с FreeBSDбеспроводные сетиточка доступаТребованияДля того, чтобы создать беспроводную точку доступа на FreeBSD,
вам нужно иметь совместимый адаптер беспроводной связи. На данный
момент поддерживаются адаптеры только на основе набора микросхем
Prism. Вам также потребуется поддерживаемый FreeBSD адаптер
проводной сети (найти такой будет нетрудно, FreeBSD поддерживает
множество различных устройств). В этом руководстве мы будем
полагать, что вы будете строить сетевой мост (&man.bridge.4;) для
пропуска всего трафика между устройством беспроводной связи и
сетью, подключенной к обычному Ethernet-адаптеру.Функциональность hostap, которая используется FreeBSD для
организации точки доступа, работает лучше всего с некоторыми
версиями микрокода. Адаптеры Prism 2 должны использовать микрокод
версии 1.3.4 или более новый. Адаптеры Prism 2.5 и Prism 3 должны
использовать микрокод версии 1.4.9. Более старые версии микрокода
могут работать нормально, а могут и некорректно. В настоящее время
единственным способом обновления адаптеров является использование
утилит обновления для &windows;, которые можно получить у
производителя ваших адаптеров.НастройкаПервым делом убедитесь, что ваша система распознаёт адаптер
беспроводной связи:&prompt.root; ifconfig -a
wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7
inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255
ether 00:09:2d:2d:c9:50
media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps)
status: no carrier
ssid ""
stationname "FreeBSD Wireless node"
channel 10 authmode OPEN powersavemode OFF powersavesleep 100
wepmode OFF weptxkey 1На данном этапе не беспокойтесь о деталях, просто убедитесь,
что выдаётся нечто, указывающее на установленный адаптер
беспроводной связи. Если при этом у вас есть проблемы с
недоступностью интерфейса беспроводной связи, и вы используете
PC Card, то обратитесь к страницам справочной системы, описывающим
&man.pccardc.8; и &man.pccardd.8; для получения более полной
информации.Теперь вам нужно загрузить модуль для подготовки той части
FreeBSD, что отвечает за организацию сетевых мостов, для работы
с точкой доступа. Для загрузки модуля &man.bridge.4; просто
выполните следующую команду:&prompt.root; kldload bridgeПри загрузке модуля никаких сообщений об ошибках быть не
должно. Если это всё же произошло, вам может потребоваться
вкомпилировать код для модуля &man.bridge.4; в ядро. В этом вам
должен помочь раздел этого Руководства об организации сетевых
мостов.Теперь, когда вы завершили с той частью, что касается
организации сетевого моста, нам нужно указать ядру FreeBSD, какие
интерфейсы должны объединяться в сетевом мосте. Это мы делаем
при помощи &man.sysctl.8;:&prompt.root; sysctl net.link.ether.bridge=1
&prompt.root; sysctl net.link.ether.bridge_cfg="wi0,xl0"
&prompt.root; sysctl net.inet.ip.forwarding=1Во &os; 5.2-RELEASE и последующих версиях нужно
использовать вместо указанных следующие параметры:&prompt.root; sysctl net.link.ether.bridge.enable=1
&prompt.root; sysctl net.link.ether.bridge.config="wi0,xl0"
&prompt.root; sysctl net.inet.ip.forwarding=1Теперь необходимо настроить адаптер беспроводной сети.
Следующая команда заставит адаптер работать в режиме точки
доступа:
&prompt.root; ifconfig wi0 ssid my_net channel 11 media DS/11Mbps mediaopt hostap up stationname "FreeBSD AP"Строчка &man.ifconfig.8; активизирует интерфейс
wi0, конфигурирует его SSID как
my_net, а имя станции как
FreeBSD AP.
переводит адаптер в
режим 11Mbps и нужен только для того, чтобы сработал параметр
. Параметр переводит интерфейс в режим точки доступа.
Параметр задаёт использование канала
802.11b. Страница справки по команде &man.wicontrol.8; перечисляет
корректные значения каналов для ваших нужд.Теперь у вас должна получиться полнофункциональная работающая
точка доступа. Настоятельно советуем прочесть страницы справочной
по &man.wicontrol.8;, &man.ifconfig.8;, и &man.wi.4; для
получения дополнительной информации.Также полагаем, что вы прочтёте следующий раздел о
шифровании.Информация о состоянииПосле того, как точка доступа сконфигурирована и начала свою
работу, операторам может понадобиться видеть клиентов, связанных
с этой точкой. В любой момент оператор может набрать:&prompt.root; wicontrol -l
1 station:
00:09:b7:7b:9d:16 asid=04c0, flags=3<ASSOC,AUTH>, caps=1<ESS>, rates=f<1M,2M,5.5M,11M>, sig=38/15Это показывает, что имеется одна связанная станция с
перечисленными характеристиками. Выдаваемое значение сигнала должно
использоваться только как сравнительный индикатор его силы. Его
перевод в dBm или другие единицы измерения различаются в разных
версиях микрокода.КлиентыКлиент в беспроводной сети представляет собой систему, которая
обращается к точке доступа или непосредственно к другому
клиенту.Как правило, клиенты беспроводной сети имеют только один сетевой
адаптер, а именно адаптер беспроводной сети.Существует несколько различных способов конфигурации клиента
беспроводной сети. Они основаны на различных режимах работы в
беспроводной сети, обычно BSS (режим инфраструктуры, который требует
точки доступа) или IBSS (ad-hoc или режим одноранговой сети). В
нашем примере мы будем использовать самый популярный их них, режим
BSS, для связи с точкой доступа.ТребованияСуществует только одно жёсткое условие для настройки FreeBSD в
качестве клиента беспроводной сети. Вам нужен адаптер беспроводной
связи, поддерживаемый FreeBSD.Конфигурация FreeBSD как клиента беспроводной сетиПеред тем, как подключиться к беспроводной сети, вам нужно
будет узнать о ней несколько вещей. В этом примере мы подключаемся
к сети, которая называется my_net,
и шифрование в ней отключено.В этом примере мы не используем шифрование, но
это небезопасно. В следующем разделе вы узнаете, как её включить,
почему это так важно, и почему некоторые технологии шифрования всё
же не могут полностью обеспечить вашу информационную
безопасность.Удостоверьтесь, что ваш адаптер распознаётся во FreeBSD:&prompt.root; ifconfig -a
wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7
inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255
ether 00:09:2d:2d:c9:50
media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps)
status: no carrier
ssid ""
stationname "FreeBSD Wireless node"
channel 10 authmode OPEN powersavemode OFF powersavesleep 100
wepmode OFF weptxkey 1Теперь мы можем изменить настройки адаптера на те, что соответствуют
нашей сети:&prompt.root; ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid my_netЗамените 192.168.0.20 и 255.255.255.0 на правильные IP-адрес и
сетевую маску в вашей проводной сети. Запомните, что наша точка
доступа выступает в роли моста для данных между беспроводной и
проводной сетями, так что они будут доступны для других устройств,
находящихся в сети, как будто они тоже находятся в проводной
сети.Как только вы это выполнили, то сможете получить ping от хостов
в проводной сети, как будто вы подключены посредством обычных
проводов.Если вы столкнулись с проблемами при работе в беспроводной
сети, удостоверьтесь, что вы ассоциированы (подключены) с точкой
доступа:&prompt.root; ifconfig wi0должна выдать некоторую информацию, и вы должны увидеть:status: associatedЕсли статус не будет соответствовать
associated, это
может значить, что вы оказались вне зоны досягаемости точки
доступа, включили шифрование или, возможно, имеются проблемы с
конфигурацией.Шифрованиебеспроводные сетишифрованиеШифрование в беспроводной сети имеет важное значение, потому что
у вас нет больше возможности ограничить сеть хорошо защищённой
областью. Данные вашей беспроводной сети вещаются по всей
окрестности, так что любой заинтересовавшийся может их считать. Вот
здесь используется шифрование. Шифруя данные, посылаемые в
эфир, вы делаете их прямой перехват гораздо более сложным для всех
любопытных.Двумя наиболее широко применяемыми способами шифрации данных
между вашим клиентом и точкой доступа являются WEP
и &man.ipsec.4;.WEPWEPWEP является сокращением от Wired Equivalency Protocol
(Протокол Соответствия Проводной сети). WEP является попыткой
сделать беспроводные сети такими же надёжными и безопасными, как
проводные. К сожалению, он был взломан и сравнительно легко
поддаётся вскрытию. Это означает также, что он не тот протокол,
на который следует опираться, когда речь идёт о шифровании
критически важных данных.Он лучше, чем ничего, так что используйте следующую команду для
включения WEP в вашей новой точке доступа FreeBSD:&prompt.root; ifconfig wi0 inet up ssid my_net wepmode on wepkey 0x1234567890 media DS/11Mbps mediaopt hostapВы можете включить WEP на клиенте следующей командой:&prompt.root; ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid my_net wepmode on wepkey 0x1234567890Отметьте, что вы должны заменить
0x1234567890 на более уникальный ключ.IPsec&man.ipsec.4; является гораздо более надёжным и мощным
средством шифрования данных в сети. Этот метод определённо
является предпочтительным для шифрования данных в беспроводной
сети. Более детально ознакомиться с безопасностью и применением
&man.ipsec.4; вы можете в разделе об IPsec этого Руководства.УтилитыИмеется несколько утилит, которые можно использовать для
настройки и отладки вашей беспроводной сети, и здесь мы попытаемся
описать некоторые из них и что они могут делать.Пакет bsd-airtoolsПакет bsd-airtools представляет
собой полный набор инструментов, включая инструменты для проверки
беспроводной сети на предмет взлома WEP-ключа,
обнаружения точки доступа и тому подобное.Утилиты bsd-airtools можно
установить из порта net/bsd-airtools. Информацию
об установке портов можно найти в Главе
этого Руководства.Программа dstumbler является инструментом,
предназначенным для обнаружения точки доступа и выдачи отношения
уровня сигнала к шуму. Если у вас с трудом получается запустить
точку доступа, dstumbler может помочь вам
начать.Для тестирования информационной безопасности вашей беспроводной
сети, вы можете воспользоваться набором dweputils
(dwepcrack, dwepdump и
dwepkeygen), который может помочь
понять, является ли WEP подходящим решением для обеспечения ваших
потребностей в информационной безопасности.Утилиты wicontrol,
ancontrol и
raycontrolЭто инструменты, которые могут быть использованы для
управления поведением
адаптера беспроводной связи в сети. В примере выше мы выбирали
&man.wicontrol.8;, так как нашим адаптером беспроводной сети был
интерфейс wi0. Если у вас установлено
устройство беспроводного доступа от Cisco, этим интерфейсом будет
an0, и тогда вы будете
использовать &man.ancontrol.8;.Команда ifconfigifconfigКоманда &man.ifconfig.8; может использоваться для установки
многих из тех параметров, что задаёт &man.wicontrol.8;, однако
работа с некоторыми параметрами в ней отсутствует. Обратитесь к
&man.ifconfig.8; для выяснения параметров и опций командной
строки.Поддерживаемые адаптерыТочки доступаЕдинственными адаптерами, которые на данный момент
поддерживаются в режиме BSS (как точка доступа), являются те
устройства, что сделаны на основе набора микросхем Prism 2, 2.5
или 3). Полный список можно увидеть в &man.wi.4;.Клиенты 802.11bПрактически все адаптеры беспроводной связи 802.11b на данный
момент во FreeBSD поддерживаются. Большинство адаптеров,
построенных на основе Prism, Spectrum24, Hermes, Aironet и Raylink,
будут работать в качестве адаптера беспроводной сети в режиме
IBSS (ad-hoc, одноранговая сеть и BSS).Клиенты 802.11a и 802.11gДрайвер устройства &man.ath.4; поддерживает 802.11a и 802.11g.
Если ваша карта основана на чипсете Atheros, вы можете использовать
этот драйвер.К сожалению, все еще много производителей, не предоставляющих
схематику своих драйверов сообществу open source, поскольку
эта информация считается торговым секретом. Следовательно,
у разработчиков FreeBSD и других операционных систем остается
два варианта: разработать драйверы долгим и сложным методом
обратного инжиниринга, или использовать существующие драйверы
для платформ µsoft.windows;. Большинство разработчиков
FreeBSD выбрали второй способ.Благодаря усилиям Билла Паула (wpaul), начиная
с FreeBSD 5.3-RELEASE существует прозрачная
поддержка Network Driver Interface Specification (NDIS).
FreeBSD NDISulator (известный также как Project Evil)
преобразует бинарный драйвер &windows; так, что он работает
так же как и в &windows;. Эта возможность все еще относительно
новая, но в большинстве тестов она работает адекватно.Для использования NDISulator потребуются три
вещи:Исходные тексты ядраБинарный драйвер &windowsxp;
(расширение .SYS)Файл конфигурации бинарного драйвера &windowsxp;
(расширение .INF)Вам может потребоваться компиляция драйвера оболочки мини порта
&man.ndis.4;. Под root:&prompt.root; cd /usr/src/sys/modules/ndis
&prompt.root; make && make installОпределите местоположение файлов для вашей карты. Обычно
их можно найти на входящем в комплект CD или на веб сайте
поставщика. В нашем примере используются файлы
W32DRIVER.SYS и
W32DRIVER.INF.Следующий шаг это компиляция бинарного драйвера в
загружаемый модуль ядра. Чтобы сделать это, сначала зайдите в
каталог модуля if_ndis и с правами
root скопируйте туда драйверы
&windows;:&prompt.root; cd /usr/src/sys/modules/if_ndis
&prompt.root; cp /path/to/driver/W32DRIVER.SYS ./
&prompt.root; cp /path/to/driver/W32DRIVER.INF ./Теперь используйте утилиту ndiscvt для
создания заголовка определения драйвера
ndis_driver_data.h перед сборкой
модуля:&prompt.root; ndiscvt -i W32DRIVER.INF -s W32DRIVER.SYS -o ndis_driver_data.hПараметры и задают
соответственно файл настройки и бинарный файл. Мы используем
параметр , поскольку
Makefile при создании модуля будет
обращаться именно к этому файлу.Некоторым драйверам &windows; для работы требуются
дополнительные файлы. Вы можете включить их параметром
ndiscvt . Обратитесь
к странице справочной системы &man.ndiscvt.8; за
дополнительной информацией.Наконец, соберите и установите модуль драйвера:&prompt.root; make && make installДля использования драйвера необходимо загрузить соответствующие
модули:&prompt.root; kldload ndis
&prompt.root; kldload if_ndisПервая команда загружает оболочку драйвера минипорта NDIS,
вторая загружает собственно сетевой интерфейс. Проверьте
&man.dmesg.8; на предмет ошибок загрузки. Если все прошло
хорошо, вывод должен быть примерно таким:ndis0: <Wireless-G PCI Adapter> mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1
ndis0: NDIS API version: 5.0
ndis0: Ethernet address: 0a:b1:2c:d3:4e:f5
ndis0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
ndis0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54MbpsНачиная с этого момента вы можете использовать устройство
ndis0 как любое другое беспроводное
устройство (например, wi0);
в этой ситуации применима информация, приведенная в начале этой
главы.PavLucistnikТекст предоставил pav@oook.czBluetoothBluetoothВведениеBluetooth является беспроводной технологией для создания
персональных сетей на расстоянии не более 10 метров, работающей на
частоте 2.4 ГГц, которая не подлежит лицензированию. Обычно такие
сети формируются из портативных устройств, таких, как сотовые телефоны,
КПК и лаптопы. В отличие от Wi-Fi, другой популярной беспроводной
технологии, Bluetooth предоставляет более высокий уровень сервиса,
например, файловые серверы типа FTP, передачу файлов, голоса, эмуляцию
последовательного порта и другие.Стек протоколов Bluetooth во &os; реализован на основе технологии
Netgraph (обратитесь к &man.netgraph.4;). Широкий спектр USB-устройств
Bluetooth поддерживается драйвером &man.ng.ubt.4;. Устройства
Bluetooth на основе набора микросхем Broadcom BCM2033 поддерживается
драйвером &man.ng.bt3c.4;. Устройства Bluetooth, работающие через
последовательные и UART-порты, поддерживаются драйверами &man.sio.4;,
&man.ng.h4.4; и &man.hcseriald.8;. В этом разделе описывается
использование Bluetooth-устройств, подключаемых через USB. Поддержка
Bluetooth имеется во &os; 5.0 и более новых версиях системы.Подключение устройстваПо умолчанию драйверы устройств Bluetooth поставляются в виде
модулей ядра. Перед подключением устройства вам необходимо подгрузить
драйвер в ядро:&prompt.root; kldload ng_ubtЕсли Bluetooth-устройство в момент запуска системы подключено, то
загружайте модуль из файла
/boot/loader.conf:ng_ubt_load="YES"Подключите ваше USB-устройство. На консоли (или в журнале
syslog) появится примерно такое сообщение:ubt0: vendor 0x0a12 product 0x0001, rev 1.10/5.25, addr 2
ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2
ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3,
wMaxPacketSize=49, nframes=6, buffer size=294Скопируйте файл
/usr/share/examples/netgraph/bluetooth/rc.bluetooth
в какое-нибудь подходящее место, например, в файл
/etc/rc.bluetooth. Этот скрипт используется для
запуска и остановки работы Bluetooth-стека. Перед отключением
устройства рекомендуется остановить его работы, хотя (обычно) это не
фатально. При запуске стека вы получите сообщения, подобные
следующим:&prompt.root; /etc/rc.bluetooth start ubt0
BD_ADDR: 00:02:72:00:d4:1a
Features: 0xff 0xff 0xf 00 00 00 00 00
<3-Slot> <5-Slot> <Encryption> <Slot offset>
<Timing accuracy> <Switch> <Hold mode> <Sniff mode>
<Park mode> <RSSI> <Channel quality> <SCO link>
<HV2 packets> <HV3 packets> <u-law log> <A-law log> <CVSD>
<Paging scheme> <Power control> <Transparent SCO data>
Max. ACL packet size: 192 bytes
Number of ACL packets: 8
Max. SCO packet size: 64 bytes
Number of SCO packets: 8HCIHost Controller Interface (HCI)Host Controller Interface (HCI) предоставляет интерфейс для
управления контроллером передатчика и менеджером соединений, а также
доступ к данным о состоянии оборудования и его управляющим регистрам.
Этот интерфейс предоставляет унифицированный метод доступа к
передающим возможностям Bluetooth. Уровень HCI на управляющей машине
обменивается данными и командами с микрокодом HCI в оборудовании
Bluetooth. Драйвер для Host Controller Transport Layer (то есть
физической шины) предоставляет обоим слоям HCI возможность обмениваться
данными друг с другом.Для одного Bluetooth-устройства создаётся один узел Netgraph типа
hci. HCI-узел обычно подключается к узлу драйвера
устройства Bluetooth (входящий поток) и к узлу L2CAP (исходящий поток).
Все операции с HCI должны выполняться на узле HCI, но не на узле
драйвера устройства. В качестве имени по умолчанию для узла HCI
используется devicehci. Дополнительные подробности
можно найти на справочной странице &man.ng.hci.4;.Одной из самой часто выполняемой задач является обнаружение
Bluetooth-устройств в радиусе RF-доступности. Эта операция называется
опросом (inquiry). Опрос и другие операции,
связанные с HCI, выполняются при помощи утилиты &man.hccontrol.8;.
Пример ниже показывает, как найти доступные устройства Bluetooth.
Список таких устройств должен быть получен в течение нескольких секунд.
Заметьте, что удалённые устройства будут отвечать на опрос, если только
они находятся в режиме обнаруживаемости
(discoverable).&prompt.user; hccontrol -n ubt0hci inquiry
Inquiry result, num_responses=1
Inquiry result #0
BD_ADDR: 00:80:37:29:19:a4
Page Scan Rep. Mode: 0x1
Page Scan Period Mode: 00
Page Scan Mode: 00
Class: 52:02:04
Clock offset: 0x78ef
Inquiry complete. Status: No error [00]BD_ADDR является уникальным адресом устройства
Bluetooth, вроде MAC-адресов сетевых адаптеров. Этот адрес необходим
для дальнейшей работы с устройством. Адресу BD_ADDR можно присвоить
удобное для чтения имя. Файл /etc/bluetooth/hosts
содержит информацию об известных хостах Bluetooth. В следующем примере
показано, как получить имя, назначенное удалённому устройству:&prompt.user; hccontrol -n ubt0hci remote_name_request 00:80:37:29:19:a4
BD_ADDR: 00:80:37:29:19:a4
Name: Pav's T39Если вы выполните опрос на другом Bluetooth-устройстве, но ваш
компьютер будет опознан как your.host.name (ubt0).
Имя, назначаемое локальному устройству, может быть в любой момент
изменено.Система Bluetooth предоставляет услуги по соединениям типа
точка-точка (при этом задействованы только два устройства Bluetooth)
или точка-ко-многим-точкам. В последнем случае соединение используется
совместно несколькими устройствам Bluetooth. В следующем примере
показывается, как получить список активных для локального устройства
соединений:&prompt.user; hccontrol -n ubt0hci read_connection_list
Remote BD_ADDR Handle Type Mode Role Encrypt Pending Queue State
00:80:37:29:19:a4 41 ACL 0 MAST NONE 0 0 OPENИдентификатор соединения (connection handle)
полезен, когда необходимо прекратить соединение. Заметьте, что обычно
нет нужды делать это вручную. Стек будет автоматически разрывать
неактивные соединения.&prompt.root; hccontrol -n ubt0hci disconnect 41
Connection handle: 41
Reason: Connection terminated by local host [0x16]Обратитесь к помощи посредством hccontrol help
для получения полного списка доступных HCI-команд. Большинство команд
HCI для выполнения не требуют прав администратора системы.L2CAPLogical Link Control and Adaptation Protocol (L2CAP)Протокол L2CAP (Logical Link Control and Adaptation Protocol)
предоставляет услуги по работе с данными, как ориентированные на
соединения, так и без ориентации на них, протоколам более высокого
уровня с возможностями мультиплексирования и обеспечением операций по
сегментации и обратной сборке. L2CAP позволяет протоколам более
высокого уровня и приложениям передавать и получать пакеты данных
L2CAP длиной до 64 Кбайт.L2CAP основан на концепции каналов. Каналом
является логическое соединение поверх соединения по радиоканалу.
Каждый канал привязан к некоторому протоколу по принципу
многие-к-одному. Несколько каналов могут быть привязаны к одному и
тому же протоколу, но канал не может быть привязан к нескольким
протоколам. Каждый пакет L2CAP, получаемый каналом, перенаправляется
к соответствующему протоколу более высокого уровня. Несколько каналов
могут совместно использовать одно и то же радиосоединение.Для одного Bluetooth-устройства создается один узел Netgraph типа
l2cap. Узел L2CAP обычно подключается к узлу
Bluetooth HCI (нижестоящий) и узлам Bluetooth-сокетов (вышестоящие).
По умолчанию для узла L2CAP используется имя
devicel2cap. Для получения дополнительной информации
обратитесь к справочной странице по &man.ng.l2cap.4;.Полезной является программа &man.l2ping.8;, которая может
использоваться для проверки связи с другими устройствами. Некоторые
реализации Bluetooth могут не возвращать все данные, посылаемые им,
так что 0 bytes в следующем примере - это
нормально.&prompt.root; l2ping -a 00:80:37:29:19:a4
0 bytes from 0:80:37:29:19:a4 seq_no=0 time=48.633 ms result=0
0 bytes from 0:80:37:29:19:a4 seq_no=1 time=37.551 ms result=0
0 bytes from 0:80:37:29:19:a4 seq_no=2 time=28.324 ms result=0
0 bytes from 0:80:37:29:19:a4 seq_no=3 time=46.150 ms result=0Утилита &man.l2control.8; используется для выполнения различных
операций с узлами L2CAP. В этом примере показано, как получить список
логических соединений (каналов) и перечень радиосоединений локального
устройства:&prompt.user; l2control -a 00:02:72:00:d4:1a read_channel_list
L2CAP channels:
Remote BD_ADDR SCID/ DCID PSM IMTU/ OMTU State
00:07:e0:00:0b:ca 66/ 64 3 132/ 672 OPEN
&prompt.user; l2control -a 00:02:72:00:d4:1a read_connection_list
L2CAP connections:
Remote BD_ADDR Handle Flags Pending State
00:07:e0:00:0b:ca 41 O 0 OPENЕщё одним диагностическим инструментом является &man.btsockstat.1;.
Она выполняет действия, подобные тем, что обычно выполняет
&man.netstat.1;, но со структурами данных, связанных с работой в сети
Bluetooth. В примере ниже описывается то же самое логическое
соединение, что и с &man.l2control.8; выше.&prompt.user; btsockstat
Active L2CAP sockets
PCB Recv-Q Send-Q Local address/PSM Foreign address CID State
c2afe900 0 0 00:02:72:00:d4:1a/3 00:07:e0:00:0b:ca 66 OPEN
Active RFCOMM sessions
L2PCB PCB Flag MTU Out-Q DLCs State
c2afe900 c2b53380 1 127 0 Yes OPEN
Active RFCOMM sockets
PCB Recv-Q Send-Q Local address Foreign address Chan DLCI State
c2e8bc80 0 250 00:02:72:00:d4:1a 00:07:e0:00:0b:ca 3 6 OPENRFCOMMПротокол RFCOMMПротокол RFCOMM эмулирует последовательные порты поверх протокола
L2CAP. Он основан на ETSI-стандарте TS 07.10. RFCOMM представляет
собой простой транспортный протокол, с дополнительными возможностями по
эмуляции 9 цепей последовательных портов RS-232 (EIATIA-232-E).
Протокол RFCOMM поддерживает одновременно до 60 соединений (каналов
RFCOMM) между двумя устройствами Bluetooth.В рамках RFCOMM полный коммуникационный маршрут включает два
приложения, работающие на разных устройствах (конечные коммуникационные
точки) с коммуникационным сегментом между ними. RFCOMM предназначен
для сокрытия приложений, использующих последовательные порты устройств,
в которых они расположены. Коммуникационный сегмент по сути является
Bluetooth-связью от одного устройства к другому (прямое
соединение).RFCOMM имеет дело с соединением между устройствами в случае прямого
соединения, или между устройством и модемом в сетевом случае. RFCOMM
может поддерживать и другие конфигурации, такие, как модули, работающие
через беспроводную технологию Bluetooth с одной стороны и
предоставляющие проводное соединение с другой стороны.Во &os; протокол RFCOMM реализован на уровне сокетов
Bluetooth.pairingPairing of DevicesПо умолчанию связь Bluetooth не аутентифицируется, поэтому любое
устройство может общаться с любым другим. Устройство Bluetooth
(например, сотовый телефон) может задать обязательность аутентификации
для предоставления определённого сервиса (в частности, услугу доступа
по коммутируемой линии). Bluetooth-аутентификация обычно выполняется
через PIN-коды. PIN-код представляет из себя
ASCII-строку длиной до 16 символов. Пользователь обязан ввести один и
тот же PIN-код на обоих устройствах. Как только он введёт PIN-код,
оба устройства сгенерируют ключ связи. После
этого ключ может быть сохранён либо в самом устройстве, либо на
постоянном носителе. В следующий раз оба устройства будут использовать
ранее сгенерированный ключ соединения. Процедура, описанная выше,
носит название подгонки пары (pairing). Заметьте,
что если ключ связи потерян любой из сторон, то подбор пары должен быть
повторен.За обработку всех запросов на Bluetooth-аутентификацию отвечает
даемон &man.hcsecd.8;. По умолчанию файл конфигурации называется
/etc/bluetooth/hcsecd.conf. Пример раздела,
содержащего информацию о сотовом телефоне с явно заданным PIN-кодом
1234 приведен ниже:device {
bdaddr 00:80:37:29:19:a4;
name "Pav's T39";
key nokey;
pin "1234";
}Кроме длины, на PIN-коды не накладывается никаких ограничений.
Некоторые устройства (например, Bluetooth-гарнитуры) могут иметь
фиксированный встроенный PIN-код. Параметр
позволяет запустить &man.hcsecd.8; как нефоновый процесс, что облегчает
просмотр происходящих событий. Задайте получение парного ключа на
удалённом устройстве и инициируйте Bluetooth-соединение с этим
устройством. Удалённое устройство должно подтвердить получение пары и
запросить PIN-код. Введите тот же самый код, что находится в
hcsecd.conf. Теперь ваш ПК и удалённое устройство
спарены. Альтернативным способом является инициация процесса создания
пары на удалённом устройстве. Ниже даётся пример выдачи протокола
команды hcsecd:hcsecd[16484]: Got Link_Key_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4
hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', link key doesn't exist
hcsecd[16484]: Sending Link_Key_Negative_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4
hcsecd[16484]: Got PIN_Code_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4
hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', PIN code exists
hcsecd[16484]: Sending PIN_Code_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4SDPService Discovery Protocol (SDP)Протокол обнаружения сервисов SDP даёт возможность клиентским
приложениям осуществлять поиск услуг, предоставляемых серверными
приложениями, а также характеристик этих услуг. В перечень атрибутов
сервиса включается тип класса предлагаемого сервиса и информация о
механизме или протоколе, требуемом для использования сервиса.SDP подразумевает коммуникации между SDP-сервером и SDP-клиентом.
Сервер поддерживает список сервисов, в котором описываются параметры
сервисов, связанных с сервером. Каждая запись об услуге содержит
информацию об одном сервисе. Клиент может запросить информацию об
определённом сервисе, обслуживаемом SDP-сервером, выдавая SDP-запрос.
Если клиент или приложение, связанное с клиентом, решат воспользоваться
сервисом, то для его использования необходимо открыть отдельное
соединение к устройству, предоставляющему сервис. SDP предоставляет
механизм обнаружения услуг и их параметров, но не даёт механизма
использования этих сервисов.Обычно SDP-клиент выполняет поиск услуг на основе некоторых
желаемых характеристик услуг. Однако иногда возникает необходимость
выяснить полный перечень типов услуг, предоставляемых SDP-сервером,
не имея никакой информации об имеющихся сервисах. Такой процесс
всех предлагаемых сервисов называется обзором
(browsing).Bluetooth SDP сервер &man.sdpd.8; и клиент с интерфейсом
командной строки &man.sdpcontrol.8; включены в стандартную поставку
&os;. В следующем примере показано, как выполнять
запрос на SDP-обзор.&prompt.user; sdpcontrol -a 00:01:03:fc:6e:ec browse
Record Handle: 00000000
Service Class ID List:
Service Discovery Server (0x1000)
Protocol Descriptor List:
L2CAP (0x0100)
Protocol specific parameter #1: u/int/uuid16 1
Protocol specific parameter #2: u/int/uuid16 1
Record Handle: 0x00000001
Service Class ID List:
Browse Group Descriptor (0x1001)
Record Handle: 0x00000002
Service Class ID List:
LAN Access Using PPP (0x1102)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Protocol specific parameter #1: u/int8/bool 1
Bluetooth Profile Descriptor List:
LAN Access Using PPP (0x1102) ver. 1.0
... и так далее. Заметьте, что каждый сервис имеет перечень
атрибутов (например, канал RFCOMM). В зависимости от сервиса вам может
потребоваться где-то сохранить эти атрибуты. Некоторые реализации
Bluetooth не поддерживают просмотр сервисов и могут возвращать пустой
список. В этом случае возможен поиск конкретной услуги. В примере
ниже показано, как выполнить поиск службы OBEX Object Push
(OPUSH):&prompt.user; sdpcontrol -a 00:01:03:fc:6e:ec search OPUSHВо &os; предоставление сервисов клиентам Bluetooth осуществляется
сервером &man.sdpd.8;:&prompt.root; sdpdПриложение на локальном сервере, желающее предоставить сервис
Bluetooth удаленным клиентам, регистрирует сервис через локального
даемона SDP. Пример такого приложения — &man.rfcomm.pppd.8;.
После запуска оно регистрирует Bluetooth LAN сервис через локального
даемона SDP.Список сервисов, зарегистрированных через локальный SDP сервер,
может быть получен путем выдачи запроса на просмотр SDP через
локальный контрольный канал:&prompt.root; sdpcontrol -l browseДоступ к сети по коммутируемой линии связи (DUN) и по протоколу
PPP (LAN)Модуль работы с коммутируемым доступом к сети (DUN - Dial-Up
Networking) в большинстве случаев используется с модемами и сотовыми
телефонами. Этот модуль покрывает следующие случаи:сотовый телефон или модем используется вместе с компьютером
в качестве беспроводного модема для подключения к серверу
коммутируемого доступа в Интернет, или другой коммутируемой
услуге;сотовый телефон или модем используется компьютером для приёма
входящих соединений.Модуль доступа к сети по протоколу PPP (Network Access with
PPP - LAN) может использоваться в следующих ситуациях:доступ к ЛВС для одного Bluetooth-устройства;доступ к ЛВС для нескольких Bluetooth-устройств;связь между двумя ПК (при помощи протокола PPP поверх
эмулируемого последовательного канала связи).Во &os; оба случая реализуются при помощи сервисных программ
&man.ppp.8; и &man.rfcomm.pppd.8; - это обработчик, преобразующий
RFCOMM-соединения Bluetooth в нечто, с чем может работать PPP. Перед
тем, как использовать любой модуль, в файле
/etc/ppp/ppp.conf должна быть создана новая
PPP-метка. Примеры использования можно найти в справочной странице к
&man.rfcomm.pppd.8;.В следующем примере &man.rfcomm.pppd.8; будет использоваться для
открытия RFCOMM-соединения к удалённому устройству с BD_ADDR
00:80:37:29:19:a4 на DUN RFCOMM-канале. Реальный номер RFCOMM-канала
будет получаться с удалённого устройства через SDP. Возможно указать
RFCOMM-канал вручную, и в этом случае &man.rfcomm.pppd.8; не будет
выполнять SDP-запрос. Для нахождения RFCOMM-канала на удалённом
устройстве используйте утилиту &man.sdpcontrol.8;.&prompt.root; rfcomm_pppd -a 00:80:37:29:19:a4 -c -C dun -l rfcomm-dialupДля того, чтобы организовать сервис Network Access with PPP (LAN),
необходимо запустить сервер &man.sdpd.8;. В файле
/etc/ppp/ppp.conf должна быть создана новая запись
для клиентов LAN. Примеры можно найти в справке по
&man.rfcomm.pppd.8;. Наконец, запустите RFCOMM PPP сервер на
существующем номере канала RFCOMM. Сервер RFCOMM PPP автоматически
зарегистрирует Bluetooth LAN сервис через локальный SDP даемон.
В примере ниже показано, как запустить сервер RFCOMM PPP.&prompt.root; rfcomm_pppd -s -C 7 -l rfcomm-serverOBEXOBEX Object Push (OPUSH) ProfileOBEX является широко используемым протоколом для простой передачи
файлов между мобильными устройствами. В основном он используется в
коммуникациях через инфракрасный порт для передачи файлов между
ноутбуками или КПК, а также для пересылки визитных
карточек или календарных планов между сотовыми телефонами и
другими устройствами с персональными информационными
менеджерами.Сервер и клиент OBEX реализованы в виде пакета стороннего
разработчика obexapp, который доступен
в виде порта comms/obexapp.Клиент OBEX используется для посылки или приёма объектов с сервера
OBEX. Объектом, к примеру, может быть визитная карточка или
указание. Клиент OBEX может получить номер RFCOMM-канала, указав
вместо него имя сервиса. Поддерживаются следующие имена сервиса: IrMC,
FTRN и OPUSH. Канал RFCOMM можно задать его номером. Ниже даётся
пример сеанса OBEX, где с сотового телефона забирается объект с
информацией об устройстве, а новый объект (визитная карточка)
передаётся в каталог сотового телефона.&prompt.user; obexapp -a 00:80:37:29:19:a4 -C IrMC
obex> get
get: remote file> telecom/devinfo.txt
get: local file> devinfo-t39.txt
Success, response: OK, Success (0x20)
obex> put
put: local file> new.vcf
put: remote file> new.vcf
Success, response: OK, Success (0x20)
obex> di
Success, response: OK, Success (0x20)Для того, чтобы предоставить сервис OBEX Push, должен быть запущен
сервер &man.sdpd.8;. Должен быть создан
корневой каталог, в котором будут сохраняться все поступающие объекты.
По умолчанию корневым каталогом является
/var/spool/obex. Наконец, запустите OBEX
сервер на существующем номере канала RFCOMM. OBEX сервер
автоматически зарегистрирует сервис OBEX Object Push через локального
даемона SDP. В примере ниже показано, как запустить
OBEX-сервер.&prompt.root; obexapp -s -C 10Профиль последовательного порта (SPP)Профиль последовательного порта (SPP - Serial Port Profile) позволяет
Bluetooth-устройствам осуществлять эмуляцию последовательного порта
RS232 (или подобного). Этот профиль покрывает случаи, касающиеся
работы унаследованных приложений с Bluetooth в качестве замены
кабельному соединению, при это используется абстракция виртуального
последовательного порта.Утилита &man.rfcomm.sppd.1; реализует профиль
последовательного порта. В качестве виртуального последовательного порта
используется псевдотерминал. В примере ниже показано, как подключиться
к сервису Serial Port удалённого устройства. Заметьте, что вы не
указываете RFCOMM-канал - &man.rfcomm.sppd.1; может получить его с
удалённого устройства через SDP. Если вы хотите переопределить это,
укажите RFCOMM-канал явно в командной строке.&prompt.root; rfcomm_sppd -a 00:07:E0:00:0B:CA -t /dev/ttyp6
rfcomm_sppd[94692]: Starting on /dev/ttyp6...После подключения псевдотерминал можно использовать как
последовательный порт:&prompt.root; cu -l ttyp6Решение проблемУдалённое устройство не подключаетсяНекоторые старые Bluetooth-устройства не поддерживают
переключение ролей. По умолчанию, когда &os; подтверждает новое
соединение, она пытается выполнить переключение роли и стать ведущим
устройством. Устройства, которые это не поддерживают, не смогут
подключиться. Заметьте, что переключение ролей выполняется при
установлении нового соединения, поэтому невозможно выяснить,
поддерживает ли удалённое устройство переключение ролей. На
локальной машине имеется возможность отключить переключение ролей при
помощи HCI-параметра:&prompt.root; hccontrol -n ubt0hci write_node_role_switch 0Что-то идёт не так, можно ли посмотреть, что в точности
происходит?Да, можно. Воспользуйтесь пакетом
hcidump-1.5 стороннего разработчика,
который доступен для загрузки с . Утилита
hcidump похожа на &man.tcpdump.1;. Она
может быть использована для вывода на терминал содержимого
Bluetooth-пакетов и сбрасывать пакеты Bluetooth в файл.StevePetersonТекст создал МостыВведениеподсеть IPсетевой мостИногда полезно разделить одну физическую сеть (такую, как
сегмент Ethernet) на два отдельных сегмента сети без необходимости
создания подсетей IP и использования маршрутизатора для соединения
сегментов. Устройство, которое соединяет две сети на такой манер,
называется сетевым мостом (bridge).
Система FreeBSD с двумя сетевыми адаптерами может выступать в роли
моста.Мост работает на основе изучения адресов уровня MAC (адресов
Ethernet) устройств на каждом из своих сетевых интерфейсах.
Он перенаправляет трафик между двумя сетями, только когда адреса
отправителя и получателя находятся в разных сетях.По многим параметрам мост работает также, как коммутатор Ethernet
с малым количеством портов.Ситуации, когда можно использовать мостыНа сегодняшний день есть две ситуации, когда можно использовать
мост.Большой трафик в сегментеПервая ситуация возникает, когда ваша физическая сеть перегружена
трафиком, но по каким-то соображениям вы не хотите разделять сеть
на подсети и соединять их с помощью маршрутизатора.Давайте рассмотрим в качестве примера газету, в которой
редакторский и производственный отделы находятся в одной и той же
подсети. Пользователи в редакторском отделе все используют сервер
A для служб доступа к файлам, а пользователи
производственного отдела используют сервер B. Для
объединения всех пользователей используется сеть Ethernet, а высокая
нагрузка на сеть замедляет работу.Если пользователи редакторского отдела могут быть собраны в
одном сегменте сети, а пользователи производственного отдела в
другом, то два сетевых сегмента можно объединить мостом. Только
сетевой трафик, предназначенный для интерфейсов с
другой стороны моста, будет посылаться в другую сеть,
тем самым снижая уровень нагрузки на каждый сегмент сети.Брандмауэр с возможностями фильтрации/ограничения
пропускной способности трафикабрандмауэртрансляция сетевых адресовВторой распространенной ситуацией является необходимость в
обеспечении функций брандмауэра без трансляции
сетевых адресов (NAT).Для примера можно взять маленькую компанию, которая подключена
к своему провайдеру по каналу DSL или ISDN. Для неё провайдер выделил
13 глобально доступных IP-адресов для имеющихся в сети 10 персональных
компьютеров. В такой ситуации использование брандмауэра
на основе маршрутизатора затруднено из-за проблем с разделением на
подсети.маршрутизаторDSLISDNБрандмауэр на основе моста может быть настроен и включен
между маршрутизаторами DSL/ISDN без каких-либо проблем с
IP-адресацией.Настройка мостаВыбор сетевого адаптераДля работы моста требуются по крайней мере два сетевых адаптера.
К сожалению, не все сетевые адаптеры во FreeBSD 4.0 поддерживают
функции моста. Прочтите страницу Справочника по &man.bridge.4; для
выяснения подробностей о поддерживаемых адаптерах.Перед тем, как продолжить, сначала установите и протестируйте
два сетевых адаптера.Изменения в конфигурации ядрапараметры ядраoptions BRIDGEДля включения поддержки функций моста в ядре, добавьте
строчкуoptions BRIDGEв файл конфигурации вашего ядра, и перестройте ядро.Поддержка функций брандмауэрабрандмауэрЕсли вы планируете использовать мост в качестве
брандмауэра, вам нужно также добавить опцию
IPFIREWALL.
Прочтите , содержащий общую
информацию о настройке моста в качестве брандмауэра.Если вам необходимо обеспечить прохождение не-IP пакетов (таких,
как ARP) через мост, то имеется опция брандмауэра,
которую можно задать. Это опция
IPFIREWALL_DEFAULT_TO_ACCEPT. Заметьте, что при
этом правило, используемое брандмауэром по умолчанию, меняется
на разрешительное для всех пакетов. Перед тем, как задавать эту
опцию, убедитесь, что вы понимаете работу вашего набора
правил.Поддержка функций ограничения пропускной способностиЕсли вы хотите использовать мост в качестве машины,
ограничивающей пропускную способность, то добавьте в файл
конфигурации ядра опцию DUMMYNET. Дополнительную
информацию можно почерпнуть из страницы Справочника по
&man.dummynet.4;.Включение функций мостаДобавьте строкуnet.link.ether.bridge=1в файл /etc/sysctl.conf для включения функций
моста во время работы системы, и строку:net.link.ether.bridge_cfg=if1,if2для включения функций моста для указанных интерфейсов (замените
if1 и if2 на
имена двух ваших сетевых интерфейсов). Если вы хотите, чтобы
проходящие через мост пакеты фильтровались посредством &man.ipfw.8;,
вы должны добавить строчку:net.link.ether.bridge_ipfw=1Во &os; 5.2-RELEASE и последующих версиях нужно использовать
вместо указанных следующие строки:net.link.ether.bridge.enable=1
net.link.ether.bridge.config=if1,if2
net.link.ether.bridge.ipfw=1Дополнительные замечанияЕсли вы хотите осуществлять удалённый доступ на мост через
&man.ssh.1; из сети, то корректно назначить одному из сетевых
адаптеров IP-адрес. Общепринято, что назначение адреса обоим сетевым
адаптерам является не самой хорошей идеей.Если в вашей сети присутствует несколько мостов, не должно быть
более одного маршрута между любыми двумя рабочими станциями. С
технической точки зрения это означает отсутствие поддержки протокола
spanning tree.Сетевой мост может увеличить задержки в замерах командой
&man.ping.8;, особенно для трафика между двумя разными
сегментами.Jean-FrançoisDockèsТекст обновил AlexDupreРеорганизовал и улучшил Работа с бездисковыми станциямиработа без дискаМашина с FreeBSD может загружаться по сети и работать без наличия
локального диска, используя файловые системы, монтируемые с сервера NFS.
Кроме стандартных конфигурационных файлов, не нужны никакие модификации
в системе. Такую систему легко настроить, потому что все необходимые
элементы уже готовы:Имеется по крайней мере два возможных способа загрузки ядра по
сети:PXE: Система &intel; Preboot eXecution
Environment является формой загрузочного ПЗУ, встроенного в
некоторые сетевые адаптеры или материнские платы. Обратитесь к
справочной странице по &man.pxeboot.8; для получения более полной
информации.Порт Etherboot (net/etherboot) генерирует код,
который может применяться в ПЗУ для загрузки ядра по сети. Код
может быть либо прошит в загрузочный PROM на сетевом адаптере,
либо загружен с локальной дискеты (или винчестера), или с
работающей системы &ms-dos;. Поддерживаются многие сетевые
адаптеры.Примерный скрипт
(/usr/share/examples/diskless/clone_root)
облегчает создание и поддержку корневой файловой системы рабочей
станции на сервере. Скрипт, скорее всего, потребует некоторых
настроек, но он позволит вам быстро начать работу.Стандартные файлы начального запуска системы, располагающиеся в
/etc, распознают и поддерживают загрузку системы
в бездисковом варианте.Подкачка, если она нужна, может выполняться через файл NFS либо
на локальный диск.Существует много способов настройки бездисковой рабочей станции. При
этом задействованы многие компоненты, и большинство из них могут быть
настроены для удовлетворения ваших вкусов. Далее будет описаны варианты
полной настройки системы, при этом упор будет делаться на простоту и
совместимость с стандартной системой скриптов начальной загрузки FreeBSD.
Описываемая система имеет такие характеристики:Бездисковые рабочие станции совместно используют
файловую систему / в режиме только
чтения, а также используют /usr совместно тоже
в режиме только чтения.Корневая файловая система является копией
стандартной корневой системы FreeBSD (обычно сервера), с некоторыми
настроечными файлами, измененными кем-то специально для бездисковых
операций или, возможно, для рабочей станции, которой она
предназначена.Части корневой файловой системы, которые
должны быть доступны для записи, перекрываются файловыми системами
&man.mfs.8; (&os; 4.X) или &man.md.4; (&os; 5.X).
Любые изменения будут потеряны при перезагрузках
системы.Ядро передается и загружается посредством
Etherboot или PXE,
и в некоторых ситуациях может быть использован любой из
этих методов.Как описано, эта система не защищена. Она должна располагаться в
защищенной части сети, а другие хосты не должны на нее
полагаться.Вся информация этого раздела была протестирована с
релизами &os; 4.9-RELEASE и 5.2.1-RELEASE. Текст структурирован
преимущественно для использования с 4.X. Отличия
для 5.X упоминаются особо.Общая информацияНастройка бездисковых рабочих станций относительно проста,
но в то же время легко сделать ошибку. Иногда сложно
диагностировать эти ошибки по нескольким причинам.
Например:Параметры компиляции могут по-разному проявлять
себя во время работы.Сообщения об ошибках бывают загадочны или вовсе
отсутствуют.В данной ситуации некоторые знания, касающиеся используемых
внутренних механизмов, очень полезны при разрешении проблем,
которые могут возникнуть.Для выполнения успешной загрузки необходимо произвести
несколько операций:Компьютеру необходимо получить начальные параметры, такие
как собственный IP адрес, имя исполняемого файла, корневой
каталог. Для этого используются протоколы DHCP
или BOOTP. DHCP это совместимое расширение
BOOTP, используются те же номера портов и основной формат
пакетов.Возможна настройка системы для использования только BOOTP.
Серверная программа &man.bootpd.8; включена в основную систему
&os;.Тем не менее, у DHCP есть множество
преимуществ над BOOTP (лучше файлы настройки, возможность
использования PXE, плюс многие другие
преимущества, не относящиеся непосредственно к бездисковым
операциям), и мы в основном будем описывать настройку
DHCP, с эквивалентными примерами
для &man.bootpd.8;, когда это возможно. Пример
конфигурации будет использовать пакет
ISC DHCP (релиз
3.0.1.r12 был установлен на тестовом сервере).Компьютеру требуется загрузить в локальную память одну
или несколько программ. Используются TFTP
или NFS. Выбор между
TFTP или NFS
производится во время компилирования в нескольких местах.
Часто встречающаяся ошибка это указание имен файлов для
другого протокола: TFTP обычно
загружает все файлы с одного каталога сервера, и принимает
имена файлов относительно этого каталога. NFS
нужны абсолютные пути к файлам.Необходимо инициализировать и выполнить возможные
промежуточные программы загрузки и ядро. В этой области
существует несколько важных вариаций:PXE загрузит &man.pxeboot.8;,
являющийся модифицированной версией загрузчика
третьей стадии &os;. &man.loader.8; получит большинство
параметров, необходимых для старта системы, и оставит
их в окружении ядра до контроля передачи. В этом
случае возможно использование ядра
GENERIC.Etherboot, непосредственно
загрузит ядро, с меньшей подготовкой. Вам потребуется
собрать ядро со специальными параметрами.PXE и Etherboot
работают одинаково хорошо с системами 4.X. Поскольку ядро
5.X обычно позволяет &man.loader.8; выполнить больше
предварительной работы, метод PXE на системах
5.X предпочтителен.Если ваш BIOS и сетевые карты поддерживают
PXE, используйте его. Однако, все же возможен
запуск системы 5.X с Etherboot.Наконец, компьютеру требуется доступ к файловым системам.
NFS используется во всех случаях.Обратитесь также к странице справочника &man.diskless.8;.Инструкции по настройкеКонфигурация с использованием ISC DHCPDHCPбездисковые конфигурацииСервер ISC DHCP может обрабатывать
как запросы BOOTP, так и запросы DHCP.Начиная с релиза 4.9, ISC DHCP 3.0
не включается в поставку системы. Сначала вам нужно будет
установить порт net/isc-dhcp3-server
или соответствующий пакет.После установки ISC DHCP ему для
работы требуется конфигурационный файл (обычно называемый
/usr/local/etc/dhcpd.conf). Вот
прокомментированный пример, где хост margaux
использует Etherboot, а хост
corbieres использует
PXE:
default-lease-time 600;
max-lease-time 7200;
authoritative;
option domain-name "example.com";
option domain-name-servers 192.168.4.1;
option routers 192.168.4.1;
subnet 192.168.4.0 netmask 255.255.255.0 {
use-host-decl-names on;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.4.255;
host margaux {
hardware ethernet 01:23:45:67:89:ab;
fixed-address margaux.example.com;
next-server 192.168.4.4;
filename "/data/misc/kernel.diskless";
option root-path "192.168.4.4:/data/misc/diskless";
}
host corbieres {
hardware ethernet 00:02:b3:27:62:df;
fixed-address corbieres.example.com;
next-server 192.168.4.4;
filename "pxeboot";
option root-path "192.168.4.4:/data/misc/diskless";
}
}
Этот параметр указывает dhcpd посылать
значения деклараций host как имя хоста для
бездисковой машины. Альтернативным способом было бы добавление
option host-name
margaux внутри объявлений
host.Директива next-server определяет сервер
TFTP или NFS,
используемый для получения загрузчика или файла ядра
(по умолчанию используется тот же самый хост, на котором
расположен сервер DHCP).Директива filename определяет файл,
который Etherboot или
PXE будут загружать для следующего шага
выполнения. Он должен быть указан в соответствии с
используемым методом передачи.
Etherboot может быть скомпилирован
для использования NFS или
TFTP. &os; порт по умолчанию использует
NFS. PXE использует
TFTP, поэтому здесь применяются
относительные пути файлов (это может зависеть от настроек
TFTP сервера, но обычно довольно типично).
Кроме того, PXE загружает
pxeboot, а не ядро. Существуют другие
интересные возможности, такие как загрузка
pxeboot из каталога
/boot &os; CD-ROM
(поскольку &man.pxeboot.8; может загружать
GENERIC ядро, это делает возможной
загрузку с удаленного CD-ROM).Параметр root-path определяет путь к
корневой файловой системе, в обычной нотации
NFS. При использовании
PXE, можно оставить IP хоста отключенным,
если параметр ядра BOOTP не используется. Затем
NFS сервер может использоваться так же,
как и TFTP.Настройка с использованием BOOTPBOOTPбездисковые конфигурацииДалее описана эквивалентная конфигурация с использованием
bootpd (для одного клиента).
Она будет располагаться в
/etc/bootptab.Пожалуйста, отметьте, что Etherboot
должен быть откомпилирован с нестандартной опцией
NO_DHCP_SUPPORT для того, чтобы можно было
использовать BOOTP, и что для работы PXE
необходим DHCP.
Единственным очевидным
преимуществом bootpd является его
наличие в поставке системы.
.def100:\
:hn:ht=1:sa=192.168.4.4:vm=rfc1048:\
:sm=255.255.255.0:\
:ds=192.168.4.1:\
:gw=192.168.4.1:\
:hd="/tftpboot":\
:bf="/kernel.diskless":\
:rp="192.168.4.4:/data/misc/diskless":
margaux:ha=0123456789ab:tc=.def100
Подготовка программы загрузки при помощи
EtherbootEtherbootСайт
Etherboot содержит
подробную документацию, в основном предназначенную для систем
Linux, но несомненно, она полезна. Далее будет просто кратко
описано, как вы должны использовать
Etherboot в системе FreeBSD.Сначала вы должны установить пакет или порт net/etherboot.Вы можете изменить настройку
Etherboot (например, для использования
TFTP вместо NFS) путем
редактирования файла Config
в каталоге исходных текстов
Etherboot.В нашей ситуации мы будем использовать загрузочную дискету. Для
других методов (PROM или программа &ms-dos;) пожалуйста, обратитесь к
документации по Etherboot.Для создания загрузочной дискеты, вставьте дискету в дисковод на
машине, где установлен Etherboot, затем
перейдите в каталог src в дереве
Etherboot и наберите:
&prompt.root; gmake bin32/devicetype.fd0devicetype зависит от типа адаптера
Ethernet на бездисковой рабочей станции. Обратитесь к файлу
NIC в том же самом каталоге для определения
правильного значения для
devicetype.Загрузка с PXEПо умолчанию, &man.pxeboot.8; загружает ядро через
NFS. Он может быть скомпилирован для
использования вместо него TFTP путем
указания параметра LOADER_TFTP_SUPPORT в
/etc/make.conf. Смотрите комментарии в
/etc/defaults/make.conf (или
/usr/share/examples/etc/make.conf систем
5.X) с инструкциями.Есть два не документированных параметра
make.conf, которые могут быть полезны для
настройки бездискового компьютера с последовательной консолью:
BOOT_PXELDR_PROBE_KEYBOARD, и
BOOT_PXELDR_ALWAYS_SERIAL (последняя существует
только в &os; 5.X).Для использования PXE при загрузке компьютера
вам обычно потребуется выбрать параметр Boot from
network (загрузка по сети) в настройках
BIOS, или нажать функциональную клавишу во
время загрузки PC.Настройка серверов TFTP и NFSTFTPбездисковые конфигурацииNFSбездисковые конфигурацииЕсли вы используете PXE или
Etherboot, настроенные для
использования TFTP, вам нужно включить
tftpd на файловом сервере:Создайте каталог, файлы которого будет обслуживать
tftpd, например,
/tftpboot.Добавьте в ваш /etc/inetd.conf такую
строчку:tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpbootБывает, что некоторым версиям PXE
требуется TCP-вариант
TFTP. В таком случае добавьте вторую
строчку, заменяющую
dgram udp на stream
tcp.Укажите inetd на повторное чтение своего
конфигурационного файла:&prompt.root; kill -HUP `cat /var/run/inetd.pid`Вы можете поместить каталог tftpboot в любом
месте на сервере. Проверьте, что это местоположение указано как в
inetd.conf, так и в
dhcpd.conf.Во всех случаях, вам также нужно включить
NFS и экспортировать
соответствующую файловую систему на сервере
NFS.Добавьте следующее в
/etc/rc.conf:nfs_server_enable="YES"Экспортируйте файловую систему, в которой расположен
корневой каталог для бездисковой рабочей станции, добавив
следующую строку в /etc/exports (подправьте
точку монтирования и замените margaux
corbieres
именами бездисковых рабочих станций):/data/misc -alldirs -ro margaux corbieresУкажите mountd на повторное чтение
настроечного файла. На самом деле если вам потребовалось на
первом шаге включить NFS в /etc/rc.conf, то
вам нужно будет выполнить перезагрузку.&prompt.root; kill -HUP `cat /var/run/mountd.pid`Построение ядра для бездисковой рабочей станциибездисковые конфигурациинастройка ядраПри использовании Etherboot, вам
потребуется создать конфигурационный файл ядра для бездискового
клиента со
следующими параметрами (вдобавок к обычным):
options BOOTP # Use BOOTP to obtain IP address/hostname
options BOOTP_NFSROOT # NFS mount root filesystem using BOOTP info
Вам может потребоваться использовать
BOOTP_NFSV3, BOOT_COMPAT
и BOOTP_WIRED_TO
(посмотрите LINT в 4.X или
NOTES в 5.X).Эти имена параметров сложились исторически, и могут немного
ввести в заблуждение, поскольку включают необязательное
использование DHCP и BOOTP в ядре (возможно
включение обязательного использования BOOTP
или DHCP use).Постройте ядро (обратитесь к ) и
скопируйте его в каталог, указанный в
dhcpd.conf.При использовании PXE, сборка ядра
с вышеприведенными параметрами не является совершенно необходимой
(хотя желательна). Включение этих параметров приведет к
выполнению большинства DHCP запросов во время
загрузки ядра, с небольшим риском несоответствия новых значений
и значений, полученных &man.pxeboot.8; в некоторых особых
случаях. Преимущество использования в том, что в качестве
побочного эффекта будет установлено имя хоста. Иначе вам
потребуется установить имя хоста другим методом, например
в клиент-специфичном файле rc.conf.Для включения возможности загрузки с
Etherboot, в ядро 5.X необходимо
включить устройство hints. Вам потребуется установить
в файле конфигурации следующий параметр (см. файл
комментариев NOTES):hints "GENERIC.hints"Подготовка корневой файловой системыкорневая файловая системабездисковые конфигурацииВам нужно создать корневую файловую систему для бездисковых
рабочих станций, в местоположении, заданном как
root-path в
dhcpd.conf. В следующем разделе
описаны два способа, чтобы сделать это.Использование скрипта clone_rootЭто самый простой способ создания корневой файловой системы,
но на данный момент он не поддерживается в &os; 4.X. Этот
shell скрипт находится в
/usr/share/examples/diskless/clone_root,
и требует настройки, по крайней мере, задания того места, где
будет создана файловая система (переменная
DEST).Прочтите комментарии в начале скрипта для получения указаний.
Там описано, как строится основная файловая система, и как файлы
могут быть выборочно заменены версиями, предназначенными для работы
без диска, для подсети или для отдельной рабочей станции. Также
здесь даются примеры бездисковых файлов
/etc/fstab и
/etc/rc.conf.Файлы README в
/usr/share/examples/diskless много интересной
информации, но вместе с другими примерами из каталога
diskless они на самом деле описывают метод
настройки, который отличается от того, что используется в
clone_root и
стартовых скриптах системы из
/etc, этим несколько запутывая
дело. Используйте их только для справки, за исключением того случая,
когда вы выберете метод, ими описываемый, и тогда вам нужны
исправленные скрипты rc.Использование стандартной процедуры
make worldЭтот метод может быть применен к &os; 4.X или 5.X и
установит новую систему (не только корневую) в
DESTDIR. Все, что вам потребуется сделать,
это просто выполнить следующий скрипт:#!/bin/sh
export DESTDIR=/data/misc/diskless
mkdir -p ${DESTDIR}
cd /usr/src; make world && make kernel
cd /usr/src/etc; make distributionКак только это будет сделано, вам может потребоваться
настроить /etc/rc.conf и
/etc/fstab, помещенные в
DESTDIR, в соответствии с вашими
потребностями.Настройка области подкачкиЕсли это нужно, то файл подкачки, расположенный на сервере, можно
использовать посредством NFS. Один из методов,
используемых для этого, не поддерживается в релизах 5.X.Подкачка по NFS в &os; 4.XМестоположение и размер файла подкачки могут быть указаны
&os;-специфичными параметрами BOOTP/DHCP
128 и 129. Примеры файлов настройки для
ISC DHCP 3.0 или
bootpd приведены ниже:Добавьте следующие строки в
dhcpd.conf:
# Global section
option swap-path code 128 = string;
option swap-size code 129 = integer 32;
host margaux {
... # Standard lines, see above
option swap-path "192.168.4.4:/netswapvolume/netswap";
option swap-size 64000;
}
swap-path это путь к каталогу, где
находятся файлы подкачки. Название каждого файла имеет вид
swap.client-ip.Старые версии dhcpd использовали
синтаксис
option option-128 "..., который больше не
поддерживается.Во /etc/bootptab будет использоваться
такой синтаксис:T128="192.168.4.4:/netswapvolume/netswap":T129=0000fa00В файле /etc/bootptab размер файла
подкачки должен быть записан в шестнадцатеричном формате.На файловом сервере NFS создайте файл (или файлы)
подкачки:
&prompt.root; mkdir /netswapvolume/netswap
&prompt.root; cd /netswapvolume/netswap
&prompt.root; dd if=/dev/zero bs=1024 count=64000 of=swap.192.168.4.6
&prompt.root; chmod 0600 swap.192.168.4.6192.168.4.6 является IP-адресом
бездискового клиента.На файловом сервере NFS, в /etc/exports
добавьте такую строку:/netswapvolume -maproot=0:10 -alldirs margaux corbieresЗатем укажите mountd на повторное
чтение файла exports, как описано
ранее.Подкачка по NFS в &os; 4.XПоложение и размер файла подкачки могут быть указаны в
&os;-специфичных параметрах BOOTP/DHCP
с номерами 128 и 129. Ниже приведены примеры файлов
настройки для ISC DHCP 3.0 или
bootpd:Добавьте следующие строки к
dhcpd.conf:
# Global section
option swap-path code 128 = string;
option swap-size code 129 = integer 32;
host margaux {
... # Standard lines, see above
option swap-path "192.168.4.4:/netswapvolume/netswap";
option swap-size 64000;
}
swap-path это путь к каталогу, где
расположены файлы подкачки. Файлы называются
swap.client-ip.Старые версии dhcpd используют
синтаксис option option-128 "..., которые
более не поддерживаются./etc/bootptab вместо этого использует
следующий синтаксис:T128="192.168.4.4:/netswapvolume/netswap":T129=0000fa00В /etc/bootptab, размер
подкачки должен вычисляться в шестнадцатеричном
формате.Создайте на NFS сервере с файлами подкачки
файлы:
&prompt.root; mkdir /netswapvolume/netswap
&prompt.root; cd /netswapvolume/netswap
&prompt.root; dd if=/dev/zero bs=1024 count=64000 of=swap.192.168.4.6
&prompt.root; chmod 0600 swap.192.168.4.6192.168.4.6 это IP адрес
бездискового клиента.На файловом сервере NFS с файлами
подкачки добавьте следующую строку к
/etc/exports:/netswapvolume -maproot=0:10 -alldirs margaux corbieresЗатем заставьте mountd перечитать
конфигурационные файлы как было показано выше.Различные проблемыРабота с /usr, доступной только для
чтениябездисковые конфигурации/usr только для чтенияЕсли бездисковая рабочая станция настроена на запуск X, вам
нужно подправить настроечный файл для
XDM, который по умолчанию
помещает протокол ошибок в /usr.Использование не-FreeBSD сервераЕсли сервер с корневой файловой системой работает не под
управлением FreeBSD, вам потребуется создать корневую файловую
систему на машине FreeBSD, а затем скопировать ее в нужно место,
при помощи tar или
cpio.В такой ситуации иногда возникают проблемы со
специальными файлами в /dev из-за различной
разрядности целых чисел для старшего/младшего чисел. Решением
этой проблемы является экспортирование каталога с не-FreeBSD
сервера, монтирование его на машине с FreeBSD и запуск
скрипта MAKEDEV на машине с FreeBSD для создания
правильных файлов устройств (во FreeBSD 5.0 и более поздних версиях
используется &man.devfs.5; для создания файлов устройств прозрачно
для пользователя, запуск MAKEDEV в этих версиях
бессмысленно).ISDNISDNПолезным источником информации о технологии ISDN и его аппаратном
обеспечении является
Страница Дэна Кегела (Dan Kegel) об ISDN.Быстрое введение в ISDN:Если вы живёте в Европе, то вам может понадобиться изучить раздел
об ISDN-адаптерах.Если вы планируете использовать ISDN в основном для соединений
с Интернет через провайдера по коммутируемому, невыделенному
соединению, рекомендуется посмотреть информацию о терминальных
адаптерах. Это даст вам самую большую гибкость и наименьшее
количество проблем при смене провайдера.Если вы объединяете две локальные сети или подключаетесь к
Интернет через постоянное ISDN-соединение, рекомендуем остановить свой
выбор на отдельном мосте/маршрутизаторе.Стоимость является важным фактором при выборе вашего решения.
Далее перечислены все возможности от самого дешевого до самого дорогого
варианта.HellmuthMichaelisТекст предоставил Адаптеры ISDNISDNадаптерыРеализация ISDN во FreeBSD поддерживает только стандарт DSS1/Q.931
(или Евро-ISDN) при помощи пассивных адаптеров. Начиная с
FreeBSD 4.4 поддерживаются некоторые активные адаптеры, прошивки
которых поддерживают также другие сигнальные протоколы; также сюда
впервые включена поддержка адаптеров ISDN Primary Rate (PRI).Пакет программ isdn4bsd позволяет вам
подключаться к другим маршрутизаторам ISDN при помощи IP поверх DHLC,
либо при помощи синхронного PPP; либо при помощи PPP на уровне ядра с
isppp, модифицированного драйвера &man.sppp.4;, или
при помощи пользовательского
&man.ppp.8;. При использовании пользовательского &man.ppp.8; возможно
использование двух и большего числа B-каналов ISDN. Также имеется
приложение, работающее как автоответчик, и много утилит, таких, как
программный модем на 300 Бод.Во FreeBSD поддерживается все возрастающее число адаптеров ISDN для
ПК, и сообщения показывают, что они успешно используются по всей Европе
и других частях света.Из пассивных адаптеров ISDN поддерживаются в основном те, которые
сделаны на основе микросхем Infineon (бывший Siemens) ISAC/HSCX/IPAC
ISDN, а также адаптеры ISDN с микросхемами от Cologne Chip (только для
шины ISA), адаптеры PCI с микросхемами Winbond W6692, некоторые
адаптеры с набором микросхем Tiger300/320/ISAC и несколько адаптеров,
построенных на фирменных наборах микросхем, такие, как AVM Fritz!Card
PCI V.1.0 и AVM Fritz!Card PnP.На данный момент из активных адаптеров ISDN поддерживаются AVM B1
(ISA и PCI) адаптеры BRI и AVM T1 PCI адаптеры PRI.Документацию по isdn4bsd можно найти в
каталоге /usr/share/examples/isdn/ вашей системы
FreeBSD или на домашней
странице isdn4bsd, на которой также размещены ссылки на советы,
замечания по ошибкам и более подробную информацию, например, на руководство по
isdn4bsd.Если вы заинтересованы в добавлении поддержки для различных
протоколов ISDN, не поддерживаемых на данный момент адаптеров ISDN для
PC или каких-то других усовершенствованиях
isdn4bsd, пожалуйста, свяжитесь с
&a.hm;.Для обсуждения вопросов, связанных с установкой, настройкой и
устранением неисправностей isdn4bsd,
имеется список рассылки &a.isdn.name;.subscribe freebsd-isdnТерминальные адаптеры ISDNТерминальные адаптеры (TA) для ISDN выполняют ту же роль, что и
модемы для обычных телефонных линий.модемБольшинство TA используют стандартный набор AT-команд Hayes-модемов,
и могут использоваться в качестве простой замены для модемов.TA будут работать точно так же, как и модемы, за исключением
скорости соединения и пропускной способности, которые будут гораздо
выше, чем у вашего старого модема. Вам потребуется настроить PPP точно также, как и в случае использования
модема. Проверьте, что вы задали скорость работы последовательного
порта максимально высокой.PPPГлавным преимуществом использования TA для подключения к провайдеру
Интернет является возможность использования динамического PPP. Так
как пространство адресов IP истощается все больше, большинство
провайдеров не хочет больше выдавать вам статический IP-адрес.
Большинство же маршрутизаторов не может использовать динамическое
выделение IP-адресов.TA полностью полагаются на даемон PPP, который используете из-за
его возможностей и стабильности соединения. Это позволяет вам при
использовании FreeBSD легко заменить модем на ISDN, если у вас уже
настроено соединение PPP. Однако, в тоже время любые проблемы, которые
возникают с программой PPP, отражаются и здесь.Если вы хотите максимальной надёжности, используйте PPP на уровне параметра ядра, а не пользовательский PPP.Известно, что следующие TA работают с FreeBSD:Motorola BitSurfer и Bitsurfer ProAdtranБольшинство остальных TA, скорее всего, тоже будут работать,
производители TA прилагают все усилия для обеспечения поддержки
практически всего набора стандартных AT-команд модема.Как и в случае модемов проблемой использования внешнего TA является
потребность в хорошем последовательном адаптере на вашем
компьютере.Вы должны прочесть учебник Последовательные устройства
во FreeBSD для того, чтобы в деталях понять работу
последовательных устройств и осознать различие между асинхронными и
синхронными последовательными портами.TA, работающий со стандартным последовательным (асинхронным) портом
PC, ограничивает вас скоростью 115.2 Кбит/с, хотя реально у вас
соединение на скорости 128 Кбит/с. Чтобы использовать
128 Кбит/с, которые обеспечивает ISDN, полностью, вы должны
подключить TA к синхронному последовательному адаптеру.Не обманывайте себя, думая, что покупка встроенного TA поможет
избежать проблемы синхронности/асинхронности. Встроенные TA просто
уже имеют внутри стандартный последовательный порт PC. Все, что при
этом достигается - это экономия дополнительных последовательного
кабеля и электрической розетки.Синхронный адаптер с TA по крайней мере так же быстр, как и
отдельный маршрутизатор, а если он работает под управлением машины
класса 386 с FreeBSD, то это гораздо более гибкое решение.Выбор между использованием синхронного адаптера/TA или отдельного
маршрутизатора в большей степени является религиозным вопросом. По этому
поводу в списках рассылки была некоторая дискуссия. Рекомендуем поискать
в архивах обсуждение
полностью.Отдельные мосты/маршрутизаторы ISDNISDNотдельно стоящие мосты/маршрутизаторыМосты или маршрутизаторы ISDN не так уж специфичны для FreeBSD
или для любой другой операционной системы. Для более подробного
описания технологий маршрутизации и работы мостов, пожалуйста,
обратитесь к справочникам по сетевым технологиям.В контексте этого раздела термины маршрутизатор и сетевой мост будут
использоваться как взаимозаменяемые.Вместе с падением цен на простые мосты/маршрутизаторы ISDN, они
становятся все более популярными. Маршрутизатор ISDN представляет
собой маленькую коробочку, которая подключается непосредственно в
вашу сеть Ethernet, и поддерживает связь с другим мостом/маршрутизатором.
Всё программное обеспечение для работы по PPP и другим протоколам
встроено в маршрутизатор.Маршрутизатор обладает гораздо большей пропускной способностью, чем
стандартный TA, так как он использует полное синхронное соединение
ISDN.Основной проблемой с маршрутизаторами и мостами ISDN является то,
что их совместная работа с оборудованием других производителей может
оказаться под вопросом. Если вы собираетесь подключаться к провайдеру,
то вы должны обсудить с ним то, что вам нужно.Если вы планируете объединить два сегмента локальной сети, например,
домашнюю сеть с сетью офиса, это самое простое решение с минимальными
издержками на обслуживание. Так как вы покупаете оборудование для
обоих сторон соединения, то можете быть уверены, что связь будет
работать нормально.Например, для соединения домашнего компьютера или сети
подразделения к сети центрального офиса, может использоваться такая
настройка:Офис подразделения или домашняя сеть10 base 2Сеть построена в топологии общей шины на основе 10 base 2 Ethernet
(thinnet - тонкий Ethernet). Подключите
маршрутизатор к сетевому кабелю с помощью трансивера AUI/10BT, если
это нужно.---Рабочая станция Sun
|
---Машина с FreeBSD
|
---Windows 95
|
Отдельный маршрутизатор
|
Канал ISDN BRI10 Base 2 EthernetЕсли ваш домашний или удаленный офис представляет собой один
компьютер, то для непосредственного подключения к маршрутизатору вы
вы можете использовать витую пару с перекрестным соединениям.Центральный офис или другая локальная сеть10 base TСеть построена в топологии звезды на основе 10 Base T Ethernet
(витая пара). -------Сервер Novell
| H |
| ---Sun
| |
| U ---FreeBSD
| |
| ---Windows 95
| B |
|___---Отдельно стоящий маршрутизатор
|
Канал ISDN BRIСхема сети с ISDNОдним большим преимуществом большинства маршрутизаторов/мостов
является то, что они позволяют иметь 2 отдельных
независимых соединения PPP к 2 различным сайтам
одновременно. Это не поддерживается в большинстве
TA, кроме специальных (обычно дорогих) моделей, имеющих по два
последовательных порта. Не путайте это с балансировкой нагрузки,
MPP и так далее.Это может оказаться весьма полезной особенностью, например, если
у вас имеется постоянное ISDN-соединение в вашем офисе, и вы хотите
им воспользоваться, но не хотите задействовать дополнительный канал
ISDN на работе. Маршрутизатор, расположенный в офисе, может
использовать выделенное соединение по каналу B (64 Кбит/с) для
Интернет,
и одновременно другой канал B для отдельного соединения для передачи
данных. Второй канал B может использоваться для входящих, исходящих
и динамически распределяемых соединений (MPP и так далее) совместно с
первым каналом B для повышения пропускной способности.IPX/SPXМост Ethernet также позволяет вам передавать больше, чем просто
трафик IP. Вы сможете передавать IPX/SPX и любые другие протоколы,
которые вы используете.ChernLeeТекст предоставил Даемон преобразования сетевых адресов (natd)ОбзорnatdДаемон преобразования сетевых адресов (Network Address
Translation) во FreeBSD, широко известный как &man.natd.8;, является
даемоном, который принимает входящие IP-пакеты, изменяет адрес
отправителя на адрес локальной машины и повторно отправляет эти пакеты
в потоке исходящих пакетов. &man.natd.8; делает это, меняя IP-адрес
отправителя и порт таким образом, что когда данные принимаются
обратно, он может определить расположение источника начальных данных
и переслать их машине, которая запрашивала данные изначально.совместное использование доступа в Интернетсокрытие IPЧаще всего NAT используется для организации так называемого
Совместного Использования Интернет.НастройкаИз-за исчерпания пространства адресов в IPv4 и увеличения
количества пользователей высокоскоростных каналов связи, таких, как
кабельное подключение или DSL, необходимость в решении по Совместному
Использованию Интернет растёт. Возможность подключить несколько
компьютеров через единственное соединение и IP-адрес делает
&man.natd.8; подходящим решением.Чаще всего у пользователя имеется машина, подключенная к кабельному
каналу или каналу DSL с одним IP-адресом и есть желание использовать
этот единственный подключенный компьютер для организации доступа в
Интернет другим компьютерам в локальной сети.Для этого машина FreeBSD, находящаяся в Интернет, должна выступать
в роли шлюза. Эта шлюзовая машина должна иметь два сетевых
адаптера—один для подключения к маршрутизатору Интернет, а
другой для подключения к ЛВС. Все машины в локальной сети
подключаются через сетевой концентратор или коммутатор. _______ __________ ________
| | | | | |
| Hub |-----| Client B |-----| Router |----- Internet
|_______| |__________| |________|
|
____|_____
| |
| Client A |
|__________|Структура сетиПодобная конфигурация часто используется для совместного
использования доступа в Интернет. Одна из подключенных к локальной
сети машин подключается к Интернет. Остальные машины работают с
Интернет посредством этой шлюзовой машины.ядронастройкаНастройкаВ файле конфигурации ядра должны присутствовать следующие
параметры:options IPFIREWALL
options IPDIVERTДополнительно, если это нужно, можно добавить следующее:options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_VERBOSEВ файле /etc/rc.conf должны быть такие
строки:gateway_enable="YES"
firewall_enable="YES"
firewall_type="OPEN"
natd_enable="YES"
natd_interface="fxp0"
natd_flags="" Указывает машине выступать в качестве шлюза. Выполнение
команды sysctl net.inet.ip.forwarding=1
приведёт к тому же самому результату.При загрузке включает использование правил брандмауэра
из файла /etc/rc.firewall.Здесь задается предопределенный набор правил брандмауэра,
который разрешает все. Посмотрите файл
/etc/rc.firewall для нахождения
дополнительных типов.Указывает, через какой интерфейс передавать пакеты
(интерфейс, подключенный к Интернет).Любые дополнительный параметры, передаваемые при запуске
даемону &man.natd.8;.При использовании вышеуказанных параметров в файле
/etc/rc.conf при загрузке будет запущена команда
natd -interface fxp0. Эту команду можно запустить и
вручную.Если для передачи &man.natd.8; набирается слишком много
параметров, возможно также использовать конфигурационный файл. В
этом случае имя настроечного файла должно быть задано добавлением
следующей строки в /etc/rc.conf:natd_flags="-f /etc/natd.conf"Файл /etc/natd.conf будет содержать перечень
конфигурационных параметров, по одному в строке. К примеру, для
примера из следующего раздела будет использоваться такой файл:redirect_port tcp 192.168.0.2:6667 6667
redirect_port tcp 192.168.0.3:80 80Для получения более полной информации о конфигурационном файле
прочтите страницу справки по &man.natd.8; относительно параметра
.Каждой машине и интерфейсу в ЛВС должен быть назначен IP-адрес из
адресного пространства частных сетей, как это определено в RFC 1918, а в
качестве маршрутизатора по умолчанию должен быть задан IP-адрес машины
с natd из внутренней сети.Например, клиенты A и B в ЛВС
имеют IP-адреса 192.168.0.2 и 192.168.0.3, а интерфейс машины с natd в
локальной сети имеет IP-адрес 192.168.0.1. Маршрутизатором по умолчанию для
клиентов A и B должна быть назначена
машина с natd, то есть 192.168.0.1. Внешний, или Интернет-интерфейс
машины с natd не требует особых
настроек для работы &man.natd.8;.Перенаправление портовМинусом использования &man.natd.8; является то, что машины в
локальной сети
недоступны из Интернет. Клиенты в ЛВС могут выполнять исходящие
соединения во внешний мир, но не могут обслуживать входящие. Это
является проблемой при запуске служб Интернет на клиентских машинах в
локальной сети. Простым решением является перенаправление некоторых
портов Интернет машины с natd на клиента
локальной сети.Пусть, к примеру, сервер IRC запущен на клиенте A,
а веб-сервер работает на клиенте B. Чтобы это
работало, соединения, принимаемые на портах 6667 (IRC) и 80 (веб),
должны перенаправляться на соответствующие машины.Программе &man.natd.8; должна быть передана команда
с соответствующими параметрами.
Синтаксис следующий: -redirect_port proto targetIP:targetPORT[-targetPORT]
[aliasIP:]aliasPORT[-aliasPORT]
[remoteIP[:remotePORT[-remotePORT]]]В примере выше аргументы должен быть такими: -redirect_port tcp 192.168.0.2:6667 6667
-redirect_port tcp 192.168.0.3:80 80При этом будут перенаправлены соответствующие порты
tcp на клиентские машины в локальной сети.Аргумент может использоваться для
указания диапазонов портов, а не конкретного порта. Например,
tcp 192.168.0.2:2000-3000 2000-3000 будет
перенаправлять все соединения, принимаемые на портах от 2000 до 3000,
на порты от 2000 до 3000 клиента A.Эти параметры можно указать при непосредственном запуске
&man.natd.8;, поместить их в параметр
natd_flags="" файла
/etc/rc.conf, либо передать через
конфигурационный файл.Для получение информации о других параметрах настройки обратитесь
к справочной странице по &man.natd.8;Перенаправление адресаперенаправление адресаПеренаправление адреса полезно, если имеется несколько адресов IP,
и они должны быть на одной машине. В этой ситуации &man.natd.8; может
назначить каждому клиенту ЛВС свой собственный внешний IP-адрес. Затем
&man.natd.8; преобразует исходящие от клиентов локальной сети пакеты,
заменяя IP-адреса на соответствующие внешние, и перенаправляет весь
трафик, входящий на некоторый IP-адрес, обратно конкретному клиенту
локальной сети. Это также называют статическим NAT. К примеру, пусть
IP-адреса 128.1.1.1, 128.1.1.2 и 128.1.1.3 принадлежат шлюзовой машине
natd. 128.1.1.1 может использоваться в качестве
внешнего IP-адреса шлюзовой машины natd,
тогда как 128.1.1.2 и 128.1.1.3 будут перенаправляться обратно
к клиентам ЛВС A и B.Синтаксис для таков:-redirect_address localIP publicIP
-
+ localIPВнутренний IP-адрес клиента локальной сети.publicIPВнешний IP, соответствующий клиенту локальной сети.В примере этот аргумент будет выглядеть так:-redirect_address 192.168.0.2 128.1.1.2
-redirect_address 192.168.0.3 128.1.1.3Как и для , эти аргументы также
помещаются в строку natd_flags="" файла
/etc/rc.conf или передаются через конфигурационный
файл. При перенаправлении адресов нет нужды в перенаправлении портов,
потому что перенаправляются все данные, принимаемые для конкретного
IP-адреса.Внешние IP-адреса машины с natd должны
быть активизированы и являться синонимами для внешнего интерфейса.
Обратитесь к &man.rc.conf.5;, чтобы это сделать.IP по параллельному порту (PLIP)PLIPIP по параллельному портуPLIP позволяет нам работать с TCP/IP по параллельному порту. Это
полезно для машин без сетевых адаптеров или для установки на лаптопы.
В этом разделе мы обсудим:создание кабеля для параллельного порта (laplink).Соединение двух компьютеров посредством PLIP.Создание параллельного кабеляВы можете приобрести кабель для параллельного порта в большинстве
магазинов, торгующих комплектующими. Если вы его не найдете, или же
просто хотите знать, как он делается, то следующая таблица поможет вам
сделать такой кабель из обычного принтерного кабеля для параллельного
порта.
Настройка PLIPПрежде всего вы должны найти laplink-кабель. Затем
удостоверьтесь, что на обоих компьютерах в ядро включена поддержка
драйвера &man.lpt.4;:&prompt.root; grep lp /var/run/dmesg.boot
lpt0: <Printer> on ppbus0
lpt0: Interrupt-driven portУправление параллельным портом должно выполняться по прерываниям.
Во &os; 4.X в файле конфигурации ядра должна присутствовать
строка, подобная следующей:device ppc0 at isa? irq 7Во &os; 5.X файл /boot/device.hints
должен содержать следующие строки:hint.ppc.0.at="isa"
hint.ppc.0.irq="7"Затем проверьте, что файл конфигурации ядра имеет строку
device plip, или загружен ли модуль ядра
plip.ko. В обоих случаях интерфейс работы с
сетью по параллельному порту должен присутствовать на момент прямого
использования команды &man.ifconfig.8;. Во &os; 4.X это должно
быть примерно так:&prompt.root; ifconfig lp0
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500а для &os; 5.X:&prompt.root; ifconfig plip0
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500Имя устройства, используемого для параллельного интерфейса,
во &os; 4.X
(lpX) и
&os; 5.X
(plipX).Подключите кабель laplink к параллельным интерфейсам на обоих
компьютерах.Настройте параметры сетевого интерфейса с обеих сторон, работая как
пользователь root. К примеру, если вы хотите
соединить хост host1, на котором работает
&os; 4.X, с хостом host2 под управлением
&os; 5.X: host1 <-----> host2
IP Address 10.0.0.1 10.0.0.2Настройте интерфейс на машине host1,
выполнив:&prompt.root; ifconfig plip0 10.0.0.1 10.0.0.2Настройте интерфейс на машине host2,
выполнив:&prompt.root; ifconfig lp0 10.0.0.2 10.0.0.1Теперь вы должны получить работающее соединение. Пожалуйста,
прочтите страницы руководства по &man.lp.4; и &man.lpt.4; для выяснения
деталей.Вы должны также добавить оба хоста в
/etc/hosts:127.0.0.1 localhost.my.domain localhost
10.0.0.1 host1.my.domain host1
10.0.0.2 host2.my.domainЧтобы проверить работу соединения, перейдите к каждому хосту и
выполните тестирование соединения с другой машиной посредством команды
ping. К примеру, на машине host1:&prompt.root; ifconfig lp0
lp0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 10.0.0.1 --> 10.0.0.2 netmask 0xff000000
&prompt.root; netstat -r
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
host2 host1 UH 0 0 lp0
&prompt.root; ping -c 4 host2
PING host2 (10.0.0.2): 56 data bytes
64 bytes from 10.0.0.2: icmp_seq=0 ttl=255 time=2.774 ms
64 bytes from 10.0.0.2: icmp_seq=1 ttl=255 time=2.530 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=255 time=2.556 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=255 time=2.714 ms
--- host2 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 msAaronKaplanПервоначальный текст написал TomRhodesРеструктуризацию и добавления внёс BradDavisРасширил IPv6IPv6 (также называемый IPng IP next generation -
следующее поколение IP) является новой версией широко известного
протокола IP (называемого также IPv4). Как и другие
современные системы *BSD, FreeBSD включает эталонную реализацию IPv6 от
KAME. Так что система FreeBSD поставляется со всем,
что вам нужно для экспериментирования с IPv6. Этот раздел посвящён
настройке и запуску в работу IPv6.В начале 1990-х люди стали беспокоиться о быстро иссякающем адресном
пространстве IPv4. Принимая во внимание темпы роста Интернет, имелись
основные проблемы:Нехватка адресов. Сегодня это не такая большая проблема, так как
стали применяться адресные пространства для частных сетей
(10.0.0.0/8, 192.168.0.0/24 и так далее) и технология
преобразования сетевых адресов (NAT - Network
Address Translation).Таблицы маршрутов становятся чересчур большими. Это всё ещё
является проблемой сегодня.IPv6 решает эти и многие другие вопросы:128-битное адресное пространство. Другими словами, теоретически
доступны 340,282,366,920,938,463,463,374,607,431,768,211,456 адреса.
Это означает плотность примерно в 6.67 * 10^27 адресов IPv6 на
квадратный метр нашей планеты.Маршрутизаторы будут хранить в своих таблицах только
агрегированные адреса сетей, что уменьшает средний размер таблицы
маршрутизации до 8192 записей.Имеется также множество других полезных особенностей IPv6, таких,
как:Автоматическая настройка адреса (RFC2462)Групповые адреса (один к нескольким из
многих)Обязательные адреса множественной рассылкиIPsec (IP security - безопасный IP)Упрощённая структура заголовкаМобильный IPМеханизмы преобразования IPv6-в-IPv4Для получения дополнительной информации посмотрите:Обзор IPv6 на сайте playground.sun.comKAME.net6bone.netОсновы адресации IPv6Существуют различные типы адресов IPv6: одноадресные (Unicast),
групповые (Anycast) и многоадресные (Multicast).Адреса типа Unicast хорошо всем известны. Пакет, посланный на
такой адрес, достигает в точности интерфейса, который этому адресу
соответствует.Адреса типа Anycast синтаксически неотличимы от адресов Unicast,
но они адресуют группу интерфейсов. Пакет, направленный такому адресу,
попадёт в ближайший (согласно метрике маршрутизатора) интерфейс.
Адреса Anycast могут использоваться только маршрутизаторами.Адреса типа Multicast идентифицируют группу интерфейсов. Пакет,
посланный на такой адрес, достигнет всех интерфейсов, привязанных к
группе многоадресного вещания.Широковещательные адреса IPv4 (обычно xxx.xxx.xxx.255) выражаются адресами
многоадресного вещания IPv6.
Зарезервированные адреса IPv6IPv6 адресДлина префикса (биты)ОписаниеЗаметки::128 битнет описанияcf. 0.0.0.0 в
IPv4::1128 битloopback адресcf. 127.0.0.1 в
IPv4::00:xx:xx:xx:xx96 битвстроенный IPv4Нижние 32 бита это адрес IPv4. Также
называется IPv4 совместимым IPv6
адресом::ff:xx:xx:xx:xx96 битАдрес IPv6, отображенный на IPv4Нижние 32 бита это адрес IPv4.
Для хостов, не поддерживающих IPv6.fe80:: - feb::10 битlink-localcf. loopback адрес в IPv4fec0:: - fef::10 битsite-localff::8 битшироковещательный001 (основание
2)3 битglobal unicastВсе global unicast адреса присваиваются из этого
пула. Первые три бита
001.
Чтение адресов IPv6Каноническая форма представляется в виде x:x:x:x:x:x:x:x, где каждый символ
x является 16-битовым шестнадцатиричным числом. К
примеру, FEBC:A574:382B:23C1:AA49:4592:4EFE:9982Часто в адресе присутствуют длинные строчки, заполненные нулями,
поэтому одна такая последовательность на адрес может быть сокращена до
::. Кроме того, до трех ведущих 0
на шестнадцатеричную четверку могут быть пропущены.
К примеру, fe80::1
соответствует канонической форме fe80:0000:0000:0000:0000:0000:0000:0001.В третьей форме последние 32 бита записываются в широко известном
(десятичном) стиле IPv4 с точками . в качестве
разделителей. Например, f2002::10.0.0.1 соответствует
(шестнадцатеричному) каноническому представлению 2002:0000:0000:0000:0000:0000:0a00:0001,
которое, в свою очередь, равнозначно записи 2002::a00:1.Теперь читатель должен понять следующую запись:&prompt.root; ifconfigrl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
inet 10.0.0.10 netmask 0xffffff00 broadcast 10.0.0.255
inet6 fe80::200:21ff:fe03:8e1%rl0 prefixlen 64 scopeid 0x1
ether 00:00:21:03:08:e1
media: Ethernet autoselect (100baseTX )
status: activefe80::200:21ff:fe03:8e1%rl0
является автоматически настроенным локальным адресом. Он
генерируется из MAC адреса в процессе автоматической
конфигурации.Для получения дополнительной информации о структуре адресов IPv6
обратитесь к RFC3513.Настройка подключенияНа данный момент существуют четыре способа подключиться к другим
хостам и сетям IPv6:Подключиться к экспериментальному 6boneПолучить сеть IPv6 от вышестоящего провайдера. Для получения
рекомендаций обратитесь к вашему провайдеру Интернет.Туннелировать посредством 6-в-4 (RFC3068)Использовать порт net/freenet6, если вы используете
коммутируемое соединение.Здесь мы будем рассматривать подключение к 6bone, так как на
данный момент это является самым популярным способом.Сначала взгляните на сайт 6bone и найдите ближайшую к вам точку
подключения к 6bone. Напишите ответственному и при некоторой удаче вам
дадут инструкции по настройке соединения. Обычно это касается
настройки туннеля GRE (gif).Вот типичный пример настройки туннеля &man.gif.4;:&prompt.root; ifconfig gif0 create
&prompt.root; ifconfig gif0
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
&prompt.root; ifconfig gif0 tunnel MY_IPv4_ADDRHIS_IPv4_ADDR
&prompt.root; ifconfig gif0 inet6 alias MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDRЗамените слова, написанные заглавными буквами, информацией, которую
вам дал вышестоящий узел 6bone.При этом установится туннель. Проверьте работу туннеля утилитой
&man.ping6.8; с адресом ff02::1%gif0.
Вы должны получить два положительных ответа.Если вы заинтригованы адресом ff02:1%gif0, скажем, что это адрес
многоадресного вещания. %gif0 указывает на
использование такого адреса с сетевым интерфейсом
gif0. Так как мы выполняем
ping над адресом многоадресного вещания, то другая
сторона туннеля также должна ответить.Теперь настройка маршрута к вашей вышестоящей точке подключения
6bone должна быть весьма проста:&prompt.root; route add -inet6 default -interface gif0
&prompt.root; ping6 -n MY_UPLINK&prompt.root; traceroute6 www.jp.FreeBSD.org
(3ffe:505:2008:1:2a0:24ff:fe57:e561) from 3ffe:8060:100::40:2, 30 hops max, 12 byte packets
1 atnet-meta6 14.147 ms 15.499 ms 24.319 ms
2 6bone-gw2-ATNET-NT.ipv6.tilab.com 103.408 ms 95.072 ms *
3 3ffe:1831:0:ffff::4 138.645 ms 134.437 ms 144.257 ms
4 3ffe:1810:0:6:290:27ff:fe79:7677 282.975 ms 278.666 ms 292.811 ms
5 3ffe:1800:0:ff00::4 400.131 ms 396.324 ms 394.769 ms
6 3ffe:1800:0:3:290:27ff:fe14:cdee 394.712 ms 397.19 ms 394.102 msЭта выдача будет отличаться от машины к машине. Теперь вы должны
суметь достигнуть сайта IPv6 www.kame.net и увидеть танцующую
черепаху — в случае, если ваш браузер поддерживает IPv6, как,
например, www/mozilla или
Konqueror,
который входит в x11/kdebase3,
или www/epiphany.DNS в мире IPv6Для IPv6 использовались два типа записей DNS. IETF
объявил записи A6 устаревшими. Стандартом на данный момент
являются записи AAAA.Использование записей AAAA достаточно просто. Назначение вашему
имени хоста нового адреса IPv6 достигается просто добавлением:MYHOSTNAME AAAA MYIPv6ADDRк вашему первичному файлу DNS зоны. В случае, если вы не
обслуживаете собственные зоны DNS, обратитесь к
вашему провайдеру DNS. Имеющиеся версии
bind (версий 8.3 и 9) и
dns/djbdns (с патчем IPv6)
поддерживают записи AAAA.Внесение необходимых изменений в
/etc/rc.confНастройки клиентов IPv6Эти установки помогут вам настроить компьютер, который
будет работать в сети как клиент, а не как маршрутизатор.
Для включения настройки интерфейсов через &man.rtsol.8;
при загрузке, все, что вам потребуется, это добавить
следующую строку:ipv6_enable="YES"Для статического присвоения IP адреса, такого как 2001:471:1f11:251:290:27ff:fee0:2093,
интерфейсу fxp0, добавьте:ipv6_ifconfig_fxp0="2001:471:1f11:251:290:27ff:fee0:2093"Для назначения маршрутизатором по умолчанию
2001:471:1f11:251::1,
добавьте следующую строку к
/etc/rc.conf:ipv6_defaultrouter="2001:471:1f11:251::1"Настройки маршрутизатора/шлюза IPv6Этот раздел поможет вам использовать инструкции, которые выдал
провайдер туннеля, например, 6bone, и сделать эти настройки
постоянными. Для восстановления туннеля при загрузке системы
используйте в /etc/rc.conf нижеприведенные
настройки.Задайте список туннельных интерфейсов (Generic Tunneling
interfaces), которые необходимо настроить, например
gif0:gif_interfaces="gif0"Для настройки интерфейса с локальным подключением на
MY_IPv4_ADDR к удаленной точке
REMOTE_IPv4_ADDR:gifconfig_gif0="MY_IPv4_ADDR REMOTE_IPv4_ADDR"Для включения IPv6 адреса, который был вам присвоен для
использования в подключении к туннелю IPv6, добавьте:ipv6_ifconfig_gif0="MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR"Затем все, что вам потребуется сделать, это добавить маршрут
по умолчанию для IPv6. Это другая сторона туннеля IPv6:ipv6_defaultrouter="MY_IPv6_REMOTE_TUNNEL_ENDPOINT_ADDR"Распространение маршрутов и автоматическая настройка
хостовЭтот раздел поможет вам настроить &man.rtadvd.8; для
распространения маршрута IPv6 по умолчанию.Для включения &man.rtadvd.8; вам понадобится добавить в
/etc/rc.conf следующую строку:rtadvd_enable="YES"Важно указать интерфейс, на котором выполняется запрос
маршрутизатора IPv6. Например, для указания &man.rtadvd.8;
использовать fxp0:rtadvd_interfaces="fxp0"Теперь мы должны создать файл настройки,
/etc/rtadvd.conf. Вот пример:fxp0:\
:addrs#1:addr="2001:471:1f11:246::":prefixlen#64:tc=ether:Замените fxp0 на интерфейс, который вы
будете использовать.Затем, замените 2001:471:1f11:246:: на префикс вашего
размещения.Если у вас выделенная подсеть /64, больше ничего менять не потребуется.
Иначе, вам потребуется изменить prefixlen#
на корректное значение.HartiBrandtПредоставил Асинхронный режим передачи (ATM) в &os; 5.XКлассическая настройка IP через ATM (PVC)Классический IP через ATM (CLIP)
это простейший метод использования асинхронного режима
передачи (Asynchronous Transfer Mode, ATM) с IP. Он может
быть использован с коммутируемыми подключениями
(switched connections, SVC) и с постоянными подключениями
(permanent connections, PVC). В этом разделе будет описано
как настроить сеть на основе PVC.Полностью объединенные конфигурацииПервый метод для настройки CLIP с
PVC это подключение каждого компьютера к каждому в сети с
выделенным PVC. Хотя настройка проста, она непрактична
для большого количества компьютеров. В примере предполагается,
что в сети есть четыре компьютера, каждый подключенный к
ATM
сети с помощью карты ATM адаптера.
Первый шаг это планирование IP адресов и ATM подключений между
компьютерами. Мы используем:
-
+ ХостIP адресhostA192.168.173.1hostB192.168.173.2hostC192.168.173.3hostD192.168.173.4Для сборки полностью объединенной сети нам потребуется по
одному ATM соединению между каждой парой компьютеров:
-
+ КомпьютерыVPI.VCI соединениеhostA - hostB0.100hostA - hostC0.101hostA - hostD0.102hostB - hostC0.103hostB - hostD0.104hostC - hostD0.105Значения VPI и VCI на каждом конце соединения конечно могут
отличаться, но для упрощения мы предполагаем, что они одинаковы.
Затем нам потребуется настроить ATM интерфейсы на каждом
хосте:hostA&prompt.root; ifconfig hatm0 192.168.173.1 up
hostB&prompt.root; ifconfig hatm0 192.168.173.2 up
hostC&prompt.root; ifconfig hatm0 192.168.173.3 up
hostD&prompt.root; ifconfig hatm0 192.168.173.4 upпредполагая, что ATM интерфейс называется
hatm0 на всех хостах. Теперь PVC
необходимо настроить на hostA (мы предполагаем,
что ATM коммутаторы уже настроены, вам необходимо свериться
с руководством на коммутатор за информацией по
настройке).hostA&prompt.root; atmconfig natm add 192.168.173.2 hatm0 0 100 llc/snap ubr
hostA&prompt.root; atmconfig natm add 192.168.173.3 hatm0 0 101 llc/snap ubr
hostA&prompt.root; atmconfig natm add 192.168.173.4 hatm0 0 102 llc/snap ubr
hostB&prompt.root; atmconfig natm add 192.168.173.1 hatm0 0 100 llc/snap ubr
hostB&prompt.root; atmconfig natm add 192.168.173.3 hatm0 0 103 llc/snap ubr
hostB&prompt.root; atmconfig natm add 192.168.173.4 hatm0 0 104 llc/snap ubr
hostC&prompt.root; atmconfig natm add 192.168.173.1 hatm0 0 101 llc/snap ubr
hostC&prompt.root; atmconfig natm add 192.168.173.2 hatm0 0 103 llc/snap ubr
hostC&prompt.root; atmconfig natm add 192.168.173.4 hatm0 0 105 llc/snap ubr
hostD&prompt.root; atmconfig natm add 192.168.173.1 hatm0 0 102 llc/snap ubr
hostD&prompt.root; atmconfig natm add 192.168.173.2 hatm0 0 104 llc/snap ubr
hostD&prompt.root; atmconfig natm add 192.168.173.3 hatm0 0 105 llc/snap ubrКонечно, вместо UBR может быть использован другой тип, если ATM адаптер поддерживает это. В этом случае
имя типа дополняется параметрами трафика. Помощь по
&man.atmconfig.8; может быть получена командой:&prompt.root; atmconfig help natm addили на странице справочника &man.atmconfig.8;.Та же настройка может быть выполнена через
/etc/rc.conf. Для hostA
это будет выглядеть примерно так:network_interfaces="lo0 hatm0"
ifconfig_hatm0="inet 192.168.173.1 up"
natm_static_routes="hostB hostC hostD"
route_hostB="192.168.173.2 hatm0 0 100 llc/snap ubr"
route_hostC="192.168.173.3 hatm0 0 101 llc/snap ubr"
route_hostD="192.168.173.4 hatm0 0 102 llc/snap ubr"Текущий статус всех маршрутов CLIP
может быть получен командой:hostA&prompt.root; atmconfig natm show
diff --git a/ru_RU.KOI8-R/books/handbook/basics/chapter.sgml b/ru_RU.KOI8-R/books/handbook/basics/chapter.sgml
index 6e184c30fa..d2f2ab5b20 100644
--- a/ru_RU.KOI8-R/books/handbook/basics/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/basics/chapter.sgml
@@ -1,2552 +1,2552 @@
ChrisShumwayПереписал АлексейЗелькинПеревод на русский язык: АлексейДокучаевДенисПеплинОсновы UNIXКраткий обзоросновыВ этой главе мы попытаемcя раскрыть основные принципы и команды
операционной системы FreeBSD. Большая часть нижеизложенного
материала в более или менее равной степени применима к любой
&unix;-подобной операционной системе. Если вы уверены, что не найдете
здесь ничего нового для себя, можете смело пропустить эту главу.
Если же вы новичок, мы настоятельно рекомендуем внимательно
прочесть это главу.Прочитав эту главу, вы узнаете:Как использовать виртуальные консоли
FreeBSD.Как работают права доступа на файлы в &unix;.Иерархия каталогов &os;.Организация дисков &os;.Как монтировать и размонтировать файловые системы.Что такое процессы, даемоны и сигналы.Что такое командная оболочка (или интерпретатор команд) и
как настроить личное рабочее окружение.Как пользоваться стандартными текстовыми
редакторами.Что такое устройства и файлы устройств.Какие бинарные форматы используются в &os;.Как пользоваться справочным руководством для получения
дополнительной информации.Виртуальные консоли и терминалывиртуальные консолитерминалыFreeBSD можно использовать разными способами. Один из них —
набор команд в текстовом терминале. Используйте этот способ, и вся
гибкость и мощь систем &unix; будет в ваших руках. Этот раздел
рассказывает о терминалах, консолях и их
использовании в FreeBSD.КонсольконсольЕсли во время установки вы не настроили FreeBSD для автоматического
запуска графической среды при загрузке, система запросит ввод
логина сразу после завершения стартовых скриптов. Вы увидите примерно
следующее:Additional ABI support:.
Local package initialization:.
Additional TCP options:.
Fri Sep 20 13:01:06 EEST 2002
FreeBSD/i386 (pc3.example.org) (ttyv0)
login:В вашей системе сообщение может быть другим, но очень похожим на
это. В данный момент нас интересуют последние две строки. Вторая с
конца строка:FreeBSD/i386 (pc3.example.org) (ttyv0)В этой строке содержится немного информации о только что загруженной
системе. Это консоль FreeBSD, работающей на
Intel или совместимом процессоре x86
архитектурыЭто следует из обозначения i386. Обратите
внимание, что даже если FreeBSD работает не на процессоре
Intel 386, это обозначение будет i386.
Здесь показан не тип процессора, а его
архитектура.. Имя этого компьютера (у каждого компьютера &unix; есть
имя) pc3.example.org, и в данный момент вы видите
системную консоль — терминал
ttyv0.Наконец, последняя строка всегда:login:Здесь вам предлагается ввести имя пользователя,
чтобы войти в FreeBSD. Следующий раздел описывает способ, которым вы
можете сделать это.Вход в FreeBSDFreeBSD это многопользовательская, многопроцессорная система. Это
формальное описание системы, которая может быть использована множеством
разных людей, одновременно запускающих большое количество программ на
одном компьютере.Любой многопользовательской системе нужен способ отличать каждого
пользователя от остальных. В FreeBSD (и всех
&unix; подобных операционных системах), эта задача решается путем
входа пользователя в систему перед запуском каких-либо
программ. У каждого пользователя есть уникальное имя (имя
пользователя) и персональный, секретный ключ
(пароль). Перед тем, как разрешить пользователю
выполнять какие-либо программы, FreeBSD запрашивает их оба.стартовые скриптыСразу после загрузки FreeBSD и завершения работы стартовых
скриптовСтартовые скрипты — это программы, запускаемые
автоматически во время загрузки FreeBSD. Их основная задача
— подготовить систему к запуску других программ и запустить
настроенные сервисы, которые будут работать в фоновом режиме,
выполняя полезную работу., система предложит вам ввести имя пользователя:login:В этом примере, предположим что ваше имя пользователя
john. Введите john в этом
приглашении и нажмите Enter. Далее должно появиться
приглашение ввести пароль:login: john
Password:Введите соответствующий имени john пароль и
нажмите Enter. Пароль не виден!
Не беспокойтесь об этом. Это сделано по соображениям
безопасности.Если вы ввели пароль правильно, то сразу же войдете в FreeBSD
и можете начать выполнять команды.Вы увидите сообщение дня (MOTD, или message of
the day) за которым последует командная строка (с символом
#, $, или %).
Это означает, что вы успешно вошли в FreeBSD.Множественные консолиЗапуск команд &unix; из консоли это конечно хорошо, но FreeBSD может
выполнять множество программ одновременно, поэтому наличие одной консоли
может быть недостатком. В таком случае очень полезны виртуальные
консоли.FreeBSD может быть настроена для работы с несколькими виртуальными
консолями. Вы можете переключаться с одной виртуальной консоли на
другую, нажимая соответствующие сочетания клавиш на клавиатуре. У
каждой консоли есть свой канал вывода и FreeBSD заботится о том, чтобы
правильно перенаправить ввод с клавиатуры и вывод на монитор как только
вы переключитесь с одной консоли на другую.Для переключения между консолями зарезервированы специальные
комбинации клавишПодробное техническое описание деталей работы драйверов консолей
FreeBSD и клавиатуры можно найти в &man.syscons.4;, &man.atkbd.4;,
&man.vidcontrol.1; и &man.kbdcontrol.1;. Здесь мы не раскрываем
деталей, однако интересующиеся этим вопросом всегда могут обратиться
к страницам справочника за более детальным объяснением принципов
этой темы.. Вы можете использовать сочетания
AltF1,
AltF2, до
AltF8 чтобы
переключаться между различными виртуальными консолями в FreeBSD.При переключении от одной консоли к другой, FreeBSD заботится о
сохранении и восстановлении вывода на экран. Результатом является
иллюзия наличия множества виртуальных
экранов и клавиатур, которые могут быть использованы для ввода и запуска
команд FreeBSD. Программы, которые вы запускаете на одной виртуальной
консоли, не прекращают выполнение когда консоль становится невидимой.
Они продолжают выполняться, когда вы переключаетесь на другую
виртуальную консоль.Файл /etc/ttysВ конфигурации по умолчанию FreeBSD запускает восемь виртуальных
консолей. Тем не менее это не ограничение оборудования, и вы можете
легко настроить систему для загрузки большего или меньшего числа
виртуальных консолей. Число и параметры виртуальных консолей задаются
в файле /etc/ttys.Вы можете использовать это файл для настройки виртуальных консолей
FreeBSD. Любая не закомментированная строка в этом файле
(строка, не начинающаяся с символа #), содержит
настройки для одного терминала или виртуальной консоли. Версия этого
файла по умолчанию, поставляемая с FreeBSD, содержит настройки для
девяти
виртуальных консолей и включает восемь терминалов. Это строки, начинающиеся с
ttyv:# name getty type status comments
#
ttyv0 "/usr/libexec/getty Pc" cons25 on secure
# Virtual terminals
ttyv1 "/usr/libexec/getty Pc" cons25 on secure
ttyv2 "/usr/libexec/getty Pc" cons25 on secure
ttyv3 "/usr/libexec/getty Pc" cons25 on secure
ttyv4 "/usr/libexec/getty Pc" cons25 on secure
ttyv5 "/usr/libexec/getty Pc" cons25 on secure
ttyv6 "/usr/libexec/getty Pc" cons25 on secure
ttyv7 "/usr/libexec/getty Pc" cons25 on secure
ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secureЗа детальным описанием каждой колонки этого файла и всех опций,
которые можно указать для настройки виртуальных консолей, обращайтесь
к &man.ttys.5;.Консоль в однопользовательском режимеДетальное описание однопользовательского режима
можно найти в . Стоит отметить, что
при работе FreeBSD в однопользовательском режиме есть только одна
консоль. Виртуальных консолей нет. Установки консоли в
однопользовательском режиме можно найти в файле
/etc/ttys. Обратите внимание на строку,
начинающуюся с console:# name getty type status comments
#
# If console is marked "insecure", then init will ask for the root password
# when going to single-user mode.
console none unknown off secureКак сказано в комментариях выше строки console,
можно отредактировать эту строку и изменить secure
на insecure. Если вы сделаете это, FreeBSD даже
при загрузке в однопользовательском режиме будет запрашивать пароль
root.Будьте осторожны при изменении этого значения на
insecure. Если вы забудете
пароль root, загрузка в однопользовательский
режим сильно усложнится. Это все еще возможно, но несколько
более сложно для тех, кто еще не очень освоился с процессом
загрузки FreeBSD и вызова программ.Права доступаUNIXFreeBSD является прямым потомком BSD &unix; и основывается на
некоторых ключевых концепциях &unix;. В первую очередь это, конечно,
тот факт, что FreeBSD – многопользовательская операционная система.
Это означает, что несколько пользователей могут работать одновременно,
решая различные задачи и совершенно не мешая друг другу. На системе
лежит ответственность за правильное разделение и управление такими
ресурсами как память, процессорное время, периферийные устройства и
прочее.Многопользовательская среда предполагает наличие механизма
регулирования прав доступа к любому ресурсу в системе. Существует три
типа прав доступа: на чтение, запись и исполнение. Права
сгруппированы три по три, соответственно чтение/запись/выполнение для
владельца/группы/всех остальных. Численное представление:права доступаправа на файлы
-
+ ЗначениеПрава доступаСписок файлов каталога0Ничего не разрешено---1Нельзя читать и писать, разрешено исполнять--x2Нельзя читать и исполнять, разрешено писать-w-3Нельзя читать, разрешено писать и исполнять-wx4Разрешено читать, нельзя писать и исполнятьr--5Разрешено читать и исполнять, нельзя писатьr-x6Разрешено читать и писать, нельзя исполнятьrw-7Разрешено всеrwxlsкаталогиВы можете использовать опцию команды
&man.ls.1; для получения подробного листинга каталога, включающего
колонку с информацией о правах на файл для владельца, группы и
всех остальных. Например, команда ls -l
в произвольном каталоге может вывести следующее:&prompt.user; ls -l
total 530
-rw-r--r-- 1 root wheel 512 Sep 5 12:31 myfile
-rw-r--r-- 1 root wheel 512 Sep 5 12:31 otherfile
-rw-r--r-- 1 root wheel 7680 Sep 5 12:31 email.txt
...Вот как выглядит первая колонка вывода
ls -l:-rw-r--r--Первый (считая слева) символ говорит обычный ли это файл, каталог,
символьное устройство, сокет или любое другое псевдофайловое
устройство. В нашем случае -, указывает на обычный
файл. Следующие три символа (в данном случае это rw-)
задают права доступа владельца файла. Затем идут права группы,
которой принадлежит файл (r--). Последняя тройка
(r--) определяет права для всех остальных. Минус
означает отсутствие каких-либо прав (т.е. нельзя ни читать, ни писать, ни
выполнять). В данном случае права установлены таким образом, что
владелец может читать и писать в файл, а группа и другие могут только
читать. Таким образом, численное представление прав
644, где каждая цифра представляет три части
прав на файл.Права на устройства контролируются аналогичным образом. В
FreeBSD все устройства представлены в виде файлов, которые можно
открывать, читать и писать в них. Эти специальные файлы содержатся в
каталоге /dev.Каталоги также являются файлами. К ним применимы
те же права на чтение, запись и выполнение. Правда, в данном случае
выполнение имеет несколько другой смысл. Когда
каталог помечен как исполнимый, это означает, что
можно зайти в него (с помощью команды
cd, change directory). Это также означает, что в данном каталоге
можно получить доступ к файлам, имена которых известны (конечно,
если собственные права на файл разрешают такой доступ).Если же требуется получить список файлов в некотором
каталоге, права доступа на него должные включать доступ на
чтение. Для того, чтобы удалить из каталога какой-либо файл,
имя которого известно, на этот каталог должны быть даны права
на запись и на исполнение.Существуют и другие права доступа, но они как правило используются
в особых случаях, например, setuid-бит на выполняемые файлы и sticky-бит
на каталоги. За дополнительными сведениями по этому вопросу обращайтесь
к &man.chmod.1;.TomRhodesПредоставил Символические обозначения правПрава доступасимволическиеСимволические обозначения, иногда называемые символическими
выражениями, используют буквы вместо восьмеричных значений для
назначения прав на файлы и каталоги. Символические выражения
используют синтаксис (кто) (действие) (права), где существуют
следующие значения:
-
+ ОпцияБукваЗначение(кто)uПользователь (User)(кто)gГруппа (Group)(кто)oДругие (Other)(кто)aВсе (All, world)(действие)+Добавление прав(действие)-Удаление прав(действие)=Явная установка прав(права)rЧтение (Read)(права)wЗапись (Write)(права)xВыполнение (Execute)(права)tSticky бит(права)sSUID или SGIDЭти значения используются командой &man.chmod.1; так же
как и раньше, но с буквами. Например, вы можете использовать
следующую команду для запрета доступа других пользователей к
FILE:&prompt.user; chmod go= FILEДля изменения более чем одного набора прав можно применить список,
разделенный запятыми. Например, следующая команда удалит права группы
и всех остальных на запись в
FILE, а затем добавит права на выполнение для
всех:&prompt.user; chmod go-w,a+x FILEСтруктура каталоговиерархия каталоговФайловая система FreeBSD является ключевым моментом в понимании
устройства всей системы. Самым важным понятием является, несомненно,
корневой каталог, обозначаемый символом /.
Корневой каталог монтируется самым первым на этапе загрузки и содержит
все необходимое, чтобы подготовить систему к загрузке в
многопользовательский режим. Корневой каталог также содержит точки
монтирования всех других файловых систем.Точкой монтирования называется каталог, который будет
соответствовать корню примонтированой файловой системы. Стандартные
точки монтирования включают /usr,
/var, /mnt и
/cdrom. Эти каталоги обычно перечислены в
файле /etc/fstab, в котором указаны файловые
системы и их точки монтирования. Большинство файловых систем,
описанных в /etc/fstab монтируются автоматически
из скрипта &man.rc.8;, если только для них не указана опция
. Обратитесь к
&man.fstab.5; за дополнительной информацией о формате файла
/etc/fstab и различных опциях
монтирования.Полное описание иерархии файловой системы есть в &man.hier.7;.
Здесь же мы упомянем лишь наиболее важные каталоги.
-
+ КаталогОписание/Корневой каталог файловой системы./bin/Основные утилиты, необходимые для работы как в
однопользовательском, так и в многопользовательском
режимах./boot/Программы и конфигурационные файлы, необходимые для
нормальной загрузки операционной системы./boot/defaults/Конфигурационные файлы с настройками по умолчанию,
используемые в процессе загрузки операционной системы
(см. &man.loader.conf.5;)./dev/Файлы устройств (см. &man.intro.4;)./etc/Основные конфигурационные файлы системы и
скрипты./etc/defaults/Основные конфигурационные файлы системы
с настройками по умолчанию (см. &man.rc.8;)./etc/mail/Конфигурационные файлы для систем обработки
почты (например, &man.sendmail.8;)./etc/namedb/Конфигурационные файлы для утилиты
named (см. &man.named.8;)./etc/periodic/Файлы сценариев, выполняемые ежедневно,
еженедельно и ежемесячно (см. &man.cron.8; и
&man.periodic.8;)./etc/ppp/Конфигурационные файлы для утилиты
ppp (см. &man.ppp.8;)./mnt/Пустой каталог, часто используемый системными
администраторами как временная точка
монтирования./proc/Виртуальная файловая система, отображающая
текущие процессы (см. see &man.procfs.5;,
&man.mount.procfs.8;)./root/Домашний каталог пользователя
root./sbin/Системные утилиты и утилиты администрирования,
необходимые для работы как в однопользовательском,
так и в многопользовательском режимах./stand/Программы, необходимые для работы в автономном
режиме (например, при установке системы)./tmp/Временный каталог (часто монтируется как
&man.mfs.8;; обычно содержимое этого каталога
теряется во время перезагрузки системы)./usr/Большинство пользовательских утилит и приложений./usr/bin/Пользовательские утилиты и приложения общего
назначения./usr/include/Стандартные заголовочные файлы для языка C./usr/lib/Файлы стандартных библиотек./usr/libdata/Файлы данных для различных утилит./usr/libexec/Системные даемоны и утилиты (выполняемые другими
программами)./usr/local/Локальные пользовательские приложения,
библиотеки, и т.д. Также используется по умолчанию коллекцией
портов. Внутри /usr/local
иерархия каталогов должна следовать &man.hier.7; для
/usr. Исключение составляют
каталог man, который расположен
непосредственно в /usr/local, а не
в /usr/local/share, и документация портов,
которая расположена в
share/doc/port.
/usr/obj/Архитектурно-зависимые файлы и каталоги,
образующиеся в процессе сборки системы из исходных
текстов в /usr/src./usr/ports/Коллекция портов FreeBSD (опционально)./usr/sbin/Системные утилиты и утилиты администрирования
(исполняемые пользователем)./usr/share/Архитектурно-независимые файлы./usr/src/Исходные тексты BSD и/или
программ./usr/X11R6/Утилиты, приложения и библиотеки X11R6 (X Window
System; необязательно)./var/Файлы журналов общего назначения, временные,
перемещаемые файлы и файлы очередей./var/log/Различные файлы системных журналов./var/mail/Почтовые ящики пользователей./var/spool/Файлы очередей печати, почты, и пр./var/tmp/Временные файлы, которые необходимо сохранять между
перезагрузками операционной системы./var/yp/Карты (maps) NIS.Организация дисковНаименьшая единица, которую FreeBSD использует для обращения
к файлам, это имя файла. Имена файлов чувствительны к регистру,
поэтому readme.txt и README.TXT
— два разных файла. FreeBSD не использует
расширение файла (.txt) для определения
программа это, документ или другой тип данных.Файлы хранятся в каталогах. Каталоги могут не содержать файлов,
или могут содержать много сотен файлов. Каталоги также могут
содержать другие каталоги, что позволяет создавать иерархию каталогов
один в другом. Это упрощает организацию данных.Обращение к файлам происходит путем задания имени файла или
каталога, дополняемого прямым слэшем /, за которым
может следовать имя другого каталога. Если есть каталог
foo, содержащий каталог
bar, который содержит файл
readme.txt, полное имя, или
путь к файлу будет
foo/bar/readme.txt.Каталоги хранятся в файловых системах. Каждая файловая система
содержит один каталог на верхнем уровне, называемый
корневым каталогом этой файловой системы.
Этот корневой каталог может содержать другие каталоги.Внешне это может быть похоже на те операционные системы,
которые вы возможно использовали. Есть несколько отличий:
например, &ms-dos; использует \ для разделения имен
файлов и каталогов, а &macos; использует :.FreeBSD не использует букв дисков, или других имен дисков в
пути. Вам не нужно писать c:/foo/bar/readme.txt
в FreeBSD.Вместо этого, одна файловая система назначается корневой
файловой системой. Обращение к корневому каталогу
корневой файловой системы происходит через /.
Любая другая файловая система монтируется
к корневой файловой системе. Неважно как много дисков есть в вашей
системе FreeBSD, каждый каталог будет выглядеть как расположенный
на том же диске.Предположим, у вас есть три файловых системы: A,
B, и C. Каждая файловая
система имеет один корневой каталог, в котором содержатся другие
каталоги, называемые
A1, A2 (и аналогично
B1, B2 и
C1, C2).Назовем A корневой файловой системой.
Если вы используете команду ls для просмотра
содержимого каталога, вы увидите два подкаталога, A1
и A2. Дерево каталогов выглядит так: /
|
+--- A1
|
`--- A2Файловая система должна быть примонтирована к каталогу другой
файловой системы. Предположим, что вы монтируете файловую систему
B на каталог A1. Корневой
каталог B замещается A1,
а каталоги в B отображаются соответственно: /
|
+--- A1
| |
| +--- B1
| |
| `--- B2
|
`--- A2Если потребуется, любые файлы из каталогов B1 или
B2 могут быть получены через путь
/A1/B1 или /A1/B2.
Все файлы, бывшие в /A1, временно скрыты.
Они появятся, если B будет
размонтирована с A.Если B была смонтирована на A2,
диаграмма будет выглядеть так: /
|
+--- A1
|
`--- A2
|
+--- B1
|
`--- B2а пути будут /A2/B1 и
/A2/B2 соответственно.Файловые системы могут быть смонтированы одна на другую.
Продолжая предыдущий пример, файловая система C
может быть смонтирована на каталог B1 файловой
системы B в таком порядке: /
|
+--- A1
|
`--- A2
|
+--- B1
| |
| +--- C1
| |
| `--- C2
|
`--- B2Или C может быть смонтирована прямо на
файловую систему A, на каталог A1
: /
|
+--- A1
| |
| +--- C1
| |
| `--- C2
|
`--- A2
|
+--- B1
|
`--- B2Если вы знакомы с &ms-dos;, это похоже, хотя и не идентично,
команде join.Как правило, это не должно вас интересовать. Обычно вы создаете
файловые системы во время установки FreeBSD, решаете куда их
монтировать, и ничего не меняете, пока не понадобится добавить новый
диск.Можно создать одну большую корневую файловую систему и не
создавать других. У такого подхода есть несколько
недостатков и одно преимущество.Преимущества нескольких файловых системРазличные файловые системы могут иметь различные
опции монтирования. Например,
в целях безопасности корневая файловая система может
быть смонтирована только для чтения, что делает
невозможным случайное удаление или редактирование
критически важного файла. Отделение файловых систем,
используемых пользователями для записи, таких как
/home, от других файловых
систем позволяет также монтировать их с параметром
nosuid; этот параметр отменяет
действие битов suid/
guid на исполняемых файлах,
в этой файловой системе, что потенциально повышает
безопасность.FreeBSD автоматически оптимизирует расположение файлов на
файловой системе в зависимости от того, как файловая система
используется. Файловая система, содержащая множество мелких часто
записываемых файлов, будет иметь оптимизацию отличную от таковой
для файловой системы, содержащей несколько больших файлов.
На одной большой файловой системе эта оптимизация не
работает.Файловые системы FreeBSD очень устойчивы к внезапному
отключению. Тем не менее, потеря питания в критический момент
все же может повредить структуру файловой системы. Разделение
данных на несколько файловых систем повышает шансы, что система
все-таки будет работать и делает более легким восстановление с
резервной копии.Преимущество одной файловой системыРазмер файловых систем фиксирован. Если вы создаете файловую
систему при установке FreeBSD и задаете определенный размер,
позднее вы можете обнаружить что нужен раздел большего размера.
Это не так легко сделать без резервного копирования, создания
файловых систем нового размера и последующего восстановления
сохраненных данных.В FreeBSD 4.4 и выше представлена новая команда,
&man.growfs.8;, которая позволяет увеличивать размер
файловой системы на лету, устраняя это ограничение.Файловые системы содержатся в разделах. Этот термин не имеет
того же смысла, что и при более раннем его использовании в этой главе,
из-за наследия &unix; в &os;. Каждый раздел обозначается буквой
от a до h. Каждый раздел может
содержать только одну файловую систему, это значит что файловая система
может быть описана ее точкой монтирования в файловой иерархии,
или буквой раздела, в котором она содержится.FreeBSD также использует дисковое пространство под
раздел подкачки (swap space). Подкачка позволяет
FreeBSD работать с виртуальной памятью.
ваш компьютер может работать так, как если бы у него было больше
памяти, чем есть на самом деле. Когда у FreeBSD кончается память, она
перемещает часть данных, не используемых в данный момент, в раздел
подкачки и возвращает их обратно (перемещая в подкачку что-то другое),
когда они нужны.По некоторым разделам есть определенные соглашения.РазделСоглашениеaКак правило, содержит корневую файловую системуbКак правило, содержит раздел подкачкиcКак правило, такого же размера, что и весь слайс (slice).
Это позволяет утилитам, которым нужно работать над всем
слайсом (например, сканер плохих блоков), работать с
разделом c. В обычной ситуации не нужно
создавать файловую систему на этом разделе.dРаздел d создавался для специальных
целей, хотя сейчас не используется. На настоящий момент,
некоторые утилиты могут работать некорректно при
попытке обращения к d, поэтому
sysinstall обычно не создает
раздел d.Каждый раздел-содержащий-файловую-систему хранится на том, что
во FreeBSD называется слайс (slice). Слайс
— это термин FreeBSD, то, что обычно называют разделом,
и опять же это из-за &unix; основы FreeBSD. Слайсы нумеруются с 1 по
4.слайсыразделыdangerously dedicatedНомера слайсов следуют за именем устройства, предваряемые
строчной s, начиная с 1. Так
da0s1 это первый слайс первого
SCSI устройства. Может быть только четыре физических слайса на диске,
но могут быть логические слайсы нужного типа внутри физических
слайсов. Эти дополнительные
слайсы нумеруются начиная с 5, так что
ad0s5 это первый дополнительный
слайс на первом IDE диске. Эти устройства используются файловыми
системами, занимающими весь слайс.Слайсы, эксклюзивно выделенные (dangerously dedicated) физические устройства
и другие устройства содержат разделы,
представляемые буквами от a до h.
Эти буквы добавляются к имени устройства,
da0a это раздел a на первом
устройстве da, который эксклюзивно выделен.
ad1s3e это пятый раздел
в третьем слайсе второго IDE диска.Наконец, каждый диск идентифицирован. Имя диска начинается с
кода, обозначающего тип диска, затем идет номер, обозначающий
который это диск. В отличие от слайсов, нумерация дисков начинается
с 0. Основные коды, которые вам могут встретиться, есть в списке
.В то время, как ссылка на раздел FreeBSD требует также указания
слайса и диска, содержащего раздел, ссылка на слайс требует также
указания имени диска. Делайте это указанием имени диска,
s, номера слайса, и затем буквы раздела.
Примеры показаны в
. показывает
концептуальную модель диска, которая должна помочь прояснить
ситуацию.Для установки FreeBSD вы должны сначала настроить слайсы
дисков, затем создать разделы внутри слайсов, которые будут
использованы для FreeBSD, а затем создать файловую систему
(или подкачку) в каждом разделе и решить куда файловая система
будет смонтирована.
Коды дисковых устройствКодЗначениеadATAPI (IDE) дискdaSCSI direct access дискacdATAPI (IDE) CDROMcdSCSI CDROMfdFloppy disk
Пример имен диска, слайса, и разделаИмяЗначениеad0s1aПервый раздел (a) на первом слайсе
(s1) первого IDE диска
(ad0).da1s2eПятый раздел (e) на
втором слайсе (s2) второго SCSI диска
(da1).Концептуальная модель дискаЭта диаграмма показывает первый подключенный к системе IDE диск
с точки зрения FreeBSD. Предположим, что размер диска 4 GB, и он
содержит два 2 GB слайса (&ms-dos; разделы). Первый слайс содержит
&ms-dos; диск, C:, а второй слайс содержит
установленную FreeBSD. В этом примере в установленной FreeBSD
три раздела и раздел подкачки.В каждом из трех разделов есть файловая система. Раздел
a используется для корневой файловой системы,
e для иерархии каталогов
/var, а f для иерархии
каталогов /usr..-----------------. --.
| | |
| DOS / Windows | |
: : > First slice, ad0s1
: : |
| | |
:=================: ==: --.
| | | Partition a, mounted as / |
| | > referred to as ad0s2a |
| | | |
:-----------------: ==: |
| | | Partition b, used as swap |
| | > referred to as ad0s2b |
| | | |
:-----------------: ==: | Partition c, no
| | | Partition e, used as /var > filesystem, all
| | > referred to as ad0s2e | of FreeBSD slice,
| | | | ad0s2c
:-----------------: ==: |
| | | |
: : | Partition f, used as /usr |
: : > referred to as ad0s2f |
: : | |
| | | |
| | --' |
`-----------------' --'Монтирование и размонтирование файловых системФайловая система лучше всего представима в виде дерева, с
корнем в /. Каталоги,
/dev, /usr и прочие
– это ветви дерева, которые, в свою очередь, являются
корнями для поддеревьев, также имеющих ветви
(/usr/local), и т.д.корневая файловая системаХорошей практикой является разнесение некоторых особо важных
каталогов на разные файловые системы. Например,
/var, содержит
log/, spool/, а также
всевозможные временные файлы и нередко может занять все свободное
место на диске. Поэтому лучше смонтировать
/var отдельно, чтобы избежать переполнения
/.Часто бывает так, что некоторые разделы файловой системы
расположены на разных физических носителях (дисках, CDROM),
виртуальных или сетевых (например, сетевая
файловая система (Network File System, NFS)). В этом
случае узлы файловой иерархии будут расположены на разных
файловых системах.Файл fstabfilesystemsmounted with fstabФайловые системы, перечисленные в
/etc/fstab, монтируются автоматически в
процессе загрузки
(если, конечно, для них не
указана опция ).Формат файла /etc/fstab
следующий (файловые системы перечисляются построчно):устройство/точка-монтированиятип файловой системыопциичастота дамповпорядок проверкиустройствоИмя устройства (которое должно присутствовать), как описано в
.точка монтированияКаталог (существующий), куда следует смонтировать
файловую систему.тип файловой системыТип файловой системы, который передается программе
&man.mount.8;. По умолчанию FreeBSD использует
ufs.опцииНапример, для монтирования
файловой системы в режиме чтение-запись
или для режима только
чтение, за которыми могут следовать и другие
опции. Довольно часто используется
опция , чтобы не монтировать
автоматически файловые системы в процессе загрузки.
Об остальных опциях можно прочитать в
&man.mount.8;.частота дамповИспользуется утилитой &man.dump.8; для определения
файловых систем, с которых необходимо периодически
снимать специальные архивные копии. При отсутствии этого
параметра принимается равным нулю.порядок проверкиОпределяет порядок, в котором следует проверять
файловые системы (чаще всего, в случае некорректного
размонтирования или внезапной перезагрузки системы). Если
файловую системы не нужно проверять, этот параметр должен
быть установлен в ноль. Для корневой файловой системы
(которая должна быть проверена в первую очередь)
установите его в 1. Для всех остальных – 2 или
больше. Если две или более файловые системы имеют
одинаковое значение passno,
&man.fsck.8; попытается проверять их параллельно (если,
конечно, это возможно физически).Команда mountfilesystemsmountingКоманда &man.mount.8; используется, как следует из ее имени,
для монтирования файловых систем.Пример использования (простейший случай):&prompt.root; mount устройствоточка-монтированияПеречислим основные опции, которые может принимать команда
&man.mount.8; (полный список смотрите в странице руководства):Опции монтированияСмонтировать все файловые системы, перечисленные в
файле /etc/fstab. Исключение
составляют помеченные как noauto,
перечисленные после опции и уже
смонтированные.Сделать все кроме самого системного вызова mount.
Эта опция полезна вместе с флагом
для определения того, что на самом деле пытается сделать
&man.mount.8;.Монтировать поврежденный раздел (опасно!),
или форсировать отмену всех запросов на запись при
изменении режима монтирования с
чтение-запись на только
чтение.Монтировать файловую систему в режиме только
для чтения. То же самое, что и указание
аргумента для опции
.fstypeМонтировать файловую систему как систему указанного
типа, или, в случае опции , только
файловые системы данного типа.По умолчанию, тип файловой системы –
ufs.Обновить опции монтирования для файловой
системы.Выдавать более подробную информацию.Монтировать файловую систему в режиме
чтение-запись.Опция принимает разделенные запятыми
аргументы, включая нижеперечисленные:nodevНе обращать внимание на специальные файлы устройств
на файловой системе (то есть не считать их файлами
устройств). Весьма полезная опция для повышения
безопасности системы.noexecЗапрет на исполнение бинарных файлов на файловой
системе (тоже полезная опция для повышения безопасности
системы).nosuidИгнорировать suid- и sgid-биты на файловой системе
(еще одна полезная опция для повышения безопасности
системы).Команда umountfilesystemsunmountingКоманда &man.umount.8; принимает в качестве параметра точку
монтирования какой-либо файловой системы, имя устройства, опцию
или .Кроме того, вы можете дополнительно указать опцию
для форсированного размонтирования файловой
системы, и для получения более подробной
информации. Имейте ввиду, что это в общем случае опасно и
потому не рекомендуется, так как тем самым вы можете нарушить
работу компьютера или повредить данные на файловой системе.Опции и
используются для размонтирования всех файловых систем (разве
что вы укажете опцию ). Разница состоит в
том, что не пытается размонтировать
корневую файловую систему.ПроцессыFreeBSD является многозадачной операционной системой.
Это означает, что одновременно может быть запущена более чем одна
программа. Каждая программа, работающая в некоторый момент времени,
называется процессом. Каждая команда,
которую вы запускаете, порождает хотя бы один процесс. Есть несколько
системных процессов, запущенных все время и поддерживающих
функциональность системы.У каждого процесса есть уникальный номер, называемый
process ID, или PID, и,
как и у файлов, у каждого процесса есть владелец и группа. Информация
о владельце и группе процесса используется для определения того, какие
файлы и устройства могут быть открыты процессом с учетом прав на файлы,
о которых говорилось ранее. Также у большинства процессов есть
родительский процесс. Например, при запуске команд из оболочки,
оболочка является процессом и любая запущенная команда также является
процессом. Для каждого запущенного таким путем процесса оболочка будет
являться родительским процессом. Исключением из этого правила является
специальный процесс, называемый &man.init.8;.
init всегда первый процесс, его PID всегда 1.
init запускается автоматически ядром во время
загрузки FreeBSD.Две команды очень полезны для просмотра работающих в системе
процессов, это &man.ps.1; и &man.top.1;. Команда ps используется
для получения списка запущенных процессов и может показать их PID,
сколько памяти они используют, команду которой они были запущены и т.д.
Команда top показывает запущенные процессы и обновляет экран
каждые несколько секунд, что позволяет наблюдать за работой компьютера
в реальном времени.По умолчанию, ps показывает только принадлежащие вам
процессы. Например:&prompt.user; ps
PID TT STAT TIME COMMAND
298 p0 Ss 0:01.10 tcsh
7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14)
37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14)
48630 p0 S 2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi
48730 p0 IW 0:00.00 (dns helper) (navigator-linux-)
72210 p0 R+ 0:00.00 ps
390 p1 Is 0:01.14 tcsh
7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y
6688 p3 IWs 0:00.00 tcsh
10735 p4 IWs 0:00.00 tcsh
20256 p5 IWs 0:00.00 tcsh
262 v0 IWs 0:00.00 -tcsh (tcsh)
270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16
280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16
284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc
285 v0 S 0:38.45 /usr/X11R6/bin/sawfishКак вы можете видеть в данном примере, вывод &man.ps.1; организован
в несколько колонок. Идентификатор процесса PID
обсуждался ранее. PID назначаются с 1 до 99999 и опять с начала, если
последнее число будет превышено. Колонка TT показывает
терминал (tty), на котором запущена программа (можете пока забыть про
это). STAT показывает состояние программы и опять
же может быть пока проигнорирован. TIME это количество
времени центрального процессора, использованное
программой — это обычно не время, прошедшее с запуска
программы, поскольку большинство программы проводят много времени
в ожидании некоторого события перед тем, как занять время процессора.
Наконец, COMMAND это команда, которой программа
была запущена.У &man.ps.1; есть множество различных опций, влияющих на выводимую
информацию. Один из наиболее полезных наборов опций это
auxww. позволяет показать
информацию о всех запущенных процессах, а не только тех, которыми вы
владеете. показывает имя пользователя,
владеющего процессом, и информацию об используемой памяти.
показывает информацию о процессах-даемонах и
указывает &man.ps.1; показать всю командную строку,
вместо обрезания ее, когда она станет слишком длинной, чтобы уместиться
на экран.Вывод &man.top.1; похож на только что описанный.
Обычно он выглядит так:&prompt.user; top
last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10
47 processes: 1 running, 46 sleeping
CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle
Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free
Swap: 256M Total, 38M Used, 217M Free, 15% Inuse
PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top
7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14
281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA
296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm
48630 nik 2 0 29816K 9148K select 3:18 0.00% 0.00% navigator-linu
175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd
7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt
...Вывод разбит на два раздела. Заголовок (первые пять строк)
показывает PID последнего запущенного процесса, среднее значение
загрузки системы (которое показывает насколько система занята),
время работы системы с последней перезагрузки и текущее время.
Другие цифры заголовка относятся к количеству запущенных процессов
(в данном примере 47), количеству занятой памяти и подкачки и время,
занимаемое различными состояниями процессора.Ниже идут несколько колонок, содержащих похожую на вывод &man.ps.1;
информацию. Как и раньше, это PID, время процессора, командная строка.
&man.top.1; показывает также величину занятой процессом памяти.
Это значение разбито на две колонки, одна для общего объема, а другая
для резидентного — общий объем показывает сколько всего памяти
нужно приложению, а резидентный показывает количество памяти, используемой
в данный момент. Из этого примера видно, что
&netscape; требует почти 30 MB памяти,
но в данный момент использует только 9 MB.&man.top.1; автоматически обновляет экран каждые две секунды;
это значение можно изменить опцией .Даемоны, сигналы, уничтожение процессовЕсли вы запускаете редактор, им можно легко управлять, открывать в
нем файлы и т.д. Вы можете делать это, поскольку редактор предоставляет
такие возможности и потому, что редактор присоединен к
терминалу. Некоторые программы разработаны
без поддержки интерфейса пользователя, поэтому они отсоединяются от
терминала при первой возможности. Например, веб-сервер целый день
отвечает на запросы из сети, и ему как правило не требуется ваше вмешательство.
Программы, передающие почту от сервера к серверу — другой пример
приложений этого класса.Мы называем эти программы даемонами. Даемоны это
персонажи греческой мифологии; хорошие или плохие, они были спутниками
человека и, вообще говоря, выполняли полезную работу для людей. Почти как
веб- и почтовые серверы выполняют полезную работу сегодня. Это причина,
по которой талисманом BSD долгое время является веселый даемон в тапочках и с
вилами.Есть соглашение, по которому имя программы, которая обычно запускается
как даемон, заканчивается на d. BIND
это Berkeley Internet Name Daemon (выполняемая программа называется
named), программа веб сервера
Apache называется httpd,
даемон очереди печати это lpd и так далее. Это соглашение,
а не жесткое правило; например, главный почтовый даемон для
Sendmail называется
sendmail, а не maild, как вы могли бы
предположить.Иногда может потребоваться взаимодействие с процессом даемона.
Эти можно сделать с помощью сигналов, т.е.
взаимодействовать с даемонами (или с любыми запущенными процессами),
посылая им сигнал. Есть множество различных сигналов — некоторые
из них имеют специальное значение, другие обрабатываются приложением,
реакция которого на эти сигналы должна быть описана в документации.
Вы можете посылать сигналы только тем процессам,
владельцем которых являетесь. Если вы отправите сигнал какому-то другому
процессу с помощью &man.kill.1; или &man.kill.2;, доступ будет запрещен.
Исключением из правил является пользователь root,
который может отправлять сигналы любому процессу.В некоторых случаях FreeBSD тоже посылает сигналы приложениям. Если
приложение плохо написано и пробует обратиться к области памяти, к
которой оно не должно обращаться, FreeBSD посылает процессу сигнал
нарушение сегментации (SIGSEGV).
Если приложение использует системный вызов &man.alarm.3;, чтобы получить
уведомление по истечении определенного периода времени, будет отправлен
сигнал Alarm (SIGALRM) и т.д.Два сигнала могут быть использованы для завершения процесса,
SIGTERM и SIGKILL.
SIGTERM это корректный способ завершить процесс;
процесс может поймать сигнал, определить, что его
хотят завершить, закрыть любые файлы, которые он мог открыть,
и закончить то, что он делал в момент перед закрытием. В некоторых
случаях процесс может даже игнорировать SIGTERM,
если выполняет задачу, которая не может быть прервана.SIGKILL не может быть проигнорирован процессом.
Этот сигнал говорит Меня не волнует что ты делаешь —
остановись немедленно. Если вы посылаете процессу
SIGKILL, FreeBSD сразу же остановит этот
процессНе совсем верно — есть несколько действий, которые не могут
быть прерваны. Например, если процесс пытается прочитать файл на
другом компьютере в сети, и другой компьютер по какой-то причине не
отвечает (был выключен, или в сети произошла ошибка), процесс
находится в так называемом непрерываемом состоянии.
В конце концов время ожидания закончится, обычно это происходит через
две минуты. Как только время закончится, процесс будет
уничтожен..Другие сигналы, которые возможно вам понадобятся,
SIGHUP, SIGUSR1, и
SIGUSR2. Это сигналы общего назначения,
различные приложения могут по-разному реагировать на них.Предположим, что вы изменили файл конфигурации веб сервера —
теперь нужно указать ему перечитать конфигурацию. Можно остановить
и запустить httpd, но это приведет к кратковременной
остановке сервера, которая может быть нежелательна. Большинство даемонов
написаны так, чтобы при получении сигнала SIGHUP
перечитывать файлы конфигурации. Поэтому вместо уничтожения и запуска
httpd можно послать сигнал SIGHUP.
Поскольку нет стандартного способа реагирования на этот сигнал, различные
даемоны будут вести себя по разному; прочитайте документацию на даемон
по этому вопросу.Сигналы посылаются с помощью команды &man.kill.1;, как показано в этом
примере.Отправка сигнала процессуЭтот пример показывает как послать сигнал &man.inetd.8;. Файл
конфигурации inetd/etc/inetd.conf, inetd перечитает
этот файл, если ему отправить сигнал SIGHUP.Нужно определить PID процесса, которому вы хотите отправить сигнал.
Сделайте это с помощью &man.ps.1; и &man.grep.1;. Команда &man.grep.1;
используется для поиска по заданной строке в выходном потоке. Эта
команда запускается под обычным пользователем, а &man.inetd.8; под
root, поэтому &man.ps.1; должна быть запущена с
параметром .&prompt.user; ps -ax | grep inetd
198 ?? IWs 0:00.00 inetd -wWИтак, PID &man.inetd.8; 198. В некоторых случаях в выводе команды
может также появиться grep inetd. Это из-за способа,
которым &man.ps.1; получает список запущенных процессов.Используйте &man.kill.1; для отправки сигнала. Поскольку
&man.inetd.8; запускается из под root,
нужно сначала использовать &man.su.1; для получения прав
root.&prompt.user; suPassword:
&prompt.root; /bin/kill -s HUP 198Как и большинство команд &unix;, &man.kill.1; ничего не выведет,
если отработает нормально. Если вы посылаете сигнал процессу,
которым не владеете, на экране появится kill:
PID: Operation not
permitted. При неправильно набранном PID вы или отправите
сигнал другому процессу, что может привести к неприятностям, или, если
повезет, сигнал будет отправлен на PID, который в данный момент не
используется — на экране появится kill:
PID: No such process.Зачем использовать /bin/kill?Во многих оболочках команда kill встроена;
таким образом, оболочка вместо вызова /bin/kill
сама посылает сигнал. Это может быть очень полезно, но в разных
оболочках имя сигнала указывается по-разному. Чем
пытаться выучить их все, гораздо проще использовать
/bin/kill ...
непосредственно.Отправка других сигналов очень похожа, просто замените
TERM или KILL в командной
строке на имя другого сигнала.Уничтожение процессов наугад может быть плохой идеей. В частности,
&man.init.8;, чей PID 1, имеет особое значение. Выполнение
/bin/kill -s KILL 1 — быстрый способ перегрузить
систему. Всегда дважды проверяйте параметры
запуска &man.kill.1; перед тем, как нажать
Enter.Интерпретатор командоболочкакомандная строкаПри работе с FreeBSD, в большинстве случаях для выполнения
повседневных задач используется командный интерфейс (так называемая
оболочка, shell). Основная задача интерпретатора — принимать
вводимые команды и выполнять их. Многие командные интерпретаторы имеют
встроенные средства для выполнения повседневной работы, например,
операции над файлами и каталогами, редактирование командной строки,
командные макросы и переменные окружения. Вместе с FreeBSD
поставляется несколько командных интерпретаторов, например,
sh, или Bourne Shell, и tcsh,
расширенная версия C-shell. Многие другие интерпретаторы доступны из
коллекции портов FreeBSD, например zsh и
bash.Какой из командных интерпретаторов использовать? Это дело вкуса.
Если вы программируете на C, то вам, возможно, понравится
tcsh. Если вы работали с Linux, или только начинаете
работать с интерфейсом командной строки &unix;, попробуйте
bash. Каждый из названных интерпретаторов имеет свои
особенности, которые отличат его от других, и, возможно, повлияют на ваш
выбор.Одна из наиболее часто используемых функций командного
интерпретатора – дополнение частичного имени файла до полного. Вы
можете набрать только первые несколько символов имени файла, нажать
клавишу табуляции (TAB), и командный интерпретатор автоматически завершит
имя. Например, у нас есть два файла, названные foobar и
foo.bar. Допустим, мы хотим удалить файл
foo.bar. Для этого, наберем на клавиатуре
rm fo[Tab].[Tab].Вы увидите следующее: rm foo[BEEP].bar.Здесь [BEEP] – это так называемый консольный сигнал,
оповещающий о том, что интерпретатор не в состоянии закончить имя
файла, так как по введенным вами символам невозможно однозначно
идентифицировать файл. Например, имена файлов
foobar и foo.bar оба
начинаются с fo, но после нажатия TAB можно
однозначно дополнить только до foo. Если же теперь
ввести точку (.) и вновь нажать TAB, интерпретатор
достроит имя файла целиком.переменные окруженияДополнительные возможности при работе с интерпретатором дает
использование переменных окружения. Переменные окружения это пары
переменная=значение, хранящиеся в памяти интерпретатора.
Значение переменных окружения может быть прочитано любой программой,
запущенной из командного интерпретатора, и часто содержит
настройки для многих приложений и утилит. Ниже приведены некоторые
наиболее часто встречающиеся переменные окружения и их значения:переменные окружения
-
+ ПеременнаяОписаниеUSERИмя текущего пользователя.PATHКаталоги, разделенные двоеточием, для
поиска исполняемых файлов.DISPLAYСетевое имя виртуального дисплея X11, доступного для
подключения.SHELLТекущий командный интерпретатор.TERMНазвание (тип) терминала. Используется, чтобы узнать
возможности терминала.TERMCAPСписок escape-последовательностей для управления
различными функциями терминала.OSTYPEНазвание (тип) операционной системы. Например,
FreeBSD.MACHTYPEАрхитектура машины (процессора).EDITORВыбранный пользователем текстовый редактор.PAGERВыбранная пользователем утилита просмотра
файлов.MANPATHКаталоги, разделенные двоеточием, для
поиска файлов системного справочника.оболочки BourneУстановка значений переменных окружения различна для разных
оболочек. Например, в интерпретаторах C-стиля, таких как
tcsh и csh, это
setenv. В интерпретаторах Bourne, таких как
sh и bash, это
export. Например, чтобы установить или изменить
значение переменной EDITOR к значению
/usr/local/bin/emacs в csh или
tcsh, выполните команду:&prompt.user; setenv EDITOR /usr/local/bin/emacsВ оболочках Bourne:&prompt.user; export EDITOR="/usr/local/bin/emacs"Чтобы получить значение переменной, например, в командной строке,
поместите символ $ перед именем
переменной. Например, команда echo $TERM выведет
значение переменной $TERM.Командный интерпретатор воспринимает некоторые символы, называемые
метасимволами, в качестве управляющих.
Один из наиболее часто используемых – символ *,
который заменяет любое количество символов в имени файла.
Метасимволы
используются для поиска файлов по маске, например, команда
echo * делает практически тоже самое, что и
команда ls, поскольку интерпретатор вызывает команду
echo, передавая ей имена всех файлов, попадающих под маску
*.В некоторых ситуациях требуется, чтобы интерпретатор воспринимал
метасимволы как обычные, не несущие специальной смысловой нагрузки.
Этого можно достичь, поставив перед символом обратную косую черту
(\). Например, команда echo
$TERM выведет тип вашего терминала, в то же время команда
echo \$TERM выведет именно слово
$TERM, а не значение переменной
$TERM.Как изменить командный интерпретатор по умолчаниюСамым простым способом, пожалуй, будет воспользоваться командой
chsh. Если переменная EDITOR
определена, то будет загружен соответствующий текстовый редактор, иначе vi.
Вам нужно будет изменить значение
поля “Shell:” и выйти из редактора с сохранением
результатов.Можно также воспользоваться опцией команды
chsh. Например, если вы хотите изменить
интерпретатор на bash, выполните:&prompt.user; chsh -s /usr/local/bin/bashТакже можно запустить chsh без параметров и
изменить интерпретатор по умолчанию в редакторе.Интерпретатор, который вы будете использовать,
обязательно должен быть в файле
/etc/shells. Обычно, при установке
интерпретаторов из коллекции портов,
это делается автоматически. Если же это не так, вам нужно будет
самостоятельно добавить соответствующую строчку в этот файл.Например, если вы установили bash
вручную и поместили его в
каталог /usr/local/bin, нужно набрать:&prompt.root; echo "/usr/local/bin/bash" >> /etc/shellsТеперь можно смело использовать команду
chsh.Текстовые редакторытекстовые редакторыредакторыБольшинство настроек в FreeBSD производится путем редактирования
текстовых файлов. Соответственно, вам нужно будет освоиться с
каким-либо текстовым редактором. Вместе с FreeBSD поставляются лишь
некоторые из них, гораздо больше редакторов доступно из коллекции
портов.eeСамым простым в изучении и использовании, по-видимому, можно
назвать ee, что расшифровывается как
“easy editor”, т.е. “простой редактор”. Чтобы
начать редактировать какой-либо файл, наберите в командной строке
ee filename, где
filename имя
редактируемого файла. Например, для редактирования файла
/etc/rc.conf, наберите ee
/etc/rc.conf. В верхней части экрана вы увидите список
основных команд редактора. Символ каретки (^)
означает клавишу Ctrl, таким образом,
^e означает комбинацию клавиш
Ctrle. Чтобы выйти из редактора, нажмите
клавишу Esc, затем Enter.
Если остались какие-либо не сохраненные
данные, вам потребуется подтвердить выход, сохранив результат
работы или оставив файл без изменения.vieditorsviemacseditorsemacsВ FreeBSD присутствует также более мощный текстовый редактор
vi, а редакторы
emacs и vim
можно найти в коллекции портов (editors/emacs и editors/vim). Эти редакторы более сложны
в изучении,
но их возможности порой превосходят всякие ожидания! Если в
будущем вам потребуется часто редактировать большие объемы текстов,
то потраченное на изучение этих редакторов время
окупится с лихвой.Устройства и файлы устройствТермин устройство используется в основном по
отношению к аппаратному обеспечению системы, такому как диски,
принтеры, графические адаптеры, устройства ввода текста.
При загрузке FreeBSD главным образом выводит на экран информацию об
обнаруженных устройствах. Вы можете найти эти сообщения
в файле /var/run/dmesg.boot.Например, acd0 это первый диск
IDE CDROM, а kbd0 — клавиатура.В &unix; доступ к большинству этих устройств можно получить через
специальные файлы устройств, расположенные в каталоге
/dev.Создание файлов устройствПри добавлении в систему нового устройства, или добавление
поддержки дополнительных устройств, может понадобиться создать один
или несколько файлов устройств для нового оборудования.Скрипт MAKEDEVВ системах без DEVFS (это относится ко всем
версиям FreeBSD ниже 5.0), файлы устройств создаются
с помощью &man.MAKEDEV.8;, как показано ниже:&prompt.root; cd /dev
&prompt.root; sh MAKEDEV ad1В этом примере создается соответствующий файл устройства для
вторичного IDE диска.DEVFS (DEVice File System)Device filesystem, или DEVFS, предоставляет
доступ к пространству устройств ядра через общую файловую систему.
Вместо создания и модификации файлов устройств,
DEVFS создает специальную файловую систему.Обращайтесь к &man.devfs.5; за дополнительной информацией.В FreeBSD 5.0 и выше DEVFS используется
по умолчанию.Бинарные форматыДля понимания почему &os; использует формат
&man.elf.5;, вам потребуется сначала немного узнать
о трех доминирующих исполняемых форматах для
&unix;:&man.a.out.5;Старейший и классический объектный формат
&unix;. Он использует короткий и компактный заголовок с
магическим числом в начале, которое часто используется для
описания формата (смотрите &man.a.out.5; с более подробной
информацией). Он содержит три загружаемых сегмента: .text,
.data и .bss плюс таблицу символов и таблицу строк.COFFОбъектный формат SVR3. Заголовок включает таблицу разделов,
так что могут быть сегменты кроме .text, .data и .bss.&man.elf.5;Наследник формата COFF, поддерживающий
множественные сегменты и 32-битные или 64-битные значения. Одно
важное замечание: ELF был разработан в
предположении что есть только по одному ABI на одну архитектуру.
Это предположение совершенно не верно, и не только в мире
коммерческих SYSV (в котором есть как минимум три ABI: SVR4,
Solaris, SCO).FreeBSD пытается обойти эту проблему, в частности предоставляя
утилиту для оглавления известного
исполняемого файла ELF информацией
об ABI с которым он совместим. Обратитесь к странице справочника
&man.brandelf.1; за более подробной информацией.FreeBSD имеет произошла из классического лагеря и
использовала формат &man.a.out.5;, технологию опробованную и
проверенную на многих поколениях релизов BSD, до начала ветки
3.X. Хотя собирать и запускать родные бинарные
файлы ELF (и ядро) в системе FreeBSD
можно было несколько раньше, FreeBSD вначале сопротивлялась
проталкиванию ELF как формата
по умолчанию. Почему? Когда лагерь Linux производил болезненный
переход к ELF, у него не было большого
преимущества перед исполняемым форматом a.out,
из-за негибкого, основанного на таблице переходов механизма
разделяемых библиотек, что делало создание разделяемых библиотек
очень трудным для поставщиков и разработчиков. Когда доступные
инструменты ELF предоставили решение проблемы
разделяемых библиотек, и появилась некоторая перспектива,
цена перехода была признана допустимой и он был сделан.
Механизм разделяемых библиотек FreeBSD близок по стилю к механизму
разделяемых библиотек &sunos; от Sun, и поэтому очень прост в
использовании.Итак, почему так много разных форматов?Давно, в темном далеком прошлом, оборудование было простым.
Это простое оборудование поддерживало простые, маленькие системы.
a.out был совершенно адекватен задаче представления
бинарных файлов на таких простых системах (PDP-11). Люди, портировавшие
&unix; с этих простых систем, оставили a.out
формат потому, что он был достаточен для ранних портов &unix; на
архитектуры подобные Motorola 68k, VAXen, etc.Затем какой-то смышленый инженер по оборудованию решил что если
он сможет заставить программы исполнять некоторые трюки, то сможет
несколько упростить дизайн и заставить ядро CPU работать быстрее.
Хотя это было сделано с новым типом оборудования (известного сейчас
как RISC), формат a.out не подходил для него,
и было разработано множество форматов чтобы получить
лучшую производительность на таком оборудовании по сравнению с
той, которую мог предоставить простой формат a.out.
Были изобретены форматы COFF, ECOFF
и некоторые другие малоизвестные форматы, и их ограничения были учтены
когда все похоже остановились на ELF.Кроме того, размеры программ стали огромны, а диски (и оперативная
память) остались относительно малы, поэтому появилась концепция
разделяемых библиотек. Система VM также стала более сложной.
Хотя все эти усовершенствования были выполнены с форматом
a.out, его полезность все больше и больше
уменьшалась с каждым нововведением. К тому же потребовалась
динамическая загрузка во время выполнения, или выгрузка частей
программы после выполнения стартового кода для экономии
памяти или места на диске. Языки усложнялись и потребовался
автоматический вызов кода перед главной программой. Множество
изменений было внесено в формат a.out чтобы
все это появилось и в основном работало некоторое время. Настал
момент, когда a.out не смог решить все эти
проблемы без чрезмерного увеличения размера и сложности.
В то время как ELF решил многие из этих проблем,
перевод этого формата с системы на систему болезненен. Поэтому
формату ELF пришлось подождать пока не стало
более болезненным оставаться с a.out чем
перейти на ELF.Тем временем, инструменты разработки, от которых
произошли инструменты разработки FreeBSD (особенно ассемблер и
загрузчик) развивались в двух параллельных направлениях.
Направление FreeBSD добавило разделяемые библиотеки и устранило
некоторые ошибки. Люди из GNU, написавшие эти программы,
переписали их и добавили простую поддержку сборки
кросскомпиляторов, подключения различных форматов в будущем
и так далее. Многим требовалось собрать кросскомпиляторы
для FreeBSD, и это не удалось, поскольку устаревшие исходные
тексты FreeBSD для as и
ld не подходили для этой задачи.
Новый набор инструментов GNU (binutils)
поддерживает кросскомпилирование, ELF,
разделяемые библиотеки, C++, расширения и т.д. В дополнение,
многие поставщики выпустили программы в формате
ELF и они хорошо подходят для запуска в
FreeBSD.ELF более выразителен чем
a.out позволяет базовой системе быть более
гибкой. ELF лучше поддерживается, и
предоставляет поддержку кросскомпиляторов, что важно для многих
людей. ELF может быть немного медленнее
чем a.out, но замерить это сложно.
Есть также множество деталей, отличающихся для этих двух
форматов, в том как они отображают страницы, обрабатывают
начальный код, и т.д. В этом нет ничего очень важного,
но они различаются. В настоящее время поддержка
a.out убрана из ядра GENERIC, и со
временем будет убрана из ядра как только потребность в запуске
старых программ a.out останется в прошлом.Дополнительная информацияСистемный справочник (man)страницы справочникаПожалуй, самым полным руководством по FreeBSD является
системный справочник (man). Практически каждое приложение или
утилита имеют соответствующую страницу (часто не одну), описывающую
тот или иной аспект работы программы, всевозможные опции и
настройки. Для просмотра этих страниц существует команда
man:&prompt.user; man commandЗдесь command – это команда, о которой вы
хотите получить информацию. Например, чтобы узнать побольше о команде
ls, наберите:&prompt.user; man lsСодержимое системного справочника для удобства разделено на
несколько секций:Пользовательские команды.Системные вызовы и коды ошибок.Функции стандартных библиотек.Драйверы устройств.Форматы файлов.Развлечения и игры.Дополнительная информация.Команды системного администрирования.Для разработчиков ядра.В некоторых случаях (не так уж редко), страницы, относящиеся к
одной и той же команде, находятся в различных секциях справочника.
Например, есть команда cdmod и системный вызов
chmod(). В этом случае, необходимо явно указать
man секцию, в которой нужно искать соответствующую
страницу:&prompt.user; man 1 chmodЭта команда выведет справку об утилите chmod.
По традиции, конкретная секция справочника указывается в скобках
после команды, например, &man.chmod.1; относится к утилите
chmod, а &man.chmod.2; – к соответствующему
системному вызову.Часто бывает так, что вы не знаете название команды, но имеете
представление о том, что она должна делать. В этом случае можно
попытаться найти нужную команду по ключевым словам, встречающимся в
ее описании, используя опцию программы
man:&prompt.user; man -k mailВы получите список команд, имеющих слово “mail” в
своих описаниях. Это эквивалентно использованию команды
apropos.Или например, вы видите список файлов в каталоге
/usr/bin, при этом не имея ни малейшего
представления о том, какие функции выполняет каждый их них? Просто
наберите:&prompt.user; cd /usr/bin
&prompt.user; man -f *или&prompt.user; cd /usr/bin
&prompt.user; whatis *что фактически одно и то же.Файлы GNU InfoFreeBSD поставляется с многочисленными приложениями и утилитами от
Фонда Свободного Программного Обеспечения, Free Software Foundation
(FSF). В дополнение к страницам справочника, с этими программами
поставляется обширная гипертекстовая документация в виде так называемых
info файлов, которые могут быть просмотрены с
помощью команды info, или, если установлен
emacs, в info режиме этого редактора.Чтобы воспользоваться командой &man.info.1;, просто наберите в
командной строке:&prompt.user; infoВызвать на экран краткое введение можно набрав
h. Краткий список команд можно получить набрав
?.
diff --git a/ru_RU.KOI8-R/books/handbook/config/chapter.sgml b/ru_RU.KOI8-R/books/handbook/config/chapter.sgml
index ba53e89808..d533592e1c 100644
--- a/ru_RU.KOI8-R/books/handbook/config/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/config/chapter.sgml
@@ -1,3006 +1,3006 @@
ChernLeeНаписал MikeSmithОсновывается на учебнике, написанном MattDillonи на tuning(7), написанном АндрейМельникПеревод на русский язык: ДенисПеплинВалерийКравчукНастройка и оптимизацияВведениенастройка системыоптимизация системыОдин из важных аспектов &os; это настройка системы.
Правильная настройка системы поможет избежать головной боли при
последующих обновлениях. Эта глава описывает большую часть процесса
настройки &os;, включая некоторые параметры, которые можно
установить для оптимизации системы &os;.После прочтения этой главы вы узнаете:Как эффективно работать с файловыми системами и разделами
подкачки.Основы настройки rc.conf и системы запуска
приложений /usr/local/etc/rc.d.Как настроить и протестировать сетевую карту.Как настроить виртуальные хосты на сетевых устройствах.Как использовать различные файлы конфигурации в
/etc.Как оптимизировать &os;, используя переменные
sysctl.Как увеличить скорость работы дисков и изменить ограничения,
накладываемые ядром.Перед прочтением этой главы вам следует:Понять основы &unix; и &os; ().Ознакомиться с основами конфигурации/компиляции ядра
().Начальное конфигурированиеРазделы дискаразделы диска/etc/var/usrОсновы построения разделовВо время разметки жёсткого диска с помощью &man.disklabel.8;
или &man.sysinstall.8;, важно помнить, что скорость чтения и записи
данных уменьшается от внешних к внутренним трекам
диска. Самые маленькие и самые
часто используемые файловые системы (корневую и раздел подкачки)
должны быть расположены в начале
диска, в то время как самые большие, такие, как
/usr, в конце. Самым оптимальным считается
следующий порядок расположения файловых систем: root, swap,
/var, /usr.Размер файловой системы /var определяется
предназначением машины. /var
используется для хранения почтовых ящиков, очередей печати и
лог файлов. Размер почтовых ящиков и лог файлов может расти
неограниченно в зависимости от количества пользователей
системы и от того, как долго хранятся лог-файлы. Большинству
пользователей никогда не потребуется гигабайт, но помните, что
/var/tmp должен быть достаточно большим для
пакетов.В разделе /usr содержит большинство
файлов, необходимых для поддержки системы, &man.ports.7;
(порты, рекомендуется) и исходные тексты (опционально).
Оба эти каталога опциональны при установке. Для этого
раздела рекомендуется как минимум 2 гигабайта.При установке размера разделов, не забудьте принять во внимание
рост размера требуемого системе дискового пространства.
Переполнение одного раздела даже при наличии свободного места на
другом может вызвать затруднения.Многие пользователи обнаружили, что размер разделов,
предлагаемый &man.sysinstall.8;'ом по умолчанию, иногда
меньше подходящего для разделов /var и
/. Тщательно планируйте размер разделов и
не жалейте места.Раздел подкачкиразмер раздела подкачкираздел подкачкиКак правило, размер раздела подкачки должен быть равен
удвоенному размеру оперативной памяти. Например, если на машине
установлено 128 мегабайт памяти, раздел
подкачки должен быть 256 мегабайт. Системы с меньшим
количеством памяти могут работать лучше с большим объёмом
раздела подкачки. Не рекомендуется устанавливать размер
раздела подкачки меньше 256 мегабайт, необходимо также
принять во внимание возможное наращивание объема установленной
на машине памяти.
Алгоритмы кэширования VM настроены на максимальное быстродействие, когда
размер раздела подкачки равен как минимум удвоенному размеру
памяти. Заниженный размер раздела подкачки может привести к
неэффективной работе постраничного сканирования VM и вызвать
проблемы при увеличении объёма памяти.На больших системах с несколькими SCSI дисками (или несколькими
IDE дисками, находящимися на разных контроллерах),
рекомендуется создавать раздел подкачки на каждом диске (до четырёх
дисков). Разделы подкачки должны быть примерно
одного размера. Ядро не накладывает ограничений на размер раздела
подкачки, но внутренние структуры позволяют иметь общий размер
разделов подкачки, равный наибольшему, умноженному на четыре.
Выделение под разделы подкачки примерно одинакового места позволить
ядру оптимально расположить разделы подкачки. Установка
размера подкачки больше требуемого нормальна, даже если этот
объем не используется. В этих условиях может быть проще
восстановиться после зависания программы перед тем, как
возникнет необходимость перезагрузки.Зачем нужны разделы?Некоторые пользователи считают, что лучше использовать
один большой раздел, но есть несколько причин, по которым этого
лучше не делать. Во-первых, у
каждого раздела свои характеристики, и отделяя их, можно
выполнить соответствующие настройки. Например, корневая и
файловая система и /usr в основном
предназначены для чтения, без большого объема записи.
В то же время множество операций чтения и записи
выполняется в /var
и /var/tmp.При правильном размещении и выборе размера разделов
системы, фрагментация в более маленьких разделах, куда часто
записываются данные, не перенесётся на остальные разделы.
Размещение самых часто используемых разделов ближе к началу диска
увеличит скорость ввода/вывода там, где она нужна больше всего.
Хотя производительность важна и для больших дисков,
передвижение их ближе к концу диска не повлечёт
значительного уменьшения быстродействия по сравнению с перемещением
ближе к концу диска /var.
И, наконец, разделы существуют и из соображений
безопасности. Наличие маленького аккуратного корневого раздела,
доступного только для чтения даёт значительные шансы на "выживание"
после краха системы.Основные настройкиrc файлыrc.confОсновные настройки системы располагаются в
/etc/rc.conf. Этот файл вмещает широкий спектр
конфигурационной информации, используемой при загрузке системы.
Имя этого файла прямо отражает его назначение, это файл настройки
для файлов rc*.Администратор должен сделать записи в
rc.conf чтобы переопределить строки по умолчанию из
/etc/defaults/rc.conf. Файлы по умолчанию нельзя
копировать в /etc - они вмещают значения по
умолчанию, а не примеры значений. Все специфичные для данной системы
изменения должны быть сделаны в файле
rc.conf.Существует несколько методов для отделения общей конфигурации для
группы систем от конкретной для данной системы в целях уменьшения объема
работы администратора. Рекомендуемый метод
- прописать общую конфигурацию в отдельный файл, например, в
/etc/rc.conf.site, и включить его название в
/etc/rc.conf, который вмещает только специфичную
для данной системы информацию.Поскольку rc.conf читается
&man.sh.1;, есть тривиальный способ сделать это. Например:rc.conf: . rc.conf.site
hostname="node15.example.com"
network_interfaces="fxp0 lo0"
ifconfig_fxp0="inet 10.1.1.1"rc.conf.site: defaultrouter="10.1.1.254"
saver="daemon"
blanktime="100"Файл rc.conf.site может быть распространён
на все системы, используя rsync или подобную ей
программу, в то время, как rc.conf должен остаться
только на одной машине.Обновление системы с помощью &man.sysinstall.8;
или make world не повлекут за собой перезапись
rc.conf. Вся информация в этом файле
сохранится.Настройка приложенийОбычно, установленные приложения имеют свои конфигурационные файлы,
со своим собственным синтаксисом. Важно хранить эти файлы отдельно от
файлов основной системы, чтобы их можно было легко администрировать с
помощью средств управления пакетами./usr/local/etcОбычно эти файлы устанавливаются в
/usr/local/etc. В случае, если приложению нужно
большое количество конфигурационных файлов, для их хранения будет
создан подкаталог.Обычно, вместе с установкой портов и пакетов, устанавливаются и
примеры конфигурационных файлов. Обычно они имеют расширение
.default. Если не существует конфигурационных файлов
для этого приложения, они будут созданы путём копирования
.default файлов.Например, /usr/local/etc/apache:-rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf
-rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf.default
-rw-r--r-- 1 root wheel 9555 May 20 1998 httpd.conf
-rw-r--r-- 1 root wheel 9555 May 20 1998 httpd.conf.default
-rw-r--r-- 1 root wheel 12205 May 20 1998 magic
-rw-r--r-- 1 root wheel 12205 May 20 1998 magic.default
-rw-r--r-- 1 root wheel 2700 May 20 1998 mime.types
-rw-r--r-- 1 root wheel 2700 May 20 1998 mime.types.default
-rw-r--r-- 1 root wheel 7980 May 20 1998 srm.conf
-rw-r--r-- 1 root wheel 7933 May 20 1998 srm.conf.defaultРазмеры файлов показывают, что только файл
srm.conf был изменён. При следующем обновлении
Apache этот файл уже не будет
перезаписан.TomRhodesПредоставил Запуск сервисовсервисыМногие пользователи предпочитают устанавливать программы сторонних
производителей в &os; из набора портов. В подобных случаях
может потребоваться сконфигурировать программы так, чтобы они
запускались при инициализации системы. Сервисы, такие как
mail/postfix или
www/apache13, —
это лишь два примера множества программных пакетов, которые
можно запускать при инициализации системы. В этом разделе
описывается процедура, предназначенная для запуска программ
сторонних разработчиков.Большинство входящих в &os; сервисов, таких как &man.cron.8;,
запускается с помощью стартовых скриптов системы. Эти скрипты
могут различаться в зависимости от версии &os; или ее производителя;
однако важнее всего учитывать, что их начальную конфигурацию
можно задать с помощью простых стартовых скриптов.До появления rcNG приложения должны были помещать
простой стартовый скрипт в
каталог /usr/local/etc/rc.d,
который затем читался скриптами инициализации системы. Эти скрипты
затем выполнялись в ходе последующих стадий запуска системы.Хотя много разработчиков потратили часы на попытки внедрить
старый стиль конфигурирования в новую систему, остаётся фактом,
что для некоторых утилит сторонних производителей по-прежнему
необходим скрипт, помещённый в указанный выше каталог. Незначительные
различия в скриптах зависят от того, используется ли rcNG. До
версии &os; 5.1 использовались скрипты в старом стиле,
и почти во всех случаях скрипты в новом стиле должны подойти так же
хорошо.Хотя каждый скрипт должен соответствовать некоторым минимальным
требованиям, в большинстве случаев эти требования не зависят от версии
&os;. Каждый скрипт должен иметь в конце расширение
.sh и каждый скрипт должен быть выполняемым.
Последнее требование может быть выполнено путем установки командой
chmod уникальных прав доступа
755. Также, как минимум, должна быть опция
start для запуска приложения и опция
stop для его остановки.Простейший стартовый скрипт, пожалуй, будет похож на
следующий:#!/bin/sh
echo -n ' utility'
case "$1" in
start)
/usr/local/bin/utility
;;
stop)
kill -9 `cat /var/run/utility.pid`
;;
*)
echo "Usage: `basename $0` {start|stop}" >&2
exit 64
;;
esac
exit 0Этот скрипт поддерживает опции stop и
start для приложения, которое мы здесь называем
просто — utility. Для этого приложения
затем можно поместить следующую строку в файл /etc/rc.conf:utility_enable="YES"А можно запускать его и вручную, с помощью команды:&prompt.root; /usr/local/etc/rc.d/utility.sh startХотя и не все программы сторонних производителей требуют
добавления строки в файл rc.conf, практически
каждый день очередной новый порт меняется так, чтобы поддерживать
подобную конфигурацию. Поищите в результатах, выдаваемых после
установки более детальную информацию по конкретному приложению.
Некоторые программы сторонних производителей будут включать стартовые
скрипты, позволяющие использовать приложение с rcNG; но это мы еще
обсудим в следующем разделе.Расширенное конфигурирование приложенияТеперь, когда &os; включает rcNG, конфигурирование запуска
приложений стало более оптимальным; фактически, оно стало более
тщательным. С помощью ключевых слов, рассмотренных в разделе
rcNG, приложения теперь
можно настроить для запуска после других заданных сервисов,
например, DNS; можно разрешить передачу
дополнительных флагов через rc.conf вместо
жесткого задания флагов в стартовых скриптах, и т.д. Простой
скрипт может иметь следующий вид:#!/bin/sh
#
# PROVIDE: utility
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: FreeBSD shutdown
#
# НЕ МЕНЯЙТЕ ЗДЕСЬ ЭТИ СТАНДАРТНЫЕ ЗНАЧЕНИЯ
# ЗАДАВАЙТЕ ИХ В ФАЙЛЕ /etc/rc.conf
#
utility_enable=${utility_enable-"NO"}
utility_flags=${utility_flags-""}
utility_pidfile=${utility_pidfile-"/var/run/utility.pid"}
. /etc/rc.subr
name="utility"
rcvar=`set_rcvar`
command="/usr/local/sbin/utility"
load_rc_config $name
pidfile="${utility_pidfile}"
start_cmd="echo \"Starting ${name}.\"; /usr/bin/nice -5 ${command} ${utility_flags} ${command_args}"
run_rc_command "$1"Этот скрипт будет гарантировать, что указанное приложение
utility будет запущено перед сервисом
login, но после сервиса
daemon. Он также предоставляет метод
для создания и отслеживания файла идентификатора процесса,
PID.Этот новый метод также позволяет легко работать с аргументами
командной строки, включать стандартные функции из файла
/etc/rc.subr, обеспечивает совместимость
с утилитой &man.rcorder.8; и упрощает конфигурирование с помощью
файла rc.conf. По сути, этот сценарий
можно даже поместить в каталог
/etc/rc.d. Это, однако,
потенциально может сбить с толку утилиту &man.mergemaster.8;
при обновлениях программного обеспечения.Использование сервисов для запуска сервисовДругие сервисы, такие как даемоны сервера
POP3, IMAP, и т.п. могут
быть запущены с помощью &man.inetd.8;. Для этого необходимо
установить сервисную утилиту из набора портов и добавить
соответствующую строчку конфигурации в файл
/etc/inetd.conf или раскомментировать
подходящую строку конфигурации из уже имеющихся. Работа с даемоном
inetd и его конфигурирование подробно описано
в разделе inetd.В некоторых случаях использование для запуска системных
служб даемона &man.cron.8; может оказаться более приемлемым. Этот
подход имеет несколько преимуществ, поскольку даемон
cron запускает эти процессы от имени
владельца файла crontab. Это позволяет
обычным пользователям запускать и поддерживать некоторые
приложения.Утилита cron поддерживает уникальную
возможность, @reboot, — это значение
можно использовать вместо спецификации времени. В результате,
задание будет выполнено при запуске &man.cron.8;, обычно —
в ходе инициализации системы.TomRhodesПредоставил Настройка утилиты croncronнастройкаОдна из наиболее полезных утилит &os; это &man.cron.8;. Утилита
cron работает в фоновом режиме и постоянно проверяет
файл /etc/crontab. Утилита cron
проверяет также каталог /var/cron/tabs в поиске
новый файлов crontab. Файлы
crontab содержат информацию об определенных
функциях, которые cron выполняет в указанное
время.Утилита cron использует два разных типа
конфигурационных файлов, системный и пользовательский.
Все различие между этими двумя форматами заключается в
шестом поле. В системном файле шестое поля это имя пользователя,
с правами которого будет запущена команда. Это позволяет запускать
команды из системного crontab от любого пользователя. В
пользовательском файле шестое поле указывает запускаемую команду, и
все команды запускаются от пользователя, который создал crontab;
это важно для безопасности.Пользовательские crontab позволяют индивидуальным пользователям
планировать задачи без привилегий суперпользователя
(root). Команды из
crontab пользователя запускаются с привилегиями этого
пользователя.Пользователь root может использовать
собственный crontab, как и любой другой пользователь. Он будет
отличаться от системного crontab /etc/crontab.
Поскольку существует системный crontab, обычно не требуется
создавать пользовательский crontab для
root.Давайте заглянем в файл /etc/crontab
(системный crontab):# /etc/crontab - root's crontab for &os;
#
# $&os;: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $
#
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#
#
#minute hour mday month wday who command
#
#
*/5 * * * * root /usr/libexec/atrun Как и в большинстве файлов настройки FreeBSD, символы #
означают комментарии. Комментарии нужны для напоминания о том,
что означает строка и зачем она добавлена. Комментарии не могут
находиться на той же строке, что и команда, или они будут
восприняты как часть команды; располагайте их на новой строке.
Пустые строки игнорируются.Сначала должны быть заданы переменные окружения. Знак равно
(=) используется для задания переменных
окружения, в этом примере SHELL, PATH,
и HOME. Если переменная для оболочки не задана,
cron использует оболочку по умолчанию,
sh. Если не задана переменная
PATH, значение по умолчанию не устанавливается и
пути к файлам должны быть полными. Если не задана переменная
HOME, cron будет использовать
домашний каталог соответствующего пользователя.В строке всего семь полей. Их значения
minute, hour,
mday, month,
wday, who (кто), и
command. Значение полей почти очевидно.
minute это время в минутах, когда будет запущена
команда. hour означает то же самое для часов.
mday означает день месяца.
month, это то же самое, что час и минута,
но для месяцев. Параметр wday это день
недели. Все эти поля должны быть в
числовом формате, время в двадцатичетырехчасовом исчислении.
Поле who имеет специальное значение, и
присутствует только в файле /etc/crontab.
Это поле определяет пользователя, с правами которого должна быть
запущена команда. Когда пользователь устанавливает собственный
файл crontab, он не указывает этот параметр.
Последний параметр command. Он указывает команду, которая должна
быть запущена.Последняя строка определяет параметры, описанные выше. Здесь
задано значение */5, и несколько символов
*. Эти символы * означают
первый-последний, и могут быть интерпретированы как
каждый. Таким образом, для этой строки
соответствующая команда atrun вызывается
под пользователем root каждые пять минут
независимо от дня или месяца. За дополнительной информацией по
команде atrun обращайтесь к странице справочника
&man.atrun.8;.Команды могут принимать любое количество параметров; однако
команды, состоящие из нескольких строк, должны быть объединены
символом \.Этот формат одинаков для каждого файла crontab,
за исключением одной детали. Шестое поле, где указано имя пользователя,
присутствует только в файле /etc/crontab. Это
поле должно быть исключено из crontab файлов
пользователей.Установка crontabВы не должны использовать процедуру, описанную здесь, для
установки системного crontab. Просто используйте свой
любимый текстовый редактор: утилита cron
узнает о том, что файл изменился и сразу начнет использовать
обновленную версию. Обратитесь к этой
части FAQ за дальнейшей информацией.Для установки готового crontab пользователя,
сначала создайте в вашем любимом редакторе файл соответствующего
формата, а затем воспользуйтесь утилитой
crontab. Обычно она запускается
так:&prompt.user; crontab crontab-fileВ этом примере, crontab-file это имя файла
crontab, который только что был создан.Существует также параметр для просмотра установленных файлов
crontab: задайте crontab
параметр .Для пользователей, составляющих crontab вручную, без временного
файла, существует параметр crontab -e.
Она вызовет редактор с пустым файлом. Когда файл будет сохранен,
crontab автоматически установит его.Если позднее вы захотите полностью удалить свой
crontab, используйте
crontab с параметром .TomRhodesПредоставил Использование rc в FreeBSD 5.XrcNGВ &os; недавно была интегрирована из NetBSD система
rc.d, используемая для старта системы.
Многие из файлов в каталоге /etc/rc.d
предназначены для основных сервисов, они могут управляться
параметрами ,
, и
. Например, &man.sshd.8; может быть
перезапущен следующей командой:&prompt.root; /etc/rc.d/sshd restartЭта процедура похожа для других сервисов. Конечно, сервисы
обычно запускаются автоматически, как указано в &man.rc.conf.5;.
Например, включение даемона Network Address Translation
при запуске выполняется простым добавлением следующей строки
в /etc/rc.conf:natd_enable="YES"Если уже присутствует,
просто измените на .
Скрипты rc автоматически загрузят все другие зависимые
сервисы, как описано ниже.Поскольку система rc.d в основном предназначена
для запуска/отключения сервисов во время запуска/отключения
системы, стандартные параметры ,
и будут работать
только если установлена соответствующая переменная в
/etc/rc.conf. Например, команда выше
sshd restart будет работать только если
переменная sshd_enable в файле
/etc/rc.confустановлена в .
Для выполнения скриптов независимо от установок в
/etc/rc.conf, параметры ,
или необходимо
задавать с префиксом force. Например, для
перезапуска sshd независимо от установок в
/etc/rc.conf, выполните следующую
команду:&prompt.root; /etc/rc.d/sshd forcerestartПроверить состояние переменной в файле
/etc/rc.conf легко: запустите соответствующий
скрипт из rc.d с параметром
. Проверка переменной для
sshd выполняется следующей командой:&prompt.root; /etc/rc.d/sshd rcvar
# sshd
$sshd_enable=YESВторая строка (# sshd) это вывод
команды sshd, а не консоль
root.Чтобы определить, запущен ли сервис, существует параметр
. Например для проверки того, запущен ли
sshd, выполните:&prompt.root; /etc/rc.d/sshd status
sshd is running as pid 433.Возможна также перегрузка () сервиса.
Скрипт, запущенный с этим параметром, попытается отправить сервису
сигнал, вызывающий перезагрузку файлов настройки. В большинстве
случаев это означает отправку сервису сигнала
SIGHUP.Структура rcNG используется не только для
сетевых серверов, она отвечает также за большую часть инициализации
системы.
Рассмотрим, к примеру, файл bgfsck. Во время
выполнения этот скрипт выводит следующее сообщение:Starting background file system checks in 60 seconds.Следовательно, этот файл используется для фоновой проверки файловых
систем, которая выполняется только в процессе инициализации
системы.Функционирование многих сервисов системы зависит от корректной
работы других сервисов. Например, NIS и другие основанные на
RPC сервисы могут не запуститься, пока не загрузится
rpcbind (portmapper). Для разрешения этой
проблемы, в начале каждого скрипта в комментарии включаются
информация о зависимостях и другие метаданные. Программа
&man.rcorder.8; для разбора этих комментариев во время старта
системы для определения порядка, в котором должны вызываться
системные сервисы в соответствии с зависимостями. В начало
каждого стартового файла должны быть включены следующие
строки:PROVIDE: Задает имя сервиса, предоставляемого этим файлом.REQUIRE: Список сервисов, необходимых этому сервису. Этот
файл будет запущен после указанных
сервисов.BEFORE: Список сервисов, зависящих от этого сервиса. Этот
файл будет запущен до указанных
сервисов.KEYWORD: &os; или NetBSD. Используется для функций,
зависящих от версии *BSD.Используя этот метод, администратор может легко контролировать
системные сервисы без использования уровней запуска,
как в некоторых других операционных системах &unix;.Дополнительную информацию о системе rc.d
&os; 5.X можно найти на страницах справочника &man.rc.8; и
and &man.rc.subr.8;.MarcFonvieilleПредоставил Настройка карт сетевых интерфейсовнастройка сетевой картыВ наши дни мы не представляем себе компьютера без сетевого
подключения. Добавление и настройка сетевой карты это
обычная задача любого администратора &os;.Поиск подходящего драйверанастройка сетевой картыпоиск драйвераВ первую очередь определите тип используемой карты (PCI или ISA),
модель карты и используемый в ней чип. &os; поддерживает
многие PCI и ISA карты. Обратитесь к Списку поддерживаемого
оборудования вашего релиза чтобы узнать, поддерживается ли
карта.Как только вы убедились, что карта поддерживается, потребуется
определить подходящий драйвер. В файле
/usr/src/sys/i386/conf/LINT находится список
драйверов сетевых интерфейсов с информацией о поддерживаемых
чипсетах/картах. Если вы сомневаетесь в том, какой драйвер
подойдет, прочтите страницу справочника к драйверу.
Страница справочника содержит больше информации о поддерживаемом
оборудовании и даже о проблемах, которые могут возникнуть.Если ваша карта широко распространена, вам скорее всего
не потребуется долго искать драйвер. Драйверы для
широко распространенных карт представлены в ядре
GENERIC, так что ваша карта должна определиться
при загрузке, примерно так:dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38
000ff irq 15 at device 11.0 on pci0
dc0: Ethernet address: 00:a0:cc:da:da:da
miibus0: <MII bus> on dc0
ukphy0: <Generic IEEE 802.3u media interface> on miibus0
ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30
000ff irq 11 at device 12.0 on pci0
dc1: Ethernet address: 00:a0:cc:da:da:db
miibus1: <MII bus> on dc1
ukphy1: <Generic IEEE 802.3u media interface> on miibus1
ukphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, autoВ этом примере две карты используют имеющийся в системе
драйвер &man.dc.4;.Для использования сетевой карты потребуется загрузить
подходящий драйвер. Это можно сделать двумя способами.
Самый простой способ это загрузка модуля ядра для
сетевой карты с помощью &man.kldload.8;. Не для каждой
сетевой карты есть модуль (например ISA карты и карты,
использующие драйвер &man.ed.4;). В качестве альтернативы,
вы можете статически добавить поддержку сетевой карты
в ядро. Проверьте /usr/src/sys/i386/conf/LINT
и страницу справочника драйвера, чтобы узнать, что добавить
в файл конфигурации ядра. За дополнительной информацией о
пересборке ядра обращайтесь к .
Если ваша карта была обнаружена ядром (GENERIC)
во время загрузки, собирать новое ядро не потребуется.Настройка сетевой картынастройка сетевой картынастройкаКак только для сетевой карты загружен подходящий драйвер,
ее потребуется настроить. Как и многое другое, сетевая
карта может быть настроена во время установки с помощью
sysinstall.Для вывода информации о настройке сетевых интерфейсов системы,
введите следующую команду:&prompt.user; ifconfig
dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255
ether 00:a0:cc:da:da:da
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
dc1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
ether 00:a0:cc:da:da:db
media: Ethernet 10baseT/UTP
status: no carrier
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
tun0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500Старые версии &os; могут потребовать запуска
&man.ifconfig.8; с параметром , за
более подробным описанием синтаксиса &man.ifconfig.8;
обращайтесь к странице справочника. Учтите также, что
строки, относящиеся к IPv6 (inet6 и т.п.)
убраны из этого примера.В этом примере были показаны следующие устройства:dc0: первый Ethernet
интерфейсdc1: второй Ethernet
интерфейсlp0: интерфейс параллельного
портаlo0: устройство loopbacktun0: туннельное устройство,
используемое pppДля присвоения имени сетевой карте &os; использует имя
драйвера и порядковый номер, в котором карта обнаруживается
при инициализации устройств. Например, sis2
это третья сетевая карта, использующая драйвер &man.sis.4;.В этом примере, устройство dc0 включено
и работает. Ключевые признаки таковы:UP означает, что карта настроена и
готова.У карты есть интернет (inet)
адрес (в данном случае
192.168.1.3).Установлена маска подсети (netmask;
0xffffff00, то же, что и
255.255.255.0).Широковещательный адрес (в данном случае,
192.168.1.255).Значение MAC адреса карты (ether)
00:a0:cc:da:da:daВыбор физической среды передачи данных в режиме автовыбора
(media: Ethernet autoselect (100baseTX
<full-duplex>)). Мы видим, что
dc1 была настроена для работы с
10baseT/UTP. За более подробной
информацией о доступных драйверу типах среды обращайтесь
к странице справочника.Статус соединения (status)
active, т.е. несущая обнаружена.
Для dc1, мы видим
status: no carrier. Это нормально, когда
Ethernet кабель не подключен к карте.Если &man.ifconfig.8; показывает примерно следующее:dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
ether 00:a0:cc:da:da:daэто означает, что карта не была настроена.Для настройки карты вам потребуются привилегии пользователя
root. Настройка сетевой карты может быть
выполнена из командной строки с помощью &man.ifconfig.8;, но
вам потребуется делать это после каждой перезагрузки системы.
Подходящее место для настройки сетевых карт это файл
/etc/rc.conf.Откройте /etc/rc.conf в текстовом
редакторе. Вам потребуется добавить строку для каждой сетевой
карты, имеющейся в системе, например, в нашем случае, было
добавлено две строки:ifconfig_dc0="inet 192.168.1.3 netmask 255.255.255.0"
ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP"Замените dc0,
dc1, и так далее на соответствующие
имена ваших карт, подставьте соответствующие адреса.
Обратитесь к страницам справочника сетевой карты и
&man.ifconfig.8;, за подробной информацией о доступных
опциях и к странице справочника &man.rc.conf.5; за дополнительной
информацией о синтаксисе /etc/rc.conf.Если вы настроили сетевую карту в процессе установки системы,
некоторые строки, касающиеся сетевой карты, могут уже присутствовать.
Внимательно проверьте /etc/rc.conf перед
добавлением каких-либо строк.Отредактируйте также файл /etc/hosts
для добавления имен и IP адресов различных компьютеров сети,
если их еще там нет. За дополнительной информацией обращайтесь
к man.hosts.5;
и к /usr/share/examples/etc/hosts.Тестирование и решение проблемКак только вы внесете необходимые изменения в
/etc/rc.conf, перегрузите компьютер.
Изменения настроек интерфейсов будут применены, кроме того
будет проверена правильность настроек.Как только система перезагрузится, проверьте сетевые
интерфейсы.Проверка Ethernet картынастройка сетевой картытестирование картыДля проверки правильности настройки сетевой карты,
попробуйте выполнить ping для самого интерфейса, а затем
для другой машины в локальной сети.Сначала проверьте локальный интерфейс:&prompt.user; ping -c5 192.168.1.3
PING 192.168.1.3 (192.168.1.3): 56 data bytes
64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms
64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms
64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms
64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms
64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms
--- 192.168.1.3 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 msЗатем проверьте другую машину в локальной сети:&prompt.user; ping -c5 192.168.1.2
PING 192.168.1.2 (192.168.1.2): 56 data bytes
64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms
64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms
--- 192.168.1.2 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 msВы можете также использовать имя машины вместо
192.168.1.2, если настроен файл
/etc/hosts.Решение проблемнастройка сетевой картырешение проблемРешение проблем с аппаратным и программным обеспечением всегда
вызывает сложности, которые можно уменьшить, проверив сначала
самые простые варианты. Подключен ли сетевой кабель? Правильно ли
настроены сетевые сервисы? Правильно ли настроен брандмауэр?
Поддерживается ли используемая карта в &os;? Всегда проверяйте
информацию об оборудовании перед отправкой сообщения об ошибке.
Обновите &os; до последней версии STABLE. Просмотрите
архивы списков рассылки, или поищите информацию в интернет.Если карта работает, но производительность низка, может помочь
чтение страницы справочника &man.tuning.7;. Проверьте также
настройки сети, поскольку неправильные настройки могут стать причиной
низкой скорости соединения.Некоторые пользователи встречаются с несколькими
device timeouts, что нормально для некоторых
сетевых карт. Если это продолжается и надоедает, убедитесь, что
устройство не конфликтует с другим устройством. Внимательно
проверьте подключение кабеля. Возможно также, что вам просто надо
установить другую карту.Время от времени, пользователи видят несколько ошибок
watchdog timeout. Первое, что требуется сделать,
это проверить сетевой кабель. Многие карты требуют поддержки
Bus Mastering слотом PCI. На некоторых старых материнских платах,
только один PCI слот имеет такую поддержку (обычно слот 0).
Сверьтесь с документацией на сетевую карту и материнскую плату,
чтобы определить, может ли это быть проблемой.Сообщение No route to host появляются, если
система не в состоянии доставить пакеты к хосту назначения.
Это может случиться, если не определен маршрут по умолчанию,
или кабель не подключен. Проверьте вывод команды netstat
-rn и убедитесь, что к соответствующему хосту
есть работающий маршрут. Если это не так, прочтите .Сообщения ping: sendto: Permission denied
зачастую появляются при неправильно настроенном брандмауэре.
Если ipfw включен в ядре, но правила не
определены, правило по умолчанию блокирует весь трафик,
даже запросы ping! Прочтите с более подробной информацией.Иногда карты недостаточна, или ниже среднего. В этих случаях
лучше всего изменить режим выбора типа подключения с
autoselect на правильный тип.
Обычно это работает для большинства оборудования, но не может
решить проблему во всех случаях. Проверьте еще раз настройки сети
и прочтите страницу руководства &man.tuning.7;.Настройка виртуальных сервероввиртуальные серверасинонимы ipОчень часто &os; используется для размещения сайтов, когда
один сервер работает в сети как несколько серверов. Это достигается
присвоением нескольких сетевых адресов одному интерфейсу.У сетевого интерфейса всегда есть один настоящий
адрес, хотя он может иметь любое количество синонимов
(alias). Эти синонимы обычно добавляются путём помещения
соответствующих записей в /etc/rc.conf.Синоним для интерфейса fxp0 выглядит
следующим образом:ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"Заметьте, что записи синонимов должны начинаться с
alias0 и идти далее в определенном порядке
(например, _alias1, _alias2,
и т.д.). Конфигурационный процесс остановится на первом по порядку
отсутствующем числе.Определение маски подсети для синонима очень важно, но к счастью,
так же просто. Для каждого интерфейса должен быть один адрес с
истинной маской подсети. Любой другой адрес в сети должен иметь
маску подсети, состоящую из всех единичек (что выражается как
255.255.255.255 или как
0xffffffff).Например, рассмотрим случай, когда интерфейс
fxp0 подключён к двум сетям, к сети
10.1.1.0 с маской подсети
255.255.255.0 и к сети
202.0.75.16 с маской
255.255.255.240. Мы хотим,
чтобы система была видна по IP, начиная с
10.1.1.1 по
10.1.1.5 и с
202.0.75.17 по
202.0.75.20. Как было сказано выше,
только первый адрес в заданном диапазоне (в данном случае,
10.0.1.1 и
202.0.75.17) должен иметь реальную
маску сети; все остальные (с 10.1.1.2
по 10.1.1.5 и с
202.0.75.18 по
202.0.75.20) должны быть
сконфигурированы с маской сети
255.255.255.255.Для этого должны быть внесены следующие записи: ifconfig_fxp0="inet 10.1.1.1 netmask 255.255.255.0"
ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 255.255.255.255"
ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255"
ifconfig_fxp0_alias2="inet 10.1.1.4 netmask 255.255.255.255"
ifconfig_fxp0_alias3="inet 10.1.1.5 netmask 255.255.255.255"
ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240"
ifconfig_fxp0_alias5="inet 202.0.75.18 netmask 255.255.255.255"
ifconfig_fxp0_alias6="inet 202.0.75.19 netmask 255.255.255.255"
ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255"Файлы настройкиКаталог /etcВо FreeBSD определён ряд директорий, предназначенных для
хранения конфигурационных файлов. Это:
-
+ /etcОсновные файлы конфигурации системы. Тут размещены
системно–зависимые данные./etc/defaultsВерсии системных конфигурационных файлов по
умолчанию./etc/mailДополнительные конфигурационные файлы &man.sendmail.8;
остальные конфигурационные файлы MTA.
/etc/pppНастройка для user- и kernel-ppp программ.
/etc/namedbОсновное место расположения данных &man.named.8;.
Обычно named.conf и файлы зон
расположены здесь./usr/local/etcКонфигурационные файлы установленных приложений. Могут
содержать подкаталоги приложений./usr/local/etc/rc.dСкрипты запуска/остановки установленных приложений./var/dbАвтоматически генерируемые системно-специфичные файлы
баз данных, такие как база данных пакетов, и так
далееИмена хостовhostnameDNS/etc/resolv.confresolv.conf/etc/resolv.conf определяет, как
ресолвер (resolver) &os; получает доступ к Системе Доменных
Имён (DNS).Основные записи resolv.conf:
-
+ nameserverIP адрес сервера имён. Сервера опрашиваются в порядке
описания. Максимальное количество адресов - три.searchСписок доменов для поиска с помощью hostname lookup.
Обычно определяется доменом, в котором находится
компьютер.domainДомен, в котором находится компьютер.Типичный вид resolv.conf:search example.com
nameserver 147.11.1.11
nameserver 147.11.100.30Опции search и
domain нельзя использовать
совместно.Если вы используете DHCP, &man.dhclient.8; обычно перезаписывает
resolv.conf информацией, полученной от серверов
DHCP./etc/hostshosts/etc/hosts - простая текстовая база
данных, напоминающая старый Интернет. Она работает совместно с
DNS и NIS, сопоставляя доменные имена IP адресу.
Отдельные компьютеры, соединённые с помощью локальной сети могут
быть записаны тут вместо &man.named.8; сервера с целью упрощения.
Кроме того, /etc/hosts используется для
записи IP адресов и соответствующих им доменов, избавляя от
внешнего трафика, используемого для запросов к DNS серверам.# $&os;$
#
# Host Database
# This file should contain the addresses and aliases
# for local hosts that share this file.
# In the presence of the domain name service or NIS, this file may
# not be consulted at all; see /etc/nsswitch.conf for the resolution order.
#
#
::1 localhost localhost.my.domain myname.my.domain
127.0.0.1 localhost localhost.my.domain myname.my.domain
#
# Imaginary network.
#10.0.0.2 myname.my.domain myname
#10.0.0.3 myfriend.my.domain myfriend
#
# According to RFC 1918, you can use the following IP networks for
# private nets which will never be connected to the Internet:
#
# 10.0.0.0 - 10.255.255.255
# 172.16.0.0 - 172.31.255.255
# 192.168.0.0 - 192.168.255.255
#
# In case you want to be able to connect to the Internet, you need
# real official assigned numbers. PLEASE PLEASE PLEASE do not try
# to invent your own network numbers but instead get one from your
# network provider (if any) or from the Internet Registry (ftp to
# rs.internic.net, directory `/templates').
#Формат /etc/hosts:[IP адрес в Интернете] [имя компьютера] [alias1] [alias2] ...Например:10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2За дополнительной информацией обращайтесь к &man.hosts.5;.Настройка лог файловлог файлыsyslog.confsyslog.confsyslog.conf is является файлом конфигурации
для &man.syslogd.8;. В нём указываются, типы сообщений
генерируемые syslog, и лог файлы, в которые они
записываются.# $&os;$
#
# Spaces ARE valid field separators in this file. However,
# other *nix-like systems still insist on using tabs as field
# separators. If you are sharing this file between systems, you
# may want to use only tabs as field separators here.
# Consult the syslog.conf(5) manual page.
*.err;kern.debug;auth.notice;mail.crit /dev/console
*.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
security.* /var/log/security
mail.info /var/log/maillog
lpr.info /var/log/lpd-errs
cron.* /var/log/cron
*.err root
*.notice;news.err root
*.alert root
*.emerg *
# uncomment this to log all writes to /dev/console to /var/log/console.log
#console.info /var/log/console.log
# uncomment this to enable logging of all log messages to /var/log/all.log
#*.* /var/log/all.log
# uncomment this to enable logging to a remote log host named loghost
#*.* @loghost
# uncomment these if you're running inn
# news.crit /var/log/news/news.crit
# news.err /var/log/news/news.err
# news.notice /var/log/news/news.notice
!startslip
*.* /var/log/slip.log
!ppp
*.* /var/log/ppp.logЗа более полной информацией обратитесь
к &man.syslog.conf.5;.newsyslog.confnewsyslog.confnewsyslog.conf - конфигурационный файл
&man.newsyslog.8;, программы, обычно контролируемой &man.cron.8;.
&man.newsyslog.8; определяет, когда лог-файлы нуждаются в
архивировании и перегруппировке.
logfile перемещается в
logfile.0, logfile.0
перемещается в logfile.1, и так далее.
Другое именование получится при архивировании с помощью
&man.gzip.1;: logfile.0.gz,
logfile.1.gz, и т.д.newsyslog.conf показывает, какие лог файлы
должны быть проинспектированы, сколько их должно быть сохранено, и когда
они должны быть пересмотрены. Лог файлы могут быть перегруппированы
и/или заархивированы, когда они либо достигнут определённого
размера, либо при достижении определённых даты/времени.# configuration file for newsyslog
# $&os;$
#
# filename [owner:group] mode count size when [ZB] [/pid_file] [sig_num]
/var/log/cron 600 3 100 * Z
/var/log/amd.log 644 7 100 * Z
/var/log/kerberos.log 644 7 100 * Z
/var/log/lpd-errs 644 7 100 * Z
/var/log/maillog 644 7 * @T00 Z
/var/log/sendmail.st 644 10 * 168 B
/var/log/messages 644 5 100 * Z
/var/log/all.log 600 7 * @T00 Z
/var/log/slip.log 600 3 100 * Z
/var/log/ppp.log 600 3 100 * Z
/var/log/security 600 10 100 * Z
/var/log/wtmp 644 3 * @01T05 B
/var/log/daily.log 640 7 * @T00 Z
/var/log/weekly.log 640 5 1 $W6D0 Z
/var/log/monthly.log 640 12 * $M1D0 Z
/var/log/console.log 640 5 100 * ZЗа дополнительной информацией обращайтесь к
&man.newsyslog.8;.sysctl.confsysctl.confsysctlsysctl.conf очень похож на
rc.conf. Значения устанавливаются в виде
variable=value. Указанные значения устанавливаются
после перевода системы в многопользовательский режим. Однако не все
переменные могут быть установлены в этом режиме.Пример sysctl.conf настроенной для выключения
нотирования фатальных ошибок и разрешения Linux-программам определять,
что они запускаются под &os;:kern.logsigexit=0 # Do not log fatal signal exits (e.g. sig 11)
compat.linux.osname=&os;
compat.linux.osrelease=4.3-STABLEНастройка с помощью sysctlsysctlнастройкас помощью sysctl&man.sysctl.8; - это интерфейс, позволяющий вам вносить изменения
в работающую систему &os;. Эти изменения могут касаться многих опций стека
TCP/IP и виртуальной памяти и могут облегчить опытному администратору
жизнь. Более пяти тысяч системных переменных могут быть прочитаны и
записаны с помощью &man.sysctl.8;.По своей сути, &man.sysctl.8; выполняет две функции: чтение
и изменение настроек системы.Для просмотра всех доступных для чтения переменных::&prompt.user; sysctl -aЧтобы прочитать определённую переменную, например,
kern.maxproc, введите:&prompt.user; sysctl kern.maxproc
kern.maxproc: 1044Для присвоения значения переменной, используйте выражение вида
переменная=значение:&prompt.root; sysctl kern.maxfiles=5000
kern.maxfiles: 2088 -> 5000Изменяемые с помощью sysctl переменные обычно принимают значения
либо строкового, либо целого, либо булевого типа. Переменные булевого
типа могут принимать два значения (1 (истина) и
0 (ложь)).Если вы хотите устанавливать некоторые переменные автоматически
при каждой загрузке компьютера, добавьте их в файл
/etc/sysctl.conf. За дополнительной
информацией обращайтесь к странице справочника &man.sysctl.conf.5;
и к .TomRhodesПредоставил Переменные &man.sysctl.8; только для чтенияВ некоторых случаях желательно изменить переменные
&man.sysctl.8; только для чтения. Хотя это не рекомендуется,
иногда другого способа решить проблему нет.Например, на некоторых моделях лэптопов диапазон памяти устройства
&man.cardbus.4; не определяется и выдается приблизительно такая
ошибка:cbb0: Could not map register memory
device_probe_and_attach: cbb0 attach returned 12Ситуации, похожие на эту, требуют изменения некоторых значений
&man.sysctl.8;, модификация которых запрещена. Для разрешения этой
ситуации пользователь может поместить &man.sysctl.8; OID
в файл /boot/loader.conf. Значения по
умолчанию хранятся в файле
/boot/defaults/loader.conf.Решение проблемы, приведенной выше, потребует помещения строки
в вышеупомянутый
файл. Теперь &man.cardbus.4; будет работать нормально.Оптимизация дисковПеременные Sysctlvfs.vmiodirenablevfs.vmiodirenableЗначением переменной vfs.vmiodirenable
может быть установлено в 0 (выключено) или 1 (включено); по
умолчанию 1. Эта переменная отвечает за метод кэширования
каталогов. Размер большинства каталогов невелик. Они могут
поместиться в одном фрагменте (обычно 1K), и могут занимать
ещё меньше места (обычно 512 байт) в кэше буфера.
При отключении этой переменной (при установке значения 0)
буфер прокэширует только заданное число
каталогов даже если у вас много памяти. При включении (при
установке значения 1) эта переменная
sysctl позволит использовать страничное кэширование VM,
делая доступным для кэширования каталогов
весь объём памяти. Однако,
минимальный объём памяти, используемой для
кэширования каталогов стал равен объёму страницы (обычно 4 K)
вместо 512 байт. Мы рекомендуем оставлять эту опцию включенной,
если ваш компьютер исполняет программы, манипулирующие значительным
количеством файлов. Примером таких программ могут быть кэширующие
прокси-серверы, большие почтовые серверы и серверы новостей. Обычно
включение этой опции не понижает производительности, однако лучше
поэкспериментировать, чтобы узнать оптимальное значение для вашей
машины.vfs.write_behindvfs.write_behindПеременная sysctl vfs.write_behind по
умолчанию установлена в 1 (включено). Она
указывает системе выполнять запись на носитель по кластерам,
что обычно делается для больших файлов. Идея в том, чтобы
избежать заполнения кэша неполными буферами, когда это не
увеличивает производительность. Однако, это может заблокировать
процессы и в некоторых случаях вам может понадобиться отключить
этот параметр.vfs.hirunningspacevfs.hirunningspaceПеременная sysctl vfs.hirunningspace
определяет число запросов записи на диск, которые могут
быть поставлены в очередь. Значение по умолчанию обычно подходит,
но на компьютерах с большим количеством дисков вы можете
увеличить его до четырех или пяти мегабайт.
Учтите, что установка слишком большого значения (превышающего
размер буфера записи) может привести к очень значительному
падению общей производительности. Не делайте это значение
произвольно большим! Большие значения могут привести к
задержкам чтения, выполняемого в то же времяЕсть много других переменных sysctl, относящихся к кэшированию
в буфер и страничному кэшированию VM. Мы не рекомендуем изменять
эти значения. Начиная &os; 4.3, система VM делает отличную
работу по автоматической самонастройке.vm.swap_idle_enabledvm.swap_idle_enabledПеременная sysctl vm.swap_idle_enabled
полезна в больших многопользовательских системах, где есть
много пользователей, входящих и выходящих из системы, и
множество ожидающих процессов. Такие системы обычно генерируют
большое количество запросов на выделение памяти. Включение этой
переменной и настройка задержки выгрузки (swapout hysteresis,
в секундах) установкой переменных
vm.swap_idle_threshold1 и
vm.swap_idle_threshold2 позволит освобождать
страницы памяти, занятые ожидающими процессами, более быстро,
чем при нормальном алгоритме выгрузки. Это помогает даемону
выгрузки страниц. Не включайте этот параметр, пока он на самом
деле вам не понадобится, поскольку его действие в сущности
заключается в более ранней выгрузке страниц из памяти; это
повышает нагрузку на подкачку и диск. В малых системах
эффект от включения этого параметра предсказуем, но в больших
системах нагруженной на подкачкой этот параметр позволяет
системе VM проще загружать и выгружать процессы из памяти.hw.ata.wchw.ata.wcВо &os; 4.3 кэширование записи на IDE диски было отключено.
Это понижало производительность IDE дисков в тестах, но было
необходимо для лучшей сохранности данных. Проблема состоит в том,
что IDE диски неправильно указывают время завершения записи на диск.
При включенном кэшировании IDE диски могут не только записать данные
в неправильном порядке – при большой нагрузке на диск некоторые
блоки могут задержаться до бесконечности. Сбой, или отключение
питания могут могут стать причиной серьёзных повреждений в файловой
системе. Поэтому для безопасности системы значение по умолчанию
этого параметра было изменено. К сожалению, результатом этого стало
столь значительная потеря производительности, что после выхода
релиза значение этого параметра было возвращено в первоначальное
состояние. Вам следует проверить значение переменной sysctl
hw.ata.wc на вашей машине. Если кэширование
выключено - вы можете включить его, установив значение переменной
ядра, равное 1. Это должно быть сделано при помощи загрузчика при
загрузке. Если вы сделаете это позже - изменения не будут иметь
силы.За более подробной информацией обращайтесь к &man.ata.4;.SCSI_DELAY
(kern.cam.scsi_delay)SCSI_DELAYkern.cam.scsi_delayПараметр настройки ядра SCSI_DELAY может
использоваться для уменьшения времени загрузки системы.
Значение по умолчанию велико и может составлять более
15 секунд в процессе загрузки. Уменьшение
его до 5 секунд обычно работает (особенно
с современными дисками). В новых версиях &os; (5.0 и выше) должен
использоваться параметр kern.cam.scsi_delay,
настраиваемый во время загрузки. Этот параметр и параметр
настройки ядра принимают значения в
миллисекундах, а не в
секундах.Soft UpdatesSoft UpdatestunefsПрограмма &man.tunefs.8; используется для настройки файловой
системы. Эта программа может принимать большое количество параметров,
но мы рассмотрим лишь один из них - включение и выключение
Soft Updates, что может быть достигнуто следующим образом:&prompt.root; tunefs -n enable /filesystem
&prompt.root; tunefs -n disable /filesystemНельзя изменять файловую систему с помощью &man.tunefs.8; когда
она смонтирована. Самое подходящее время для включения "Soft Updates"
- перед монтированием разделов, в однопользовательском режиме.Начиная с &os; 4.5, можно включить Soft Updates
во время создания файловой системы, используя
&man.newfs.8; с параметром -U.Soft Updates существенно увеличивают скорость создания и удаления
файлов путём использования кэширования. Мы рекомендуем использовать Soft
Updates на всех ваших файловых системах. Однако у Soft Updates есть
и обратные стороны: во-первых, Soft Updates гарантирует целостность
файловой системы в случае сбоя, но может наблюдаться задержка в
несколько секунд (или даже минуту!) перед записью на жесткий диск.
Если система зависнет - вы можете потерять
больше, чем, если бы вы не включили Soft Updates. Во-вторых,
Soft Updates задерживает освобождение блоков файловой системы.
Если ваша файловая система заполнена, выполнение значительного
обновления, например.
make installworld, может вызвать
переполнение.Дополнительная информация о Soft UpdatesSoft UpdatesдеталиЕсть два традиционных способа записи метаданных файловых систем
на диск. (Пример метаданных: индексные дескрипторы и
каталоги.)Исторически, поведение по умолчанию заключается в синхронном
обновлении метаданных. Если каталог был изменен, система
ждет, пока изменение не будет физически записано на диск.
Содержимое файлов проходит через кэш и записывается на
диск асинхронно. Преимущество этого способа в его
надежности. При сбое во время обновления метаданные
остаются в нормальном состоянии. Файл либо создается целиком,
либо вообще не создается. Если блоки данных не были записаны
в файл из буфера во время сбоя, &man.fsck.8; сможет определить
это и восстановить файловую систему, установив длину файла в 0.
Кроме того, реализация этого способа проста и понятна.
Недостаток в том, что обновление метаданных занимает много
времени. Команда rm -r, например,
последовательно удаляет все файлы в каталоге, и каждое изменение
в каталоге (удаление файла) будет синхронно записано на диск.
Сюда включаются обновления самого каталога, таблицы индексных
дескрипторов, и возможно блоков, занятых файлом. Те же
соглашения работают при распаковке больших иерархий
(tar -x).Другой вариант это асинхронное обновление метаданных. Это
поведение по умолчанию для Linux/ext2fs и *BSD ufs с параметром
mount -o async. Все обновления метаданных
просто пропускаются через кэш буфера, как и содержимое файлов.
Преимущество этой реализации в том, что нет необходимости ждать
каждый раз, пока метаданные будут записаны на диск, поэтому
все операции с большим объемом обновления метаданных будут
происходить гораздо быстрее чем при синхронном обновлении.
Кроме того, реализация все еще проста и понятна, поэтому
риск появления ошибок в коде невелик. Недостаток в том,
что нет никаких гарантий исправности файловой системы. Если во
время во время обновления большого объема метаданных произойдет
сбой (например, отключение питания, или нажатие кнопки reset),
файловая система останется в непредсказуемом состоянии.
Нет возможности определить состояние файловой системы после
такого сбоя; блоки данных файла могут быть уже записаны на диск,
а обновления таблицы индексных дескрипторов нет. Невозможно
реализовать fsck, которая могла бы
исправить получившийся хаос (поскольку необходимой информации
нет на диске). Если файловая система была уничтожена во
время восстановления, единственный способ восстановления
— запустить &man.newfs.8; и воспользоваться
резервной копией.Обычное решение этой проблемы состояло в реализации
протоколировании проблемной области (dirty region
logging), известном как
журналирование, хотя этот термин
использовался неправильно и порой также применялся к другим
формам протоколирования транзакций. Обновление метаданных
как и прежде происходит синхронно, но в отдельную область
диска. Позже они перемещаются туда, где должны быть.
Поскольку область протоколирования это небольшая,
последовательная область диска, головкам жесткого диска
не приходится перемещаться на большие расстояния даже
во время значительных обновлений, поэтому такой способ
быстрее, чем синхронные обновления.
Кроме того, сложность реализации довольно ограничена, поэтому
риск внесения ошибок невелик. Недостаток в том, что
все обновления метаданных записываются дважды (один раз
в область протоколирования и один раз окончательно),
поэтому при обычной работе производительность может
понизиться. С другой стороны, в случае сбоя все
незаконченные действия с метаданными могут быть быстро
отменены, или завершены после загрузки системы,
поэтому система после сбоя загружается быстрее.Kirk McKusick, разработчик Berkeley FFS, решил эту проблему
с помощью Soft Updates: все незавершенные обновления метаданных
находятся в памяти и записываются на диск в упорядоченном
виде (упорядоченное обновления метаданных).
При значительных обновлениях метаданных более поздние обновления
присоединяются к предыдущим, если они все еще
находятся в памяти и еще не записаны на диск. Поэтому все
операции, скажем, над каталогом, обычно выполняются в памяти
перед записью обновления на диск (блоки данных сортируются
в соответствии с их положением, так что они не будут записаны
на диск до метаданных. При крахе операционной системы выполняется
откат: считается, что все операции, не записанные на
диск, никогда не происходили. Файловая система находится в
том состоянии, в котором она была за 30–60 секунд до сбоя.
Используемый алгоритм гарантирует, что все используемые ресурсы
маркированы соответствующим образом в своих областях: блоки и
индексные дескрипторы. После сбоя могут остаться только ошибки,
выделения ресурсов, они помечаются как используемые,
хотя на самом деле свободны. &man.fsck.8;
разбирается в ситуации и освобождает более не используемые
ресурсы. После сбоя система может быть безопасно смонтирована
с опцией mount -f. Для освобождения ресурсов,
которые могут не использоваться, в дальнейшем потребуется
запустить &man.fsck.8;. Эта идея лежит в основе
background (фоновая) fsck: во время запуска системы
записывается только снимок файловой системы.
Все системы могут быть смонтированы в грязном
состоянии, и система загружается в многопользовательский режим.
Затем, фоновые fsck ставятся в очередь для
всех систем, где это требуется, чтобы освободить неиспользуемые
ресурсы. (Файловые системы, где не используются Soft Updates,
все еще требуют запуска fsck в обычном
режиме).Преимущество этого способа в том, что обновления метаданных
происходят почти так же быстро, как при асинхронных обновлениях
(т.е. быстрее, чем при журналировании,
когда метаданные записываются дважды). Недостаток в сложности
кода (подразумевающим больший риск появления ошибок в области,
где вероятность потери данных пользователя особенно высока) и
в более высоких требованиях к объему памяти. К тому же могут
возникнуть некоторые странные на первый взгляд ситуации.
После сбоя состояние файловой системы несколько более
старое. В ситуации, когда стандартный способ
синхронизации оставит несколько файлов нулевой длины после
выполнения fsck, в файловой системе с
Soft Updates их не останется вовсе, поскольку ни метаданные,
ни содержимое файлов не были записаны на диск. Дисковое
пространство не будет освобождено пока обновления не будут
записаны на диск, что может занять некоторое время после
выполнения rm. Это может повлечь проблемы
при установке большого количества файлов на файловую
систему, где не хватает места для помещения всех файлов
дважды.Изменение ограничений, накладываемых ядромоптимизацияпараметры ядраОграничения на Файлы/Процессыkern.maxfileskern.maxfilesЗначение kern.maxfiles может быть увеличено
или уменьшено в зависимости от потребностей вашей системы. Эта
переменная определяет максимальное число дескрипторов файлов. Когда
таблица дескрипторов файлов полна, в очереди системных сообщений
появится сообщение file: table is full. Это
сообщение может быть прочитано с помощью команды
dmesg.Каждый открытый файл, сокет или буфер использует дескриптор
файла. Широкомасштабному серверу может понадобиться много
тысяч дескрипторов файлов, в зависимости от количества программ,
одновременно выполняемых на сервере.Стандартное значение kern.maxfile определяется
переменной в вашем файле конфигурации
ядра. Значение kern.maxfiles увеличивается
пропорционально значению . При
компилировании ядра, нужно установить эту переменную согласно
потребностям вашей системы. Исходя из значения этой переменной,
ядро устанавливает значения большинства предопределённых
переменных. Даже если предполагается, что к компьютеру не будут
одновременно подсоединяться 256 пользователей, требуемые ресурсы
могут быть такими же, как у крупномасштабного сервера.Начиная с &os; 4.5, установка значения
в
0 в файле конфигурации ядра выберет подходящее
значение по умолчанию, основанное на объеме оперативной памяти
системы.kern.ipc.somaxconnkern.ipc.somaxconnПеременная sysctl kern.ipc.somaxconn
ограничивает размер очереди для приема новых TCP соединений.
Значение по умолчанию 128 слишком мало для
надежной обработки новых соединений для нагруженного web
сервера. Для такого сервера рекомендуется увеличить это значение
до 1024 или выше. Даемон сервиса может
сам ограничивать очередь приема новых соединений (например,
&man.sendmail.8;, или Apache), но
обычно в файле настройки даемона есть директива для настройки
длины очереди. Более длинная очередь также помогает избежать
атак Denial of Service (DoS).Сетевые ОграниченияОпция ядра NMBCLUSTERS обуславливает
количество Mbuf, доступных на машине. На сервере с большим трафиком
и маленьким Mbuf производительность будет пониженной. Каждый кластер
представлен двумя килобайтами памяти, поэтому значение 1024 означает
2 мегабайта памяти ядра, зарезервированной для сетевых буферов.
Для определения оптимального значения необходимо провести простые
вычисления. Если у вас веб сервер, который может обслуживать 1000
одновременных соединений, и каждое соединение съедает 16 K буфера
приема и 16 K буфера отправки, вам потребуется 32 MB памяти
под буферы. Хорошее правило — умножение этого значения на 2,
2x32 MB / 2 KB = 64 MB / 2 kB = 32768.
Мы рекомендуем значения между 4096 и 32768 для машин с большим объемом
памяти. Не указывайте произвольно большое значение параметра, это
может привести к падению системы при загрузке. Используйте
&man.netstat.1; для определения количества
используемых сетевых кластеров.Для настройки в процессе загрузки используйте в loader переменную
kern.ipc.nmbclusters. Только в старых версиях
&os; потребуется пересобрать ядро (&man.config.8;) с измененным
параметром NMBCLUSTERS.Для нагруженных серверов, интенсивно использующих системный
вызов &man.sendfile.2;, может потребоваться увеличения буферов
&man.sendfile.2; с помощью параметра конфигурации ядра
NSFBUFS, или изменения значения путем установки
переменной в /boot/loader.conf
(обратитесь к &man.loader.8; за подробностями). Общий
признак того, что параметр требуется изменить —
состояние процессов sfbufa.
Переменная sysctl kern.ipc.nsfbufs
установлена только для чтения. Этот параметр увеличивается
вместе с kern.maxusers, хотя может
потребоваться увеличить его отдельно.Даже если сокет помечен как неблокирующий, вызов
&man.sendfile.2; на неблокирующем сокете может вызвать блокирование
&man.sendfile.2;, пока не станет доступным достаточное количество
struct sf_buf.net.inet.ip.portrange.*net.inet.ip.portrange.*Переменные sysctl net.inet.ip.portrange.*
контролируют диапазоны номеров портов, автоматически привязываемых
к TCP и UDP сокетам. Есть три диапазона: нижний диапазон,
диапазон по умолчанию и верхний диапазон. Большинство сетевых
программ используют диапазон по умолчанию, контролируемый
net.inet.ip.portrange.first и
net.inet.ip.portrange.last, установленными
соответственно в 1024 и 5000. Диапазоны портов привязки
используются исходящих соединений и при некоторых условиях
портов может не хватить. Это чаще всего происходит на
сильно загруженном прокси сервере. Диапазон портов не
становится проблемой при работе серверов, которые обрабатывают
в основном входящие соединения, или с небольшим количеством
исходящих соединений, например mail relay. Для ситуаций,
когда возможен недостаток портов, рекомендуется немного
увеличить net.inet.ip.portrange.last.
Может подойти значение 10000,
20000, или 30000.
Учтите также возможное влияние брандмауэра при
изменении диапазона портов. Некоторые могут блокировать
большие диапазоны портов (обычно с небольшими номерами)
и вынуждают использовать более высокие диапазоны для
исходящих соединений. По этой причине рекомендуется
настроить значение
net.inet.ip.portrange.first.TCP Bandwidth Delay ProductTCP Bandwidth Delay Product Limitingnet.inet.tcp.inflight_enableTCP Bandwidth Delay Product Limiting похоже на
TCP/Vegas в NetBSD. Оно может быть
включено установкой переменной sysctl
net.inet.tcp.inflight_enable в
1. Система попытается вычислить задержку
пакетов для каждого соединения и ограничить объем данных в
очереди сети до значения, требуемого для поддержания оптимальной
пропускной способности.Эта возможность полезна при передаче данных через модемы,
Gigabit Ethernet, или даже через высокоскоростные WAN соединения
(или любые другие соединения с большой задержкой передачи),
особенно если вы также используете изменение размера окна или
настроили большое окно передачи. Если вы включили этот параметр,
убедитесь также, что переменная
net.inet.tcp.inflight_debug установлена в
0 (отладка выключена), а для использования в
реальных может понадобиться установка переменной
net.inet.tcp.inflight_min к значению
как минимум 6144. Но учтите, что установка
большого значения этой переменной может фактически отключить
ограничение в зависимости от вида соединения. Ограничение
уменьшает количество данных на определенном маршруте и
управляет очередью пакетов, как и уменьшает общее количество
данных в очереди локального интерфейса хоста. С меньшим
количеством пакетов в очереди двусторонние интерактивные
соединения, особенно на медленных линиях, могут проходить
быстрее. Но имейте ввиду, что эта функция работает только
при передаче данных (передача данных / сторона сервера).
Она не работает при получении данных (загрузке).Изменение значения переменной
net.inet.tcp.inflight_stabне рекомендуется. Этот параметр по умолчанию
равен 20, что означает добавление 2 пакетов к вычислению задержки
передачи. Дополнительное окно требуется для стабилизации
алгоритма и улучшения ответной реакции на изменение условий,
но также приводит к большему времени ping на медленных соединениях
(задержка все же гораздо меньше, чем без алгоритма inflight).
Вы можете попробовать уменьшить этот параметр до 15, 10 или 5;
а также уменьшить net.inet.tcp.inflight_min
(например, до 3500) для получения желаемого эффекта. Уменьшение
значений этих параметров может использоваться только как
крайняя мера.Увеличение объема подкачкиВне зависимости от того, что вы планировали, иногда
система ведет себя неожиданно. Если вам потребовался
дополнительный объем подкачки, его довольно просто добавить.
Есть три способа увеличения объема подкачки: добавить новый
жесткий диск, включить подкачку по NFS, или создать файл
подкачки на существующем разделе.Подкачка на новом жестком дискеЛучший способ добавить подкачку, конечно, использовать
еще один жесткий диск. Вы можете сделать это в любой
момент. Если такой способ подходит, прочтите еще раз
информацию по пространству подкачки в разделе
Руководства,
где рассказывается о наилучшем способе организации раздела
подкачки.Подкачка через NFSПодкачка через NFS рекомендуется только в том случае, если
в системе отсутствует жесткий диск. Подкачка через NFS
медленна и неэффективна в версиях &os; до 4.X. Она
довольно быстра и эффективна в 4.0-RELEASE и выше. Но даже
в новых версиях &os;, подкачка через NFS ограничена
скоростью сетевого подключения и к тому же дополнительно
нагружает NFS сервер.Файлы подкачкиВы можете создать файл определенного размера и использовать
его как файл подкачки. В нашем примере будет использован файл
/usr/swap0 размером 64MB. Конечно, вы
можете использовать любое имя.Создание файла подкачки в &os; 4.XУбедитесь, что ядре включен драйвер vnode. Он
невключен в последних версиях
GENERIC.pseudo-device vn 1 #Vnode driver (turns a file into a device)Создайте устройство vn:&prompt.root; cd /dev
&prompt.root; sh MAKEDEV vn0Создайте файл подкачки (/usr/swap0):&prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1024k count=64Установите подходящие права на (/usr/swap0):&prompt.root; chmod 0600 /usr/swap0Включите файл подкачки в /etc/rc.conf:swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired.Перегрузите компьютер, или для включения подкачки прямо
сейчас выполните:&prompt.root; vnconfig -e /dev/vn0b /usr/swap0 swapСоздание файла подкачки в &os; 5.XУбедитесь, что в файле настройки ядра присутствует драйвер
виртуального диска (&man.md.4;). Он есть в ядре
GENERIC.device md # Memory "disks"Создайте файл подкачки (/usr/swap0):&prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1024k count=64Установите подходящие права на (/usr/swap0):&prompt.root; chmod 0600 /usr/swap0Включите файл подкачки в /etc/rc.conf:swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired.Перегрузите компьютер или для включения подкачки прямо сейчас
введите:&prompt.root; mdconfig -a -t vnode -f /usr/swap0 -u 0 && swapon /dev/md0HitenPandyaНаписал TomRhodesУправление питанием и ресурсамиОчень важно использовать аппаратные ресурсы эффективно.
До того, как появился ACPI, управление
потреблением питания и температурными характеристиками системы
было очень сложной для операционной системы задачей. Аппаратное
обеспечение контролировалось одним из видов встроенного интерфейса
BIOS, таким как: Plug and Play BIOS
(PNPBIOS), Advanced Power Management
(APM) и так далее. Управление питанием и ресурсами
это один из ключевых компонентов современной операционной системы.
Например, вам может потребоваться, чтобы операционная система
следила за температурными ограничениями и возможно, предупреждала
при неожиданном росте температуры.В этом разделе Руководства &os;, мы предоставим исчерпывающую
информацию о ACPI. В конце раздела есть ссылки
для дальнейшего чтения. Учтите, что ACPI есть
только в &os; 5.X и выше в качестве стандартного модуля ядра.
В &os; 4.9 ACPI можно включить добавлением
строки device acpica к файлу настройки ядра и
его пересборкой.Что такое ACPI?Advanced Configuration and Power Interface
(ACPI) это стандарт, написанный объединением
поставщиков в целях предоставления стандартного интерфейса для
аппаратных ресурсов и управления питанием (отсюда и название).
Это ключевой элемент Operating System-directed
configuration and Power Management, т.е.: он предоставляет
операционной системе (OS) больше контроля и более
универсален. Современные системы вышли за пределы ограничений
существующих Plug and Play интерфейсов (таких как APM,
использовавшийся в &os; 4.X), до появления
ACPI. ACPI это прямой
наследник APM (Advanced Power Management).Недостатки Advanced Power Management (APM)Средства Advanced Power Management (APM)
управляют энергопотреблением системы в зависимости от
нагрузки. APM BIOS предоставляется поставщиком системы и
специфичен для данной аппаратной платформы. Драйвер APM
в OS обеспечивает доступ к APM Software Interface,
который позволяет управлять уровнями потребления питания.В APM имеется четыре основных проблемы. Во-первых, управление
энергопотреблением осуществляется через зависимый от поставщика
BIOS, и OS ничего не знает нем. Один пример: когда пользователь
устанавливает время ожидания для жесткого диска в APM BIOS,
и это время истекает, BIOS останавливает жесткий диск без согласования
с OS. Во-вторых, алгоритм APM встроен в BIOS, и все действия
происходят вне контроля OS. Это означает, что пользователи
могут решить проблемы с APM BIOS только путем перепрошивки
его ROM; это очень опасная процедура, и если она завершится
неудачно, система может оказаться в невосстановимом состоянии.
В-третьих, реализация технологии APM зависит от поставщика,
что означает дублирование усилий и если в BIOS одного
из поставщиков будет найдена и исправлена ошибка, ее могли
не исправить другие поставщики. Наконец, объем APM BIOS недостаточно
велик для реализации сложной политики управления питанием, или
такой политики, которая может хорошо адаптироваться к потребностям
компьютера.Plug and Play BIOS (PNPBIOS) был неудобен
во многих ситуациях. PNPBIOS это 16-битная технология,
поэтому OS требовалось использовать 16-битную эмуляцию для
взаимодействия с методами PNPBIOS.&os; драйвер APM документирован в странице
справочника &man.apm.4;.Настройка ACPI&man.loader.8; загружает драйвер acpi.ko по
умолчанию, его не надо встраивать в ядро.
Причина в том, что с модулями проще работать, например переключиться
на другой acpi.ko без пересборки ядра.
Преимущество в упрощении тестирования. Другая причина в том, что
запуск ACPI после старта системы не очень полезен
и при некоторых условиях может приводить к краху. Если вы
сомневаетесь, отключите ACPI совсем. Драйвер не
должен и не может быть выгружен, поскольку системная шина используется
для различных взаимодействий оборудования. ACPI
может быть выключен с помощью утилиты &man.acpiconf.8;. Фактически
большинство взаимодействий с ACPI может быть
выполнено через &man.acpiconf.8;. В основном это означает, что если в
выводе &man.dmesg.8; есть что-то об ACPI, он скорее
всего работает.ACPI и APM не могут
сосуществовать и должны использоваться раздельно. Каждый из них
прервет загрузку, если обнаружит загруженный драйвер
другого.В простейшей форме, ACPI может использоваться
для перевода системы в спящий режим с помощью &man.acpiconf.8;, с
флагом и параметром 1-5.
Большинству пользователей нужен только параметр 1.
Параметр 5 сделает мягкое
завершение работы, так же как и:&prompt.root; halt -pДоступны и другие параметры. Обратитесь к странице справочника
&man.acpiconf.8; за дополнительной информацией.NateLawsonНаписал PeterSchultzПри помощи TomRhodesИспользование и отладка &os; ACPIACPI это фундаментально новый способ
обнаружения устройств, управления энергопотреблением и предоставления
стандартизированного доступа к различному оборудованию,
ранее управлявшемуся BIOS. Был достигнут
определенный прогресс в приспособлении ACPI
к работе со всеми системами, но все еще встречаются ошибки
в байткоде ACPI Machine
Language (AML) некоторых материнских плат,
незавершенные участки кода в подсистемах ядра &os; и ошибки в
интерпретаторе &intel; ACPI-CA.Этот раздел предназначен для того, чтобы упростить ваше
содействие разработчикам &os; ACPI в
определении причин наблюдаемых вами проблем, выполнении отладки
и выработке решения. Спасибо за помощь и надеемся, что мы сможем
помочь в решении проблем вашей системы.Отправка отладочной информацииПеред отправкой сообщения об ошибке убедитесь, что
у вас последняя версия BIOS, и, если
доступна, последняя версия firmware встроенного
контроллера.Те из вас, кто желает составить сообщение о проблеме прямо
сейчас, могут воспользоваться адресом
freebsd-acpi@FreeBSD.org, отправив на него следующую
информацию:Описание неправильного поведения, включая тип системы, модель
и все, что приводит к появлению ошибки. Кроме того, сообщите
настолько точно, насколько возможно, когда появилась ошибка,
если ранее вы ее не видели.Вывод &man.dmesg.8; после boot
-v, включая все сообщения, появившиеся
при изучении ошибки.Вывод &man.dmesg.8; после boot
-v с выключенным ACPI,
если его отключение помогает решить проблему.Вывод sysctl hw.acpi. Это также хороший
способ получения списка возможностей системы.URL где можно найти ваш
ACPI Source Language
(ASL). Не отправляйте
ASL непосредственно в список рассылки,
поскольку он может быть очень большим. Копия
ASL может быть создана командой:&prompt.root; acpidump -t -d > name-system.asl(Замените вашим логином
name и производителем/моделью
system. Пример:
njl-FooCo6000.asl)Большинство разработчиков читают &a.current;,
но для уверенности, что проблему увидят, отправьте ее в
&a.acpi.name;. Будьте терпеливы, все мы заняты полный рабочий день где-то
еще. Если ваше сообщение не заметили сразу, мы возможно
попросим вас отправить PR (сообщение о проблеме)
через &man.send-pr.1;. При вводе PR,
включайте ту же информацию, что запрошена выше. Это поможет
нам отследить проблему и решить ее. Не отправляйте
PR без предварительной отправки письма в
&a.acpi.name;, поскольку мы используем PR в качестве
напоминаний о существующих проблемах, а не как механизм сообщений
об ошибках. Вероятно, о вашей проблеме кто-то уже сообщал
ранее.Общие сведенияACPI представлен во всех современных
компьютерах, соответствующих архитектурам ia32 (x86),
ia64 (Itanium) и amd64 (AMD). Полный стандарт включает множество
возможностей, в том числе управление производительностью
CPU, уровнем питания, температурой,
различными системами аккумуляторов, встроенными контроллерами
и опросом шины. В большинстве систем стандарт реализован не
полностью. Например, настольные системы обычно реализуют только
опрос шины, а портативные компьютеры кроме того могут поддерживать
управление охлаждением и энергопотреблением. Они также поддерживают
приостановку и последующий запуск системы различного уровня
сложности.ACPI-совместимые системы состоят из
различных компонентов. Производители BIOS
и чипсетов предоставляют различные жестко заданные таблицы,
(например, FADT), которые определяют
функции вроде карты APIC (используется для
SMP), регистры настройки и простые
значения параметров. Кроме того, предоставляется таблица
байткода (Differentiated System Description
Table, DSDT), определяющая древоподобное
пространство имен устройств и методов.Драйвер ACPI должен прочесть заданные
таблицы, реализовать интерпретатор для байткода, модифицировать
драйвера устройств и ядро для приема информации от подсистемы
ACPI. Для &os; &intel; предоставила
интерпретатор (ACPI-CA), тот же что для
Linux и NetBSD. Исходный код ACPI-CA
находится в каталоге
src/sys/contrib/dev/acpica.
Код для приспособления ACPI-CA к работе в
&os;, находится в src/sys/dev/acpica/Osd.
Наконец, драйвера, реализующие различные ACPI
устройства, находятся в
src/sys/dev/acpica.Часто встречающиеся проблемыДля правильной работы ACPI все ее части должны
работать правильно. Вот некоторые часто встречающиеся проблемы, в порядке
частоты появления, и некоторые обходные пути или исправления.Приостановка/возобновление работыACPI поддерживает три состояния приостановки в
RAM (STR),
S1-S3, и одно состояние
приостановки на диск (STD), называемое
S4. S5 это
мягкое выключение и это нормальное состояние системы,
когда она подключена к сети, но не включена. S4
может быть реализован двумя различными путями.
S4BIOS это
BIOS-поддерживаемая приостановка на диск.
S4OS реализуется полностью
операционной системой.Начните с проверки переменных sysctl
hw.acpi,
относящихся к приостановке (suspend).
Вот результат для Thinkpad:hw.acpi.supported_sleep_state: S3 S4 S5
hw.acpi.s4bios: 0Это означает, что мы можем использовать acpiconf
-s для тестирования S3,
S4OS, и
S5. Если был единицей
(1), это означает поддержку
S4BIOS вместо
S4OS.При тестировании приостановки/возобновления работы, начните
с S1, если этот режим поддерживается.
Это состояние скорее всего поддерживается, поскольку не требует
слишком серьезной поддержки со стороны драйвера. Никто не
реализовал S2, который похож на
S1. Следующий режим для тестирования это
S3. Это наиболее глубокое STR
состояние, оно требует существенной поддержки со стороны
драйвера, чтобы правильно реинициализировать оборудование.
Если у вас возникли проблемы при выходе из этого состояния,
отправьте письмо в рассылку &a.acpi.name;, но не ждите, что
проблема будет обязательно решена, поскольку существует
множество драйверов/оборудования, нуждающихся в дальнейшем
тестировании и разработке.Для изоляции проблемы удалите из ядра столько драйверов,
сколько возможно. Если это работает, вы можете выяснить,
какой драйвер вызывает проблему путем загрузки драйверов
до тех пор, пока опять не произойдет сбой. Обычно бинарные
драйвера, такие как nvidia.ko,
драйвера дисплея X11 и
USB вызывают большинство проблем, а драйвера
Ethernet интерфейсов как правило работают отлично. Если вы
можете нормально загрузить/выгрузить драйвера, автоматизируйте
этот процесс, поместив соответствующие команды в
/etc/rc.suspend и
/etc/rc.resume. Это закомментированные
примеры выгрузки и загрузки драйверов. Попробуйте
установить параметр
в нуль (0), если ваш дисплей не включается
после возобновления
работы. Попробуйте установить большие или меньшие значения
для , чтобы проверить,
поможет ли это.Другой способ, который можно попробовать, это запуск
последнего дистрибутива Linux с поддержкой
ACPI и протестировать поддержку
остановки/возобновления работы на том же оборудовании.
Если она работает на Linux, проблема скорее всего в
драйверах &os; и поиск драйвера, вызывающего проблему,
поможет разрешить ситуацию. Имейте ввиду, что разработчики
ACPI обычно не поддерживают другие
драйверы (звук, ATA, и т.п.), так что
все результаты работы по поиску проблемы возможно необходимо
отправить в список рассылки &a.current.name; и человеку,
поддерживающему драйвер. Если вы решитесь заняться
отладкой, поместите соответствующий код (&man.printf.3;)
в вызывающий проблему драйвер для обнаружения места, где
прерывается функция восстановления.Наконец, попробуйте отключить ACPI и
включить APM. Если приостановка/возобновление
работает с APM, вам возможно лучше подойдет
APM, особенно на старом оборудовании (до
2000). Включение корректной поддержки ACPI
поставщиками оборудования требует времени и вероятно в старом
оборудовании поддержка ACPI в
BIOS была некорректна.Система останавливается (временно или постоянно)Большинство систем останавливаются в результате потери
прерываний или шторма прерываний. В чипсетах
существует много проблем, связанных с тем, как
BIOS настраивает прерывания перед загрузкой,
правильностью таблицы APIC
(MADT), и маршрутизации
System Control Interrupt
(SCI).Шторм прерываний может быть обнаружен по
потерянным прерываниям путем проверки вывода строки с
acpi0 команды vmstat -i.
Если счетчик увеличивается более, чем
несколько раз в секунду, это шторм прерываний.
Если система останавливается, попробуйте войти в
DDB
(CTRLALTESC на
консоли) и ввести show interrupts.Наиболее надежный способ избавиться от проблемы с прерываниями,
это отключение поддержки APIC с помощью
параметра loader.confhint.apic.0.disabled="1".ПаникаПаника, связанная с ACPI, случается довольно
редко и имеет наибольший приоритет исправления. Первый шаг
это изоляция действий, приводящих к панике (если это возможно)
и получение отладки. Следуйте инструкции по включению
options DDB и настройке последовательной консоли
(смотрите )
или настройке раздела &man.dump.8;. Вы можете получить отладочную
информацию DDB с помощью tr.
Если вы записываете отладку вручную, убедитесь, что переписали
как минимум пять (5) строк снизу и пять (5) строк сверху.Затем попробуйте изолировать проблему, загрузившись с
выключенным ACPI. Если это работает, вы можете
изолировать подсистему ACPI, используя
различные параметры .
Обратитесь к странице справочника &man.acpi.4; за примерами.Система включается после приостановки или завершения
работыВо-первых, попробуйте установить в &man.loader.conf.5; параметр
hw.acpi.disable_on_poweroff="0".
Это предотвращает отключение различных событий в
ACPI во время завершения работы.
В некоторых системах этот параметр необходимо установить
в 1 (по умолчанию) по тем же причинам. Обычно это
решает проблему, если система неожиданно включается после
приостановки или отключения питания.Другие проблемыЕсли вы наблюдаете другие проблемы с ACPI
(работа с внешним оборудованием, проблемы с обнаружением устройств,
и т.д.), отправьте описание проблемы в список рассылки;
однако, некоторые из этих проблем могут относиться к незавершенным
частям подсистемы ACPI, поэтому может
потребоваться время на их реализацию. Будьте терпеливы, и
подготовьтесь к тестированию исправлений, которые мы можем вам
выслать.ASL, acpidump, и
IASLНаиболее часто встречается проблема, связанная с предоставлением
поставщиками BIOS некорректного (или полностью
ошибочного!) байткода. Это обычно проявляется появлением
консольных сообщений ядра, подобных этому:ACPI-1287: *** Error: Method execution failed [\\_SB_.PCI0.LPC0.FIGD._STA] \\
(Node 0xc3f6d160), AE_NOT_FOUNDЗачастую вы можете разрешить эти проблемы путем обновления
BIOS до последней ревизии. Большинство консольных
сообщений безвредны, но если существуют другие проблемы, такие как
не работающий статус батареи, возможно существуют проблемы в
AML. Байткод, известный как
AML, компилируется из исходного текста на
языке ASL. AML находится
в таблице, известной как DSDT. Для получения
копии ASL, используйте &man.acpidump.8;.
Вы можете использовать оба параметра
(показывать содержимое постоянных таблиц) и
(дизассемблировать AML в ASL).
Обратитесь к разделу Отправка
отладочной информации за примером синтаксиса.Простейшая первая проверка, которую вы можете провести,
это перекомпиляция ASL для поиска ошибок.
Предупреждения обычно могут быть проигнорированы, но ошибки
обычно не позволяют ACPI работать правильно.
Для перекомпиляции ASL, выполните следующую
команду:&prompt.root; iasl your.aslИсправление ASLВ дальней перспективе, наша задача состоит в том, чтобы
обеспечить поддержку ACPI практически для
каждой системы без вмешательства пользователя. Однако, на данный
момент мы все еще разрабатываем обходные пути для ошибок,
которые часто делают поставщики BIOS.
Интерпретатор µsoft; (acpi.sys и
acpiec.sys) не занимается проверкой
четкости соблюдения стандартов, поэтому многие поставщики
BIOS, проверяющие ACPI
только под &windows;, никогда не исправляют ASL.
Мы надеемся продолжать обнаружение и документацию нестандартных
поведений, позволяемых интерпретатором µsoft;, и воспроизводить
их, чтобы &os; могла работать без необходимости исправления
ASL пользователями. В качестве обходного пути
для обнаружения неправильного поведения, вы можете исправить
ASL вручную. Если исправления будут работать,
пожалуйста отправьте &man.diff.1; между старым и новым
ASL, чтобы мы могли реализовать обходной
путь для неправильного поведения ACPI-CA,
чтобы исправление вручную больше не требовалось.Вот список наиболее часто встречающихся проблем, их причин и
способы исправления:OS зависимостиНекоторые AML предполагают, что мир состоит
из различных версий &windows;. Вы можете настроить &os;, чтобы
она сообщала любое другое имя OS и посмотреть,
исправит ли это имеющуюся проблему. Простой способ указания
другого имени системы это установка переменной
/boot/loader.confhw.acpi.osname="Windows 2001"
или в другое подобное значение, имеющееся в
ASL.Отсутствие возврата значенияНекоторые методы не возвращают значение явно, как того
требует стандарт. Хотя ACPI-CA не обрабатывает
эту ситуацию, в &os; существует обходной путь, позволяющей ей
явно возвращать значение. Вы можете также добавить явные операторы
Return (возврат) там, где требуется, если знаете, что значение
должно быть возвращено. Для принудительного компилирования
ASL командой iasl, используйте
флаг .Перезапись AML по умолчаниюПосле настройки your.asl для
компиляции запустите:&prompt.root; iasl your.aslВы можете добавить флаг для создания
AML даже при наличии ошибок компиляции.
Помните, что некоторые ошибки (например, отсутствующие операторы
Return), автоматически обходятся интерпретатором.Файл DSDT.aml используется
iasl по умолчанию. Вы можете загрузить его
вместо ошибочной копии BIOS (которая
остается в постоянной памяти) путем редактирования
/boot/loader.conf:acpi_dsdt_load="YES"
acpi_dsdt_name="/boot/DSDT.aml"Убедитесь, что скопировали DSDT.aml в
каталог /boot.Получение отладочной информации
ACPIВозможности отладки драйвера ACPI очень
гибкие. Они позволяют вам указывать набор подсистем, а также
уровень отладки. Подсистемы, которые вы хотите отлаживать,
указываются как слои, и подразделяются на
компоненты ACPI-CA (ACPI_ALL_COMPONENTS)
и поддержку оборудования ACPI (ACPI_ALL_DRIVERS).
Уровень отладки варьируется от ACPI_LV_ERROR (только сообщать об
ошибках) до ACPI_LV_VERBOSE (все сообщения). Уровень отладки
представляет собой битовую маску, поэтому возможна одновременная
установка нескольких параметров, разделенных пробелами.
На практике, при использовании для получения отладочной информации
последовательной консоли, слишком большое количество информации
может переполнить буфер консоли. Полный список отдельных слоев
и уровней можно найти на странице справочника &man.acpi.4;.Вывод отладочной информации по умолчанию не включен.
Для его включения добавьте параметр
options ACPI_DEBUG к файлу настройки ядра, если
ACPI встроен в ядро. Вы можете добавить параметр
ACPI_DEBUG=1 в файл
/etc/make.conf для глобального включения
этого параметра. Если вы используете модуль
acpi.ko , его можно пересобрать
индивидуально:&prompt.root; cd /sys/modules/acpi/acpi
&& make clean && make
ACPI_DEBUG=1Установите acpi.ko в
/boot/kernel и добавьте
предпочитаемый уровень и слой к loader.conf.
Этот пример включает отладочные сообщения для всех компонентов
ACPI-CA и всех драйверов оборудования
ACPI (CPU,
LID и т.д.). Будут выводиться только сообщения
об ошибках, наименьший уровень отладки.debug.acpi.layer="ACPI_ALL_COMPONENTS ACPI_ALL_DRIVERS"
debug.acpi.level="ACPI_LV_ERROR"Если требуемая информация получается в результате определенного
события (скажем, приостановка и восстановление), вы можете
не изменять loader.conf и использовать
для указания слоя и уровня sysctl
после загрузки и подготовки системы к определенному событию.
Имена переменных sysctl те же, что и имена
параметров настройки в loader.conf.СсылкиДальнейшую информацию о ACPI можно найти
по следующим ссылкам:&a.acpi;Архивы списка рассылки ACPI
Старые архивы списка рассылки ACPI
Спецификация ACPI 2.0
Страницы справочника &os;: &man.acpi.4;,
&man.acpi.thermal.4;, &man.acpidump.8;, &man.iasl.8;,
&man.acpidb.8;
Ресурс по отладке DSDT.
(Использует в качестве примера Compaq, но обычно полезен.)
diff --git a/ru_RU.KOI8-R/books/handbook/desktop/chapter.sgml b/ru_RU.KOI8-R/books/handbook/desktop/chapter.sgml
index a984fcaf7b..4d6ad9c1b0 100644
--- a/ru_RU.KOI8-R/books/handbook/desktop/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/desktop/chapter.sgml
@@ -1,1280 +1,1280 @@
ChristopheJunietПредоставил ДенисПеплинПеревод на русский язык: Приложения для настольного компьютераКраткий обзорFreeBSD может работать с широким кругом приложений для настольного
компьютера (десктопа), таких как браузеры и текстовые процессоры.
Большинство из них доступны в качестве пакетов или могут быть автоматически
собраны из коллекции портов. Многим новым пользователям хотелось
бы видеть эти приложения на своем компьютере. В этой главе показано
как без усилий установить некоторые популярные приложения для
настольного компьютера из пакетов или из коллекции портов.Обратите внимание, что при установке программ из портов они
компилируются из исходных текстов. Это может занять очень много
времени, в зависимости от того, что вы собираете, и от скорости
процессора вашего компьютера (компьютеров). Большинство программ,
имеющихся в коллекции портов, могут быть установлены из
прекомпилированных пакетов, если сборка из исходных текстов занимает
недопустимо много времени.Поскольку FreeBSD обеспечивает двоичную совместимость с Linux,
многие приложения, первоначально разработанные для Linux, доступны и на
вашем компьютере. Настоятельно рекомендуется прочитать
перед установкой любого из приложений
Linux. Названия многих портов, использующих двоичную совместимость
с Linux, начинаются с linux-. Помните это при поиске
отдельного порта, например с помощью &man.whereis.1;. Далее в статье
подразумевается, что вы включили бинарную совместимость с Linux
перед установкой какого-либо приложения Linux.Вот несколько категорий, о которых пойдет речь в этой главе:Браузеры (такие как Mozilla,
&netscape;,
Opera,
Firefox,
Konqueror)Бизнес приложения (такие как
KOffice,
AbiWord,
GIMP,
OpenOffice.org)Программы просмотра документов (такие как
&acrobat.reader;,
gv,
Xpdf,
GQview)Финансовые программы (такие как
GnuCash,
Gnumeric,
Abacus)Перед прочтением этой главы вам потребуется:Узнать как устанавливать дополнительные программы
сторонних производителей ().Узнать как устанавливать программы Linux
().Чтобы получить дополнительную информацию о настройке
мультимедиа среды, прочтите . Если
вам нужна электронная почта, обратитесь к
.БраузерыFreeBSD поставляется без предустановленного браузера.
Взамен каталог
www
коллекции портов содержит множество готовых к установке браузеров.
Если у вас нет времени компилировать все (в некоторых случаях
это может занять очень много времени), многие из них доступны в
виде пакетов.В KDE и
GNOME уже есть HTML браузеры.
Обратитесь к для подробной информации об
установке этих полноценных десктопов.Если вы ищете облегченный браузер, попробуйте
www/dillo,
www/links, или
www/w3m из коллекции портов.Этот раздел рассказывает о следующих приложениях:
-
+ Название приложенияПотребность в ресурсахУстановка из портовОсновные зависимостиMozillaбольшаятяжелаяGtk+&netscape;большаялегкаяLinux Binary CompatibilityOperaмалаялегкаяДоступны версии для FreeBSD и Linux. Для Linux версии
необходимо наличие Linux Binary Compatibility и
linux-openmotifFirefoxсредняятяжелаяGtk+KonquerorсредняятяжелаяБиблиотеки KDEMozillaMozillaMozilla это возможно наиболее
подходящий браузер для десктопа FreeBSD. Он современный,
стабильный и полностью портирован на FreeBSD. Его достоинство
в высокой совместимости со стандартами HTML. В нем есть
почтовая и новостная программы. В нем даже найдется редактор HTML,
если вам потребуется самостоятельно написать несколько веб-страничек.
Пользователи &netscape; найдут общие черты с
Communicator, поскольку оба браузера
имеют одну основу.На медленных компьютерах с частотой CPU меньше 233MHz или
с памятью меньше 64MB, Mozilla
требует слишком много ресурсов, чтобы быть удобной в использовании.
Вместо нее вы можете обратить внимание на браузер
Opera, описанный ниже в этой
главе.Если вы не можете или не хотите компилировать
Mozilla по какой-то причине, команда
FreeBSD GNOME уже сделала это для вас. Просто установите
пакет из сети с помощью:&prompt.root; pkg_add -r mozillaЕсли пакет недоступен, но у вас достаточно времени и
места на диске, вы можете скачать исходные тексты для
Mozilla, скомпилировать их и установить
в вашу систему. Это делается так:&prompt.root; cd /usr/ports/www/mozilla
&prompt.root; make install cleanПорт Mozilla проверяет правильность
установки путем запуска регистрации chrome
с привилегиями пользователя root.
Если вы хотите загрузить некоторые дополнения, например курсоры мыши,
потребуется запустить Mozilla под
root для их правильной установки.После завершения установки
Mozilla, больше не требуется работать под
root. Вы можете запустить
Mozilla в качестве браузера, набрав:&prompt.user; mozillaВы можете также запустить непосредственно программу чтения почты и
новостей, как показано ниже:&prompt.user; mozilla -mailTomRhodesПредоставил Mozilla, &java;, и ¯omedia; &flash;Установка Mozilla проста, но
к сожалению, установка Mozilla с
поддержкой дополнений, таких как &java; и
¯omedia; &flash; отнимает и время и место на диске.Первое, что нужно сделать — загрузку файлов, которые
будут использоваться с Mozilla. Зайдите
с помощью имеющегося веб браузера на
и
создайте учетную запись на этом вебсайте. Сохраните имя пользователя и
пароль, они могут понадобиться в будущем. Загрузите копию файла
j2sdk-1_3_1-src.tar.gz и поместите в каталог
/usr/ports/distfiles/, поскольку порт не
загрузит его автоматически. Причина в лицензионном ограничении.
Загрузите с этого же сайта java environment,
.
Имя файла j2sdk-1_3_1_08-linux-i586.bin, он большой (около 25
мегабайт!). Как и раньше, этот файл требуется поместить в
/usr/ports/distfiles/. Наконец, загрузите копию
java patchkit с
и поместите ее
в /usr/ports/distfiles/.Установите порт java/jdk13
стандартной командой make install clean,
затем установите порт www/flashpluginwrapper.
Этот порт требует
emulators/linux_base
(большой порт). Есть и другие плагины
&flash; но у меня они не работают.Установите порт www/mozilla,
если Mozilla еще не установлена.Теперь скопируйте файлы &flash; плагина:&prompt.root; cp /usr/local/lib/flash/libflashplayer.so \
/usr/X11R6/lib/browser_plugins/libflashplayer_linux.so&prompt.root; cp /usr/local/lib/flash/ShockwaveFlash.class \
/usr/X11R6/lib/browser_plugins/Теперь добавьте следующие линии к верхней части (но под
#!/bin/sh) стартового скрипта Mozilla:
/usr/X11R6/bin/mozilla.LD_PRELOAD=/usr/local/lib/libflashplayer.so.1
export LD_PRELOADОни включат &flash; плагин.Теперь просто запустите Mozilla:&prompt.user; mozilla &И войдите в пункт About Plug-ins меню
Help. Должен появиться список со всеми доступными
плагинами. В нем должны присутствовать &java; и
&shockwave; &flash;.&netscape;NetscapeКоллекция портов содержит несколько версий браузера
&netscape;. Поскольку в версии для FreeBSD он содержит серьезную
ошибку безопасности, установка этой версии настоятельно не рекомендуется.
Вместо этого, используйте более свежую версию для Linux или
DIGITAL UNIX.Последний стабильный релиз браузера &netscape; это
&netscape; 7. Он может быть установлен
из коллекции портов:&prompt.root; cd /usr/ports/www/linux-netscape7
&prompt.root; make install cleanЕсть локализованные версии в французском, немецком и
японском разделах.Версии &netscape; 4.x не рекомендуются,
поскольку они не совместимы с современными стандартами.
Однако, &netscape; 7.x и более новые
версии доступны только для платформы &i386;.OperaOperaOpera это очень быстрый,
полноценный и совместимый со стандартами браузер. Он поставляется
в двух вариантах: родная для FreeBSD версия и версия,
запускаемая в режиме эмуляции Linux.
Для каждой операционной системы есть бесплатная версия
браузера, показывающая баннеры, и версия без
баннеров, которую можно купить на веб сайте Opera.Для работы в сети с помощью FreeBSD версии
Opera установите
пакет:&prompt.root; pkg_add -r operaНа некоторых серверах FTP нет всех пакетов, но те же результаты
можно получить с помощью коллекции портов, набрав:&prompt.root; cd /usr/ports/www/opera
&prompt.root; make install cleanДля установки Linux версии
Opera, замените
opera на
linux-opera в примере выше. Версия для Linux
полезна в ситуации, когда требуются плагины, доступные только
для Linux, такие как Adobe
&acrobat.reader;. Во всех других отношениях
версии для FreeBSD и Linux являются функционально
идентичными.FirefoxFirefoxFirefox это браузер следующего
поколения, основанный на коде Mozilla.
Mozilla это полный набор приложений,
таких как браузер, почтовый клиент, чат клиент и многое другое.
Firefox это всего лишь браузер,
что делает его меньше и быстрее.Установите пакет, выполнив:&prompt.root; pkg_add -r firefoxВы можете также использовать коллекцию портов, если предпочитаете
сборку из исходных текстов:&prompt.root; cd /usr/ports/www/firefox
&prompt.root; make install cleanKonquerorKonquerorKonqueror это часть
KDE, но может быть использован
и отдельно от KDE, путем
установки x11/kdebase3.
Konqueror это гораздо больше
чем просто браузер, это также менеджер файлов и программа
просмотра мультимедиа.Konqueror поставляется с набором
плагинов, доступных из misc/konq-plugins.Konqueror поддерживает также
&flash;, документация How To для него
доступна по адресу .Бизнес приложенияВ начале работы новые пользователи зачастую стремятся найти
хороший офисный пакет или удобный текстовый процессор.
Хотя некоторые десктопы,
такие как KDE, поставляются с готовым
офисным пакетом, приложения по умолчанию не существует. В FreeBSD
есть все необходимое, кроме графической среды.Этот раздел описывает следующие приложения:
-
+ Название приложенияПотребность в ресурсахУстановка из портовОсновные зависимостиKOfficeмалаятяжелаяKDEAbiWordмалаялегкаяGtk+ или GNOMEThe GimpмалаятяжелаяGtk+OpenOffice.orgбольшаяочень тяжелаяGCC 3.1, &jdk; 1.3, MozillaKOfficeKOfficeофисный пакетKOfficeСообщество KDE предоставляет графическую среду с офисным
пакетом, который может быть использован вне
KDE. Он включает четыре стандартных
компонента, встречающиеся и в других офисных пакетах.
Текстовый процессор KWord,
программа электронных таблиц KSpread,
KPresenter для создания презентаций
и программа векторной графики
Kontour.Перед установкой последней версии
KOffice, убедитесь в наличии
свежей версии KDE.Для установки KOffice из пакета,
выполните следующую команду:&prompt.root; pkg_add -r kofficeЕсли пакет недоступен, используйте коллекцию портов.
Например, для установки
KOffice для
KDE3, выполните:&prompt.root; cd /usr/ports/editors/koffice-kde3
&prompt.root; make install cleanAbiWordAbiWordAbiWord это свободно распространяемый
текстовый процессор, по внешнему виду и поведению очень похожий
на µsoft; Word. Он подходит для
набора документов, писем, отчетов, напоминаний и так далее. Он
очень быстр, содержит много новшеств и очень удобен в
использовании.AbiWord может импортировать и
экспортировать множество файловых форматов, включая патентованный
Microsoft .doc.AbiWord доступен в виде пакета.
Вы можете установить его так:&prompt.root; pkg_add -r AbiWord2Если пакет недоступен, он может быть собран из коллекции портов,
которая должна быть свежей. Это можно сделать командой:&prompt.root; cd /usr/ports/editors/AbiWord2
&prompt.root; make install cleanGIMPGIMPДля создания и редактирования изображений есть продвинутая
программа GIMP. Она может быть
использована как простая программа рисования и как программа
обработки фотографий. Поддерживается большое количество
плагинов и предоставлен интерфейс для скриптов.
GIMP может читать и записывать файлы
многих форматов. Есть интерфейс со сканерами и планшетами.Вы можете установить пакет, выполнив эту команду:&prompt.root; pkg_add -r gimpЕсли на вашем сервере FTP нет этого пакета, вы можете использовать
коллекцию портов. Каталог
graphics
коллекции портов содержит также раздел
Руководство Gimp. Здесь показано, как
его установить:&prompt.root; cd /usr/ports/graphics/gimp
&prompt.root; make install clean
&prompt.root; cd /usr/ports/graphics/gimp-manual-pdf
&prompt.root; make install cleanКаталог
graphics
коллекции портов содержит версию GIMP
для разработчиков в
graphics/gimp-devel.
HTML версия
Руководства Gimp находятся в
graphics/gimp-manual-html.OpenOffice.orgOpenOffice.orgофисный пакетOpenOffice.orgOpenOffice.org включает все обязательные
компоненты полноценного офисного пакета: текстовый процессор,
программу электронных таблиц, программу управления презентациями и программу
векторной графики. Интерфейс пользователя очень похож на другие
офисные пакеты, возможен импорт и экспорт различных популярных
файловых форматов. Приложение доступно в вариантах для множества
разных языков, включая интерфейсы, проверку орфографии и словари.Текстовый процессор
OpenOffice.org использует чистый XML
формат файлов для увеличения переносимости и гибкости.
Программа для работы с текстовыми таблицами предоставляет
макроязык и может работать с внешними базами данных.
OpenOffice.org уже стабильна и
существует в версиях для &windows;, &solaris;, Linux, FreeBSD,
и &macos; X. Дополнительную
информацию об OpenOffice.org можно
найти на веб сайте
OpenOffice. Получить специфичную для FreeBSD и
загрузить пакеты можно с веб сайта команды портирования
OpenOffice на FreeBSD (FreeBSD OpenOffice
Porting Team).Для установки OpenOffice.org,
выполните:&prompt.root; pkg_add -r openofficeПосле установки пакета запустите программу настройки и
выберите .
Запустите эту команду из под пользователя, который будет
использовать OpenOffice.org:&prompt.user; openoffice-setupЕсли пакеты OpenOffice.org
недоступны, можно выбрать компиляцию порта. Однако, вы должны
помнить, что это потребует много места на диске и компиляция
будет довольно долгой.&prompt.root; cd /usr/ports/editors/openoffice-1.1
&prompt.root; make install cleanПотом запустите настройку под пользователем, который будет
использовать OpenOffice.org и выберите
:&prompt.user; cd /usr/ports/editors/openoffice
&prompt.user; make install-userЕсли вы хотите использовать локализованную версию, вот доступные
порты:
-
+ ЯзыкПортАрабскийarabic/openoffice-1.1Венгерскийhungarian/openoffice-1.1Голландскийeditors/openoffice-1.1-nlГреческийeditors/openoffice-1.1-elДатскийeditors/openoffice-1.1-dkИспанскийeditors/openoffice-1.1-esИтальянскийeditors/openoffice-1.1-itКаталанскийeditors/openoffice-1.1-caКитайский (традиционный)chinese/openoffice-1.1-zh_TWКитайский (упрощенный)chinese/openoffice-1.1-zh_CNКорейскийkorean/openoffice-1.1Немецкийgerman/openoffice-1.1Польскийpolish/openoffice-1.1Португальский (Бразилия)portuguese/openoffice-1.1-pt_BRПортугальскийportuguese/openoffice-1.1-pt_PTРусскийrussian/openoffice-1.1Словацкийeditors/openoffice-1.1-skСловенскийeditors/openoffice-1.1-sl_SIТурецкийeditors/openoffice-1.1-trФинскийeditors/openoffice-1.1-fiФранцузскийfrench/openoffice-1.1Чешскийeditors/openoffice-1.1-csШведскийeditors/openoffice-1.1-seЭстонскийeditors/openoffice-1.1-etЯпонскийjapanese/openoffice-1.1Программы просмотра документовНекоторые новые форматы документов приобрели большую популярность.
Стандартные программы для их просмотра могут отсутствовать в
базовой системе. В этом разделе мы увидим, как их установить.В разделе говорится о следующих приложениях:
-
+ Название приложенияПотребность в ресурсахУстановка из портовОсновные зависимости&acrobat.reader;малаялегкаяLinux Binary CompatibilitygvмалаялегкаяXaw3dXpdfмалаялегкаяFreeTypeGQviewмалаялегкаяGtk+ или GNOME&acrobat.reader;Acrobat ReaderPDFпросмотрСейчас многие документы распространяются в формате PDF,
аббревиатура для Portable Document Format. Одна
из рекомендованных программ для просмотра этого типа документов, это
&acrobat.reader;, выпущенный Adobe
для Linux. Поскольку FreeBSD может запускать исполняемые файлы Linux,
он доступен также и для FreeBSD.Для установки пакета &acrobat.reader; 5
выполните:&prompt.root; pkg_add -r acroread5Обычно если пакет недоступен, или вам нужна более поздняя версия,
вы можете использовать коллекцию портов так:&prompt.root; cd /usr/ports/print/acroread5
&prompt.root; make install clean&acrobat.reader; доступен
в нескольких различных версиях. В то время, как пишется этот документ,
есть:
print/acroread (версия 3.0.2),
print/acroread4 (версия 4.0.5), and
print/acroread5 (версия 5.0.6).
Не для всех могут быть пакеты в вашей версии FreeBSD. Коллекция
портов всегда содержит последнюю версию.gvgvPDFпросмотрPostScriptпросмотрgv это программа просмотра &postscript;
и PDF. Она разработана на основе ghostview,
но выглядит лучше благодаря библиотеке Xaw3d.
Она быстра, а ее интерфейс несложен. У gv
есть множество функций, таких как выбор ориентации, размера бумаги,
масштаба и сглаживание. Почти любая операция может быть выполнена как
с клавиатуры, так и мышью.Для установки gv из пакета,
выполните:&prompt.root; pkg_add -r gvЕсли вы не можете получить пакет, используйте коллекцию
портов:&prompt.root; cd /usr/ports/print/gv
&prompt.root; make install cleanXpdfXpdfPDFпросмотрЕсли вам нужна небольшая программа просмотра PDF под FreeBSD,
Xpdf это легкая и эффективная
программа. Она требует очень небольшого количества ресурсов
и очень стабильна. Используются стандартные шрифты X,
&motif; или другие пакеты для X
не нужны.Для установки пакета Xpdf,
выполните эту команду:&prompt.root; pkg_add -r xpdfЕсли пакет недоступен, или вы предпочитаете коллекцию портов,
выполните:&prompt.root; cd /usr/ports/graphics/xpdf
&prompt.root; make install cleanПосле завершения установки вы можете запустить
Xpdf и использовать правую кнопку мыши
для активации меню.GQviewGQviewGQview это программа для работы с
изображениями. Вы можете просмотреть файл одним кликом, запустить
внешний редактор, получить миниатюры и многое другое. Еще
в нем есть слайдшоу и несколько основных файловых операций. Вы можете
управлять коллекциями изображений и легко находить дубликаты.
В GQview изображения можно просматривать во
весь экран, его можно адаптировать к разным языкам.Если вы хотите установить пакет
GQview, выполните:&prompt.root; pkg_add -r gqviewЕсли пакет недоступен, или вы предпочитаете использовать коллекцию
портов, выполните:&prompt.root; cd /usr/ports/graphics/gqview
&prompt.root; make install cleanФинансовые программыЕсли по каким-то причинам вам нужно управлять своими финансами на
десктопе FreeBSD, есть несколько мощных и простых в
использовании приложений. Некоторые из них совместимы с широко
распространенными форматами файлов, такими как документы
Quicken
или Excel.В этом разделе говорится о следующих приложениях:
-
+ Название приложенияПотребность в ресурсахУстановка из портовОсновные зависимостиGnuCashмалаятяжелаяGNOMEGnumericмалаятяжелаяGNOMEAbacusмалаялегкаяTcl/TkGnuCashGnuCashGnuCash это часть проекта
GNOME, который стремится предоставить
дружественные к пользователю приложения с широким набором функций.
С GnuCash вы можете отслеживать доходы и
расходы, банковские счета или акции. Интуитивный интерфейс программы
не мешает ей оставаться очень профессиональной.GnuCash предоставляет интеллектуальный
журнал записей, иерархическую систему учетных записей, множество
клавиатурных сокращений и метод автозавершения. Он может разбивать
одну транзакцию на несколько частей, детализируя ее.
GnuCash может импортировать и присоединять файлы
Quicken QIF. Он также работает с основными
международными форматами дат и валютами.Для установки GnuCash в вашу
систему, выполните:&prompt.root; pkg_add -r gnucashЕсли пакет недоступен, вы можете использовать коллекцию
портов:&prompt.root; cd /usr/ports/finance/gnucash
&prompt.root; make install cleanGnumericGnumericэлектронная таблицаGnumericGnumeric это электронная таблица, часть
графической среды GNOME.
Она использует удобное автоматическое угадывание
ввода пользователя в зависимости от формата ячейки и систему
автозаполнения для множества последовательностей. Она может
импортировать файлы нескольких популярных форматов, таких как
Excel,
Lotus 1-2-3, или
Quattro Pro.
Gnumeric работает с диаграммами через
math/guppi. В ней множество
встроенных функций, можно использовать обычные форматы ячеек:
число, валюта, дата, время и многие другие.Для установки Gnumeric из
пакета, введите:&prompt.root; pkg_add -r gnumericЕсли пакет недоступен, вы можете использовать коллекцию портов:&prompt.root; cd /usr/ports/math/gnumeric
&prompt.root; make install cleanAbacusAbacusэлектронная таблицаAbacusAbacus это небольшая и простая в
использовании программа электронных таблиц. В ней много
встроенных функций из нескольких областей, таких как статистика,
финансы и математика. Она может импортировать и экспортировать файлы
Excel. Abacus
также может печатать &postscript;.Для установки Abacus из пакета,
выполните:&prompt.root; pkg_add -r abacusЕсли пакет недоступен, вы можете использовать коллекцию портов,
выполнив:&prompt.root; cd /usr/ports/deskutils/abacus
&prompt.root; make install cleanИтогиХотя FreeBSD популярна в основном среди провайдеров из-за
стабильности и высокой производительности, на сегодняшний день она
вполне готова к использованию в качестве десктопа.
С несколькими тысячами приложений, доступных в виде
пакетов или
портов,
вы можете создать прекрасный десктоп, отвечающий всем вашим
потребностям.После первой установки десктопа, вы можете попробовать сделать шаг
вперед с misc/instant-workstation.
Этот мета-порт позволяет вам собрать типичный набор
портов для рабочей станции. Вы можете настроить его, редактируя
/usr/ports/misc/instant-workstation/Makefile.
Следуйте синтаксису существующего файла при добавлении и удалении
портов, соберите порт как обычно. В конечном итоге, вы можете
создать большой пакет, соответствующий вашему собственному десктопу,
и установить его на другие рабочие станции!Вот небольшой обзор всех графических приложений, о которых говорилось
в этой главе:
-
+ Имя приложенияИмя пакетаИмя портаMozillamozillawww/mozilla&netscape;linux-netscape7www/linux-netscape7Operalinux-operawww/linux-operaFirefoxfirefoxwww/firefoxKOfficekoffice-kde3editors/koffice-kde3AbiWordAbiWord-gnomeeditors/AbiWordThe GIMPgimpgraphics/gimp1OpenOffice.orgopenofficeeditors/openoffice&acrobat.reader;acroread5print/acroread5gvgvprint/gvXpdfxpdfgraphics/xpdfGQviewgqviewgraphics/gqviewGnuCashgnucashfinance/gnucashGnumericgnumericmath/gnumericAbacusabacusdeskutils/abacus
diff --git a/ru_RU.KOI8-R/books/handbook/eresources/chapter.sgml b/ru_RU.KOI8-R/books/handbook/eresources/chapter.sgml
index c7b6592ba5..15790c8162 100644
--- a/ru_RU.KOI8-R/books/handbook/eresources/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/eresources/chapter.sgml
@@ -1,1702 +1,1702 @@
ДенисПеплинПеревод на русский язык: Ресурсы в интернетВысокая скорость прогресса FreeBSD делает непрактичным использование
печатных изданий для информирования о последних разработках. Электронные
ресурсы это лучший, а зачастую и единственный способ информирования
о новых возможностях. Поскольку FreeBSD основывается на усилиях
добровольцев, сообщество пользователей само по себе зачастую выполняет
роль службы технической поддержки, а электронная почта и
новости USENET это наиболее эффективный способ обращения к этому
сообществу.Наиболее важная контактная информация сообщества пользователей
FreeBSD показана ниже. Если вам известно о других ресурсах, не
упомянутых здесь, пожалуйста отправьте информацию о них в
&a.doc;, чтобы мы могли включить в этот документ.Списки рассылкиХотя многие участники разработки FreeBSD читают USENET, мы не можем
всегда гарантировать, что ответим на ваши вопросы в краткий срок
(или вообще), если вы отправите их только в группы
comp.unix.bsd.freebsd.*. Вопросы, отправленные
в соответствующий список рассылки, достигнут и нас и обширной аудитории
FreeBSD, что несомненно гарантирует лучшую (или как минимум более
быструю) поддержку.Все сообщения в приведенные ниже списки рассылки должны быть
составлены только на английском языке.Описание каждой рассылки дано в конце этого документа.
Пожалуйста, прочтите описание перед подпиской или отправкой
почты в любой из списков. Большинство наших подписчиков
получают многие сотни относящихся к FreeBSD сообщений каждый день,
и определяя правила использования рассылок мы стремимся удержать
высокое соотношение сигнал к шуму. При меньшем
соотношении списки рассылки перестанут быть эффективной средой общения
участников проекта.Архивы поддерживаются для всех списков рассылки и поиск по ним
организован на WWW
сервере FreeBSD. Поиск в архиве по ключевым словам
дает отличный способ получения ответов на часто задаваемые вопросы
и должен быть выполнен перед отправкой вопроса.Списки рассылкиОбщие списки: Ниже представлены общие
списки рассылки, к которым каждый может (и приглашается)
присоединиться:
-
+ СписокНазначение&a.cvsall.name;Изменения, вносимые в дерево исходных текстов
FreeBSD&a.advocacy.name;В защиту FreeBSD&a.announce.name;Важные события и вехи проекта&a.arch.name;Обсуждения архитектуры и дизайна системы&a.bugbusters.name;Обсуждения, относящиеся к поддержке базы данных
сообщений о проблемах FreeBSD и соответствующим
инструментам&a.bugs.name;Сообщения о проблемах&a.chat.name;Не-технические темы, относящиеся к сообществу
FreeBSD&a.config.name;Разработка инструментов установки и настройки
FreeBSD&a.current.name;Обсуждения, относящиеся к использованию
&os.current;&a.isp.name;Вопросы использования FreeBSD провайдерами&a.jobs.name;Вакансии и резюме, относящиеся к FreeBSD,
с полной и частичной занятостью&a.newbies.name;Рассылка FreeBSD для новых пользователей&a.policy.name;Публикация правил FreeBSD Core team. Только для чтения,
малое количество сообщений&a.questions.name;Вопросы пользователей и техническая поддержка&a.security-notifications.name;Уведомления безопасности&a.stable.name;Обсуждения, относящиеся к использованию
&os.stable;&a.test.name;Рассылка для отправки тестовых сообщений (вместо
обычных списков рассылкиТехнические списки: Следующие списки
предназначены для технических обсуждений. Вам необходимо внимательно
прочитать описание перед подпиской или отправкой почты в один из
этих списков, поскольку они предназначены для использования внутри
проекта.
-
+ СписокНазначение&a.acpi.name;Разработка ACPI и системы управления
энергопотреблением&a.afs.name;Портирование AFS на FreeBSD&a.aic7xxx.name;Разработка драйверов для &adaptec; AIC 7xxx&a.alpha.name;Портирование FreeBSD на Alpha&a.amd64.name;Портирование FreeBSD на системы AMD64&a.apache.name;Обсуждение портов, относящихся к
Apache&a.arm.name;Портирование FreeBSD на процессоры &arm;&a.atm.name;Использование ATM сетей с FreeBSD&a.audit.name;Проект аудита исходных текстов&a.binup.name;Дизайн и разработка системы бинарных обновлений&a.cluster.name;Использование FreeBSD в кластерах&a.cvsweb.name;Поддержка CVSweb&a.database.name;Обсуждение использования и разработки баз данных
под FreeBSD&a.doc.name;Создание относящихся к FreeBSD документов&a.emulation.name;Эмуляция других систем, таких как
Linux/DOS/&windows;&a.firewire.name;Техническое обсуждение FreeBSD &firewire;
(iLink, IEEE 1394)&a.fs.name;Файловые системы&a.geom.name;Относящиеся к GEOM обсуждения и реализации&a.gnome.name;Портирование GNOME
и приложений GNOME&a.hackers.name;Общее техническое обсуждение&a.hardware.name;Общее обсуждение оборудования для
FreeBSD&a.i18n.name;Интернационализация FreeBSD&a.ia32.name;FreeBSD на платформе IA-32 (&intel; x86)&a.ia64.name;Портирование FreeBSD на будущие системы Intel
IA64&a.ipfw.name;Технические обсуждения, относящиеся к переработке
кода IP брандмауэра&a.isdn.name;Разработчики ISDN&a.java.name;Разработчики &java; и люди, портирующие &jdk; на
FreeBSD&a.kde.name;Портирование KDE и
приложений KDE&a.lfs.name;Портирование LFS на FreeBSD&a.libh.name;Второе поколение программы установки системы и
пакетов&a.mips.name;Портирование FreeBSD на &mips;&a.mobile.name;Обсуждение портативных компьютеров&a.mozilla.name;Портирование Mozilla на
FreeBSD&a.multimedia.name;Мультимедиа приложения&a.newbus.name;Технические обсуждения архитектуры шины&a.net.name;Обсуждения, относящиеся к сети и исходному тексту
TCP/IP&a.openoffice.name;Портирование OpenOffice.org и
&staroffice; на FreeBSD&a.performance.name;Вопросы оптимизации производительности для
быстрых/работающих под большой нагрузкой серверов&a.perl.name;Поддержка различных относящихся к
perl портов&a.pf.name;Обсуждение брандмауэра на базе packet filter&a.platforms.name;Относится к портам для платформ не-Intel
архитектуры&a.ports.name;Обсуждения коллекции портов&a.ports-bugs.name;Обсуждения относящихся к портам ошибок/PR&a.ppc.name;Портирование FreeBSD на &powerpc;&a.qa.name;Обсуждение гарантий качества (Quality Assurance),
обычно перед релизом&a.realtime.name;Разработка расширений реального времени для FreeBSD&a.scsi.name;Подсистема SCSI&a.security.name;Сообщения безопасности, касающиеся FreeBSD&a.small.name;Использование FreeBSD во встроенных приложениях&a.smp.name;Обсуждение [не]симметричной мультипроцессорной
архитектуры&a.sparc.name;Портирование FreeBSD на системы, основанные на
&sparc;&a.standards.name;Соответствие FreeBSD стандартам C99 и &posix;&a.threads.name;Потоки в FreeBSD&a.testing.name;Тестирование производительности и стабильности
FreeBSD&a.tokenring.name;Поддержка Token Ring в FreeBSD&a.usb.name;Обсуждение поддержки USB в &os;&a.vuxml.name;Обсуждение инфраструктуры VuXML&a.x11.name;Сопровождение и поддержка X11 в FreeBSDОграниченные списки: Следующие списки
рассылки предназначены для более специализированной (и более
официальной) аудитории и вероятно не могут заинтересовать широкую
публику. Вероятно хорошей идеей будет сначала наладить общение
в технических списках рассылки перед присоединением к ограниченным
спискам, так вы сможете освоить этику общения.
-
+ СписокНазначение&a.hubs.name;Люди, поддерживающие зеркала (поддержка
инфраструктуры)&a.usergroups.name;Координация групп пользователей&a.vendors.name;Координация поставщиков перед релизом&a.www.name;Ответственные за www.FreeBSD.orgДайджест рассылки: Все вышеприведенные
списки доступны в формате дайджеста. После подписки на рассылку,
вы можете изменить параметры дайджеста в разделе настроек учетной
записи.CVS рассылки: Следующие рассылки
предназначены для людей, заинтересованных в просмотре сообщений
об изменении в различных областях дерева исходных текстов.
Это списки только для чтения и вы не должны
отправлять туда почту.
-
+ РассылкаОбласть исходного текстаОписание области исходного текста&a.cvsall.name;/usr/(CVSROOT|doc|ports|projects|src)Все изменения в любой области дерева исходных текстов
(надмножество других списков рассылки cvs)&a.cvs-doc.name;/usr/(doc|www)Все изменения в дереве исходных текстов
документации и веб сервера&a.cvs-ports.name;/usr/portsВсе изменения в дереве портов&a.cvs-projects.name;/usr/projectsВсе изменения в дереве проектов&a.cvs-src.name;/usr/srcВсе изменения в дереве исходных текстов системыКак подписатьсяДля подписки на рассылку, нажмите на название списка рассылки
выше или воспользуйтесь ссылкой &a.mailman.lists.link; и
нажмите на имя рассылки, которой вы заинтересовались. Страница
списка рассылки содержит все необходимые инструкции по
подписке.Для отправки сообщения в выбранный список рассылки, отправьте
письмо в <listname@FreeBSD.org>.
Это письмо будет разослано участникам рассылки по всему миру.Для отписки от рассылки, нажмите на ссылку, находящуюся внизу
каждого письма, отправляемого через список рассылки. Возможна
также отписка путем отправки письма на
freebsd-[listname]-unsubscribe@FreeBSD.org.Напоминаем, что обсуждение в технических списках рассылки
должно оставаться в рамках технической темы. Если вас интересует
только получение важных анонсов, мы предлагаем подписаться на
рассылку с небольшим трафиком &a.announce.name;.Описание рассылокВсе списки рассылки FreeBSD имеют
определенные основные правила, которых должен придерживаться каждый
использующий их. Несоблюдение этих правил приведет к отправлению
двух (2) предупреждений от FreeBSD Postmaster
postmaster@FreeBSD.org, после которых, после третьего
нарушения, подписчик будет удален из всех списков рассылки
FreeBSD и дальнейшие его сообщения будут отфильтровываться.
Мы сожалеем, что эти правила и меры вообще необходимы, но современный
интернет это довольно суровая среда и многие его механизмы довольно
слабы.Основные правила:Тема любого сообщения должна соответствовать назначению
списка рассылки, в который это сообщение отправляется. Например,
если список рассылки посвящен техническим вопросам, сообщение
должно быть техническим. Продолжающееся обсуждение вне темы, или
флейм только понижают ценность рассылки для всех ее участников
и поэтому не разрешаются. Для обсуждений вне какой-либо
определенной темы необходимо использовать &a.chat;, специально
для этого предназначенный.Ни одно сообщение не должно отправляться более чем в 2
рассылки, отправка сообщения в 2 рассылки должна выполняться
только при наличии простой и очевидной причины для дублирования
сообщения. В большинстве рассылок подписчикам уже приходит
много избыточного материала, и за исключением редких случаев
(скажем, -stable & -scsi), на самом деле нет
причины отправлять сообщение более чем в один список рассылки.
Если сообщение отправлено вам так, что в поле
Cc находятся несколько списков рассылки,
необходимо урезать поле Cc перед отправкой
ответа. Именно вы отвечаете за собственные
сообщения, независимо от того, кто был автором исходного
письма.Персональные нападки и профанация (в контексте аргументов) не
разрешены, это относится и к пользователям, и к разработчикам.
Грубые нарушения сетевой этики, такие как цитирование или
пересылка личной переписки без специального на то разрешения,
осуждаются но специальные меры в этом случае не принимаются.
Однако, существует несколько специальных
случаев, когда такие письма не отвечают назначению списка рассылки
и, следовательно, могут повлечь отправку предупреждения (или
исключение из списка рассылки).Реклама не-FreeBSD продуктов или сервисов строго запрещена и
исключение из списка рассылки последует незамедлительно, если
станет очевидным, что это спам.Описания рассылок:&a.acpi.name;Разработка ACPI и системы управления
энергопотреблением&a.afs.name;Andrew File SystemЭтот список предназначен для обсуждения портирования
и использования AFS от CMU/Transarc&a.announce.name;Важные события / вехи проектаЭтот список рассылки предназначен для тех, кто интересуется
только периодическими анонсами значительных событий FreeBSD.
Сюда включаются анонсы снэпшотов и других релизов, а также
новых возможностей FreeBSD. Рассылка может содержать призыв
к добровольцам и т.п. Это строго модерируемый список рассылки
с малым объемом трафика.&a.arch.name;Обсуждение архитектуры и
дизайна системыЭта рассылка предназначена для обсуждения архитектуры
FreeBSD. Сообщения в основном строго технические.
Примеры подходящих тем:Как изменить систему сборки для одновременной сборки
нескольких по-разному настроенных систем.Что необходимо исправить в VFS для включения слоев
Heidemann.Как необходимо изменить интерфейс драйверов устройств
для использования одних и тех же драйверов на множестве
шин и архитектур.Как написать сетевой драйвер.&a.audit.name;Проект аудита исходных текстовЭто список рассылки для проекта аудита исходных текстов
FreeBSD. Хотя первоначально он предназначался для изменений,
связанных с безопасностью, его назначение было расширено для
пересмотра всех изменений кода.В эту рассылку отправляется большой объем исправлений,
и она вероятно не представляет интереса для обычного
пользователя FreeBSD. Обсуждения безопасности, не относящиеся
к определенному изменению в коде, ведутся в freebsd-security.
Разработчикам предлагается отправлять изменения в этот список
рассылки для просмотра, особенно если эти изменения затрагивают
части кода, ошибки в которых могут повлечь нарушение
целостности системы.&a.binup.name;Проект бинарного обновления
FreeBSDЭтот список предназначен для обсуждений системы бинарного
обновления системы, или binup.
В этой рассылке обсуждаются вопросы дизайна, детали реализации,
исправления, сообщения об ошибках, сообщения о статусе, запросы
на расширение функциональности, протоколы коммитов, и все, что
относится к binup.&a.bugbusters.name;Координация усилий по обработке сообщений о
проблемахНазначение этой рассылки в координации и предоставлении
места для обсуждения для лиц, обслуживающих базу данных
сообщений о проблемах (bugmeister, bugbusters) и для всех
сторон, интересующихся базой данных PR. Эта рассылка не
предназначена для обсуждения отдельных проблем, исправлений
или PR.&a.bugs.name;Сообщения об ошибкахЭтот список рассылки предназначен для отправки сообщений об
ошибках в FreeBSD. Когда это возможно, сообщения должны
отправляться с использованием &man.send-pr.1; или через
WEB интерфейс
к send-pr.&a.chat.name;Не-технические темы, относящиеся к сообществу
FreeBSDВ эту рассылку входят все темы, не подходящие для других
рассылок, с не-технической, социальной информацией.
Она включает обсуждения на темы:
кто пьет слишком много кофе, где варят
лучшее пиво, кто варит пиво в своем подвале, и так далее.
Нерегулярные анонсы важных событий (такие как будущие встречи,
свадьбы, дни рождения, новая работа и т.д.) могут быть
опубликованы в технических рассылках, но ответы должны
отправляться в -chat.&a.core.name;Команда FreeBSD coreЭто внутренний список рассылки, используемый членами
core. Сообщения в эту рассылку могут быть отправлены
по серьезной, имеющей отношение к FreeBSD причине, которая
требует рассмотрения на самом высоком уровне.&a.current.name;Обсуждения, касающиеся использования
&os.current;Это список рассылки для пользователей &os.current;. Он
включает предупреждения о новых возможностях, вносимых в
-CURRENT, влияющих на пользователей, и инструкции относительно
действий, которые должны быть предприняты для поддержки
-CURRENT. Всякий, работающий с CURRENT,
должен подписаться на эту рассылку. Это технический список
рассылки, все сообщения должны быть строго техническими.&a.cvsweb.name;FreeBSD CVSweb ProjectТехнические обсуждения использования, разработки и поддержки
FreeBSD-CVSweb.&a.doc.name;Проект документированияЭтот список рассылки предназначен для обсуждения вопросов
и проектов, относящихся к созданию документации для FreeBSD.
Члены этой рассылки все вместе обозначаются как
The FreeBSD Documentation Project. Это открытая
рассылка; присоединяйтесь и участвуйте!&a.firewire.name;&firewire; (iLink, IEEE 1394)Это список рассылки, предназначенный для обсуждения дизайна
и реализации подсистемы &firewire; (также известной как
IEEE 1394 или iLink) в FreeBSD. Соответствующие темы
относятся к стандартам, устройствам шины и их протоколам,
наборам плат/карт/чипов адаптера, а также архитектуре и
реализации кода для их правильной поддержки.&a.fs.name;Файловые системыОбсуждения, относящиеся к файловым системам FreeBSD. Это
технический список рассылки, предназначенный только для
технических обсуждений.&a.geom.name;GEOMОбсуждения, относящиеся к GEOM и связанным с GEOM реализациям.
Это технический список рассылки, предназначенный только для
технических обсуждений.&a.gnome.name;GNOMEОбсуждения, относящиеся к десктопу
GNOME для системы FreeBSD.
Это технический список рассылки, предназначенный только для
технических обсуждений.&a.ipfw.name;IP брандмауэрЭто форум для технических обсуждений, относящихся к
редизайну кода IP брандмауэра в FreeBSD.
Это технический список рассылки, предназначенный только для
технических обсуждений.&a.ia64.name;Портирование FreeBSD на IA64Это технический список рассылки для тех, кто активно
работает над портированием FreeBSD на платформу IA-64
от Intel, предназначенный для поднятия вопросов или обсуждения
альтернативных решений. Те, кто интересуется обсуждаемыми
проблемами, также приглашаются к участию в рассылке.&a.isdn.name;ISDN соединенияЭто список рассылки для обсуждения разработки поддержки
ISDN для FreeBSD.&a.java.name;Разработка &java;Этот список рассылки предназначен для обсуждения ключевых
приложений &java; для FreeBSD, а также портирования и
поддержки &jdk;.&a.jobs.name;Предложение и поиск работыЭто форум для публикации вакансий и резюме, относящихся
к &os;. Например, если вы ищете работу, относящеюся к
&os;, или у вас есть работа, связанная с &os;, вы можете
разместить соответствующую информацию именно здесь. Эта
рассылка не предназначена для обсуждения
общих вопросов
о приеме на работу, поскольку форумы на соответствующие
темы уже существуют на других сайтах.Имейте ввиду, что эта рассылка, как и другие рассылки
на FreeBSD.org, распространяется по всему миру. Поэтому вам
необходимо четко указать свое местоположение и область,
с которой возможны телекоммуникации или помощь в
перемещении.Письма должны быть составлены только в открытых форматах
— предпочтителен чистый текст, но Portable Document
Format (PDF), HTML, и некоторые другие
форматы могут быть прочитаны многими. Закрытые форматы,
такие как µsoft; Word (.doc)
будут отброшены сервером почтовой рассылки.&a.kde.name;KDEОбсуждения, относящиеся к KDE в
системах FreeBSD. Это технический список рассылки,
предназначенный только для технических обсуждений.&a.hackers.name;Технические обсужденияЭто форум для технических обсуждений, относящихся к
FreeBSD. Это в основном технический список рассылки. Он
предназначен для тех, кто активно работает над FreeBSD, и
служит для поднятия вопросов или обсуждения альтернативных
решений. Те, кто интересуется обсуждаемыми вопросами, также
приглашаются к участию в обсуждении. Это технический список
рассылки, предназначенный только для технических
обсуждений.&a.hardware.name;Общее обсуждение оборудования
FreeBSDОбщее обсуждение типов оборудования, на котором
работает FreeBSD, различных проблем и предложений относительно
того, какое оборудование можно покупать а какое нет.&a.hubs.name;Сайты зеркалАнонсы и обсуждения для поддерживающих зеркала
FreeBSD.&a.isp.name;Вопросы использования FreeBSD
провайдерамиЭтот список рассылки предназначен для обсуждения тем,
имеющих значение для провайдеров, использующих FreeBSD.
Это технический список рассылки, предназначенный только для
технических обсуждений.&a.newbies.name;Обсуждение деятельности новых
пользователейЭта рассылка охватывает всю деятельность новых
пользователей, которая не обсуждается где-то еще. Сюда
включаются: независимое обучение и техника решения проблем,
поиск и использование ресурсов и запрос помощи где-то еще,
как использовать списки рассылки и какие из них использовать,
разговоры на общие темы, обсуждение ошибок, хвастовство,
обмен идеями, истории, моральная (но не техническая) поддержка,
активное участие в сообществе FreeBSD. Мы сообщаем о своих
проблемах и отправляем запросы на поддержку в freebsd-questions,
а freebsd-newbies используем для встречи с темы, кто делает
то же, что и мы, будучи новыми пользователями.&a.openoffice.name;OpenOffice.orgОбсуждения, относящиеся к портированию и поддержке
OpenOffice.org и
&staroffice;.&a.performance.name;Обсуждения оптимизации или повышения скорости
FreeBSDЭтот список рассылки существует как место для обсуждения
тем, имеющих отношение к производительности FreeBSD,
хакерами, администраторами, и/или заинтересованными сторонами.
Приемлемые темы включают обсуждения установок FreeBSD, которые
находятся под высокой нагрузкой и сталкиваются с проблемами
производительности, или преодоление ограничений FreeBSD.
Заинтересованным сторонам, собирающимся работать над улучшением
производительности FreeBSD, настоятельно рекомендуется
подписаться на эту рассылку. Это техническая рассылка,
идеально подходящая для пользователей, хакеров или
администраторов, заинтересованных в скорости, стабильности
и расширяемости FreeBSD. Это не рассылка вопросов-и-ответов,
заменяющая чтение документации, а место, где можно внести свой
вклад или получить информацию по еще незатронутой
теме, связанной с производительностью.&a.pf.name;Обсуждение брандмауэра на базе packet
filterОбсуждения, касающиеся работы пакетного фильтра pf под
&os;. Допускаются как вопросы пользователей, так и технические
дискуссии. Помимо этого, в данном списке уместно обсуждать
инфраструктуру ALTQ QoS.&a.platforms.name;Портирование на не-Intel
платформыКросс-платформенные вопросы FreeBSD, общее обсуждение и
предложения для не-Intel портов FreeBSD. Это технический
список рассылки, предназначенный только для технических
обсуждений.&a.policy.name;Правила core teamЭто рассылка с малым количеством сообщений, только для
чтения, предназначенная для публикации решений FreeBSD
Core Team.&a.ports.name;Обсуждения
portsОбсуждения, относящиеся к коллекции портов
FreeBSD, (/usr/ports), инфраструктуры
портов и общих усилий по координации портов.
Это технический список рассылки, предназначенный только для
технических обсуждений.&a.ports-bugs.name;Обсуждение проблем в
portsОбсуждения, относящиеся к сообщениям о проблемах для
коллекции портов FreeBSD
(/usr/ports), предлагаемых портов, или
изменений к портам. Это технический список рассылки,
предназначенный только для технических обсуждений.&a.questions.name;Вопросы пользователейЭто список рассылки по вопросам о FreeBSD. Вы не должны
отправлять вопросы как сделать в технические
рассылки, если только не уверены, что ваш вопрос чисто
технический.&a.scsi.name;Подсистема SCSIЭто список рассылки для тех, кто работает над подсистемой
SCSI для FreeBSD. Это технический список рассылки,
предназначенный только для технических обсуждений.&a.security.name;Вопросы безопасностиВопросы безопасности FreeBSD (DES, Kerberos, известные
проблемы безопасности и исправления, и т.п.). Это технический
список рассылки, предназначенный только для технических
обсуждений. Обратите внимание, что это не рассылка
вопросов-и-ответов, но дополнения в FAQ (И вопрос И ответ)
приветствуются.&a.security-notifications.name;Уведомления безопасностиУведомления о проблемах безопасности FreeBSD и исправления.
Эта рассылка не предназначена для обсуждений. Для обсуждения
предназначена рассылка FreeBSD-security.&a.small.name;Использование FreeBSD во встроенных
приложенияхВ этой рассылке обсуждаются темы, связанные с необычно
малыми и встроенными установками FreeBSD. Это технический
список рассылки, предназначенный только для технических
обсуждений.&a.stable.name;Обсуждения, касающиеся использования
&os.stable;Этот список рассылки предназначен для пользователей
&os.stable;. Он включает предупреждения о новых возможностях,
добавляемых в -STABLE, и влияющих на пользователей, и инструкции
по действиям, которые необходимы для поддержки системы в
состоянии -STABLE. Всякий, использующий STABLE,
должен подписаться на эту рассылку. Это технический список
рассылки, предназначенный только для технических
обсуждений.&a.standards.name;Соответствие C99 и POSIXЭто форум для технических обсуждений, относящихся к
соответствию FreeBSD стандартам C99 и POSIX.&a.usb.name;Обсуждение поддержки USB в &os;Это форум для технических обсуждений, относящихся к
поддержке в &os; устройств с интерфейсом USB.&a.usergroups.name;Список координации групп
пользователейЭтот список рассылки предназначен для обсуждения вопросов
координаторами каждой группы пользователей и назначенным
членом Core Team. Обсуждения в этой рассылке ограничены
темой встреч и координацией проектов, относящихся к группам
пользователей.&a.vendors.name;ПоставщикиОбсуждения, относящиеся к координации между FreeBSD Project
и поставщиками программного и аппаратного обеспечения для
FreeBSD.Фильтрация списков рассылкиСписки рассылки &os; фильтруются различными способами для
предотвращения распространения спама, вирусов, и другой нежелательной
почты. Действия по фильтрации, описанные в этом разделе,
не включают всех используемых для фильтрации списков рассылки
проекта действий.Только определенные типы вложений разрешены в списках рассылки.
Все вложения с типами MIME содержимого, не входящие в список ниже,
будут вырезаться перед тем, как письмо будет отправлено в список
рассылки.application/octet-streamapplication/pdfapplication/pgp-signatureapplication/x-pkcs7-signaturemessage/rfc822multipart/alternativemultipart/relatedmultipart/signedtext/htmltext/plaintext/x-difftext/x-patchНекоторые из списков рассылки могут пропускать вложения
других типов MIME, но список выше применим к большинству
рассылок.Если письмо содержит как HTML, так и только текстовую версию,
версия HTML будет удалена. Если письмо содержит только HTML
версию, она будет конвертирована в простой текст.Новостные группы UsenetВ дополнение к двум относящимся к FreeBSD группам новостей,
существуют множество других, где обсуждается FreeBSD или куда
помещается другая информация, относящаяся к пользователям FreeBSD.
Архивы
с поиском по ключевому слову доступны для некоторых из
этих новостных групп благодаря Warren Toomey
wkt@cs.adfa.edu.au.Относящиеся к BSD новостные группыcomp.unix.bsd.freebsd.announcecomp.unix.bsd.freebsd.miscde.comp.os.unix.bsd (German)fr.comp.os.bsd (French)it.comp.os.freebsd (Italian)Другие интересные &unix; новостные группыcomp.unixcomp.unix.questionscomp.unix.admincomp.unix.programmercomp.unix.shellcomp.unix.user-friendlycomp.security.unixcomp.sources.unixcomp.unix.advocacycomp.unix.misccomp.bugs.4bsdcomp.bugs.4bsd.ucb-fixescomp.unix.bsdX Window Systemcomp.windows.x.i386unixcomp.windows.xcomp.windows.x.appscomp.windows.x.announcecomp.windows.x.intrinsicscomp.windows.x.motifcomp.windows.x.pexcomp.emulators.ms-windows.wineСерверы World Wide Web
&chap.eresources.www.inc;
Адреса EmailСледующие группы пользователей предоставляют для своих участников
почтовые адреса. Приведенные в списке администраторы оставляют за собой
право удалить адреса при любом злоупотреблении.
-
+ ДоменВозможностиГруппа пользователейАдминистраторukug.uk.FreeBSD.orgТолько пересылкаfreebsd-users@uk.FreeBSD.orgLee Johnston
lee@uk.FreeBSD.orgShell доступСледующие группы пользователей предоставляют shell доступ для тех,
кто активно поддерживает проект FreeBSD. Приведенные в списке
администраторы оставляют за собой право закрыть учетную запись при
любом злоупотреблении.
-
+ ХостДоступВозможностиАдминистраторstorm.uk.FreeBSD.orgТолько SSHCvs только для чтения, место для личной странички,
почта&a.brian;dogma.freebsd-uk.eu.orgTelnet/FTP/SSHEmail, место для сайта, Anonymous FTPLee Johnston
lee@uk.FreeBSD.org
diff --git a/ru_RU.KOI8-R/books/handbook/l10n/chapter.sgml b/ru_RU.KOI8-R/books/handbook/l10n/chapter.sgml
index db4462abea..b12d0d4019 100644
--- a/ru_RU.KOI8-R/books/handbook/l10n/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/l10n/chapter.sgml
@@ -1,991 +1,991 @@
Andrey A.ChernovПредоставил Michael C.WuПереписал АлександрПересункоПеревод на русский язык: ДенисПеплинЛокализация - I18N/L10N использование и настройкаКраткий обзорFreeBSD - это очень распределенный проект, пользователи
и контрибьюторы которого находятся в самых разных частях света.
В этой главе рассказывается о возможностях интернационализации
и локализации FreeBSD, которые позволяют не-англоговорящим
пользователям делать свою работу. Существует много подходов в
i18n реализации - как на системном уровне, так и на уровне
приложений, так что, где это возможно, мы будем давать читателю
ссылки на более углубленные источники документации.После прочтения этой главы, вы будете знать:Как разные языки и региональные настройки кодируются
в современных операционных системах.Как установить региональные настройки для вашей
оболочки.Как настроить вашу консоль для отличных от
английского языков.Как эффективно использовать X Window System с разными
языками.Где найти дополнительную документацию по созданию
i18n-совместимых приложений.Перед чтением этой главы вам следует::Знать как установить дополнительные приложения сторонних
разработчиков ().ОсновыЧто такое I18N/L10N?интернационализациялокализацияРазработчики сократили интернационализацию в термин I18N, по числу
символов между первым и последним символом интернационализации. В
названии L10N используется тот же принцип от локализации.
Совместно используемые I18N/L10N методы, протоколы и приложения
позволяют пользователям использовать языки по своему выбору.I18N приложения написаны с применением набора I18N посредством
библиотек. Это позволяет разработчикам писать простые файлы и переводить
отображаемые меню и надписи на разные языки. Мы настоятельно рекомендуем
программистам следовать этому соглашению.Почему я должен использовать I18N/L10N?I18N/L10N используется всегда, когда вы хотите просмотреть, ввести
или обработать данные на отличных от английского языках.Какие языки поддерживаются в проекте I18N?I18N и L10N не являются специфичными для FreeBSD. На текущий момент
у вас есть выбор между самыми распространенными языками мира, включая, но
не ограничиваясь: китайский, немецкий, японский, корейский, французский,
русский, вьетнамский и др.Использование локализацииПри всем своем величии, I18N не специфична для FreeBSD и
является, по сути, соглашением. Следование этому соглашению
помогает FreeBSD, и мы это приветствуем.localeНастройки локализации базируются на трех основных терминах:
код языка, код страны и кодировка. Имена локализаций строятся из этих
частей следующим образом:кодязыка_кодстраны.кодировкаЯзык и код страныlanguage codescountry codesЧтобы настроить FreeBSD (или любую другую &unix;-систему,
поддерживающую I18N) на использование специфического языка, пользователю
нужно выяснить коды этого языка и страны (коды страны сообщают
приложению какой именно диалект языка этой страны нужно использовать). К
тому же, веб-браузеры, SMTP/POP серверы, веб-серверы и т.п. делают свой
выбор в зависимости от этого. Далее показаны примеры кодов
языка/страны:
-
+ Код языка/страныОписаниеen_USАнглийский - Соединенные Штатыru_RUРусский для Россииzh_TWТрадиционный китайский для ТайваняКодировкикодировкиASCIIНекоторые языки используют не соответствующие ASCII кодировки,
которые используют для кодирования 8 бит, расширенное или
многобайтовое представление символов (подробности см. в &man.multibyte.3;).
Старые приложения не распознают такие кодировки и ошибочно принимают их
за управляющие символы. Новые приложения обычно распознают 8-битные
символы. В зависимости от реализации, пользователю может
потребоваться компиляция приложения с поддержкой расширенного или
многобайтного представления символов, или же просто правильная его
настройка. Чтобы иметь возможность вводить и обрабатывать символы с
расширенным или многобайтным представлением, Коллекция портов FreeBSD
предоставляет поддержку разных языков для различных приложений. Смотрите
документацию по I18N в соответствующем порту FreeBSD.В частности, пользователю необходимо читать прилагаемую к приложению
документацию чтобы решить, как правильно его настроить или
указать правильные параметры configure/Makefile/компилятору.Следует помнить следующие вещи:Наборы символов, использующие один байт для кодирования символа
(см. &man.multibyte.3;), например,
ISO-8859-1, ISO-8859-15, KOI8-R, CP437.Расширенные или многобайтные кодировки, например, EUC, Big5.Вы можете посмотреть актуальный список наборов символов на сайте
IANA Registry.Вместо этого, FreeBSD версий 4.5 и выше используют X11-совместимые
кодировки для локализации.Приложения, использующие I18NВ системе Портов и Пакетов FreeBSD в название приложений,
поддерживающих I18N, включена аббревиатура I18N для
легкой их идентификации. И, тем не менее, не все приложения поддерживают
требуемый язык.Настройка локализацииОбычно достаточно экспортировать значение имени локализации в
переменной LANG Вашей оболочки. Это можно сделать в
пользовательском ~/.login_conf файле или в
инициализационном файле пользовательской оболочки
(~/.profile, ~/.bashrc,
~/.cshrc). Нет надобности устанавливать отдельные
параметры локализации такие как LC_CTYPE,
LC_CTIME. За дополнительной информацией, пожалуйста,
обращайтесь к документации FreeBSD по нужному вам языку.Вам следует установить следующие переменные окружения в ваших
конфигурационных файлах:POSIXLANG для семейства функций &posix;
&man.setlocale.3;MIMEMM_CHARSETнабор символов MIME для
приложенийЭти настройки включают конфигурацию оболочки пользователя,
конфигурацию конкретных приложений и конфигурацию X11.Методы настройки локализацииlocalelogin classСуществует два метода настройки локализации и оба описаны ниже.
Первый (рекомендуемый) заключается в задании переменных в классе логина, другой метод заключается в
задании переменных окружения в
инициализационном
файле системной оболочки.Метод Login ClassesЭтот метод позволяет установить переменные окружения,
необходимые для установки локализации и набора символов MIME,
однократно для любых оболочек, вместо того, чтобы добавлять
установку этих переменных в инициализационный файл каждой оболочки.
Настройка на уровне пользователя может
быть сделана самим пользователем, а
Настройка на уровне администратора требует привилегий
суперпользователя.Настройка на уровне пользователяВот минимальный пример файла .login_conf
в домашнем каталоге пользователя, в котором задаются обе переменные
для кодировки Latin-1:me:\
:charset=ISO-8859-1:\
:lang=de_DE.ISO8859-1:Traditional ChineseBIG-5 encodingЭто пример .login_conf, который задает
переменные для Традиционного Китайского языка в кодировке BIG-5.
Обратите внимание, что задается намного больше переменных, потому
что некоторое программы некорректно воспринимают переменные
окружения локализации для Китая, Японии и Кореи.#Пользователи, которые не хотят использовать
денежные единицы
#и форматы времени Тайваня, могут вручную изменить каждую переменную
me:\
:lang=zh_TW.Big5:\
:lc_all=zh_TW.Big:\
:lc_collate=zh_TW.Big5:\
:lc_ctype=zh_TW.Big5:\
:lc_messages=zh_TW.Big5:\
:lc_monetary=zh_TW.Big5:\
:lc_numeric=zh_TW.Big5:\
:lc_time=zh_TW.Big5:\
:charset=big5:\
:xmodifiers="@im=xcin": #Setting the XIM Input ServerЗа подробностями обращайтесь к разделу
Настройка на
уровне администратора и &man.login.conf.5;.Настройка на уровне администратораПроверьте, что класс логина пользователя в
/etc/login.conf задает нужный язык.
Убедитесь, что эти настройки присутствуют в
/etc/login.conf:language_name:accounts_title:\
:charset=MIME_charset:\
:lang=locale_name:\
:tc=default:Используя наш предыдущий пример с Latin-1, это должно
выглядеть так:german:German Users Accounts:\
:charset=ISO-8859-1:\
:lang=de_DE.ISO8859-1:\
:tc=default:Изменение класса логина с помощью
&man.vipw.8;vipwИспользуйте vipw для добавления новых
пользователей и отредактируйте запись о пользователе, чтобы она была
похожа на эту:user:password:1111:11:language:0:0:User Name:/home/user:/bin/shИзменение класса логина с помощью
&man.adduser.8;adduserlogin classИспользуйте adduser для добавления новых
пользователей и сделайте следующее:Установите defaultclass =
язык в
/etc/adduser.conf. Помните, что в этом
случае вы должны задать default класс для
всех пользователей других языков.Другой способ заключается в задании класса логина каждый
раз, когда &man.adduser.8; попросит об этом:
Enter login class: default []: Еще один способ - использовать следующее для каждого
пользователя другого языка, которого вы хотите
добавить:&prompt.root; adduser -class языкИзменение класса логина с помощью
&man.pw.8;pwЕсли для добавления новых пользователей вы используете
утилиту &man.pw.8;, запускайте ее с такими параметрами:&prompt.root; pw useradd
имя_пользователя -L языкМетод инициализационных файлов оболочкиЭтот метод не рекомендуется, потому что он требует разных
настроек для каждой оболочки. Вместо этого используйте
Метод класса логина.MIMElocaleЧтобы добавить локализацию и набор символов MIME, просто
установите две переменные окружения, приведенные ниже, в
инициализационные файлы оболочек /etc/profile
и/или /etc/csh.login. Для примера мы используем
немецкий язык:В /etc/profile:LANG=de_DE.ISO8859-1; export LANGMM_CHARSET=ISO-8859-1; export MM_CHARSETИли в /etc/csh.login:setenv LANG de_DE.ISO8859-1setenv MM_CHARSET ISO-8859-1Как вариант, вы можете добавить установки, приведенные выше в
/usr/share/skel/dot.profile (соответствует
установкам в /etc/profile выше), или
/usr/share/skel/dot.login (соответствует
установкам в /etc/csh.login выше).Для X11:В $HOME/.xinitrc:LANG=de_DE.ISO8859-1; export LANGИли:setenv LANG de_DE.ISO8859-1В зависимости от вашей оболочки (см. выше).Настройка консолиДля всех однобайтовых кодовых таблиц, укажите подходящие
консольные шрифты в /etc/rc.conf для
требуемого языка:font8x16=имя_шрифта
font8x14=имя_шрифта
font8x8=имя_шрифтаThe имя_шрифта берется из каталога
/usr/share/syscons/fonts,
без указания расширения .fnt.sysinstallkeymapscreenmapУбедитесь также в установке правильных значений keymap и screenmap
для вашей однобайтовой кодовой таблицы через
/stand/sysinstall.
В sysinstall выберите
Configure, затем
Console. Или добавьте следующие строки в
/etc/rc.conf:scrnmap=screenmap_name
keymap=keymap_name
keychange="fkey_number sequence"screenmap_name берется из
каталога /usr/share/syscons/scrnmaps, без
суффикса .scm.
Screenmap с соответствующим шрифтом обычно используется в качестве
обходного пути для расширения 8 бит до 9 бит в псевдографическую
область VGA адаптера, например для удаления букв из этой области
если используется 8-битный шрифт.Если даемон мыши moused включен
добавлением в /etc/rc.conf следующей
строки:moused_enable="YES"прочтите информацию о курсоре мыши в следующем параграфе.mousedПо умолчанию драйвер &man.syscons.4; выделяет для курсора мыши
в таблице символов диапазон 0xd0-0xd3. Если в вашем языке
используется этот диапазон, переместите этот диапазон. В
FreeBSD версий до 5.0, добавьте следующую строку в файл
конфигурации ядра:options SC_MOUSE_CHAR=0x03Для FreeBSD версий 4.4 и выше включите следующую строку в
/etc/rc.conf:mousechar_start=3keymap_name берется из каталога
/usr/share/syscons/keymaps, без расширения
.kbd. Если вы не знаете какую таблицу
использовать, запустите &man.kbdmap.1; для тестирования таблицы
без перезагрузки.keychange обычно требуется для сопоставления
функциональных клавиш выбранному типу терминала, поскольку
последовательности функциональных клавиш не могут быть определены
в раскладке клавиатуры.Убедитесь также, что для всех записей ttyv*
в /etc/ttys установлен подходящий тип терминала.
Имеющиеся типы соответствуют следующим кодировкам:
-
+ Кодовая таблицаТип терминалаISO-8859-1 or ISO-8859-15cons25l1ISO-8859-2cons25l2ISO-8859-7cons25l7KOI8-Rcons25rKOI8-Ucons25uCP437 (VGA default)cons25US-ASCIIcons25wДля расширенных кодировок, а также для многобайтовых кодировок,
используйте порт FreeBSD из каталога
/usr/ports/language.
Некоторые порты выводят информацию на консоль, хотя для системы
выглядят как последовательные псевдотерминалы, следовательно вы
должны зарезервировать достаточное количество псевдотерминалов
и для X11 и для последовательных псевдоконсолей. Вот неполный
список приложений для использования этих кодировок в консоли:
-
+ ЯзыкПриложениеТрадиционный китайский (BIG-5)chinese/big5conЯпонскийjapanese/kon2-16dot или
japanese/mule-freewnnКорейскийkorean/hanНастройка X11Хотя X11 не является частью проекта FreeBSD, мы включили сюда
некоторую информацию для пользователей FreeBSD. За детальной
информацией обращайтесь к Веб
сайту &xfree86; или к сайту того сервера X11, который вы
используете.В ~/.Xresources, вы можете внести
дополнительные I18N настройки приложений (настройки шрифтов,
меню и т.п.).Отображение шрифтовX11 True Type font serverУстановите сервер &xorg;
(x11-servers/xorg-server)
или &xfree86;
(x11-servers/XFree86-4-Server),
затем &truetype; шрифты для используемого языка.
После установки корректного
значения locale меню, сообщения и т.д. должны появиться на
соответствующем языке.Ввод не-англоязычных символовX11 Input Method (XIM)Протокол X11 Input Method (XIM) это новый стандарт для всех
клиентов X11. Все приложения X11 должны быть написаны как XIM
клиенты, получающие ввод с серверов XIM Input. Существует
несколько XIM серверов, доступных для различных языков.Настройка принтераНекоторые однобайтовые кодовые таблицы обычно поддерживаются
принтерами на аппаратном уровне. Расширенные, или
мультибайтовые кодовые таблицы требуют дополнительной настройки.
Мы рекомендуем использование apsfilter.
Кроме того, вы можете преобразовать документ в формат &postscript; или
PDF с помощью поддерживающих соответствующий язык программ.Ядро и файловые системыФайловая система FreeBSD (fast filesystem, FFS) поддерживает
8-битные символы, ее можно использовать с любой односимвольной
кодовой таблицей (см. &man.multibyte.3;), но кодовые таблицы не
хранятся в файловой системе; т.е. ей ничего не известно о порядке
расположения символов в кодовой таблице. Официально FFS пока
не поддерживает расширенные или много символьные кодовые таблицы.
Однако, для некоторых расширенных или многобайтовых кодировок есть
неофициальные патчи, включающие их поддержку в FFS. Это всего
лишь временные не переносимые решения или исправления кода и
мы решили не включать их в дерево исходных текстов. Обращайтесь
к сайтам по соответствующим языкам за дальнейшей информацией
и патчами.DOSUnicodeФайловая система &ms-dos; в FreeBSD может быть настроена для
поддержки перекодировки между &ms-dos;, кодовыми таблицами Unicode
и выбранной кодовой таблицей FreeBSD. Обращайтесь к
&man.mount.msdos.8; за подробностями.Компиляция I18N программМногие порты FreeBSD были созданы с поддержкой I18N. Некоторые
из них помечены символами -I18N в имени порта. Эти и многие другие
программы имеют встроенную поддержку I18N и не нуждаются в
специальной настройке.MySQLОднако, некоторые приложения, такие как
MySQL, требуют указания кодировки в
Makefile. Это обычно делается правкой
Makefile или передачей параметров
configure при сборке из исходных
текстов.Локализация FreeBSD для поддержки определенных языковAndrey A.ChernovПервоначально предоставил Русский язык (кодировка KOI8-R)localizationRussianЗа дополнительной информацией о кодировке KOI8-R, обращайтесь к
странице KOI8-R References
(Russian Net Character Set).Настройка локализацииПоместите в ~/.login_conf следующие
строки:me:My Account:\
:charset=KOI8-R:\
:lang=ru_RU.KOI8-R:Обратитесь к вышеизложенному материалу этой главы за
соответствующей
информацией.Настройка консолиДля FreeBSD версий до 5.0 добавьте к файлу настройки
ядра следующую строку:options SC_MOUSE_CHAR=0x03Для FreeBSD версий 4.4 и выше вставьте следующую строку
в /etc/rc.conf:mousechar_start=3Используйте в /etc/rc.conf
такие настройки:keymap="ru.koi8-r"
scrnmap="koi8-r2cp866"
font8x16="cp866b-8x16"
font8x14="cp866-8x14"
font8x8="cp866-8x8"Для каждого устройства ttyv* в файле
/etc/ttys, используйте
cons25r в качестве типа терминала.Обратитесь к вышеизложенному материалу этой главы за примерами
настройки консоли.Настройка принтерапринтерыБольшинство принтеров для России поставляются с аппаратной кодовой
страницей CP866, требуется специальный выходной фильтр для
перекодировки из KOI8-R в CP866. Такой фильтр устанавливается по
умолчанию в /usr/libexec/lpr/ru/koi2alt.
Запись для принтера в /etc/printcap должна
выглядеть приблизительно так:lp|Russian local line printer:\
:sh:of=/usr/libexec/lpr/ru/koi2alt:\
:lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:Обратитесь к &man.printcap.5; за подробным описанием.&ms-dos; FS и русские имена файловСледующий пример записи в &man.fstab.5; включает поддержку
русских имен файлов при монтировании файловых систем &ms-dos;:/dev/ad0s2 /dos/c msdos rw,-Wkoi2dos,-Lru_RU.KOI8-R 0 0Параметр выбирает имя используемой
локализации, а параметр задает таблицу
перекодировки. При использовании параметра
убедитесь, что раздел /usr смонтирован перед
разделом &ms-dos;, поскольку таблицы перекодировки расположены
в каталоге
/usr/libdata/msdosfs. За более подробной
информацией обращайтесь к странице справочника
&man.mount.msdos.8;.Настройка X11Выполните сначала не-X
настройку локализации.Локализация KOI8-R
может не работать со старыми релизами
&xfree86; (ниже 3.3).
На настоящий момент в FreeBSD в качестве системы X Window по
умолчанию используется &xfree86; 4.X.
Поэтому если только вы не используете старые версии FreeBSD,
это не должно стать проблемой.Зайдите в каталог
russian/X.language и
выполните следующую команду:&prompt.root; make installВышеуказанный порт установит последнюю версию KOI8-R
шрифтов. В &xfree86; 3.3 уже есть
некоторые KOI8-R шрифты, но эти масштабируются лучше.Проверьте раздел "Files" в файле
/etc/XF86Config. Следующие строки
должны быть добавлены перед всеми
записями FontPath:FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/misc"
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/75dpi"
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/100dpi"Если вы используете видеорежим с высоким разрешением,
поменяйте местами строки для 75 dpi и 100 dpi.Для настройки ввода на русском языке, добавьте
нижеприведенные строки в раздел
"Keyboard" файла
XF86Config.Для &xfree86; 3.X:XkbLayout "ru"
XkbOptions "grp:caps_toggle"Для &xfree86; 4.X:Option "XkbLayout" "ru"
Option "XkbOptions" "grp:caps_toggle"Убедитесь, что XkbDisable отключен
(закомментирован) в этом разделе.Переключателем RUS/LAT служит CapsLock.
Прежняя функция CapsLock все еще доступна в комбинации
ShiftCapsLock
(только в режиме LAT).Если на вашей клавиатуре есть клавиши &windows;,
и некоторые не-алфавитные клавиши работают неправильно в режиме
RUS, добавьте следующую строку в файл
XF86Config.Для &xfree86; 3.X:XkbVariant "winkeys"Для &xfree86; 4.X:Option "XkbVariant" "winkeys"Ввод на русском языке может может не работать со старыми
версиями &xfree86;, прочтите
предупреждение выше с
более подробной информацией. Ввод на русском языке может
также не работать с нелокализованными приложениями.
Минимально локализованные приложения должны вызывать
функцию XtSetLanguageProc (NULL, NULL,
NULL); в начале программы. Обратитесь к KOI8-R for X Window
за дальнейшими инструкциями по локализации приложений
X11.Локализация на традиционном китайском для Тайванялокализациятрадиционный китайскийУ проекта FreeBSD-Taiwan есть Chinese HOWTO для
FreeBSD по адресу
,
в котором используются многие порты на китайском.
На данный момент редактором FreeBSD Chinese HOWTO
является Shen Chuan-Hsing
statue@freebsd.sinica.edu.tw.
Chuan-Hsing Shen statue@freebsd.sinica.edu.tw
создал
Chinese FreeBSD Collection (CFC), используя FreeBSD-Taiwan
zh-L10N-tut. Пакеты и скрипты доступны по адресу
.Локализация на немецкий язык (для всех ISO 8859-1
языков)локализациянемецкийSlaven Rezic eserte@cs.tu-berlin.de написал
учебник по использованию umlauts в FreeBSD. Учебник написан
на немецком и доступен по адресу
.Локализация на японский и корейский языкилокализацияяпонскийлокализациякорейскийЗа информацией по японской локализации, обратитесь к
,
а за информацией о корейской локализацией к
.Не-англоязычная документация FreeBSDОтдельные контрибьюторы FreeBSD перевели части документации
FreeBSD на другие языки. Эти переводы доступны на основном сайте или из каталога
/usr/share/doc.
diff --git a/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml b/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml
index 6a7eedcc98..440b02ee41 100644
--- a/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml
@@ -1,3462 +1,3462 @@
JimMockРеструктурировал и частично обновил Brian N.HandyПервоначально предоставил RichMurpheyАлексейДокучаевПеревод на русский язык: ВалерийКравчукПеревод на русский язык и редактирование: Двоичная совместимость с LinuxКраткий обзорLinux - бинарная совместимостьдвоичная совместимостьLinuxFreeBSD предоставляет двоичную совместимость с несколькими другими
&unix;–подобными операционными системами, включая Linux.
Возможно, вы спрашиваете себя, зачем FreeBSD нужно уметь работать
с приложениями, написанными для Linux? Ответ на этот вопрос достаточно
прост: многие компании и разработчики производят программное
обеспечение только для Linux, так как эта операционная система очень
быстро завоевала огромную популярность в компьютерном мире.
Пользователям же FreeBSD приходится обращаться к этим компаниям и
разработчикам с просьбами выпустить версии своих программ специально
для FreeBSD. Проблема в том, что большинство производителей
программного обеспечения не осознают, насколько бы увеличился их рынок
сбыта, выпускай они также FreeBSD–версии, и продолжают разрабатывать
только под Linux. Что же делать пользователям FreeBSD? В этой
ситуации на помощь приходит двоичная совместимость FreeBSD с
Linux.Вкратце, эта совместимость позволяет пользователям FreeBSD
работать с 90% приложений для Linux без каких-либо модификаций
последних. Среди этих приложений:
&staroffice;, Linux–версия
&netscape;,
&adobe; &acrobat;,
RealPlayer
5 и 7, VMware,
&oracle;, WordPerfect,
Doom, Quake,
и многие другие. Есть сведения, что в некоторых ситуациях эти
Linux–программы показывали более высокую производительность при
работе под FreeBSD, чем под Linux.Linuxфайловая система /procКонечно, существует некоторые особенности Linux, которые не
поддерживаются в полной мере под FreeBSD. Например, не будут
работать приложения Linux, использующие файловую систему
/proc (реализация которой отличается от файловой
системы /proc в ОС FreeBSD) или специфичные
вызовы &i386;, такие как переключение в виртуальный режим 8086.При чтении этой главы вы узнаете:Как включить двоичную совместимость с Linux в
вашей системе.Как установить дополнительные совместно используемые
(shared) библиотеки Linux.Как установить приложения Linux в систему FreeBSD.Детали реализации совместимости с Linux в ОС FreeBSD.Перед прочтением этой главы вам потребуется:Узнать как устанавливать дополнительное
программное обеспечение сторонних разработчиков
().УстановкаKLD (загружаемый объект ядра)Двоичная совместимость с Linux не включена по умолчанию.
Простейший способ включения этой функциональности заключается
в загрузке KLD–объекта linux (Kernel
LoaDable object). Вы можете загрузить этот модуль,
просто набрав linux в командной строке.Если вы хотите, чтобы совместимость с Linux была включена
постоянно, необходимо добавить в /etc/rc.conf
следующую строку:linux_enable="YES"Для проверки того, загружен ли модуль, может быть использована
команда &man.kldstat.8;:&prompt.user; kldstat
Id Refs Address Size Name
1 2 0xc0100000 16bdb8 kernel
7 1 0xc24db000 d000 linux.koпараметры ядраLINUXЕсли по какой-либо причине вы не хотите или не можете загрузить
KLD, вы можете статически включить поддержку Linux в ядро,
добавив опцию options COMPAT_LINUX в файл
конфигурации ядра. Затем соберите и установите новое ядро,
следуя описанию в .Установка необходимых библиотек LinuxLinuxустановка библиотек LinuxУстановить все требуемые библиотеки можно двумя путями: либо
используя порт linux_base,
либо установив их вручную.Установка с помощью порта linux_baseколлекция портовЭтот метод является самым простым, и мы рекомендуем
воспользоваться именно им. Процесс аналогичен установке любого
другого порта из коллекции портов.
Просто выполните следующие команды:&prompt.root; cd /usr/ports/emulators/linux_base
&prompt.root; make install distcleanТеперь вы можете работать с приложениями для Linux. Некоторые
программы, возможно, будут сообщать о несоответствии подверсий
некоторых системных библиотек. Однако обычно это не
вызывает каких-либо неудобств.Возможно наличие нескольких версий порта emulators/linux_base, соответствующих
различным версиям разных дистрибутивов Linux. Вы должны
установить порт, наиболее близко соответствующий требованиям
приложений Linux, которые будут установлены.Установка библиотек вручнуюЕсли у вас не установлена коллекция портов, можно
установить требуемые библиотеки вручную. Вам понадобятся
совместно используемые библиотеки для Linux, которые нужны программам, и
runtime–компоновщик. Вам также потребуется создать теневой
корневой каталог, /compat/linux, где
будут расположены Linux–библиотеки. Если Linux–программе нужно
загрузить какую–либо совместно используемую библиотеку, FreeBSD сперва будет
пытаться найти ее в этом дереве. Так, если программа загружает,
например, /lib/libc.so, FreeBSD попытается
открыть /compat/linux/lib/libc.so, и если
такого файла не существует, будет пытаться открыть
/lib/libc.so. Разделяемые библиотеки должны
находиться в теневом дереве, а не в каталогах, выдаваемых
загрузчиком Linux ld.so.Обычно вам придется добавлять совместно используемые библиотеки, от
которых зависят Linux–программы, только при нескольких первых
установках приложений Linux на вашу систему FreeBSD. По мере
работы, у вас в системе накопится достаточный набор совместно используемых
библиотек Linux для запуска новых Linux-программ без
дополнительных действий.Как установить дополнительные совместно используемые библиотекисовместно используемые библиотекиЧто, если при установленном linux_base
порте ваше приложение все равно сообщает об отсутствии необходимой
библиотеки? Как узнать, какая именно нужна библиотека и где ее
взять? В принципе, есть два способа. Вам необходимо иметь
привилегии пользователя root для их
осуществления.Если у вас есть доступ к машине, на которой установлен Linux,
узнайте, какие библиотеки использует Linux–приложение, и просто
скопируйте из на свою машину. Рассмотрим следующий пример:Допустим, вы скачали по FTP Linux–версию
Doom и установили ее на Linux–машине.
Вы можете узнать, какие совместно используемые библиотеки нужны
Doom, с помощью команды
ldd linuxdoom:&prompt.user; ldd linuxdoom
libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0
libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0
libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29символические ссылкиВам потребуются все файлы, перечисленные в последнем
столбце. Скопируйте их в дерево /compat/linux
на вашей системе, а также создайте символические ссылки на эти
файлы с именами из первого столбца, соответственно. В итоге,
у вас в системе FreeBSD должны быть следующие файлы:/compat/linux/usr/X11/lib/libXt.so.3.1.0
/compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0
/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Учтите, что если у вас уже есть совместно используемая библиотека
Linux с соответствующим первому столбцу результатов
ldd основным номером версии, вам не
обязательно копировать файл, указанный в последнем столбце,
в вашу систему. Уже существующий файл должен подойти.
Рекомендуется, однако, все равно скопировать совместно используемую
библиотеку, если ее версия новее. Предыдущую версию
библиотеки можно удалить, если создали символическую ссылку
на новую. Итак, если у вас в системе есть следующие
библиотеки:/compat/linux/lib/libc.so.4.6.27
/compat/linux/lib/libc.so.4 -> libc.so.4.6.27и какое-либо приложение требует библиотеку более поздней
версии, судя по результатам команды
ldd:libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29Если версии немного отличаются в последней цифре,
копировать /lib/libc.so.4.6.29
необязательно, так как программа, скорее всего, будет
нормально работать и с немного устаревшей версией.
Тем не менее, вы можете заменить
libc.so:/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Символические ссылки важны только
для Linux–программ. Runtime–компоновщик FreeBSD
самостоятельно подберет правильные номера версий библиотек,
и вам не нужно об этом беспокоиться.
Установка двоичных файлов Linux ELFLinuxдвоичные файлы ELFДля ELF-файлов иногда требуется сделать так называемый
branding (маркировать его). Если попытаться
запустить немаркированный ELF-файл, вы получите следующее сообщение
об ошибке:&prompt.user; ./моя-linux-elf-программа
ELF binary type not known
AbortЧтобы помочь ядру FreeBSD отличить ELF-файл FreeBSD от
двоичного файла Linux, используется утилита &man.brandelf.1;:&prompt.user; brandelf -t Linux моя-linux-elf-программаGNU toolchainВ настоящее время набор инструментальных средств GNU
(GNU toolchain) помещает необходимую маркировочную информацию
в двоичные ELF-файлы автоматически, поэтому необходимость
в этом действии возникает всё реже.Конфигурирование распознавания имен хостовЕсли DNS не работает или вы получаете это сообщение:resolv+: "bind" is an invalid keyword resolv+:
"hosts" is an invalid keywordто вам нужно создать (изменить) файл
/compat/linux/etc/host.conf, содержащий:order hosts, bind
multi onТаким образом, вы указываете, то сначала производится поиск в
файле /etc/hosts, а только затем запрашивается
DNS. Когда файл /compat/linux/etc/host.conf
отсутствует, Linux–приложения находят файл
/etc/host.conf для FreeBSD и сообщают о
несовместимом синтаксисе. Если вы не настраивали сервер имен
с помощью файла /etc/resolv.conf, уберите
bind из файла
/compat/linux/etc/host.conf.MurrayStokelyОбновил для Mathematica 4.X BojanBistrovicОбъединено с работой Установка &mathematica;приложенияMathematicaНиже описано, как установить Linux–версию пакета
&mathematica; 4.X
на систему FreeBSD.Linux–версия &mathematica; отлично
работает под FreeBSD, однако
выполняемые файлы, поставляемые Wolfram, должны быть маркированы
утилитой &man.brandelf.1;, чтобы FreeBSD знала о необходимости
использования Linux ABI для их выполнения.Linux–версию пакета &mathematica;
или &mathematica; for Students
можно заказать непосредственно в компании Wolfram по адресу
.Маркировка двоичных файлов LinuxДвоичные файлы Linux находятся в каталоге
Unix на компакт-диске с дистрибутивом
&mathematica; от Wolfram.
Скопируйте этот каталог (вместе со всеми подкаталогами) на ваш
жесткий диск, чтобы промаркировать (утилитой &man.brandelf.1;)
двоичные файлы Linux перед инсталляцией:&prompt.root; mount /cdrom
&prompt.root; cp -rp /cdrom/Unix/ /localdir/
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Kernel/Binaries/Linux/*
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/FrontEnd/Binaries/Linux/*
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Installation/Binaries/Linux/*
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Graphics/Binaries/Linux/*
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Converters/Binaries/Linux/*
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/LicenseManager/Binaries/Linux/mathlm
&prompt.root; cd /localdir/Installers/Linux/
&prompt.root; ./MathInstallerВы также можете установить марку ELF Linux по умолчанию для всех
немаркированных двоичных файлов с помощью команды:&prompt.root; sysctl kern.fallback_elf_brand=3FreeBSD будет считать, что все немаркированные двоичные
ELF-файлы используют Linux ABI, и вы сможете
запустить MathInstaller прямо с CDROM.Получение пароля к пакету &mathematica;Прежде чем запускать &mathematica;,
вам необходимо получить от компании Wolfram пароль, соответствующий
идентификатору машины.EthernetMAC-адресПосле того, как вы установили необходимые библиотеки и
распаковали файлы &mathematica;,
получите идентификатор машины, запустив
программу mathinfo в
инсталляционном каталоге. Идентификатор машины зависит от
MAC-адреса вашей первой Ethernet-карты.&prompt.root; cd /localdir/Files/SystemFiles/Installation/Binaries/Linux
&prompt.root; mathinfo
disco.example.com 7115-70839-20412При регистрации по электронной почте, по телефону или по факсу
вы сообщаете идентификатор машины, а в ответ
получаете пароль, состоящий из нескольких групп чисел. Введите
этот пароль при первом запуске
&mathematica;, как и для
любой другой платформы.Использование интерфейса &mathematica; по сети&mathematica; использует специальные
шрифты для отображения некоторых символов, которые отсутствуют в
стандартных шрифтах (символы интегралов, сумм, греческий алфавит и
другие). Протокол X требует, чтобы эти шрифты были установлены
локально. Это означает, что вы должны
скопировать эти шрифты с компакт-диска или хоста, на котором
установлена &mathematica;, на вашу
машину. Обычно эти шрифты находятся в каталоге
/cdrom/Unix/Files/SystemFiles/Fonts
компакт-диска или в каталоге
/usr/local/mathematica/SystemFiles/Fonts на
диске. Собственно файлы со шрифтами находятся в подкаталогах
Type1 и X. О том, как их
использовать, читайте ниже.Можно просто скопировать их в один из существующих каталогов
шрифтов в каталоге /usr/X11R6/lib/X11/fonts.
В этом случае придётся отредактировать файл
fonts.dir, добавив в него названия шрифтов и
изменив число шрифтов в первой строке. Можно также запустить
программу &man.mkfontdir.1;, находясь в том каталоге,
куда вы скопировали шрифты.Есть альтернативный способ: скопировать каталоги в
/usr/X11R6/lib/X11/fonts:&prompt.root; cd /usr/X11R6/lib/X11/fonts
&prompt.root; mkdir X
&prompt.root; mkdir MathType1
&prompt.root; cd /cdrom/Unix/Files/SystemFiles/Fonts
&prompt.root; cp X/* /usr/X11R6/lib/X11/fonts/X
&prompt.root; cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1
&prompt.root; cd /usr/X11R6/lib/X11/fonts/X
&prompt.root; mkfontdir
&prompt.root; cd ../MathType1
&prompt.root; mkfontdirТеперь добавьте каталоги с новыми шрифтами в путь к
шрифтам:&prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/X
&prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/MathType1
&prompt.root; xset fp rehashЕсли вы используете сервер &xfree86;,
то можно просто прописать эти
каталоги в файле XF86Config.шрифтыЕсли на вашем компьютере нет каталога
/usr/X11R6/lib/X11/fonts/Type1, замените
MathType1 на Type1 в
предыдущем примере.AaronKaplanПредоставил RobertGetschmannБлагодарности: Установка &maple;приложенияMaple&maple; - коммерческая
математическая программа, аналогичная
&mathematica;. Это программное обеспечение
надо купить у , а потом
зарегистрироваться там для получения файла лицензии. Для установки
это программного обеспечения в ОС FreeBSD используется следующая
последовательность простых шагов.Выполните скрипт командного интерпретатора
INSTALL из дистрибутива. Выберите
опцию RedHat, когда будет предложено программой
установки. Обычно установка выполняется в каталог /usr/local/maple.Если вы этого ещё не сделали, купите лицензию на
&maple; в компании Maple Waterloo
Software ()
и скопируйте ее в файл
/usr/local/maple/license/license.dat.Установите диспетчер лицензий
FLEXlm, выполнив скрипт установки
INSTALL_LIC, входящий в состав
&maple;. Укажите основное имя хоста
вашей машины для сервера лицензий.Исправьте файл
/usr/local/maple/bin/maple.system.type
с помощью следующего патча: ----- snip ------------------
*** maple.system.type.orig Sun Jul 8 16:35:33 2001
--- maple.system.type Sun Jul 8 16:35:51 2001
***************
*** 72,77 ****
--- 72,78 ----
# the IBM RS/6000 AIX case
MAPLE_BIN="bin.IBM_RISC_UNIX"
;;
+ "FreeBSD"|\
"Linux")
# the Linux/x86 case
# We have two Linux implementations, one for Red Hat and
----- snip end of patch -----Учтите, что после "FreeBSD"|\ не должно
быть никаких пробелов.Этот патч заставляет &maple;
распознавать FreeBSD как тип Linux-системы.
Скрипт командного интерпретатора bin/maple
вызывает скрипт bin/maple.system.type,
который, в свою очередь, вызывает uname -a для
получения имени операционной системы. В зависимости от имени ОС
он определяет, какие двоичные модули использовать.Запустите сервер лицензий.Следующий скрипт, установленный в файл
/usr/local/etc/rc.d/lmgrd.sh, обеспечивает
удобный способ запуска lmgrd: ----- snip ------------
#! /bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin
PATH=${PATH}:/usr/local/maple/bin:/usr/local/maple/FLEXlm/UNIX/LINUX
export PATH
LICENSE_FILE=/usr/local/maple/license/license.dat
LOG=/var/log/lmgrd.log
case "$1" in
start)
lmgrd -c ${LICENSE_FILE} 2>> ${LOG} 1>&2
echo -n " lmgrd"
;;
stop)
lmgrd -c ${LICENSE_FILE} -x lmdown 2>> ${LOG} 1>&2
;;
*)
echo "Usage: `basename $0` {start|stop}" 1>&2
exit 64
;;
esac
exit 0
----- snip ------------Выполните тестовый запуск
&maple;:&prompt.user; cd /usr/local/maple/bin
&prompt.user; ./xmapleПрограмма должна запуститься и работать. Не забудьте написать
в Maplesoft и сообщить, что хотели бы видеть версию специально
для FreeBSD!Типичные проблемыРаботать с диспетчером лицензий
FLEXlm может быть непросто.
Дополнительную документацию по нему можно найти на сайте .lmgrd очень требователен к
файлу лицензии и выдает дамп памяти при выявлении любых проблем.
Правильный файл лицензии должен иметь следующий вид:# =======================================================
# License File for UNIX Installations ("Pointer File")
# =======================================================
SERVER chillig ANY
#USE_SERVER
VENDOR maplelmg
FEATURE Maple maplelmg 2000.0831 permanent 1 XXXXXXXXXXXX \
PLATFORMS=i86_r ISSUER="Waterloo Maple Inc." \
ISSUED=11-may-2000 NOTICE=" Technische Universitat Wien" \
SN=XXXXXXXXXСерийный номер и ключ забиты символами 'X'.
chillig – имя хоста.Редактирование файла лицензий возможно, если только не
трогать строку FEATURE (которая защищена
лицензионным ключом).Установка &matlab;приложенияMATLABЭтот документ описывает процесс установки Linux-версии
&matlab; версии 6.5 на систему
&os;. Эта программа работает вполне нормально, за исключением
&java.virtual.machine; (см.
).Linux-версию &matlab; можно приобрести
непосредственно в компании The MathWorks на сайте . Не забудьте получить
файл лицензии или инструкции по его созданию. По ходу дела дайте
знать производителю, что хотели бы увидеть версию их ПО специально
для &os;.Процесс установки &matlab;Для установки &matlab; выполните
следующие шаги:Вставьте инсталляционный CD и смонтируйте его.
Станьте пользователем root, как рекомендует
скрипт установки. Для запуска скрипта установки наберите:&prompt.root; /compat/linux/bin/sh /cdrom/installЗапускается графический инсталлятор. Если вы получаете
сообщения о невозможности открыть дисплей, наберите
setenv HOME ~USER,
где USER – пользователь, от
имени которого выполнена команда &man.su.1;.
При запросе корневого каталога
&matlab;, наберите:
/compat/linux/usr/local/matlab.Чтобы упростить набор остальных команд в ходе установки,
выполните в командном интерпретаторе следующую команду:
set MATLAB=/compat/linux/usr/local/matlabОтредактируйте файл лицензии в соответствии с инструкциями,
в полученной лицензии &matlab;.Этот файл можно подготовить заранее с помощью любого
текстового редактора и скопировать его в
$MATLAB/license.dat до того, как
инсталлятор попросит его отредактировать.Завершите процесс установки.В этот момент ваша установка &matlab;
завершена. Следующие шаги позволяют связать
эту программу с вашей системой &os;.Запуск диспетчера лицензийСоздайте символические ссылки для скриптов диспетчера
лицензий:&prompt.root; ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW
&prompt.root; ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMWСоздайте файл запуска
/usr/local/etc/rc.d/flexlm.sh.
Представленный ниже пример – измененная версия входящего
в дистрибутив файла $MATLAB/etc/rc.lm.glnx86.
Изменены местонахождения файлов и диспетчер лицензий запускается
под эмулятором Linux.#!/bin/sh
case "$1" in
start)
if [ -f /usr/local/etc/lmboot_TMW ]; then
/compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u username && echo 'MATLAB_lmgrd'
fi
;;
stop)
if [ -f /usr/local/etc/lmdown_TMW ]; then
/compat/linux/bin/sh /usr/local/etc/lmdown_TMW > /dev/null 2>&1
fi
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0Этот файл надо сделать выполняемым:&prompt.root; chmod +x /usr/local/etc/rc.d/flexlm.shВы также должны заменить username
именем пользователя в вашей системе (но не
root).Запустите диспетчер лицензий с помощью команды:&prompt.root; /usr/local/etc/rc.d/flexlm.sh startСвязь с &java; Runtime EnvironmentИзмените ссылку &java; Runtime
Environment (JRE) так, чтобы он ссылалась на версию, работающую
в &os;:&prompt.root; cd $MATLAB/sys/java/jre/glnx86/
&prompt.root; unlink jre; ln -s ./jre1.1.8 ./jreСоздание скрипта запуска &matlab;Поместите следующий скрипт запуска в файл
/usr/local/bin/matlab:
#!/bin/sh
/compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@"Затем выполните команду
chmod +x /usr/local/bin/matlab.В зависимости от версии
emulators/linux_base, при
выполнении этого скрипта могут быть выданы сообщения об ошибках.
Чтобы избежать этого, отредактируйте файл
/compat/linux/usr/local/matlab/bin/matlab
и измените строку вида:if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then(в версии 13.0.1 это строка 410) на следующую строку:if test -L $newbase; thenСоздание скрипта остановки &matlab;Следующие действия необходимы для решения проблемы с
некорректным завершением работы &matlab;.Создайте файл
$MATLAB/toolbox/local/finish.m и поместите
в него одну строку:! $MATLAB/bin/finish.sh$MATLAB - литерал.В том же каталоге находятся файлы
finishsav.m и
finishdlg.m, которые позволяют
сохранять рабочее пространство перед выходом. Если вы
используете любой из них, вставьте представленную выше
строку сразу после команды save.Создайте файл
$MATLAB/bin/finish.sh, который будет
содержать следующий скрипт:#!/usr/compat/linux/bin/sh
(sleep 5; killall -1 matlab_helper) &
exit 0Сделайте этот файл выполняемым:&prompt.root; chmod +x $MATLAB/bin/finish.shИспользование &matlab;В этот момент все готово для выполнения команды
matlab и начала использования этой программы.MarcelMoolenaarПредоставил Установка &oracle;приложенияOracleВведениеНиже описан процесс установки &oracle;
8.0.5 и &oracle; 8.0.5.1 Enterprise
Edition для Linux на систему FreeBSD.Установка Linux–средыУдостоверьтесь, что порты
emulators/linux_base и
devel/linux_devtools установлены
на вашей системе. Если у вас возникнут трудности с этими портами,
воспользуйтесь пакетами или более ранними их версиями из
коллекции портов.Если вы хотите использовать интеллектуальный агент (intelligent
agent), придется также установить пакет TCL от Red Hat:
tcl-8.0.3-20.i386.rpm. Универсальная команда
для установки пакетов с помощью официального порта
RPM
(archivers/rpm):&prompt.root; rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm пакетУстановка этого пакета должна
пройти без каких-либо ошибок.Создание среды &oracle;Прежде чем вы сможете установить
&oracle;, необходимо настроить
соответствующую среду. В этом документе описано, что
специально нужно сделать, чтобы запустить
&oracle; для Linux под FreeBSD –
это не пересказ официального руководства по установке
&oracle;.Настройка ядранастройка ядраКак описано в руководстве по установке
&oracle;, необходимо
установить максимальный размер совместно используемой (shared) памяти. Не используйте
SHMMAX под FreeBSD. SHMMAX
просто вычисляется, исходя из SHMMAXPGS и
PGSIZE. Следовательно, нужно задавать
SHMMAXPGS. За информацией о прочих опциях
обратитесь к официальному руководству. Пример настроек:options SHMMAXPGS=10000
options SHMMNI=100
options SHMSEG=10
options SEMMNS=200
options SEMMNI=70
options SEMMSL=61Установите эти опции в зависимости от того, как и для чего
вы будете использовать &oracle;.Не забудьте добавить следующие строки в файл конфигурации
ядра:options SYSVSHM # совместно используемая память SysV
options SYSVSEM # семафоры SysV
options SYSVMSG # межпроцессное взаимодействие SysVУчетная запись &oracle;Создайте специальную учетную запись
oracle, как и любую другую учетную запись.
Единственное отличие в том, что для oracle
необходимо указать командный интерпретатор Linux.
Добавьте /compat/linux/bin/bash в
/etc/shells и установите для
oracle командный интерпретатор
/compat/linux/bin/bash.Переменные средыКроме стандартных переменных среды
&oracle;, таких как
ORACLE_HOME и ORACLE_SID, вам нужно
будет установить следующие переменные среды:
-
+ ПеременнаяЗначениеLD_LIBRARY_PATH$ORACLE_HOME/libCLASSPATH$ORACLE_HOME/jdbc/lib/classes111.zipPATH/compat/linux/bin
/compat/linux/sbin
/compat/linux/usr/bin
/compat/linux/usr/sbin
/bin
/sbin
/usr/bin
/usr/sbin
/usr/local/bin
$ORACLE_HOME/binЖелательно устанавливать все переменные среды в файле
.profile. Вот реальный пример:ORACLE_BASE=/oracle; export ORACLE_BASE
ORACLE_HOME=/oracle; export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH
ORACLE_SID=ORCL; export ORACLE_SID
ORACLE_TERM=386x; export ORACLE_TERM
CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip
export CLASSPATH
PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin
PATH=$PATH:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin
PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin
export PATHУстановка &oracle;Из-за небольшой несовместимости с Linux–эмулятором, вам нужно
будет создать подкаталог .oracle в каталоге
/var/tmp прежде, чем можно будет начать
установку. Либо сделайте ее владельцем пользователя
oracle, либо поставьте права на запись для всех.
Если вы все сделали правильно, то установка
&oracle; должна пройти без проблем. Если
какие-либо трудности все же возникли, проверьте еще раз все
конфигурационные файлы и/или целостность дистрибутива
&oracle;. После окончания установки
&oracle; примените патчи,
описанные в следующих двух подразделах.Одна из часто возникающих проблем — неправильно
установленный адаптер TCP-протокола. В результате, невозможно
запустить процессы прослушивания TCP. Вот решение проблемы:&prompt.root; cd $ORACLE_HOME/network/lib
&prompt.root; make -f ins_network.mk ntcontab.o
&prompt.root; cd $ORACLE_HOME/lib
&prompt.root; ar r libnetwork.a ntcontab.o
&prompt.root; cd $ORACLE_HOME/network/lib
&prompt.root; make -f ins_network.mk installНе забудьте повторно запустить root.sh!Изменение root.shПри установке &oracle;
необходимо выполнить некоторые действия от имени
пользователя root. Они записаны в
скрипте командного интерпретатора root.sh,
который находится в каталоге orainst.
Перед запуском, примените к нему следующий патч (исправляет
местонахождение утилиты chown), либо запускайте его в командном
интерпретаторе Linux.*** orainst/root.sh.orig Tue Oct 6 21:57:33 1998
--- orainst/root.sh Mon Dec 28 15:58:53 1998
***************
*** 31,37 ****
# This is the default value for CHOWN
# It will redefined later in this script for those ports
# which have it conditionally defined in ss_install.h
! CHOWN=/bin/chown
#
# Define variables to be used in this script
--- 31,37 ----
# This is the default value for CHOWN
# It will redefined later in this script for those ports
# which have it conditionally defined in ss_install.h
! CHOWN=/usr/sbin/chown
#
# Define variables to be used in this scriptЕсли вы устанавливаете &oracle;
не с компакт–диска, можно изменить исходный файл
root.sh. Он называется
rthd.sh и находится в каталоге
orainst.Изменение genclntshСкрипт genclntsh используется для того,
чтобы создать единую совместно используемую клиентскую библиотеку,
которая используется для создания демонстраций. Примените
следующий патч, чтобы закомментировать определение переменной
PATH:*** bin/genclntsh.orig Wed Sep 30 07:37:19 1998
--- bin/genclntsh Tue Dec 22 15:36:49 1998
***************
*** 32,38 ****
#
# Explicit path to ensure that we're using the correct commands
#PATH=/usr/bin:/usr/ccs/bin export PATH
! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
#
# each product MUST provide a $PRODUCT/admin/shrept.lst
--- 32,38 ----
#
# Explicit path to ensure that we're using the correct commands
#PATH=/usr/bin:/usr/ccs/bin export PATH
! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
#
# each product MUST provide a $PRODUCT/admin/shrept.lstЗапуск &oracle;Теперь, если вы все сделали правильно, то можете использовать
&oracle; так же, как и в системе
Linux.HolgerKippПредоставил ValentinoVaschettoИсходную версию преобразовал в SGML Установка &sap.r3;приложенияSAP R/3Инсталляции систем &sap; на базе FreeBSD
не будут поддерживаться службой поддержки &sap; — они
предоставляют поддержку только на сертифицированных платформах.ПредисловиеЭтот документ описывает возможный способ установки системы
&sap.r3; с
СУБД &oracle; Database на машине с ОС
FreeBSD, включая установку FreeBSD и
&oracle;. Будут описаны две
разные конфигурации:&sap.r3; 4.6B (IDES) с
&oracle; 8.0.5 на FreeBSD 4.3-STABLE&sap.r3; 4.6C с
&oracle; 8.1.7 на FreeBSD 4.5-STABLEХотя в этом документе мы пытаемся подробно описать все важные
шаги, он не заменяет руководства по установке
&oracle; и
&sap.r3;.По специфическим вопросам &sap; и
&oracle; обратитесь к документации,
поставляемой в составе &sap.r3;
Linux edition, а также к другим источникам информации об
&oracle; и
&sap; OSS.Программное обеспечениеДля установки &sap; были использованы
следующие диски CD-ROM:&sap.r3; 4.6B, &oracle; 8.0.5
-
+ ИмяНомерОписаниеKERNEL51009113SAP Kernel Oracle /
Installation / AIX, Linux, SolarisRDBMS51007558Oracle / RDBMS 8.0.5.X /
LinuxEXPORT151010208IDES / DB-Export /
Диск 1 из 6EXPORT251010209IDES / DB-Export /
Диск 2 из 6EXPORT351010210IDES / DB-Export /
Диск 3 из 6EXPORT451010211IDES / DB-Export /
Диск 4 из 6EXPORT551010212IDES / DB-Export /
Диск 5 из 6EXPORT651010213IDES / DB-Export /
Диск 6 из 6Кроме того, мы использовали CD &oracle; 8
Server (Опытная версия 8.0.5 для Linux,
ядро версии 2.0.33), который не обязательно понадобится, и
FreeBSD 4.3-STABLE (она вышла всего через несколько дней после 4.3
RELEASE).&sap.r3; 4.6C SR2, &oracle; 8.1.7
-
+ ИмяНомерОписаниеKERNEL51014004SAP Kernel Oracle /
SAP Kernel Version 4.6D / DEC, LinuxRDBMS51012930Oracle 8.1.7/ RDBMS /
LinuxEXPORT151013953Release 4.6C SR2 / Export
/ Диск 1 из 4EXPORT151013953Release 4.6C SR2 / Export
/ Диск 2 из 4EXPORT151013953Release 4.6C SR2 / Export
/ Диск 3 bp 4EXPORT151013953Release 4.6C SR2 / Export
/ Диск 4 из 4LANG151013954Release 4.6C SR2 /
Language / DE, EN, FR / Диск 1 из 3В зависимости от языков, которые необходимо установить,
могут потребоваться дополнительные CD. Здесь мы использовали
только немецкий и английский языки, поэтому потребовался только
первый языковой CD. Обратите внимание, что номера всех
EXPORT CD идентичны. Все три языковых CD тоже имеют один номер
(это отличается от нумерации CD в версии 4.6B IDES). На момент
написания этого раздела (20.03.2002) установленное ПО работало
на FreeBSD 4.5-STABLE.Примечания по &sap;Прочитайте следующие документы перед установкой
&sap.r3; — они пригодятся в ходе
установки:&sap.r3; 4.6B, &oracle; 8.0.5
-
+ НомерНазвание0171356SAP Software on Linux: Essential
Comments0201147INST: 4.6C R/3 Inst. on UNIX -
Oracle0373203Update / Migration Oracle 8.0.5 -->
8.0.6/8.1.6 LINUX0072984Release of Digital UNIX 4.0B for
Oracle0130581R3SETUP step DIPGNTAB terminates0144978Your system has not been installed
correctly0162266Questions and tips for R3SETUP on Windows
NT / W2K&sap.r3; 4.6C, &oracle; 8.1.7
-
+ НомерНазвание0015023Initializing table TCPDB (RSXP0004)
(EBCDIC)0045619R/3 with several languages or
typefaces0171356SAP Software on Linux: Essential
Comments0195603RedHat 6.1 Enterprise version:
Known problems0212876The new archiving tool SAPCAR0300900Linux: Released DELL Hardware0377187RedHat 6.2: important remarks0387074INST: R/3 4.6C SR2 Installation on
UNIX0387077INST: R/3 4.6C SR2 Inst. on UNIX -
Oracle0387078SAP Software on UNIX: OS Dependencies
4.6C SR2Требования к аппаратному обеспечениюСледующего оборудования достаточно для установки
&sap.r3; System. Для производственного
использования необходима более точная оценка параметров:
-
+ Компонент4.6B4.6CПроцессор2 x 800MHz &pentium; III2 x 800MHz &pentium; IIIПамять1GB ECC2GB ECCОбъем дисков50-60GB (IDES)50-60GB (IDES)Для производственного использования рекомендуются процессоры
&xeon; с большим кешем, высокоскоростной доступ к дискам (SCSI,
аппаратный RAID-контроллер), USV и ECC-RAM. Большой объем дискового
пространства связан с заранее сконфигурированной системой IDES,
которая создает 27 Гбайт файлов базы данных в ходу установки.
Этого пространства также достаточно для исходных производственных
систем и прикладных данных.&sap.r3; 4.6B, &oracle; 8.0.5Было использовано следующее стандартное оборудование:
двухпроцессорная материнская плата с двумя процессорами
&pentium; III 800 MHz, SCSI-контроллером &adaptec; 29160
Ultra160 (для работы с 40/80 Гбайт стримером DLT и приводом
CDROM), &mylex; &acceleraid; (2 канала, firmware 6.00-1-00 с
32 Мбайт RAM). К RAID-контроллеру &mylex; подключены два диска
по 17 Гбайт (зеркалированы) и четыре диска по 36 Гбайт
(RAID уровня 5).&sap.r3; 4.6C, &oracle; 8.1.7Для этой установки был использован &dell; &poweredge; 2500:
двухпроцессорная плата с двумя процессорами &pentium; III
1000 MHz (256 Кбайт кеш), 2 Гбайта PC133 ECC SDRAM,
PERC/3 DC PCI RAID-контроллер со 128 Мбайтами и приводом
EIDE DVD-ROM. К RAID-контроллеру подключены два диска по
18 Гбайт (зеркалированы) и четыре диска по 36 Гбайт
(RAID уровня 5).Установка FreeBSDСначала надо установить FreeBSD. Есть несколько способов сделать
это (FreeBSD 4.3 была установлена по FTP,
FreeBSD 4.5 - непосредственно с RELEASE CD); подробнее
см. .Компоновка дисковДля простоты диски при установке
&sap.r3; 46B и &sap.r3; 46C
SR2 использовались одинаково. Изменились только
имена устройств, поскольку установка выполнялась на разное
оборудование (/dev/da и
/dev/amr, соответственно, так что при
использовании AMI &megaraid; будут задействованы устройства
/dev/amr0s1a вместо /dev/da0s1a):
-
+ Файловая системаРазмер (в блока по 1 Кбайту)Размер (Гбайт)Смонтирована в/dev/da0s1a1.016.3031//dev/da0s1b6swap/dev/da0s1e2.032.6232/var/dev/da0s1f8.205.3398/usr/dev/da1s1e45.734.36145/compat/linux/oracle/dev/da1s1f2.032.6232/compat/linux/sapmnt/dev/da1s1g2.032.6232/compat/linux/usr/sapКонфигурируем и инициализируем заранее два логических диска
с помощью ПО RAID &mylex; или PERC/3. Программы конфигурирования
можно запустить в ходе загрузки BIOS.Обратите внимание, что использованная компоновка дисков
немного отличается от рекомендованной &sap;, поскольку &sap;
рекомендует монтировать подкаталоги
&oracle; (и некоторые другие)
отдельно — мы решили просто создать подкаталоги.make world и новое ядроЗагрузите последние исходные коды ветки -STABLE. Пересоздайте
систему и ваше специализированное ядро после необходимых изменений
в файле конфигурации ядра. В него надо включить
параметры ядра, требуемые
для &sap.r3; и
&oracle;.Установка среды LinuxУстановка базовой системы LinuxСначала необходимо установить порт
linux_base
(от имени пользователя root):&prompt.root; cd /usr/ports/emulators/linux_base
&prompt.root; make install distcleanУстановка среды разработки LinuxСреда разработки Linux необходима, если вы хотите установить
&oracle; в ОС FreeBSD, как описано в
:&prompt.root; cd /usr/ports/devel/linux_devtools
&prompt.root; make install distcleanСреда разработки Linux была установлена только для
&sap.r3; 46B IDES. Она не нужна, если
сервер &oracle; не перекомпоновывается
в системе FreeBSD. Именно так и происходит, если вы используете
tar-архив (tarball) &oracle; с
Linux-системы.Установка необходимых пакетов RPMRPMДля запуска программы R3SETUP необходима
поддержка модулей PAM. В ходе первой установки
&sap; на ОС FreeBSD 4.3-STABLE мы
попытались установить PAM со всеми необходимыми пакетами и,
в конце концов, принудительно установили пакет PAM, что и
сработало. Для &sap.r3; 4.6C SR2 мы
сразу принудительно установили PAM RPM, что тоже сработало,
так что похоже, что пакеты, от которых декларирована зависимость,
не нужны:&prompt.root; rpm -i --ignoreos --nodeps --root /compat/linux --dbpath /var/lib/rpm \
pam-0.68-7.i386.rpmЧтобы &oracle; 8.0.5 мог запустить
интеллектуального агента, нам также пришлось установить пакет
RedHat Tcl tcl-8.0.5-30.i386.rpm (иначе
перекомпоновка в ходе установки &oracle;
не выполнится). Есть и другие проблемы с перекомпоновкой
&oracle;, но это проблема
&oracle; на Linux, не связанная с
особенностями FreeBSD.Дополнительные советыМожет также иметь смысл добавить linprocfs
в /etc/fstab; подробнее об этом см. на
странице справочника the &man.linprocfs.5;. Еще можно установить
параметр kern.fallback_elf_brand=3 в файле
/etc/sysctl.conf.Создание среды &sap.r3;Создание необходимых файловых систем и точек монтированияДля простой установки достаточно создать следующие файловые
системы:
-
+ точка монтированияразмер в Гбайтах/compat/linux/oracle45 GB/compat/linux/sapmnt2 GB/compat/linux/usr/sap2 GBТакже необходимо создать несколько ссылок. В противном случае,
инсталлятор &sap; будет выдавать
сообщения об ошибках, поскольку он проверяет созданные ссылки:&prompt.root; ln -s /compat/linux/oracle /oracle
&prompt.root; ln -s /compat/linux/sapmnt /sapmnt
&prompt.root; ln -s /compat/linux/usr/sap /usr/sapВозможные сообщения об ошибках в ходе установки (в данном
случае, для установки System PRD и
&sap.r3; 4.6C SR2):INFO 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:200
Checking existence of symbolic link /usr/sap/PRD/SYS/exe/dbg to
/sapmnt/PRD/exe. Creating if it does not exist...
WARNING 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:400
Link /usr/sap/PRD/SYS/exe/dbg exists but it points to file
/compat/linux/sapmnt/PRD/exe instead of /sapmnt/PRD/exe. The
program cannot go on as long as this link exists at this
location. Move the link to another location.
ERROR 2002-03-19 16:45:36 R3LINKS_IND_IND Ins_SetupLinks:0
can not setup link '/usr/sap/PRD/SYS/exe/dbg' with content
'/sapmnt/PRD/exe'Создание пользователей и каталоговДля системы &sap.r3; необходимы два
пользователя и три группы. Имена пользователей зависят от
идентификатора системы &sap; (SID),
который состоит из трех букв. Некоторые из этих идентификаторов
зарезервированы &sap; (например,
SAP и NIX. Полный
список см. в документации &sap;).
Для установки IDES мы использовали IDS,
а для установки 4.6C SR2 - PRD, поскольку
эта система предназначалась для промышленного использования.
Поэтому нам понадобились следующие группы (идентификаторы групп
могут отличаться, мы просто указали наши значения, использованные
при установке):
-
+ идентификатор группыимя группыописание100dbaАдминистратор базы данных101sapsysСистема &sap;102operОператор базы данныхДля стандартной установки
&oracle; используется только группа
dba. В качестве группы
oper используется та же группа
dba (подробнее об этом см. в
документации &oracle; и
&sap;).Нам также нужны следующие пользователи:
-
+ идентификатор пользователяимя пользователяобщий вид именигруппадополнительные группыописание1000idsadm/prdadmsidadmsapsysoperАдминистратор &sap;1002oraids/oraprdorasiddbaoperАдминистратор &oracle;Добавление пользователей с помощью &man.adduser.8;
требует следующих параметров для Администратора &sap;
(обратите внимание на командный интерпретатор и начальный
каталог):Name: sidadm
Password: ******
Fullname: SAP Administrator SID
Uid: 1000
Gid: 101 (sapsys)
Class:
Groups: sapsys dba
HOME: /home/sidadm
Shell: bash (/compat/linux/bin/bash)а для Администратора &oracle;:Name: orasid
Password: ******
Fullname: Oracle Administrator SID
Uid: 1002
Gid: 100 (dba)
Class:
Groups: dba
HOME: /oracle/sid
Shell: bash (/compat/linux/bin/bash)Для него также надо указать группу
oper, если вы используете обе группы,
dba и oper.Создание каталоговЭти каталоги обычно создаются в отдельных файловых системах.
Впрочем, все зависит от ваших требований. Мы решили создавать их
как обычные каталоги, поскольку в любом случае они находятся на
одном массиве RAID 5:Сначала мы установим владельцев и права для ряда каталогов (от
имени пользователя root):&prompt.root; chmod 775 /oracle
&prompt.root; chmod 777 /sapmnt
&prompt.root; chown root:dba /oracle
&prompt.root; chown sidadm:sapsys /compat/linux/usr/sap
&prompt.root; chmod 775 /compat/linux/usr/sapЗатем, мы создадим каталоги от имени пользователя
orasid. Все они
будут размещены в каталоге
/oracle/SID:&prompt.root; su - orasid
&prompt.root; cd /oracle/SID
&prompt.root; mkdir mirrlogA mirrlogB origlogA origlogB
&prompt.root; mkdir sapdata1 sapdata2 sapdata3 sapdata4 sapdata5 sapdata6
&prompt.root; mkdir saparch sapreorg
&prompt.root; exitДля установки &oracle; 8.1.7
потребуется несколько дополнительных каталогов:&prompt.root; su - orasid
&prompt.root; cd /oracle
&prompt.root; mkdir 805_32
&prompt.root; mkdir client stage
&prompt.root; mkdir client/80x_32
&prompt.root; mkdir stage/817_32
&prompt.root; cd /oracle/SID
&prompt.root; mkdir 817_32Каталог client/80x_32 должен иметь
точно такое имя. Не заменяйте x числом или
другим символом.На третьем шаге мы создаем каталоги от имени пользователя
sidadm:&prompt.root; su - sidadm
&prompt.root; cd /usr/sap
&prompt.root; mkdir SID
&prompt.root; mkdir trans
&prompt.root; exitЗаписи в файле /etc/servicesДля системы &sap.r3; необходим ряд
записей в файле /etc/services, которые не
будут правильно созданы при установке под FreeBSD. Пожалуйста,
добавьте следующие записи (потребуются, по крайней мере, записи,
соответствующие номеру экземпляра — в данном случае,
00. Не повредит добавить все записи, от
00 до 99, для
dp, gw, sp
и ms). Если вы собираетесь использовать
SAProuter или вам необходим доступ к
&sap; OSS, потребуется также запись для
99, поскольку порт 3299 обычно используется
для процесса SAProuter в целевой
системе:
sapdp00 3200/tcp # SAP Dispatcher. 3200 + Instance-Number
sapgw00 3300/tcp # SAP Gateway. 3300 + Instance-Number
sapsp00 3400/tcp # 3400 + Instance-Number
sapms00 3500/tcp # 3500 + Instance-Number
sapmsSID 3600/tcp # SAP Message Server. 3600 + Instance-Number
sapgw00s 4800/tcp # SAP Secure Gateway 4800 + Instance-NumberНеобходимые локалилокальСистеме &sap; нужны, по крайней
мере, две локали, не входящие в стандартную установку RedHat.
&sap; предлагает необходимые пакеты RPM для загрузки со своего
FTP-сервера (который доступен только для клиентов с доступом к
OSS). См. список необходимых пакетов RPM в заметке
0171356.Можно также просто создать соответствующие ссылки
(например, с de_DE и
en_US), но мы не рекомендуем это для
производственной системы (хотя это и сработало для системы
IDES безо всяких проблем). Необходимы следующие локали:de_DE.ISO-8859-1
en_US.ISO-8859-1Создайте ссылки следующим образом:&prompt.root; cd /compat/linux/usr/share/locale
&prompt.root; ln -s de_DE de_DE.ISO-8859-1
&prompt.root; ln -s en_US en_US.ISO-8859-1Если их не будет, в ходе установки возникнет ряд проблем.
Если их просто проигнорировать (установив STATUS
для соответствующих шагов равным OK в файле
CENTRDB.R3S), нельзя будет зарегистрироваться
в системе &sap; без дополнительных
усилий.Настройка ядранастройка ядраСистемам &sap.r3; надо много
ресурсов. Поэтому мы добавили следующие параметры в файл
конфигурации ядра:# Для пожирателей памяти (SAP и Oracle):
options MAXDSIZ="(1024*1024*1024)"
options DFLDSIZ="(1024*1024*1024)"
# Необходимые опции System V.
options SYSVSHM #совместно используемая память в стиле SYSV
options SHMMAXPGS=262144 #макс. количество страниц совместно используемой
#options SHMMAXPGS=393216 #use this for the 46C inst.parameters
options SHMMNI=256 #макс. количество идентификаторов совместно используемой
options SHMSEG=100 #макс. количество сегментов разд. памяти на процесс
options SYSVMSG #очереди сообщений в стиле SYSV
options MSGSEG=32767 #макс. количество сегментов сообщений в системе
options MSGSSZ=32 #размер сегмента сообщений. ДОЛЖЕН быть степенью 2
options MSGMNB=65535 #макс. символов на очередь сообщений
options MSGTQL=2046 #макс. количество сообщений в системе
options SYSVSEM #семафоры в стиле SYSV
options SEMMNU=256 #количество структур UNDO семафоров
options SEMMNS=1024 #количество семафоров в системе
options SEMMNI=520 #количество идентификаторов семафоров
options SEMUME=100 #количество ключей UNDOМинимальные значения указаны в документации, поставляемой
вместе с &sap;. Поскольку описания для Linux нет, дополнительную
информацию см. в разделе HP-UX (32-bit). Поскольку в системе, на
которую устанавливалась версия 4.6C SR2, оперативной памяти больше, сегменты совместно используемой можно сделать больше как для
&sap;, так и для
&oracle;, поэтому задайте большее
количество страниц совместно используемой.При стандартной установке FreeBSD 4.5 на &i386;,
задайте значения MAXDSIZ и DFLDSIZ не более 1 Гбайта. В противном
случае могут выдаваться странные ошибки вроде
ORA-27102: out of memory и
Linux Error: 12: Cannot allocate
memory.Установка &sap.r3;Подготовка дисков CDROM &sap;В ходе установки придется монтировать и демонтировать
много дисков CDROM. При наличии достаточного количества приводов
CDROM, можно смонтировать их все. Мы же решили скопировать
содержимое дисков CDROM в соответствующие каталоги:/oracle/SID/sapreorg/имя_cdгде имя_cd - одно из следующих
KERNEL,
RDBMS, EXPORT1,
EXPORT2, EXPORT3,
EXPORT4, EXPORT5 и
EXPORT6 для установки 4.6B/IDES, и
KERNEL, RDBMS,
DISK1, DISK2,
DISK3, DISK4 и
LANG для установки 4.6C SR2. Все имена
файлов на смонтированных дисках должны быть в верхнем регистре,
в противном случае, используйте при монтировании опцию
. Поэтому используйте следующие команды:&prompt.root; mount_cd9660 -g /dev/cd0a /mnt
&prompt.root; cp -R /mnt/* /oracle/SID/sapreorg/имя_cd
&prompt.root; umount /mntЗапуск скрипта установкиСначала надо подготовить каталог install:&prompt.root; cd /oracle/SID/sapreorg
&prompt.root; mkdir install
&prompt.root; cd installЗатем запускается скрипт установки, который скопирует почти
все необходимые файлы в каталог
install:&prompt.root; /oracle/SID/sapreorg/KERNEL/UNIX/INSTTOOL.SHДистрибутив IDES (4.6B) включает полностью настроенную
демонстрационную систему &sap.r3;, поэтому он включает шесть
дисков EXPORT CD, а не три. В этот момент шаблон установки
CENTRDB.R3S предназначен для установки
стандартного центрального экземпляра
(&r3; и базы данных), а не для
установки центрального экземпляра IDES, поэтому необходимо
скопировать соответствующий файл CENTRDB.R3S
из каталога EXPORT1, иначе
команда R3SETUP запросит только три диска
EXPORT CDs.Более новый релиз &sap; 4.6C SR2
включает четыре диска EXPORT CD. Шаги установки определяет файл
параметров CENTRAL.R3S. В отличие от
прежних релизов, больше нет отдельных шаблонов установки для
центрального экземпляра с базой данных или без нее.
&sap; использует отдельный шаблон для
установки базы данных. Для перезапуска установки в дальнейшем,
однако, достаточно перезапустить исходный файл.В ходе установки и после нее &sap;
требует, чтобы команда hostname возвращала
только имя компьютера, не уточнённое именем домена. Поэтому либо
задайте имя хоста в соответствии с этим требованием, либо
настройте псевдоним с помощью команды
alias hostname='hostname -s' для пользователей
orasid и
sidadm (и для
пользователя root, про крайней мере,
в ходе шагов по установке, выполняемых от имени
root). Можно также изменить
файлы .profile и .login
для обоих пользователей, которые создаются в ходе установки
&sap;.Запуск R3SETUP 4.6BПроверьте, что переменная среды LD_LIBRARY_PATH
установлена правильно:&prompt.root; export LD_LIBRARY_PATH=/oracle/IDS/lib:/sapmnt/IDS/exe:/oracle/805_32/libВыполните команду R3SETUP от имени
пользователя root из каталога установки:&prompt.root; cd /oracle/IDS/sapreorg/install
&prompt.root; ./R3SETUP -f CENTRDB.R3SСкрипт затем задает ряд вопросов (стандартные ответы даны
в скобках, а затем представлены реальные ответы):
-
+ ВопросСтандартное значениеОтветEnter SAP System ID[C11]IDSEnterEnter SAP Instance Number[00]EnterEnter SAPMOUNT Directory[/sapmnt]EnterEnter name of SAP central host[troubadix.domain.de]EnterEnter name of SAP db host[troubadix]EnterSelect character set[1] (WE8DEC)EnterEnter Oracle server version (1) Oracle 8.0.5, (2) Oracle 8.0.6, (3) Oracle 8.1.5, (4) Oracle 8.1.61EnterExtract Oracle Client archive[1] (Yes, extract)EnterEnter path to KERNEL CD[/sapcd]/oracle/IDS/sapreorg/KERNELEnter path to RDBMS CD[/sapcd]/oracle/IDS/sapreorg/RDBMSEnter path to EXPORT1 CD[/sapcd]/oracle/IDS/sapreorg/EXPORT1Directory to copy EXPORT1 CD[/oracle/IDS/sapreorg/CD4_DIR]EnterEnter path to EXPORT2 CD[/sapcd]/oracle/IDS/sapreorg/EXPORT2Directory to copy EXPORT2 CD[/oracle/IDS/sapreorg/CD5_DIR]EnterEnter path to EXPORT3 CD[/sapcd]/oracle/IDS/sapreorg/EXPORT3Directory to copy EXPORT3 CD[/oracle/IDS/sapreorg/CD6_DIR]EnterEnter path to EXPORT4 CD[/sapcd]/oracle/IDS/sapreorg/EXPORT4Directory to copy EXPORT4 CD[/oracle/IDS/sapreorg/CD7_DIR]EnterEnter path to EXPORT5 CD[/sapcd]/oracle/IDS/sapreorg/EXPORT5Directory to copy EXPORT5 CD[/oracle/IDS/sapreorg/CD8_DIR]EnterEnter path to EXPORT6 CD[/sapcd]/oracle/IDS/sapreorg/EXPORT6Directory to copy EXPORT6 CD[/oracle/IDS/sapreorg/CD9_DIR]EnterEnter amount of RAM for SAP + DB850Enter (in Megabytes)Service Entry Message Server[3600]EnterEnter Group-ID of sapsys[101]EnterEnter Group-ID of oper[102]EnterEnter Group-ID of dba[100]EnterEnter User-ID of sidadm[1000]EnterEnter User-ID of orasid[1002]EnterNumber of parallel procs[2]EnterЕсли вы не скопировали диски в разные каталоги,
инсталлятор &sap; не сможет найти
необходимые CD (идентифицируемые файлом
LABEL.ASC на диске) и попросит затем
вставить и смонтировать CD, и подтвердить или ввести точку
его монтирования.Файл CENTRDB.R3S может содержать
ошибки. В нашем случае, он снова запросил EXPORT4 CD, но
указал корректный ключ (6_LOCATION, затем 7_LOCATION и т.д.),
так что, можно просто продолжать вводить корректные
значения.За исключением нескольких упомянутых ниже проблем, все
должно идти нормально до момента, когда придется устанавливать
программное обеспечение для работы с базой данных &oracle;.Запуск R3SETUP 4.6C SR2Проверьте, что переменная среды LD_LIBRARY_PATH
установлена правильно. Это значение отличается от использованного
при установке версии 4.6B с
&oracle; 8.0.5:&prompt.root; export LD_LIBRARY_PATH=/sapmnt/PRD/exe:/oracle/PRD/817_32/libВыполните команду R3SETUP от имени
пользователя root из каталога установки:&prompt.root; cd /oracle/PRD/sapreorg/install
&prompt.root; ./R3SETUP -f CENTRAL.R3SСкрипт затем задаст ряд вопросов (стандартные значения
даны в скобках, а затем идут реальные ответы):
-
+ ВопросСтандартное значениеОтветEnter SAP System ID[C11]PRDEnterEnter SAP Instance Number[00]EnterEnter SAPMOUNT Directory[/sapmnt]EnterEnter name of SAP central host[majestix]EnterEnter Database System ID[PRD]PRDEnterEnter name of SAP db host[majestix]EnterSelect character set[1] (WE8DEC)EnterEnter Oracle server version (2) Oracle 8.1.72EnterExtract Oracle Client archive[1] (Yes, extract)EnterEnter path to KERNEL CD[/sapcd]/oracle/PRD/sapreorg/KERNELEnter amount of RAM for SAP + DB20441800Enter (in Megabytes)Service Entry Message Server[3600]EnterEnter Group-ID of sapsys[100]EnterEnter Group-ID of oper[101]EnterEnter Group-ID of dba[102]EnterEnter User-ID of oraprd[1002]EnterEnter User-ID of prdadm[1000]EnterLDAP support3Enter (no support)Installation step completed[1] (continue)EnterChoose installation service[1] (DB inst,file)EnterПока создание пользователей дает сообщение об ошибке при
установке на стадиях OSUSERDBSID_IND_ORA (создание пользователя
orasid) и
OSUSERSIDADM_IND_ORA (создание пользователя
sidadm).За исключением некоторых упомянутых далее проблем, все
должно идти нормально до момента, когда придется устанавливать
программное обеспечение для работы с базой данных &oracle;.Установка &oracle; 8.0.5Описания возможных проблем с Linux и Сервером
&oracle; см. в соответствующих файлах
&sap; Notes и &oracle; Readme. Большинство,
если не все проблемы, связаны с несовместимыми библиотеками.Подробнее об установке &oracle;
см. в главе Установка
&oracle;.Установка &oracle; 8.0.5 с помощью orainstЕсли надо использовать &oracle;
8.0.5, для успешной перекомпоновки понадобится
несколько дополнительных библиотек, поскольку
&oracle; 8.0.5 был скомпонован со
старой версией glibc (RedHat 6.0), но уже RedHat 6.1 использует
новую библиотеку glibc. Так что, для успешной перекомпоновки
нужно установить следующие дополнительные пакеты:compat-libs-5.2-2.i386.rpmcompat-glibc-5.2-2.0.7.2.i386.rpmcompat-egcs-5.2-1.0.3a.1.i386.rpmcompat-egcs-c++-5.2-1.0.3a.1.i386.rpmcompat-binutils-5.2-2.9.1.0.23.1.i386.rpmДополнительную информацию см. в файлах &sap; Notes или &oracle;
Readme. Если установить эти пакеты не
представляется возможным (на момент установки у нас не было
времени, чтобы это проверить), можно использовать исходные двоичные
модули или перекомпонованные двоичные модули с исходной системы
RedHat.Для компиляции интеллектуального агента должен быть
установлен пакет RedHat Tcl. Если вы не можете найти пакет
tcl-8.0.3-20.i386.rpm, подойдет и более
новый, вроде tcl-8.0.5-30.i386.rpm для
RedHat 6.1.За исключением перекомпоновки, установка выполняется
просто:&prompt.root; su - oraids
&prompt.root; export TERM=xterm
&prompt.root; export ORACLE_TERM=xterm
&prompt.root; export ORACLE_HOME=/oracle/IDS
&prompt.root; cd $ORACLE_HOME/orainst_sap
&prompt.root; ./orainstНажимайте на всех экранах клавишу Enter,
пока программное обеспечение не будет установлено, убрав только
пометку выбора с &oracle; On-Line Text Viewer,
поскольку этого компонента для Linux сейчас нет.
&oracle; затем захочет
перекомпоновать модули с помощью
i386-glibc20-linux-gcc
вместо имеющихся gcc, egcs
или i386-redhat-linux-gcc.Из-за нехватки времени мы решили использовать двоичные
модули из версии &oracle; 8.0.5
PreProduction после того, как первая попытка
заставить работать версию с RDBMS CD провалилась, — попытки
найти и загрузить требуемые пакеты RPM нам показались настоящим
кошмаром.Установка &oracle; 8.0.5 Pre-production Release для
Linux (ядро 2.0.33)Эту установку выполнить очень легко. Монтируем CD, запускаем
инсталлятор. Затем он запрашивает местонахождение начального
каталога &oracle; и копирует туда двоичные модули. Мы, однако,
не удаляли остатки прежних попыток установить RDBMS.В конечном итоге, базу данных &oracle;
удалось запустить без проблем.Установка tar-архива &oracle; 8.1.7 для LinuxСоздайте tar-архив oracle81732.tgz
каталога установки на Linux-системе и разархивируйте его в
каталог /oracle/SID/817_32/.Продолжение установки &sap.r3;Сначала проверьте настройку среды для пользователей
idsamd (sidadm) и
oraids (orasid). У
них обоих должны теперь быть файлы .profile,
.login и .cshrc,
использующие hostname. Если имя хоста в системе
полностью уточнено, надо заменить hostname
командой hostname -s во всех трех файлах.Загрузка базы данныхПотом команду R3SETUP можно либо
перезапустить, либо продолжить (в зависимости от того, была
ли завершена ее работа). R3SETUP затем
создает табличные пространства и загружает данные (для 46B
IDES - с дисков от EXPORT1 до EXPORT6, для 46C -
с дисков от DISK1 до DISK4) в базу данных с помощью утилиты
R3load.После завершения загрузки базы данных (это может занять
несколько часов), будет запрошено несколько паролей. Для тестовых
установок можно использовать хорошо известные стандартные
пароли (но если защита важна - используйте другие!):
-
+ ВопросОтветEnter Password for sapr3sapEnterConfirum Password for sapr3sapEnterEnter Password for syschange_on_installEnterConfirm Password for syschange_on_installEnterEnter Password for systemmanagerEnterConfirm Password for systemmanagerEnterМы столкнулись с несколькими проблемами с
dipgntab при установке 4.6B.Процесс прослушиванияЗапустите процесс прослушивания
(&oracle; Listener) от имени
пользователя orasid
следующим образом:&prompt.user; umask 0; lsnrctl startВ противном случае, вы можете получить сообщение об
ошибке ORA-12546, поскольку у сокетов
будут неправильные права доступа. См. &sap; Note 072984.Обновление таблиц MNLSЕсли вы планируете использовать в системе
&sap; языки, для которых не
подходит кодировка Latin-1, придется изменить таблицы
Multi National Language Support. Эта процедура описана в
&sap; OSS Notes 15023 и 45619. Если же нет, можете пропустить
этот вопрос в ходе установки &sap;.Если вам не нужна поддержка MNLS, все равно необходимо
проверить таблицу TCPDB и инициализировать ее, если это еще не
было сделано. Дополнительную информацию см. в &sap; Note 0015023
и 0045619.Шаги после установкиЗапрос лицензионного ключа &sap.r3;Вы должны запросить ваш лицензионный ключ
&sap.r3;. Это необходимо, поскольку
временная лицензия, использованная в ходе установки, действительна
только четыре недели. Сначала получите ключ оборудования.
Зарегистрируйтесь как пользователь idsadm
и вызовите команду saplicense:&prompt.root; /sapmnt/IDS/exe/saplicense -getПри вызове команды saplicense без
параметров будет выдан список опций. После получения
лицензионного ключа, его можно установить с помощью
команды:&prompt.root; /sapmnt/IDS/exe/saplicense -installЗатем вас попросят ввести следующие значения:SAP SYSTEM ID = SID, 3 символа
CUSTOMER KEY = ключ оборудования, 11 символов
INSTALLATION NO = установка, 10 цифр
EXPIRATION DATE = yyyymmdd, обычно - "99991231"
LICENSE KEY = лицензионный ключ, 24 символаСоздание пользователейСоздайте пользователя в клиенте 000 (некоторые задачи
обязательно надо выполнять из клиента 000, от имени пользователя,
отличающегося от sap* и
ddic). В качестве имени пользователя мы
обычно выбираем wartung (или
service, по английски). Требуются профили
sap_new и sap_all. Для
дополнительной защиты надо изменить пароли стандартных
пользователей на всех клиентах (в том числе, пользователей
sap* и ddic).Конфигурирование системы передачи, профиля, режимов работы и т.п.В клиенте 000, от имени пользователя, отличающегося от
ddic и sap*,
выполните, как минимум, следующее:
-
+ ЗадачаТранзакцияСконфигурируйте систему передачи, например, как Stand-Alone Transport Domain EntitySTMSСоздайте/Отредактируйте профиль для системыRZ10Сконфигурируйте режимы работы и экземплярыRZ04Эти и другие шаги, которые надо выполнить после установки,
подробно описаны в руководствах по установке
&sap;.Редактирование initsid.sap (initIDS.sap)Файл /oracle/IDS/dbs/initIDS.sap
содержит профиль резервного копирования
&sap;. Здесь надо задать размер
используемой ленты, тип сжатия и т.д. Чтобы можно было
использовать sapdba /
brbackup, мы изменили следующие значения:compress = hardware
archive_function = copy_delete_save
cpio_flags = "-ov --format=newc --block-size=128 --quiet"
cpio_in_flags = "-iuv --block-size=128 --quiet"
tape_size = 38000M
tape_address = /dev/nsa0
tape_address_rew = /dev/sa0Объяснения:compress: мы использовали ленту HP DLT1,
которая поддерживает аппаратное сжатие.archive_function: этот параметр задает
стандартное поведение для сохранения архивных журналов &oracle;:
новые журнальные файлы сохраняются на ленту, уже сохраненные
файлы журнала сохраняются еще раз, а затем удаляются. Это
предотвращает многочисленные проблемы, если потребуется
восстановить базу данных, а одна из архивных лент окажется
сбойной.cpio_flags: по умолчанию используется
, что устанавливает размер блока 5120 байт.
Для лент DLT компания HP рекомендует размер блока не меньше
32 Кбайт, поэтому мы использовали значение
для задания размера блока
64 Кбайта. Опция необходима,
поскольку у нас есть индексные дескрипторы (inodes) с номерами
больше 65535. Последняя опция, необходима
потому, что иначе команда brbackup выдает
сообщение об ошибке, как только команда cpio
выдаст количество сохраненных блоков.cpio_in_flags: флаги, необходимые для
загрузки данных с ленты. Формат распознается автоматически.tape_size: обычно этот параметр задает
реальную ёмкость ленты. Из соображений надежности (мы используем
аппаратное сжатие), задано значение несколько меньше
фактического.tape_address: устройство без перемотки
для использования в команде cpio.tape_address_rew: устройство с
перемоткой для использования в команде
cpio.Проблемы конфигурирования после установкиСледующие параметры &sap; надо
настроить после установки (примеры для IDES 46B,
1 Гбайт памяти):
-
+ ИмяЗначениеztta/roll_extension250000000abap/heap_area_dia300000000abap/heap_area_nondia400000000em/initial_size_MB256em/blocksize_kB1024ipc/shm_psize_4070000000&sap; Note 0013026:
-
+ ИмяЗначениеztta/dynpro_area2500000&sap; Note 0157246:
-
+ ИмяЗначениеrdisp/ROLL_MAXFS16000rdisp/PG_MAXFS30000При указанных выше параметрах в системе с 1 Гбайт
памяти можно обнаружить примерно следующее использование
памяти:Mem: 547M Active, 305M Inact, 109M Wired, 40M Cache, 112M Buf, 3492K FreeПроблемы в ходе установкиПерезапуск R3SETUP после устранения проблемыR3SETUP останавливается при выявлении
ошибки. Если вы просмотрели соответствующие журнальные файлы и
исправили ошибку, придется запускать R3SETUP
снова, обычно выбирая REPEAT как опцию для последнего шага,
на котором команда R3SETUP выдала сообщение
об ошибке.Для перезапуска команды R3SETUP просто
запустите её с соответствующим файлом
R3S:&prompt.root; ./R3SETUP -f CENTRDB.R3Sдля 4.6B или с файлом&prompt.root; ./R3SETUP -f CENTRAL.R3Sдля 4.6C, независимо от того, произошла ли ошибка
при работе с файлом CENTRAL.R3S или
DATABASE.R3S.На некоторых стадиях команда R3SETUP
предполагает, что запущены и работают процессы как сервера
базы данных, так и &sap; (поскольку
эти шаги уже выполнены). Если возникнут ошибки и, например,
запустить сервер базы данных не получится, придется вручную
запускать сервер базы данных и &sap;
после исправления ошибок и до повторного запуска
R3SETUP.Не забудьте также снова запустить процесс прослушивания
&oracle; (как пользователь
orasid с помощью
команды umask 0; lsnrctl start), если он тоже
был остановлен (например, из-за необходимой перезагрузки
системы).OSUSERSIDADM_IND_ORA в ходе R3SETUPЕсли R3SETUP выдает сообщения об
ошибках на этом этапе, отредактируйте используемый при этом
файл шаблона R3SETUP
(CENTRDB.R3S (4.6B), либо
CENTRAL.R3S или
DATABASE.R3S (4.6C)).
Найдите секцию [OSUSERSIDADM_IND_ORA] или
поищите единственную запись STATUS=ERROR и
отредактируйте следующие значения:HOME=/home/sidadm (было пусто)
STATUS=OK (был статус ERROR)
Затем надо снова перезапустить
R3SETUP.OSUSERDBSID_IND_ORA в ходе R3SETUPВозможно, команда R3SETUP также выдаст
сообщения об ошибке на этой стадии. Ошибка здесь аналогична
возникающей на стадии OSUSERSIDADM_IND_ORA. Просто отредактируйте
используемый файл шаблона R3SETUP
(CENTRDB.R3S (4.6B), либо
CENTRAL.R3S или
DATABASE.R3S (4.6C)).
Найдите секцию [OSUSERDBSID_IND_ORA] или поищите
единственную запись STATUS=ERROR и
отредактируйте следующее значение в этой секции:STATUS=OKЗатем перезапустите R3SETUP.oraview.vrf FILE NOT FOUND в ходе установки &oracle;Вы не сняли выбор с &oracle; On-Line Text
Viewer перед началом установки. Он помечен для
установки, хотя этот продукт и не доступен сейчас для Linux.
Снимите пометку с этого продукта в меню установки
&oracle; и перезапустите
установку.TEXTENV_INVALID в ходе R3SETUP, RFC или запуска SAPguiЕсли возникает эта ошибка, не найдена нужная локаль.
&sap; Note 0171356 перечисляет необходимые пакеты RPM, которые
надо установить (например, saplocales-1.0-3,
saposcheck-1.0-1 для RedHat 6.1). Если
игнорировать все ошибки и менять STATUS
соответствующих шагов с ERROR на
OK (в файле CENTRDB.R3S)
каждый раз, когда R3SETUP сообщает об
ошибке и просто перезапуск ать R3SETUP, система
&sap; не будет правильно
сконфигурирована, и вы затем не сможете подключиться к системе
с помощью SAPgui, хотя запустить
систему и получится. Попытка подключения с помощью старой
Linux-версии SAPgui приведет к выдаче
следующих сообщений:Sat May 5 14:23:14 2001
*** ERROR => no valid userarea given [trgmsgo. 0401]
Sat May 5 14:23:22 2001
*** ERROR => ERROR NR 24 occured [trgmsgi. 0410]
*** ERROR => Error when generating text environment. [trgmsgi. 0435]
*** ERROR => function failed [trgmsgi. 0447]
*** ERROR => no socket operation allowed [trxio.c 3363]
SpeicherzugriffsfehlerЭто связано с тем, что система
&sap.r3; не может корректно назначить
локаль и сама не была надлежащим образом сконфигурирована
(не хватает записей в некоторых таблицах базы данных). Чтобы
можно было подключиться к &sap;,
добавьте следующие записи в файл DEFAULT.PFL
(см. Note 0043288):abap/set_etct_env_at_new_mode = 0
install/collate/active = 0
rscp/TCP0B = TCP0BПерезапустите систему &sap;. Теперь
вы можете подключиться к системе, хотя специфические для страны
языковые установки могут работать не так, как предполагалось.
После исправления настроек страны (и добавления соответствующих
локалей) эти записи можно удалить из файла
DEFAULT.PFL и перезапустить систему &sap;.ORA-00001Эта ошибка возникает только с
&oracle; 8.1.7 на FreeBSD 4.5.
Причина в том, что сервер &oracle;
не может правильно проинициализироваться и аварийно завершает
работу, оставляя не освобожденными в системе семафоры и
совместно используемую память. При следующей попытке запустить сервер
базы данных выдается ошибка ORA-00001.Найдите оставшиеся семафоры и сегменты памяти с помощью
команды ipcs -a и удалите с помощью
ipcrm.ORA-00445 (фоновый процесс PMON не запущен)Эта ошибка произошла с &oracle; 8.1.7.
Она выдается, если сервер был запущен с помощью обычного
скрипта startsap (например,
startsap_majestix_00) от имени пользователя
prdadm.Возможный способ обхода – запускать сервер базы данных
от имени пользователя oraprd с помощью
svrmgrl:&prompt.user; svrmgrl
SVRMGR> connect internal;
SVRMGR> startup;
SVRMGR> exitORA-12546 (запускайте процесс прослушивания с правильными правами)Запускайте процесс прослушивания
&oracle; от имени пользователя
oraids следующими командами:&prompt.root; umask 0; lsnrctl startВ противном случае, вы можете получить сообщение об ошибке
ORA-12546, поскольку сокеты не будут иметь
нужных прав доступа. См. &sap; Note 0072984.ORA-27102 (не хватает памяти)Эта ошибка произошла при попытке использовать значения
MAXDSIZ и DFLDSIZ больше
1 Гбайта (1024x1024x1024). Кроме того, мы получили
Linux Error 12: Cannot allocate memory.[DIPGNTAB_IND_IND] в ходе R3SETUPВ общем случае, см. &sap; Note 0130581
(прекращается работа R3SETUP на шаге
DIPGNTAB). В ходе установки
IDES-версии по каким-то причинам процесс установки использовал
вместо правильного имени системы &sap;,
IDS, пустую строку, "". Это
к небольшим проблемам при доступе к каталогам, поскольку пути
генерируются динамически на базе SID
(в данном случае, IDS). Поэтому вместо обращения к:/usr/sap/IDS/SYS/...
/usr/sap/IDS/DVMGS00используются следующие пути:/usr/sap//SYS/...
/usr/sap/D00Чтобы продолжить установку мы создали ссылку и дополнительный
каталог:&prompt.root; pwd
/compat/linux/usr/sap
&prompt.root; ls -l
total 4
drwxr-xr-x 3 idsadm sapsys 512 May 5 11:20 D00
drwxr-x--x 5 idsadm sapsys 512 May 5 11:35 IDS
lrwxr-xr-x 1 root sapsys 7 May 5 11:35 SYS -> IDS/SYS
drwxrwxr-x 2 idsadm sapsys 512 May 5 13:00 tmp
drwxrwxr-x 11 idsadm sapsys 512 May 4 14:20 transМы также нашли документы &sap; Notes (0029227 и 0008401),
описывающие это поведение. Мы не столкнулись с подобными
проблемами при установке
&sap; 4.6C.[RFCRSWBOINI_IND_IND] в ходе R3SETUPВ ходе установки &sap; 4.6C,
эта ошибка возникла в результате другой ошибки, произошедшей
ранее по ходу установки. В данном случае придется просмотреть
соответствующие журнальные файлы и устранить исходную
проблему.Если после просмотра журнальных файлов выявлена только эта
ошибка (проверьте &sap; Notes), можно поменять
STATUS соответствующего шага с ERROR на OK (в файле
CENTRDB.R3S) и перезапустить
R3SETUP. После установки надо
выполнить отчет RSWBOINS из транзакции SE38.
Дополнительную информацию о стадиях RFCRSWBOINI
и RFCRADDBDIF см. в &sap; Note 0162266.[RFCRADDBDIF_IND_IND] в ходе R3SETUPЗдесь применяются те же ограничения: проверьте путем просмотра
журнальных файлов, что эта ошибка не вызвана какими-то предыдущими
проблемами.Если подтверждается, что применим документ &sap; Note 0162266,
просто поменяйте STATUS соответствующего
шага с ERROR на OK (в
файле CENTRDB.R3S) и перезапустите R3SETUP. После установки надо выполнить
отчет RADDBDIF из транзакции SE38.sigaction sig31: File size limit exceededЭто сообщение об ошибке выдается в ходе запуска процессов
&sap;disp+work.
Если &sap; запускается скриптом
startsap, запускаются отдельные подпроцессы,
выполняющие грязную работу по запуску всех остальных процессов
&sap;. В результате, сам скрипт
не получит уведомления, если что-то пойдет не так.Чтобы проверить, нормально ли запустились процессы
&sap;, посмотрите на состояние
процессов с помощью команды ps ax |
grep SID, которая выдаст
список всех процессов &oracle; и
&sap;. Если похоже, что некоторых
процессов не хватает или вы не можете подключиться к системе
&sap;, просмотрите соответствующие
журнальные файлы, которые можно найти в каталоге
/usr/sap/SID/DVEBMGSnr/work/.
Надо просматривать файлы dev_ms и
dev_disp.Сигнал 31 выдается, если объем памяти, совместно используемой
&oracle; и
&sap;, превосходит заданный в файле
конфигурации ядра, и от него можно избавиться, указав большее
значение:# большее значение для производственных систем 46C:
options SHMMAXPGS=393216
# меньшее значение, достаточное для 46B:
#options SHMMAXPGS=262144Сбой при запуске saposcolЕсть ряд проблем с программой saposcol
(версии 4.6D). Система &sap; использует
saposcol для сбора данных о производительности
системы. Эта программа не нужна для использования системы
&sap;, так что проблему можно отнести
к несерьезным. Более старые версии (4.6B) работают, но собирают
не все данные (многие вызовы просто возвращают 0, например,
для использования процессора).Дополнительные сведенияЕсли вы интересуетесь, как обеспечивается двоичная совместимость
с Linux, этот раздел для вас. Большинство материала взято из
электронного письма, адресованного в &a.chat; by Terry Lambert
tlambert@primenet.com (ID письма:
<199906020108.SAA07001@usr09.primenet.com>).Как все это устроено?загрузчик выполняемых классовFreeBSD поддерживает абстракцию, называемую загрузчик
выполняемых классов. Фактически, он является первой
стадией системного вызова &man.execve.2;.На самом деле, FreeBSD имеет список загрузчиков вместо
одного, завершающийся загрузчиком #! для
запуска любых командных интерпретаторов и скриптов.Исторически сложилось, что единственный загрузчик в &unix;
системах проверял магическое число (чаще всего первые
4 или 8 байт файла), чтобы определить, известен ли формат
двоичного файла системе, и если да, то вызвал соответствующий
загрузчик.Если файл не опознавался системой как двоичный, системный
вызов &man.execve.2; возвращал ошибку, и текущий командный
интерпретатор начинал выполнять файл как скрипт.По умолчанию скрипт выполнялся текущим командным
интерпретатором.Позднее, &man.sh.1; был модифицирован, так, чтобы проверять
первые два символа в файле, и если они оказывались
:\n, то файл выполнялся как сценарий для
&man.csh.1; (утверждается, что SCO были первыми, кто сделал
эту модификацию).FreeBSD сейчас ведет себя по-другому: пробегает по списку
загрузчиков,включающему специальный загрузчик #!,
который вызывает нужный интерпретатор, указанный после этих символов
до следующего пробела, или /bin/sh, если
не нашел подходящего.ELFДля поддержки Linux ABI FreeBSD ищет магическое число,
соответствующее двоичному файлу ELF (на этой стадии не различаются
FreeBSD, &solaris;, Linux или любая другая ОС поддерживающая формат
ELF).SolarisДалее, ELF-загрузчик определяет марку (brand)
двоичного файла ELF (специальный комментарий в ELF-файле,
отсутствующий в двоичных файлах ELF SVR4/&solaris;).Соответственно, Linux программы должны быть
маркированы для Linux (например, с
помощью утилиты &man.brandelf.1;):&prompt.root; brandelf -t Linux fileКогда это сделано, загрузчик ELF выявит марку
Linux в файле.ELFbrandingКогда ELF-загрузчик находит маркуLinux, он заменяет соответствующий указатель в
структуре proc. Все системные вызовы
индексируются через этот указатель (в традиционной &unix; системе это
массив структур sysent[], содержащий системные
вызовы). Кроме того, процесс помечается для специальной обработки
вектора обработчиков сигналов, а также ряда других (небольших)
исправлений, которые осуществляются специальным модулем ядра для
поддержки Linux.Вектор системных вызовов Linux содержит, среди прочего, список
записей sysent[], адреса которых находятся в
модуле ядра.При выполнении системного вызова из двоичного файла Linux,
код обработчика разыменовывает указатель на функцию системного вызова
из структуры proc, и получает точки входа
системных вызовов Linux, а не FreeBSD.Плюс ко всему, в Linux–режиме динамически изменяется
корень файловой системы при поиске файлов; фактически
так же, как и параметр union при монтировании
файловых систем (не путать с unionfs!).
Сперва, файл ищется в каталоге
/compat/linux/исходное_полное_имя
и только затем, в случае неудачи, в
/исходное_полное_имя.
Это гарантирует, что программы, которым требуются другие программы,
смогут работать (например, весь набор инструментальных средств Linux
сможет работать в среде поддержки Linux ABI). Это также дает
возможность Linux программам выполнять FreeBSD команды, если не
найдется соответствующих Linux команд. Например, можно скопировать
FreeBSD &man.uname.1; в дерево каталогов
/compat/linux, и Linux-программы не смогут
разобраться, что они работают не в Linux.Фактически, имеется ядро Linux в ядре FreeBSD; различные
базовые функции, реализующие все услуги ядра, идентичны как
в записях таблицы системных вызовов FreeBSD, так и в записях
таблицы системных вызовов Linux: операции с файловой системой,
виртуальная память, средства доставки сигналов,
System V IPC … Единственное отличие в том, что
FreeBSD-программы получают интерфейсные функции
FreeBSD, а Linux-программы получают интерфейсные
функции Linux (в большинстве более старых ОС есть только их
собственные интерфейсные функции: функции берутся из статического
глобального массива структур sysent[], а не
из массива, полученного разыменованием динамически
проинициализированного указателя в структуре
proc процесса, выполняющего вызов).Какая же реализация ABI для FreeBSD родная? Это
не имеет значения. Единственное различие (на данный момент, в
будущем все может и, вероятно, изменится), пожалуй, в том, что
функции системных вызовов FreeBSD зашиты в ядро, а для Linux они
могут быть либо статически скомпонованы в ядро, либо получаться
через модуль ядра.Да, но можно ли назвать это эмуляцией? Нет. Это реализация ABI,
а не эмуляция. Как таковой, эмулятор (или симулятор)
отсутствует.В таком случае, почему же иногда говорят об
эмуляции Linux? Чтобы насолить
FreeBSD! Фактически, причина в том, что на момент первой реализации
не существовало слова, которое бы точнее описывало этот процесс.
Нельзя было сказать, что FreeBSD запускает приложения Linux (без
перекомпиляции или загрузки соответствующего модуля ядра это
невозможно). Но надо было как-то описать, что
загружается—отсюда и эмулятор Linux.
diff --git a/ru_RU.KOI8-R/books/handbook/mail/chapter.sgml b/ru_RU.KOI8-R/books/handbook/mail/chapter.sgml
index b60cbb9150..0a7cbb04d2 100644
--- a/ru_RU.KOI8-R/books/handbook/mail/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/mail/chapter.sgml
@@ -1,2341 +1,2341 @@
BillLloydОригинальную версию предоставил JimMockПереписал АлексейДокучаевПеревод на русский язык: ДенисПеплинЭлектронная почтаКраткий обзорemailэлектронная почтаЭлектронная почта называемая также email, является
на сегодняшний день одним из самых популярных средств связи. Эта глава
описывает основы работы с почтовым сервером в &os;, а также введение
в процесс отправки и получения почты в &os;; однако, это не полноценный
справочник и фактически в главу не вошло много важной информации.
Более подробно эта тема рассмотрена во множестве прекрасных книг, список
которых приведен в .После прочтения этой главы вы узнаете:Какие программные компоненты задействованы в отправке и
получении электронной почты.Какие основные файлы настройки
sendmail имеются в FreeBSD.Разницу между удаленными и локальными почтовыми
ящиками.Как запретить спамерам использовать ваш почтовый
сервер для пересылки почты.Как установить и настроить альтернативный агент передачи почты
(Mail Transfer Agent, MTA), заменив им
sendmail.Как разрешить наиболее часто встречающиеся проблемы с почтовым
сервером.Как использовать SMTP с UUCP.Как настроить систему только для отправки почты.Как использовать почту с коммутируемым подключением к
сети.Как настроить SMTP аутентификацию для дополнительной
защиты.Как установить и настроить почтовый агент пользователя
(Mail User Agent, MUA), например
mutt, для отправки и получения
почты.Как загрузить почту с удаленного POP или
IMAP сервера.Как автоматически применять фильтры и правила к входящей
почте.Перед прочтением этой главы вам потребуется:Правильно настроить сетевое подключение
().Правильно настроить DNS для почтового сервера
().Знать как устанавливать дополнительное программное обеспечение
сторонних разработчиков ().Использование электронной почтыPOPIMAPDNSВ работе почтовой системы задействованы пять основных частей:
пользовательский почтовый клиент
(Mail User Agent, MUA),
почтовый сервис (даемон)
(Mail Transfer Agent, MTA), сервер DNS, удаленный или локальный почтовый ящик,
и конечно сам почтовый сервер.Пользовательский почтовый клиентОбычно, это программа типа mutt,
pine, elm,
mail, а также программы с графическим
интерфейсом, такие, как balsa или
xfmail, или интегрированные приложения
(например, какой-либо WWW браузер типа Netscape). Все эти программы
общаются с локальным почтовым
сервером, вызывая какой-либо даемон, или напрямую по протоколу
TCP.Почтовый даемонпочтовые даемоныsendmailпочтовые даемоныpostfixпочтовые даемоныqmailпочтовые даемоныexim&os; по умолчанию поставляется с
sendmail, но помимо того поддерживает
множество других даемонов почтового сервера, вот лишь некоторые
из них:exim;postfix;qmail.Почтовый даемон выполняет только две функции: он отвечает за прием
входящей почты и отправку исходящей. Он не
отвечает за выдачу
почты по протоколам POP или
IMAP, и не обеспечивает подключения к локальным
почтовым ящикам mbox или Maildir. Для этих целей
вам может потребоваться дополнительный
даемон.Старые версии sendmail содержат
некоторые серьезные ошибки безопасности, которые могут
привести к получению атакующим локального и/или удаленного
доступа к вашему компьютеру. Убедитесь, что вы работаете
с современной версией, свободной от таких ошибок.
Или установите альтернативный MTA
из коллекции портов &os;.Email и DNSСлужба имен доменов (Domain Name System, DNS) и соответствующий
ей даемон named играют важную роль в доставке
почты. Для доставки почты с вашего сайта другому, даемон почтового
сервера обратится к DNS для определения удаленного хоста, отвечающего
за доставку почты по назначению. Тот же процесс происходит при
доставке почты с удаленного хоста на ваш почтовый сервер.MX recordDNS отвечает за сопоставления имен хостов
IP адресам, как и за хранение информации, предназначенной для
доставки почты, известной как MX записи. Запись MX (Mail
eXchanger) определяет хост или хосты, которые будут получать почту
для определенного домена. Если для вашего имени хоста или домена
нет записи MX, почта будет доставлена непосредственно на ваш хост,
IP адрес которого определен в записи A.Вы можете просмотреть MX записи для любого домена с помощью
команды &man.host.1;, как показано в примере ниже:&prompt.user; host -t mx FreeBSD.org
FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.orgПолучение почтыemailполучениеПолучение почты для вашего домена выполняет почтовый сервер.
Он сохраняет отправленную в ваш домен почту в формате либо
mbox (это метод по умолчанию),
либо Maildir, в зависимости от настроек.
После сохранения почты ее можно либо прочитать локально, используя
такие приложения как &man.mail.1;, mutt,
или удаленно, по таким протоколам как POP или
IMAP. Это
означает, что для локального чтения почты вам не потребуется
устанавливать сервер POP или
IMAP.Доступ к удаленным почтовым ящикам по протоколам
POP и IMAPPOPIMAPДля удаленного доступа к почтовым ящикам вам потребуется
доступ к POP или IMAP
серверу.
Хотя удаленный доступ обеспечивают оба протокола
POP и IMAP, последний
предоставляет множество дополнительных возможностей, вот некоторые
из них:IMAP может как хранить сообщения на
удаленном сервере, так и забирать их.IMAP поддерживает одновременные
обновления.IMAP может быть очень полезен для
низкоскоростных соединений, поскольку позволяет пользователям
получить структуру сообщений без их загрузки; он также может
использоваться для выполнения таких задач как поиск на сервере,
для минимизации объема передаваемых между клиентом и сервером
данных.Для установки POP или
IMAP сервера необходимо выполнить следующие
действия:Выберите IMAP или
POP сервер, который подходит вам наилучшим
образом. Следующие POP и
IMAP серверы хорошо известны и могут быть
приведены в качестве примера:qpopper;teapop;imap-uw;courier-imap;Установите POP или
IMAP даемон, выбранный из коллекции
портов.Если потребуется, настройте
/etc/inetd.conf
для запуска POP или
IMAP сервера.Необходимо отметить, что и POP и
IMAP серверы передают информацию, включая
имя пользователя и пароль, в незашифрованном виде. Это означает,
что если вы хотите защитить передачу информации по этим
протоколам, потребуется использовать тунеллирование сессий через
&man.ssh.1;. Тунеллирование соединений описано в
.Доступ к локальным почтовым ящикамДоступ к почтовым ящикам может быть осуществлен непосредственно
путем использования MUA на сервере, где
эти ящики расположены. Это можно сделать используя приложения
вроде mutt или
&man.mail.1;.Почтовый хостпочтовый хостПочтовый хост это сервер, который отвечает за отправку и получение
почты для вашего компьютера, и возможно, для всей вашей сети.ChristopherShumwayПредоставил Настройка sendmailsendmailВ FreeBSD по умолчанию программой передачи почты (Mail Transfer
Agent, MTA) является &man.sendmail.8;. Работа
sendmail заключается в приеме почты от
почтовых программ пользователей (Mail User Agents,
MUA) и отправке ее на соответствующий адрес,
в соответствии с имеющимися настройками.
sendmail может также принимать входящие
соединения по сети и доставлять почту в локальные почтовые ящики
или перенаправлять их другой программе.sendmail использует следующие файлы
настройки:/etc/mail/access/etc/mail/aliases/etc/mail/local-host-names/etc/mail/mailer.conf/etc/mail/mailertable/etc/mail/sendmail.cf/etc/mail/virtusertable
-
+ Имя файлаНазначение/etc/mail/accessФайл базы данных доступа
sendmail/etc/mail/aliasesСинонимы почтовых ящиков/etc/mail/local-host-namesСписок хостов, для которых
sendmail принимает почту/etc/mail/mailer.confНастройки почтовой программы/etc/mail/mailertableТаблица доставки почтовой программы/etc/mail/sendmail.cfОсновной файл настройки
sendmail/etc/mail/virtusertableТаблицы виртуальных пользователей и доменов/etc/mail/accessБаза данных доступа определяет список хостов или IP адресов,
имеющих доступ к локальному почтовому серверу, а также тип
предоставляемого доступа. Хосты могут быть перечислены как
, ,
или просто переданы процедуре обработки ошибок
sendmail с заданным сообщением об ошибке.
Хостам, перечисленным с параметром по умолчанию ,
разрешено отправлять почты на этот хост, если адрес назначения почты
принадлежит локальной машине. Все почтовые соединения от хостов,
перечисленных с параметром , отбрасываются.
Для хостов, перечисленных с параметром ,
разрешена передача через этот сервер почты с любым адресом
назначения.Настройка базы данных доступа
sendmailcyberspammer.com 550 We don't accept mail from spammers
FREE.STEALTH.MAILER@ 550 We don't accept mail from spammers
another.source.of.spam REJECT
okay.cyberspammer.com OK
128.32 RELAYВ этом примере приведены пять записей. К отправителям, чей адрес
соответствует записи в левой части таблицы, применяется правило
записанное в правой части таблицы. В первых двух примерах
код ошибки будет передан процедуре обработке ошибок
sendmail. В этом случае на удаленном хосте
будет получено соответствующее сообщение. В следующем примере почта
отбрасывается почта от определенного хоста,
another.source.of.spam. В четвертом примере
разрешается прием почты от хоста okay.cyberspammer.com, имя которого более точно
совпадает с этой записью, чем с cyberspammer.com в примере выше. При более
точном совпадении правила перезаписываются. В последнем примере
разрешается пересылка почты от хостов с IP адресами, начинающимися
с 128.32. Эти хосты смогут отправлять почту через
этот почтовый сервер для других почтовых серверов.После изменения этого файла для обновления базы данных
вам потребуется запустить make в каталоге
/etc/mail/./etc/mail/aliasesБаза данных синонимов содержит список виртуальных почтовых
ящиков, принадлежащих другим пользователям, файлам, программам, или
другим синонимам. Вот несколько примеров, которые могут быть
использованы для /etc/mail/aliases:Mail Aliasesroot: localuser
ftp-bugs: joe,eric,paul
bit.bucket: /dev/null
procmail: "|/usr/local/bin/procmail"Формат файла прост; имя почтового ящика слева от двоеточия
сопоставляется назначению(ям) справа. В первом примере
производится простое сопоставление почтового ящика
root почтовому ящику
localuser, для которого затем опять будет
произведен поиск в базе данных синонимов. Если совпадений не
обнаружится, сообщение будет доставлено локальному пользователю
localuser. В следующем примере приведен
список рассылки. Почта на адрес ftp-bugs
рассылается на три локальных почтовых ящика: joe,
eric и paul. Обратите
внимание, что удаленный почтовый ящик может быть задан в виде
user@example.com. В следующем примере
показана запись почты в файл, в данном случае
/dev/null. И в последнем примере показано
отправление почты программе, в данном случае почтовое сообщение
переправляется через канал &unix; на стандартный вход
/usr/local/bin/procmail.После обновления этого файла вам потребуется запустить
make в каталоге /etc/mail/
для обновления базы данных./etc/mail/local-host-namesВ этом файле находится список имен хостов, принимаемых
программой &man.sendmail.8; в качестве локальных. Поместите в
этот файл любые домены или хосты, для которых
sendmail должен принимать почту.
Например, если этот почтовый сервер должен принимать почту для
домена example.com и хоста
mail.example.com, его файл
local-host-names может выглядеть примерно
так:example.com
mail.example.comПосле обновления этого файла необходимо перезапустить
&man.sendmail.8;, чтобы он смог перечитать изменения./etc/mail/sendmail.cfОсновной файл настройки sendmail,
sendmail.cf управляет общим поведением
sendmail, включая все, от перезаписи
почтовых адресов до отправки удаленным серверам сообщений об
отказе от пересылки почты. Конечно, файл настройки с таким
многообразием возможностей очень сложен и подробное его описание
выходит за рамки данного раздела. К счастью, для стандартных
почтовых серверов изменять этот файл придется не часто.Основной файл настройки sendmail
может быть собран из макроса &man.m4.1;, определяющего возможности
и поведение sendmail. Подробнее
этот процесс описан в файле
/usr/src/contrib/sendmail/cf/README.Для применения изменений после правки файла необходимо
перезапустить sendmail./etc/mail/virtusertableФайл virtusertable сопоставляет виртуальные
почтовые домены и почтовые ящики реальным почтовым ящикам. Эти
почтовые ящики могут быть локальными, удаленными, синонимами,
определенными в /etc/mail/aliases, или
файлами.Пример таблицы виртуального доменаroot@example.com root
postmaster@example.com postmaster@noc.example.net
@example.com joeВ примере выше мы видим сопоставление адресов для домена
example.com. Почта
обрабатывается по первому совпадению с записью в этом файле.
Первая запись сопоставляет адрес root@example.com
локальному почтовому ящику root.
Вторая запись сопоставляет postmaster@example.com
локальному почтовому ящику postmaster
на хосте noc.example.net. Наконец,
до этого момента адрес в домене example.com не совпал ни с одним из
предыдущих, будет применено последнее сопоставление, в которому
соответствует всякое другое почтовое сообщение, отправленное на любой
адрес в example.com. Это сообщение
будет доставлено в локальный почтовый ящик
joe.AndrewBoothmanНаписал GregoryNeil ShapiroИнформация получена из писем, написанных Установка другой почтовой программыemailзамена mtaКак уже упоминалось, FreeBSD поставляется с MTA (Mail Transfer Agent)
sendmail. Следовательно, по умолчанию
именно эта программа отвечает за вашу исходящую и входящую
почту.Однако, по различным причинам некоторые системные администраторы
заменяют системный MTA. Эти причины варьируются от простого желания
попробовать другой MTA до потребности в определенных возможностях
пакета, основанного на другой почтовой программе. К счастью, вне
зависимости от причины, в FreeBSD такая замена выполняется
просто.Установка нового MTAВам предоставлен широкий выбор MTA. Начните с поиска в
коллекции портов FreeBSD,
где их немало. Конечно, вы можете использовать любой MTA
по желанию, взятый откуда угодно, если только сможете
запустить его под FreeBSD.Начните с установки нового MTA. После установки у вас будет
возможность решить, действительно ли он подходит вашем нуждам,
а также настроить новое программное обеспечение перед тем, как
заменить им sendmail. При установке
новой программы убедитесь, что она не пытается перезаписать
системные файлы, такие как /usr/bin/sendmail.
Иначе ваша новая почтовая программа фактически начнет работать
до того, как вы ее настроите.Обратитесь к документации на выбранный MTA
за информацией по его настройке.Отключение sendmailПроцедура, используемая для запуска
sendmail, значительно изменилась между
релизами 4.5-RELEASE и 4.6-RELEASE. Поэтому процедура, используемая
для его отключения, немного отличается.FreeBSD 4.5-STABLE до 2002/4/4 и раньше
(включая 4.5-RELEASE и более ранние)Добавьте:sendmail_enable="NO"в /etc/rc.conf. Это отключит
сервис входящей почты sendmail,
но если /etc/mail/mailer.conf (см. ниже)
не изменен, sendmail все еще
будет использоваться для отправки почты.FreeBSD 4.5-STABLE после 2002/4/4
(включая 4.6-RELEASE и более поздние)Для полного отключения
sendmail используйтеsendmail_enable="NONE"в /etc/rc.conf.Если вы отключите сервис исходящей почты
sendmail таким способом, необходимо
заменить его полностью работоспособной альтернативной системой
доставки почты. Если вы не сделаете этого, системные программы,
такие как &man.periodic.8;, не смогут отправлять сообщения
по электронной почте как обычно. Многие программы в вашей
системе могут требовать наличия функционирующей
sendmail-совместимой системы.
Если приложения будут продолжать использовать программу
sendmail, пытаясь отправить почту
после отключения почтовой системы, почта может попасть в
неактивную очередь sendmail и никогда
не будет доставлена.Если вы хотите отключить только сервис входящей почты
sendmail, установитеsendmail_enable="NO"в /etc/rc.conf. Дополнительная информация
о параметрах запуска sendmail
доступна на странице справочника &man.rc.sendmail.8;.Запуск нового MTA при загрузкеВы можете выбрать один из двух методов для запуска нового MTA
при загрузке, опять же в зависимости от используемой версии
FreeBSD.FreeBSD 4.5-STABLE до 2002/4/11
(включая 4.5-RELEASE и более ранние)Добавьте в каталог
/usr/local/etc/rc.d/, скрипт с расширением
.sh и с правами выполнения пользователем
root. Скрипт должен принимать параметры
start и stop.
Во время запуска системы он будет запущен командой/usr/local/etc/rc.d/supermailer.sh startкоторая также может использоваться для запуска сервера вручную
Во время завершения работы системы, системные скрипты используют
параметр stop, выполнив команду/usr/local/etc/rc.d/supermailer.sh stopкоторая также может использоваться для остановки почтового сервера
при работающей системе.FreeBSD 4.5-STABLE после 2002/4/11
(включая 4.6-RELEASE и более поздние)С более поздними версиями FreeBSD, вы можете использовать
метод, описанный выше, или добавить строкуmta_start_script="filename"в /etc/rc.conf, где
filename это имя скрипта, который вы
хотите выполнить при загрузке для запуска MTA.Замещение sendmail как
почтовой программы по умолчаниюПрограмма sendmail настолько
распространена в качестве стандартной программы для систем &unix;,
что многие программы считают, что она уже установлена и настроена.
По этой причине многие альтернативные MTA предоставляют собственные
совместимые реализации интерфейса командной строки
sendmail; это облегчает их использование
в качестве прозрачной замены
sendmail.Поэтому если вы используете альтернативную почтовую программу,
потребуется убедиться, что когда программное обеспечение
пытается выполнить стандартные исполняемые файлы
sendmail, такие как
/usr/bin/sendmail, на самом деле выполняются
программы вновь установленной почтовой системы. К счастью,
FreeBSD предоставляет систему, называемую &man.mailwrapper.8;,
которая выполняет эту работу за вас.Когда установлен sendmail,
файл /etc/mail/mailer.conf выглядит
примерно так:sendmail /usr/libexec/sendmail/sendmail
send-mail /usr/libexec/sendmail/sendmail
mailq /usr/libexec/sendmail/sendmail
newaliases /usr/libexec/sendmail/sendmail
hoststat /usr/libexec/sendmail/sendmail
purgestat /usr/libexec/sendmail/sendmailЭто означает, что когда выполняется какая-то из этих стандартных
программ (например сам sendmail), система на
самом деле вызывает копию mailwrapper, называемую
sendmail, которая обращается к
mailer.conf и выполняет вместо этого
/usr/libexec/sendmail/sendmail.
Такая схема делает простой замену программ, которые на самом деле
выполняются, когда вызываются стандартные функции
sendmail.Поэтому если вы хотите выполнять
/usr/local/supermailer/bin/sendmail-compat
вместо sendmail, отредактируйте
/etc/mail/mailer.conf так:sendmail /usr/local/supermailer/bin/sendmail-compat
send-mail /usr/local/supermailer/bin/sendmail-compat
mailq /usr/local/supermailer/bin/mailq-compat
newaliases /usr/local/supermailer/bin/newaliases-compat
hoststat /usr/local/supermailer/bin/hoststat-compat
purgestat /usr/local/supermailer/bin/purgestat-compatЗапуск новой почтовой программыКак только вы все настроили, потребуется или уничтожить
процесс sendmail, который уже не
нужен и запустить новую почтовую программу, или просто перегрузить
систему. Перезагрузка также даст вам возможность проверить,
правильно ли настроена система для автоматического запуска
MTA при загрузке.Поиск и устранение неисправностейemailустранение неисправностейПочему я должен использовать FQDN для хостов вне моей подсети?Вы, видимо, обнаружили, что хост, к которому вы обратились,
оказался на самом деле в другом домене; например, если вы
находитесь в домене foo.bar.edu и
хотите обратиться к хосту mumble в домене bar.edu, то должны указать его полное
доменное имя, mumble.bar.edu, а не
просто mumble.BINDТрадиционно, программа разрешения имен BSD BIND позволяла это
делать. Однако, текущая версия BIND,
поставляемая с FreeBSD, больше не добавляет имена доменов,
отличающихся от того, в котором вы находитесь, для не полностью
указанных имен хостов. То есть, имя mumble будет
опознан как mumble.foo.bar.edu или
будет искаться в корневом домене.Это отличается от предыдущего поведения, при котором поиск
продолжался в доменах mumble.bar.edu и mumble.edu. Если вам интересны причины
объявления такого поведения плохой практикой и даже ошибкой в
безопасности, обратитесь к RFC 1535.Хорошим решением будет поместить строку
search foo.bar.edu bar.edu
вместо ранее используемой:
domain foo.bar.edu
в файл /etc/resolv.conf. Однако
удостоверьтесь, что порядок поиска не нарушает границ
полномочий между локальным и внешним администрированием, в
терминологии RFC 1535.MX recordsendmail выдает ошибку
mail loops back to myselfВ FAQ по sendmail дан следующий ответ:Я получаю такие сообщения об ошибке:
553 MX list for domain.net points back to relay.domain.net
554 <user@domain.net>... Local configuration error
Как можно решить эту проблему?
Согласно записям MX, почта для домена domain.net перенаправляется на хост
relay.domain.net, однако последний не распознается как
domain.net. Добавьте domain.net в файл
/etc/mail/local-host-names
[известный как /etc/sendmail.cw до версии 8.10]
(если вы используете
FETURE(use_cw_file)) или добавьте Cw domain.net в файл
/etc/mail/sendmail.cf.FAQ по sendmail можно найти на
и рекомендуется
прочесть его при желании произвести некоторые
усовершенствования настроек почтовой системы.PPPКак организовать работу почтового сервера при коммутируемом соединении
с Интернет?Вы хотите подключить к интернет компьютер с FreeBSD, работающий
в локальной сети. Компьютер с FreeBSD будет почтовым шлюзом
для локальной сети. PPP соединение не выделенное.UUCPMX recordСуществует как минимум два пути, чтобы сделать это. Один способ
это использование UUCP.Другой способ это использование постоянно работающего интернет
сервера для обеспечения вторичного MX сервиса вашего домена.
Например, домен вашей компании example.com, и провайдер интернет
настроил example.net
для обеспечения вторичного MX сервиса:
example.com. MX 10 example.com.
MX 20 example.net.Только один хост должен быть указан в качестве последнего
получателя (добавьте запись Cw example.com в файл
/etc/mail/sendmail.cf на машине
example.com).Когда программа sendmail (со стороны
отправителя) захочет доставить почту, она
попытается соединиться с вашим хостом (example.com) через модемное подключение.
Скорее всего, ей это не удастся (вы,
вероятнее всего, не будете подключены к интернет).
Программа sendmail
автоматически перейдет ко вторичному MX серверу, т.е. вашему провайдеру
(example.net).
Вторичный MX сервер будет периодически пытаться соединиться с
вашим хостом и доставить почту на основной сервер MX
(example.com).Вы можете воспользоваться следующим сценарием, чтобы забирать
почту каждый раз, когда вы входите в систему:#!/bin/sh
# Put me in /usr/local/bin/pppmyisp
( sleep 60 ; /usr/sbin/sendmail -q ) &
/usr/sbin/ppp -direct pppmyispЕсли же вы хотите написать отдельный пользовательский скрипт,
лучше воспользоваться командой sendmail
-qRexample.com вместо вышеприведенного сценария, так как в
этом случае вся почта в очереди для хоста
example.com будет обработана
немедленно.Рассмотрим эту ситуацию подробнее:Вот пример сообщения из &a.isp.name;.> Мы предоставляем вторичный MX для наших клиентов. Вы соединяетесь
> с нашим сервером несколько раз в день, чтобы забрать почту для вашего
> первичного (главного) MX (мы не соединяемся с ним каждый раз, когда
> приходит новая почта для его доменов). Далее, sendmail отправляет
> почту, находящуюся в очереди каждые 30 минут, и клиент должен быть
> подключен к Интернет в течении 30 минут, чтобы удостовериться, что
> вся почта ушла на основной MX-сервер.
>
> Может быть, есть какая-либо команда, которая заставит sendmail
> немедленно отправить все почту, находящуюся в очереди? Естественно,
> пользователи не обладают какими-либо повышенными привилегиями на
> нашем сервере.
В секции privacy flags файла
sendmail.cf, определяется опция
Уберите restrictqrun, чтобы разрешить рядовым
пользователям инициировать работу с очередью. Вам также может понадобиться
изменить порядок MX-серверов. Так, если вы предоставляете первый (основной)
MX-сервер для ваши пользователей, мы указываем:
# If we are the best MX for a host, try directly instead of generating
# local config error.
OwTrue
Таким образом, удаленный хост будет доставлять почту непосредственно к вам,
не пытаясь установить соединение с клиентом. Затем уже вы, в свою очередь,
отсылаете ее клиенту. Удостоверьтесь, что в DNS есть записи про
customer.com и hostname.customer.com. Просто
добавьте запись A в DNS для customer.com.Почему я продолжаю получать ошибки Relaying
Denied при отправки почты через другие
хосты?В установке FreeBSD по умолчанию,
sendmail настроен для отправки
почты только от хоста, на котором он работает. Например,
если доступен POP сервер, пользователи
смогут проверять почту из школы, с работы или других
удаленных точек, но не смогут отправлять письма. Обычно,
через некоторое время после попытки будет отправлено письмо
от MAILER-DAEMON с сообщением
об ошибке 5.7 Relaying Denied.Есть несколько путей разрешения этой ситуации. Самый прямой
путь это использование адреса вашего провайдера в файле
relay-domains, расположенном в
/etc/mail/relay-domains. Быстрый способ
сделать это:&prompt.root; echo "your.isp.example.com" > /etc/mail/relay-domainsПосле создания или редактирования этого файла вы должны
перезапустить sendmail. Это отлично
работает, если вы администратор сервера и не хотите отправлять
почту локально, или хотите воспользоваться почтовым
клиентом/системой на другом компьютере или даже через другого
провайдера. Это также очень полезно, если у вас настроены одна
или две почтовые записи. Если необходимо добавить несколько
адресов, вы можете просто открыть этот файл в текстовом редакторе и
добавить домены, по одному на строку:your.isp.example.com
other.isp.example.net
users-isp.example.org
www.example.orgТеперь будет отправляться любая почта, посылаемая через вашу
систему любым хостом из этого списка (предоставляемого
пользователем, имеющим учетную запись в вашей системе).
Это отличный способ разрешить пользователям отправлять почту
через вашу систему удаленно, одновременно он блокирует отправку
спама.Расширенное руководствоВ следующем разделе рассматриваются более сложные темы, такие как
настройка почты и включение почтовой системы для всего домена.Базовая конфигурацияemailнастройкаИзначально, вы можете отправлять почту во внешний
мир если правильно составлен файл
/etc/resolv.conf или запущен свой сервер
имен. Если вы хотите, чтобы почта, предназначенная для хоста в
вашем домене, доставлялась MTA (например,
sendmail) на вашем хосте FreeBSD, есть два
пути:Запустите свой собственный сервер DNS, тем самым организовав
собственный домен, например, FreeBSD.orgПолучайте почту для вашего хоста непосредственно. Это
работает при доставке почты непосредственно на DNS имя вашей
машины. Например, example.FreeBSD.org.SMTPНезависимо от выбранного из предложенных выше вариантов, для
доставки почты непосредственно на ваш хост у него должен быть
постоянный IP адрес (а не динамический,
как у большинства PPP соединений). Если вы находитесь за
брандмауэром, то последний должен пропускать SMTP-пакеты. Если
вы хотите, чтобы почта приходила непосредственно на ваш
хост, необходимо убедиться в одном из двух:MX recordУбедитесь, что запись (с наименьшим номером) MX в
DNS соответствует IP адресу
вашего хоста.Убедитесь, что в DNS для вашего хоста вообще отсутствует
MX-запись.Выполнение любого из перечисленных условий обеспечит доставку
почты для вашего хоста.Попробуйте это:&prompt.root; hostname
example.FreeBSD.org
&prompt.root; host example.FreeBSD.org
example.FreeBSD.org has address 204.216.27.XXЕсли вы это видите, то можно без проблем посылать почту на
yourlogin@example.FreeBSD.org (предполагается,
что sendmail на example.FreeBSD.org работает правильно).Однако, если вы видите это:&prompt.root; host example.FreeBSD.org
example.FreeBSD.org has address 204.216.27.XX
example.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.orgто вся почта, посланная на example.FreeBSD.org будет собираться на
hub (для того же пользователя), вместо того, чтобы
быть отосланной непосредственно на ваш хост.Эта информация обрабатывается вашим DNS сервером. Соответствующая
запись DNS, указывающая, через какой хост будет проходить ваша
почта, называется MX (Mail
eXchanger). Если для хоста отсутствует такая
запись, почта будет приходить прямо на этот хост.Допустим, что запись MX для хоста freefall.FreeBSD.org в какой-то момент
выглядела так:freefall MX 30 mail.crl.net
freefall MX 40 agora.rdrop.com
freefall MX 10 freefall.FreeBSD.org
freefall MX 20 who.cdrom.comВы видите, что для хоста freefall существуют
несколько MX-записей. Запись с наименьшим номером соответствует
хосту, получающему почту непосредственно, если он доступен; если
он недоступен по каким-то причинам, другие сервера (иногда называемые
(резервными MX) временно получают почту, и хранят ее
пока не станут доступны хосты с меньшими номерами, в конечном итоге
отправляя почту на эти хосты.Чтобы альтернативные MX-хосты использовались наиболее
эффективно, они должны быть независимо подключены к Интернет. Ваш
провайдер (или дружественный сайт) скорее всего без проблем сможет
оказать подобные услуги.Почта для вашего доменаДля настройки почтового хоста (почтовый
сервер) вам потребуется, чтобы почта, направляемая различным рабочим
станциям, пересылалась этому хосту. Обычно вам необходима
доставка всей почты для любого хоста вашего домена (в данном случае
*.FreeBSD.org) на почтовый сервер, чтобы
пользователи могли получать свою почту на с этого сервера.DNSЧтобы облегчить себе (и другим) жизнь, создайте на обеих машинах
учетные записи с одинаковыми именами пользователей, например, с помощью
команды &man.adduser.8;.Сервер, который вы будете использовать в качестве почтового,
должен быть объявлен таковым для каждой машины в домене. Вот
фрагмент примерной конфигурации:example.FreeBSD.org A 204.216.27.XX ; Рабочая станция
MX 10 hub.FreeBSD.org ; Почтовый шлюзТаким образом, вся корреспонденция, адресованная рабочей
станции, будет обрабатываться вашим почтовым сервером, независимо от
того, что указано в A-записи.Все это можно реализовать только в том случае, если вы
используете сервер DNS. Если вы по каким-либо причинам не имеете
возможности установить свой собственный сервер имен, необходимо
договориться с провайдером или теми, кто поддерживает ваш
DNS.Если вы хотите поддерживать несколько виртуальных почтовых
серверов, может пригодиться следующая информация. Допустим, что
ваш клиент зарезервировал домен, например, customer1.org, и вам требуется, чтобы
почта, предназначенная для customer1.org приходила на ваш хост,
например, mail.myhost.com. В таком
случае, DNS должен выглядеть так:customer1.org MX 10 mail.myhost.comЗаметьте, что если вам требуется только получать почту для
домена, соответствующая A-запись не
нужна.Помните, что если вы попытаетесь каким-либо образом обратиться
к хосту customer1.org, у вас
вряд ли что-либо получится, если нет A-записи для этого
хоста.Последнее, что вы должны сделать – это сказать программе
sendmail, для каких доменов и/или хостов
она должна принимать почту. Это можно сделать несколькими
способами:Добавьте названия этих хостов в файл
/etc/mail/local-host-names, если вы используете
FEATURE(use_cw_file). Если у вас
sendmail
версии ниже 8.10, необходимо отредактировать файл
/etc/sendmail.cw.Добавьте строку Cwyour.host.com в файл
/etc/sendmail.cf или
/etc/mail/sendmail.cf (если у вас
sendmail
версии 8.10 или более поздней).SMTP через UUCPНастройка поставляемого с FreeBSD sendmail
предназначена для сайтов, подключенных к интернет непосредственно.
Сайты, осуществляющие обмен почтой через UUCP, должны использовать
другой файл настройки sendmail.Редактирование /etc/mail/sendmail.cf вручную
это сложная задача. sendmail версии 8
генерирует файлы настройки через препроцессор &man.m4.1;, реально
настройка выполняется на более высоком уровне абстракции.
Файлы настройки &man.m4.1; можно найти в
/usr/src/usr.sbin/sendmail/cf.Если вы не установили в систему все исходные тексты, пакет настройки
sendmail можно найти в отдельном архиве
исходных текстов. Если CDROM с исходными текстами
FreeBSD смонтирован, выполните:&prompt.root; cd /cdrom/src
&prompt.root; cat scontrib.?? | tar xzf - -C /usr/src/contrib/sendmailЭта установка займет всего несколько сотен килобайт. Файл
README в каталоге cf
содержит введение в основы настройки &man.m4.1;.Лучшим способом настройки поддержки передачи по UUCP является
использование возможности mailertable.
При этом создается база данных, которая помогает
sendmail решать вопросы маршрутизации.Во-первых, создайте файл .mc. В каталоге
/usr/src/usr.sbin/sendmail/cf/cf находятся
несколько примеров. Возьмем для примера имя файла
foo.mc. Все, что потребуется для преобразования
его в sendmail.cf, это:&prompt.root; cd /usr/src/usr.sbin/sendmail/cf/cf
&prompt.root; make foo.cf
&prompt.root; cp foo.cf /etc/mail/sendmail.cfТипичный .mc файл может выглядеть примерно
так:VERSIONID(`Your version number') OSTYPE(bsd4.4)
FEATURE(accept_unresolvable_domains)
FEATURE(nocanonify)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')
define(`UUCP_RELAY', your.uucp.relay)
define(`UUCP_MAX_SIZE', 200000)
define(`confDONT_PROBE_INTERFACES')
MAILER(local)
MAILER(smtp)
MAILER(uucp)
Cw your.alias.host.name
Cw youruucpnodename.UUCPСтроки, содержащие
accept_unresolvable_domains,
nocanonify, и
confDONT_PROBE_INTERFACES, предотвратят использование
DNS для доставки почты. Пункт UUCP_RELAY
необходим для поддержки доставки по UUCP. Просто поместите сюда
имя хоста в интернет, способного работать с .UUCP адресами
псевдо-доменов; скорее всего, вы введете сюда основной сервер
пересылки почты провайдера.Как только вы сделаете это, потребуется файл
/etc/mail/mailertable. Если вы используете
для всей почты только одно внешнее соединение, подойдет следующий
файл:#
# makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
. uucp-dom:your.uucp.relayБолее сложный пример может выглядеть так:#
# makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
#
horus.interface-business.de uucp-dom:horus
.interface-business.de uucp-dom:if-bus
interface-business.de uucp-dom:if-bus
.heep.sax.de smtp8:%1
horus.UUCP uucp-dom:horus
if-bus.UUCP uucp-dom:if-bus
. uucp-dom:В первых трех строках обрабатываются специальные случаи, когда
почта для домена должна отправляться не на маршрут по умолчанию,
а на ближайшее соединение UUCP для сокращения пути доставки.
Следующая строка обрабатывает почту, которая может быть доставлена
по SMTP для локального Ethernet домена. Наконец, определены
маршруты UUCP в нотации псевдо-доменов .UUCP, для включения
перезаписи правил по умолчанию правилом
uucp-neighbor
!recipient.
Последняя строка всегда содержит одиночную точку, означающую
все остальное, с отправкой через UUCP, являющимся
универсальным почтовым шлюзом. Все имена узлов после ключевого слова
uucp-dom: должны представлять существующие маршруты
UUCP, проверить их можно с помощью команды
uuname.Напоминаем, что этот файл должен быть преобразован в базу данных
DBM перед использованием. Командную строку для этой задачи лучше всего
поместить в качестве комментария в верхней части файла
mailertable. Всегда выполняйте эту команду после
правки файла mailertable.И наконец: если вы не уверены, что некоторые отдельные почтовые
маршруты будут работать, запомните параметр
sendmail . С этим
параметром sendmail запускается в
режиме тестирования адреса; просто введите
3,0 и адрес, который вы хотите протестировать.
В последней строке появится сообщение об используемом внутреннем
почтовом агенте, хосте назначения, с которым вызывается этот агент,
и (возможно транслированный) адрес. Выход из этого режима
происходит при нажатии CtrlD.&prompt.user; sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
>3,0 foo@example.com
canonify input: foo @ example . com
...
parse returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . >
>^DBillMoranПредоставил Настройка почты только для отправкиСуществует множество случаев, когда может потребоваться только
отправка почты через почтовый сервер. Вот отдельные примеры:У вас настольный компьютер, но вы хотите использовать такие
программы как &man.send-pr.1;. Для пересылки почты вам потребуется
использовать почтовый сервер провайдера.Ваш компьютер является сервером, где почта не хранится локально,
необходима только переправка всей почты через внешний почтовый
сервер.Практически любой MTA способен работать и в
этих условиях. К сожалению, может быть очень сложно правильно настроить
полноценный MTA для работы только с исходящей
почтой. Такие программы, как sendmail
и postfix слишком избыточны для этих
целей.К тому же, если вы используете обычные средства доступа в
интернет, условий для запуска почтового сервера может
быть недостаточно.Простейшим способом удовлетворить имеющиеся потребности может быть
установка порта mail/ssmtp.
Выполните под root следующие команды:&prompt.root; cd /usr/ports/mail/ssmtp
&prompt.root; make install replace cleanПосле установки потребуется настроить
mail/ssmtp с помощью файла из
четырех строк, расположенного в
/usr/local/etc/ssmtp/ssmtp.conf:root=yourrealemail@example.com
mailhub=mail.example.com
rewriteDomain=example.com
hostname=_HOSTNAME_Убедитесь, что используете существующий почтовый адрес для
root. Введите сервер вашего провайдера для
пересылки исходящей почты вместо mail.example.com (некоторые провайдеры
называют его сервером исходящей почты или
SMTP сервером).Убедитесь, sendmail выключен путем
добавления строки sendmail_enable="NONE"
в /etc/rc.conf.У пакета mail/ssmtp имеются
и другие параметры. Обратитесь к файлу с примером настройки
в /usr/local/etc/ssmtp или к странице справочника
ssmtp за примерами и дополнительной
информацией.Установка ssmtp таким способом
позволит правильно работать любым программам на вашем компьютере,
которым требуется отправка почты, но не нарушит политику вашего
провайдера и не позволит вашему компьютеру быть использованным
спамерами.Использование почты с коммутируемым соединениемЕсли у вас есть статический IP, настройки по умолчанию менять
не потребуется. Установите имя хоста в соответствии с присвоенным
именем интернет и sendmail будет делать
свою работу.Если у вас динамический IP адрес и используется коммутируемое
PPP соединение с интернет, у вас возможно уже есть почтовый ящик
на сервере провайдера. Предположим, что домен провайдера называется
example.net, и что ваше
имя пользователя user, ваш компьютер называется
bsd.home, и провайдер сообщил вам, что
возможно использование relay.example.net в качестве сервера для пересылки
почты.Для получения почты из почтового ящика необходима установка
соответствующей программы. Хорошим выбором является
утилита fetchmail, она поддерживает
множество различных протоколов. Эта программа доступна в виде
пакета или из коллекции портов (mail/fetchmail). Обычно провайдер
предоставляет доступ по протоколу POP. Если
вы работаете с пользовательским PPP, то можете
автоматически забирать почту после установления соединения с
интернет с помощью следующей записи в
/etc/ppp/ppp.linkup:MYADDR:
!bg su user -c fetchmailЕсли вы используете sendmail (как
показано ниже) для доставки почты к не-локальным учетным записям,
вам возможно потребуется обработка почтовой очереди
sendmail сразу после установки
соединения с интернет. Для выполнения этой работы поместите
в /etc/ppp/ppp.linkup следующую команду
сразу после fetchmail: !bg su user -c "sendmail -q"Предполагается, что учетная запись для
user существует на bsd.home. В домашнем каталоге
user на bsd.home, создайте файл
.fetchmailrc:poll example.net protocol pop3 fetchall pass MySecretЭтот файл не должен быть доступен на чтение никому, кроме
user, поскольку в нем находится пароль
MySecret.Для отправки почты с правильным заголовком
from:, вам потребуется сообщить
sendmail использовать
user@example.net вместо
user@bsd.home. Вы можете также указать
sendmail отправлять почту через relay.example.net, для более быстрой пересылки
почты.Должен подойти следующий файл .mc:VERSIONID(`bsd.home.mc version 1.0')
OSTYPE(bsd4.4)dnl
FEATURE(nouucp)dnl
MAILER(local)dnl
MAILER(smtp)dnl
Cwlocalhost
Cwbsd.home
MASQUERADE_AS(`example.net')dnl
FEATURE(allmasquerade)dnl
FEATURE(masquerade_envelope)dnl
FEATURE(nocanonify)dnl
FEATURE(nodns)dnl
define(`SMART_HOST', `relay.example.net')
Dmbsd.home
define(`confDOMAIN_NAME',`bsd.home')dnl
define(`confDELIVERY_MODE',`deferred')dnlОбратитесь к предыдущему разделу за информацией о том, как
преобразовать этот файл .mc в файл
sendmail.cf. Не забудьте также перезапустить
sendmail после обновления
sendmail.cf.JamesGorhamНаписал SMTP аутентификацияНаличие SMTP аутентификации на почтовом сервере
дает множество преимуществ. SMTP аутентификация
может добавить дополнительный уровень безопасности к
sendmail, и позволяет мобильным пользователям,
подключающимся к разным хостам, возможность использовать тот же
почтовый сервер без необходимости перенастройки почтового клиента
при каждом подключении.Установите security/cyrus-sasl
из портов. Вы можете найти этот порт в
security/cyrus-sasl.
В пакете security/cyrus-sasl
есть множество параметров компиляции, и для используемого здесь
метода убедитесь, что выбран параметр
.После установки
security/cyrus-sasl,
отредактируйте /usr/local/lib/sasl/Sendmail.conf
(или создайте его если он не существует) и добавьте следующую
строку:pwcheck_method: passwdЭтот метод включит аутентификацию
sendmail через базу данных
passwd FreeBSD. Это позволяет избежать
проблем, связанных с созданием нового набора имен пользователей
и паролей для каждого пользователя, которому необходима
SMTP аутентификация, пароль для входа в систему
и для отправки почты будет одним и тем же.Теперь отредактируйте /etc/make.conf и
добавьте следующие строки:SENDMAIL_CFLAGS=-I/usr/local/include/sasl1 -DSASL
SENDMAIL_LDFLAGS=-L/usr/local/lib
SENDMAIL_LDADD=-lsaslЭти параметры необходимы sendmail
для подключения cyrus-sasl
во время компиляции. Убедитесь, что cyrus-sasl был установлен до
перекомпиляции sendmail.Перекомпилируйте sendmail, выполнив
следующие команды:&prompt.root; cd /usr/src/usr.sbin/sendmail
&prompt.root; make cleandir
&prompt.root; make obj
&prompt.root; make
&prompt.root; make installКомпиляция sendmail должна пройти
без проблем, если /usr/src не был сильно
изменен и доступны необходимые разделяемые библиотеки.После компилирования и переустановки
sendmail, отредактируйте файл
/etc/mail/freebsd.mc (или тот файл, который
используется в качестве .mc; многие
администраторы используют в качестве имени этого файла
вывод &man.hostname.1; для обеспечения уникальности).
Добавьте к нему следующие строки:dnl set SASL options
TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
define(`confDEF_AUTH_INFO', `/etc/mail/auth-info')dnlЭти параметры настраивают различные методы, доступные
sendmail для аутентификации пользователей.
Если вы хотите использовать вместо
pwcheck другой метод, обратитесь к
прилагаемой документации.Наконец, запустите &man.make.1; в каталоге
/etc/mail. Из файла
.mc будет создан файл
.cf, называющийся
freebsd.cf (или с тем именем, которое было
использовано для файла .mc). Затем
используйте команду make install restart,
которая скопирует файл в sendmail.cf,
и правильно перезапустит sendmail.
Дополнительная информация об этом процессе находится в
/etc/mail/Makefile.Если все шаги пройдены успешно, введите информацию для
аутентификации в настройки почтового клиента и отправьте тестовое
сообщение. Для определения причин возможных ошибок установите
параметр sendmail
в 13 и просмотрите
/var/log/maillog.Для включения сервиса после каждой загрузки системы вам может
потребоваться добавление в /etc/rc.conf
следующих строк:sasl_pwcheck_enable="YES"
sasl_pwcheck_program="/usr/local/sbin/pwcheck"Эти строки инициализируют SMTP_AUTH при загрузке
системы.За дальнейшей информацией обратитесь к странице
sendmail, посвященной
SMTP аутентификации.MarcSilverПредоставил Почтовые программы пользователейпочтовые программы пользователейПочтовая программа пользователя (Mail User Agent,
MUA) это приложение, используемое для отправки
и получения почты. Кроме того, поскольку почта
эволюционирует и становится более сложной,
MUA совершенствуют свои функции по обработке
почты, становятся более удобны в использовании. &os; поддерживает
множество различных пользовательских почтовых программ, каждая
из которых может быть легко установлена из коллекции портов FreeBSD. Пользователи могут
выбирать между графическими почтовыми клиентами, такими как
evolution или
balsa, консольными клиентами, такими
как mutt, pine
или mail, или веб интерфейсами, используемыми в
некоторых больших организациях.mailВ &os; в качестве MUA по умолчанию используется
&man.mail.1;. Это консольный MUA, предоставляющий
все основные функции, необходимые для отправки и получения текстовых
сообщений, хотя его возможности по работе с вложениями ограничены и
он может работать только с локальными почтовыми ящиками.Хотя mail не поддерживает работу с серверами
POP или IMAP, эти почтовые
ящики могут быть загружены в локальный файл mbox
с помощью fetchmail, который будет
обсуждаться далее в этой главе ().Для отправки и получения почты просто выполните команду
mail, как в этом примере:&prompt.user; mailСодержимое почтового ящика в каталоге
/var/mail будет автоматически
прочитано утилитой mail. Если почтовый ящик
пуст, утилита завершит работу с сообщением о том, что почта не
была обнаружена. После чтения почтового ящика запустится
интерфейс программы и будет отображен список сообщений. Сообщения
нумеруются автоматически и будут выглядеть как в этом примере:Mail version 8.1 6/6/93. Type ? for help.
"/var/mail/marcs": 3 messages 3 new
>N 1 root@localhost Mon Mar 8 14:05 14/510 "test"
N 2 root@localhost Mon Mar 8 14:05 14/509 "user account"
N 3 root@localhost Mon Mar 8 14:05 14/509 "sample"Теперь сообщения могут быть прочитаны с помощью команды
t, завершаемой номером сообщения, которое должно
быть отображено. В этом примере мы прочтем первое сообщение:& t 1
Message 1:
From root@localhost Mon Mar 8 14:05:52 2004
X-Original-To: marcs@localhost
Delivered-To: marcs@localhost
To: marcs@localhost
Subject: test
Date: Mon, 8 Mar 2004 14:05:52 +0200 (SAST)
From: root@localhost (Charlie Root)
This is a test message, please reply if you receive it.Как видно в примере выше, клавиша t выводит
сообщение со всеми заголовками. Для повторного вывода
списка сообщений необходимо использовать клавишу
h.Если требуется ответить на сообщение, используйте для
ответа mail, нажав клавишу R или
r. Клавиша R используется в
mail для ответа только отправителю,
а r для ответа и отправителю, и другим получателям
сообщения. Вы можете также завершить эти команды номером письма,
на которое хотите составить ответ. После этого необходимо ввести
ответ, конец сообщения должен быть завершен символом
. на новой строке. Пример можно увидеть ниже:& R 1
To: root@localhost
Subject: Re: test
Thank you, I did get your email.
.
EOTДля отправки нового сообщения используйте клавишу
m и введите адрес получателя. Несколько получателей
могут быть указаны через запятую. Введите тему сообщения и
его содержимое. Конец сообщения отмечается помещением
символа . на новой строке.& mail root@localhost
Subject: I mastered mail
Now I can send and receive email using mail ... :)
.
EOTВ утилите mail для вызова справки в любой
момент может быть использована команда ?,
для получения помощи по mail необходимо также
обратиться к странице справочника &man.mail.1;.Как упоминалось выше, команда &man.mail.1; не была первоначально
предназначена для работы с вложениями, и поэтому их поддержка
довольно слабая. Современные MUA,
такие как mutt, работают с вложениями
гораздо более уверенно. Но если вы все же предпочитаете
использовать mail,
установите порт converters/mpack.muttmutt это небольшая но очень
мощная почтовая программа с отличными возможностями, в числе
которых:Возможность сортировки сообщений по дискуссиям;Поддержка PGP для подписи и шифрования сообщений;Поддержка MIME;Поддержка Maildir;Широкие возможности настройки.Все эти возможности делают
mutt одним из самых лучших почтовых
клиентов. Обратитесь к за
дополнительной информацией по mutt.Стабильная версия mutt может быть
установлена из порта mail/mutt.
После установки порта, mutt может
быть запущен следующей командой:&prompt.user; muttmutt автоматически прочтет содержимое
пользовательского почтового ящика в каталоге /var/mail и отобразит почту,
если она имеется в наличии. Если почты в ящике пользователя нет,
mutt будет ожидать команд от пользователя.
В примере ниже показан mutt со
списком сообщений:Для чтения почты просто выберите сообщение с помощью клавиш
навигации и нажмите Enter. Пример
mutt, отображающего сообщение, показан
ниже:Как и команда &man.mail.1;, mutt
позволяет пользователям отвечать как только отправителю, так и всем
получателям. Для ответа только отправителю почты, используйте
клавишу r. Для группового ответа и отправителю
сообщения и всем получателям используйте клавишу
g.mutt использует &man.vi.1; в качестве
редактора для создания писем и ответа на них. Редактор можно
заменить путем создания или редактирования собственного
.muttrc в своем домашнем каталоге и установки
переменной .Для создания нового почтового сообщения нажмите
m. После введения темы
mutt запустит &man.vi.1; для создания
письма. Как только письмо будет завершено, сохраните его и закройте
vi, mutt продолжит
работу, отобразив окно с сообщением, которое должно быть отправлено.
Для отправки сообщения нажмите y. Пример окна с
сообщением показан ниже:mutt также содержит исчерпывающий
справочник, к которому можно обратиться из большинства меню,
нажав клавишу ?. Верхняя строка также показывает
клавиатурные сокращения, которые могут быть использованы.pinepine предназначен для начинающих
пользователей, но включает некоторые дополнительные
возможности.В программе pine ранее были обнаружены некоторые уязвимости,
позволяющие удаленному взломщику выполнять произвольный код
с правами пользователя локальной системы путем отправки
специально подготовленного письма. Все эти
известные проблемы были исправлены,
но код pine написан в очень небезопасном стиле и офицеры
безопасности &os; считают, что возможно наличие других
не обнаруженных уязвимостей. Имейте это ввиду при установке
pine.Текущая версия pine может быть
установлена из порта mail/pine4.
Как только порт установлен, pine можно
запустить командой:&prompt.user; pineПри первом запуске pine отображает
страницу приветствия с кратким введением, а также просьбу
команды разработчиков pine
отправить анонимное почтовое сообщение, позволяющее им
определить количество пользователей, работающих с их почтовым
клиентом. Для отправки анонимного сообщения нажмите
Enter, или E для выхода
из из приветствия без отправки анонимного сообщения. Пример
приветствия показан ниже:Затем отображается главное меню, перемещение по которому
осуществляется с помощью клавиш навигации. В главном меню
находятся ссылки для составления новых писем, просмотра почтовых
каталогов, и даже управления адресной книгой. Ниже главного меню
показаны клавиатурные сокращения, выполняющие
соответствующие задачи.По умолчанию pine открывает каталог
inbox. Для просмотра списка
сообщений нажмите I, или выберите
MESSAGE INDEX, как показано ниже:В списке показаны сообщения в текущем каталоге, они могут быть
просмотрены с помощью клавиш навигации. Подсвеченные сообщения
можно прочесть нажав Enter.На снимке экрана ниже показан пример письма, отображаемого
pine. Внизу экрана даны клавиатурные
сокращения. Например, r используется для
указания MUA ответить на отображаемое в
данный момент сообщение.Ответ на письмо в pine осуществляется
с помощью редактора pico, который
устанавливается по умолчанию вместе с pine.
pico упрощает навигацию в сообщении
гораздо проще для новых пользователей, чем &man.vi.1; или
&man.mail.1;. Как только ответ будет готов, сообщение можно отправить
нажав CtrlX.
pine запросит подтверждение.Программа pine может быть настроена
через пункт SETUP главного меню.
Обратитесь к странице
за дальнейшей информацией.MarcSilverПредоставил Использование fetchmailиспользование fetchmailfetchmail это полноценный
IMAP и POP клиент,
позволяющий пользователям автоматически загружать почту с
удаленных серверов IMAP и POP
в локальные почтовые ящики; так доступ к почтовым ящикам упрощается.
fetchmail может быть установлен из
порта mail/fetchmail и
предоставляет различные возможности, в том числе:Поддержка протоколов POP3,
APOP, KPOP,
IMAP, ETRN и
ODMR.Возможность пересылки почты через SMTP,
что позволяет использовать функции фильтрации, перенаправления и
синонимов.Может быт запущен в режиме даемона для периодической проверки
поступающих сообщений.Может забирать почту с нескольких почтовых ящиков и рассылать
ее различным локальным пользователям в зависимости от
настроек.Описание всех возможностей
fetchmail выходит за пределы этой главы,
за дополнительной информацией обратитесь к документации по
fetchmail. Утилита
fetchmail требует наличия
файла настройки .fetchmailrc. Этот файл
включает информацию о сервере, а также информацию для аутентификации.
Поскольку этот файл содержит важную информацию, правильно будет
сделать его доступным для чтения только владельцем с помощью
следующей команды:&prompt.user; chmod 600 .fetchmailrcВ следующем примере файл .fetchmailrc
предназначен для загрузки одного почтового ящика по протоколу
POP. Этот файл указывает
fetchmail соединиться с
example.com с именем пользователя
joesoap и паролем XXX.
В примере подразумевается, что пользователь joesoap
существует также и в локальной системе.poll example.com protocol pop3 username "joesoap" password "XXX"В следующем примере производится подключение к нескольким
POP и IMAP серверам,
при необходимости почта перенаправляется другим локальным
пользователям:poll example.com proto pop3:
user "joesoap", with password "XXX", is "jsoap" here;
user "andrea", with password "XXXX";
poll example2.net proto imap:
user "john", with password "XXXXX", is "myth" here;Утилита fetchmail может работать
в режиме даемона с флагом , заданным с
интервалом (в секундах), через который
fetchmail должен опрашивать
серверы, перечисленные в .fetchmailrc.
В следующем примере fetchmail будет
забирать почту каждые 60 секунд:&prompt.user; fetchmail -d 60Дополнительную информацию о fetchmail
можно найти на сайте .MarcSilverПредоставил Использование procmailиспользование procmailУтилита procmail это невероятно
мощное приложение, используемое для фильтрации входящей почты.
Она позволяет пользователям определять правила,
которые могут быть сопоставлены входящим письмам для выполнения
определенных действий или для перенаправления почты в
альтернативные почтовые ящики и/или на почтовые адреса.
procmail может быть установлен
с помощью порта mail/procmail.
После установки он может быть непосредственно интегрирован в
большинство MTA; сверьтесь с документацией
на ваш MTA. Другой способ интеграции
procmail – добавление в
файл .forward, находящийся в домашнем
каталоге пользователя, следующей строки:"|exec /usr/local/bin/procmail || exit 75"В этом разделе будут показаны основы настройки правил
procmail, а также краткое описание их
действия. Эти и другие правила должны быть помещены в файл
.procmailrc, который должен находиться в домашнем
каталоге пользователя.Большую часть этих правил также можно найти на странице справочника
&man.procmailex.5;.Перенаправление всей почты от user@example.com на
внешний адрес goodmail@example2.com::0
* ^From.*user@example.com
! goodmail@example2.comПеренаправление всей почты объемом меньше 1000 байт на внешний адрес
goodmail@example2.com::0
* < 1000
! goodmail@example2.comПеренаправление всей почты, отправляемой на
alternate@example.com, в почтовый ящик
alternate::0
* ^TOalternate@example.com
alternateПеренаправление всей почты с Spam в
/dev/null::0
^Subject:.*Spam
/dev/nullПолезный пример, обрабатывающий входящую почту со списков
рассылки &os;.org и
помещающий каждый список в отдельный почтовый ящик.:0
* ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG
{
LISTNAME=${MATCH}
:0
* LISTNAME??^\/[^@]+
FreeBSD-${MATCH}
}
diff --git a/ru_RU.KOI8-R/books/handbook/multimedia/chapter.sgml b/ru_RU.KOI8-R/books/handbook/multimedia/chapter.sgml
index f8d45192b7..7d9f73518b 100644
--- a/ru_RU.KOI8-R/books/handbook/multimedia/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/multimedia/chapter.sgml
@@ -1,1906 +1,1906 @@
MosesMooreПредоставил АлександрКоваленкоПеревод на русский язык: ДенисПеплинМультимедиаКраткий обзорFreeBSD поддерживает большое количество различных звуковых
карт, что позволяет вам насладится высококачественным звуком. Также это
дает вам возможность записывать и воспроизводить звуковые файлы в формате
MPEG Audio Layer 3 (MP3), WAV, Ogg Vorbis, а также во множестве других
форматов. Коллекция Портов FreeBSD также содержит ряд приложений,
позволяющих редактировать записанные звуковые файлы, добавлять звуковые
эффекты, управлять подключенными MIDI устройствами.Также FreeBSD может поддерживать воспроизведение видеофайлов и DVD.
Количество приложений, позволяющих кодировать, преобразовывать и
воспроизводить различные форматы видео, существенно меньше
количества приложений для работы со звуком. Например, на время написания
этого документа в Коллекции Портов FreeBSD не существовало хорошего
приложения для преобразования видео, которое могло бы быть использовано
для преобразований между разными форматами, как, например, audio/sox. Впрочем, ситуация в этой области
меняется быстро.Эта глава описывает необходимые шаги для настройки вашей звуковой
карты. Настройка и установка X11 () уже охватывает вопросы, связанные с аппаратными
установками вашей видеокарты, хотя могут быть возможности
дополнительной настройки для улучшения воспроизведения.После прочтения этой главы вы будете знать:Как настроить систему так, чтобы звуковая карта была
опознана.Методы проверки работы звуковой карты при помощи тестовых
приложений.Как исправить проблемы, возникающие при работе со звуковыми
картами.Как прослушать и создать MP3 и другие форматы.Как X сервер поддерживает видео.Некоторые проигрыватели и кодировщики видео, которые показывают
хорошие результаты.Как воспроизвести DVD, .mpg и
.avi файлы.Как скопировать информацию с CD и DVD в файлы.Как настроить ТВ тюнер.Как настроить сканер.Прежде, чем начать читать эту главу вы должны:Знать как конфигурировать и устанавливать новое ядро
().Попытка смонтировать аудио CD при помощи команды
&man.mount.8; как минимум, сообщит об ошибке и, как максимум, может
привести к панике ядра. Эти носители имеют
специальные форматы, которые отличны от обычной файловой системы
ISO.MosesMooreПредоставил MarcFonvieilleРасширил для &os; 5.X Настройка звуковой картыНастройка системыPCIISAзвуковые картыПеред тем как начать, определите модель вашей карты,
процессор, который она использует, и интерфейс карты: PCI или ISA.
FreeBSD поддерживает множество разных PCI и ISA карт.
Сверьтесь со списком поддерживаемых аудио устройств в Информации об оборудовании,
чтобы проверить, поддерживается ли ваша карта. Этот документ также
содержит информацию о том, какой драйвер поддерживает вашу
карту.ядроконфигурацияДля того, чтобы использовать звуковую карту, вы должный загрузить
соответствующий драйвер устройства. Этого можно достигнуть двумя путями.
Простейший способ – это просто загрузить соответствующий вашей карте
модуль ядра используя &man.kldload.8;, что можно сделать или из командной
строки:&prompt.root; kldload snd_emu10k1или добавлением соответствующей строки к файлу
/boot/loader.conf:snd_emu10k1_load="YES"Эти примеры приведены для звуковой карты Creative
&soundblaster; Live!. Другие имеющиеся модули драйверов
звуковых карты приведены в
/boot/defaults/loader.conf
Если вы не уверены, какой драйвер использовать, попробуйте загрузить
snd_driver:&prompt.root; kldload snd_driverЭто мета-драйвер, загружающий сразу все наиболее распространенные
драйверы сразу. это повышает скорость поиска правильного драйвера.
Возможна также загрузка всех звуковых драйверов через
/boot/loader.conf.В &os; 4.X для загрузки всех звуковых драйверов вам будет
необходимо загрузить модуль snd вместо
snd_driver.Другой способ заключается в
добавлении статического драйвера в ядро. В разделе ниже дана
более подробная информация о том, что вам нужно сделать для добавления
поддержки оборудования. Более подробно о конфигурация ядра описана в
.Настройка собственного ядра с поддержкой звукаПервое, что необходимо сделать, это добавить в ядро
общий звуковой драйвер &man.sound.4;. Добавьте в
файл конфигурации ядра следующую строку:device soundВ &os; 4.X, вам необходимо использовать следующую
строку:device pcmЗатем необходимо добавить поддержку имеющейся звуковой
карты. Следовательно, нужно знать какой драйвер поддерживает
карту. Для этого сверьтесь со списком поддерживаемых
устройств из Информации об оборудовании.
Например, звуковая карта Creative &soundblaster; Live!
поддерживается драйвером &man.snd.emu10k1.4;.
Для добавления поддержки этой карты, используйте:device "snd_emu10k1"Прочтите страницу справочника драйвера, чтобы узнать,
какой синтаксис использовать. Информация, относящаяся
к синтаксису включения звуковых драйверов в файл конфигурации
ядра, может быть также найдена в файле
(/usr/src/sys/i386/conf/LINT для
&os; 4.X).Не-PnP ISA карты могут потребовать включения в ядро
информации о настройках звуковой карты (IRQ, I/O port,
и т.д.). Эта информация добавляется редактированием
файла /boot/device.hints.
Во время загрузки системы &man.loader.8; прочтет этот
файл и настройки ядру. Например, старая ISA не-PnP карта
Creative &soundblaster; 16 использует драйвер &man.snd.sbc.4;
со следующей строкой, добавленной к файлу настройки ядра:device sbcи со следующей информацией в
/boot/device.hints:hint.sbc.0.at="isa"
hint.sbc.0.port="0x220"
hint.sbc.0.irq="5"
hint.sbc.0.drq="1"
hint.sbc.0.flags="0x15"В данном случае, карта использует порт ввода-вывода
0x220 и IRQ 5.Синтаксис, используемый в файле
/boot/device.hints, описан в справочной
странице драйвера. В &os; 4.X эти настройки записываются
непосредственно в файл конфигурации ядра. В случае ISA
карты используется такая строка:device sbc0 at isa? port 0x220 irq 5 drq 1 flags 0x15Установки, приведенные выше, используются по умолчанию.
В некоторых случаях вам может потребоваться изменить IRQ
или другие настройки в соответствии с настройками карты.
За более подробной информацией обратитесь к странице справочника
&man.snd.sbc.4;.В &os; 4.X некоторые системы со встроенной в
материнскую плату звуковой картой могут потребовать
следующей строки в файле настройки ядра:options PNPBIOSТестирование звуковой картыПосле перезагрузки модифицированного ядра, или после загрузки
необходимого модуля, звуковая карта должна появиться в буфере
системных сообщений (&man.dmesg.8;) примерно так:pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0
pcm0: [GIANT-LOCKED]
pcm0: <Cirrus Logic CS4205 AC97 Codec>Статус звуковой карты может быт проверен через файл
/dev/sndstat:&prompt.root; cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384
kld snd_ich (1p/2r/0v channels duplex default)Вывод этой команды для вашей системы может отличаться.
Если устройства pcm не появились, вернитесь
назад и проверьте выполненные действия. Проверьте файл настройки
ядра еще раз и убедитесь, что выбрано подходящее устройство.
Часто встречающиеся проблемы приведены в .Если всё пройдет удачно, звуковая карта заработает. Если
CD-ROM или DVD-ROM привод правильно подключён к звуковой карте, вы можете
вставить CD в привод и воспроизвести его при помощи
&man.cdcontrol.1;.&prompt.user; cdcontrol -f /dev/acd0 play 1Различные приложения, например audio/workman может предоставить
более дружественный
пользователю интерфейс. Вы можете также установить
приложения для прослушивания звуковых файлов MP3, как например
audio/mpg123. Быстрым способом
тестирования звуковой карты является отправка данных в
файл /dev/dsp, как здесь:&prompt.user; cat filename > /dev/dspгде filename может быть любым
файлом. Результатом выполнения этой команды станет шум,
который означает, что звуковая карта на самом деле
работает.Пользователям &os; 4.X потребуется создать устройства
звуковой карты перед тем, как ее использовать. Если в буфере
системных сообщений карта появилась как
pcm0, вам необходимо выполнить от
root следующее:&prompt.root; cd /dev
&prompt.root; sh MAKEDEV snd0Если карта обнаружена как pcm1,
выполните то же самое, заменив
snd0 на
snd1.MAKEDEV создаст группу файлов устройств,
которые будут использоваться различными звуковыми
приложениями.Уровни громкости звука могут быть изменены командой &man.mixer.8;.
Более подробная информация находится на странице справочной системы
&man.mixer.8;.Часто встречающиеся проблемыфайлы устройствпорт ввода-выводаIRQDSP
-
+ ОшибкаРешениеunsupported subdevice XXОдно или более устройств не были правильно
созданы. Повторите приведенные выше шаги.sb_dspwr(XX) timed outПорт ввода-вывода указан неправильно.bad irq XXIRQ установлен неправильно. Убедитесь, что
настройки в системе и на карте одинаковы.xxx: gus pcm not attached, out of
memoryДля использования устройства недостаточно
памяти.xxx: can't open /dev/dsp!Проверьте с помощью fstat | grep
dsp, не занято ли устройство другим приложением.
Создать проблемы могут esound и
поддержка звука в KDE.MunishChopraПредоставил Использование нескольких источников звукаДостаточно часто встречается необходимость иметь несколько источников
звука, которые должны воспроизводить одновременно, например когда
esound или artsd не
поддерживают совместное использование звукового устройства с некоторым
приложением.FreeBSD позволяет делать это при помощи виртуальных
звуковых каналов, которые могут быть настроены с помощью
&man.sysctl.8;. Виртуальные каналы позволяют вам мультиплексировать
каналы воспроизведения звуковой карты, смешивая звук в ядре.Для установки количества виртуальных каналов вы можете использовать
две переменные sysctl, которые, если вы пользователь root,
могут быть установлены таким образом:&prompt.root; sysctl hw.snd.pcm0.vchans=4
&prompt.root; sysctl hw.snd.maxautovchans=4В этом примере выделяются четыре виртуальных канала, чего вполне
достаточно для повседневного использования.
hw.snd.pcm0.vchans это количество виртуальных каналов
устройства pcm0, оно может быть установлено сразу
же, как только устройство было подключено.
hw.snd.maxautovchans это количество виртуальных
каналов, которые выделяются новому аудио устройству, когда оно
подключается при помощи &man.kldload.8;. Так как модуль
pcm может быть загружен независимо от аппаратных
драйверов, hw.snd.maxautovchans может указывать
количество виртуальных каналов для любых устройств, которые будут подключены
позже.Если вы не используете &man.devfs.5;, необходимо будет указать
приложениям
/dev/dsp0.x, где
x это число от 0 до 3, если
hw.snd.pcm0.vchans установлено в значение 4. Для
системы, использующей &man.devfs.5;, вышеуказанные настройки будут
сделаны автоматически прозрачно для пользователя.JosefEl-RayesПредоставил Установка значений по умолчанию для каналов mixerЗначения по умолчанию для различных каналов mixer жестко
прописаны в исходных текстах драйвера &man.pcm.4;. Существует
множество различных приложений и даемонов, которые позволяют
устанавливать значения для mixer, которые они запоминают
и выставляют каждый раз при запуске, но это не совсем
правильное решение, нам нужны значения по умолчанию на уровне
драйвера. Они могут быть установлены путем указания
в /boot/device.hints. Например:hint.pcm.0.vol="100"Установит значение для канала volume в значение по умолчанию
100, как только будет загружен модуль &man.pcm.4;.Только &os; 5.3 и более свежие релизы поддерживают
эту возможность.ChernLeeПредоставил Звук MP3MP3 (MPEG Layer 3 Audio) достигает качества звука, близкого к CD, и
нет причин не воспользоваться им на вашей рабочей
станции.Проигрыватели MP3На данный момент наиболее популярным MP3-проигрывателем для
&xfree86; является
XMMS (X Multimedia System). Скины приложения
WinAMP могут быть использованы для
XMMS так как графический интерфейс
пользователя практически идентичен интерфейсу программы
WinAMP от Nullsoft.
XMMS поддерживает также собственные
расширения.XMMS может быть установлен из порта или
пакета multimedia/xmms.Интерфейс XMMS интуитивно понятен и
включает в себя список песен, графический эквалайзер и многое другое.
Те, кто знаком с WinAMP найдут
XMMS очень простым в использовании.Порт audio/mpg123 является
альтернативой, это MP3-проигрыватель для командной строки.mpg123 может быть запущен с указанием
звукового устройства и файла MP3 в командной строке как показано
ниже:&prompt.root; mpg123 -a /dev/dsp1.0 Foobar-GreatestHits.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
Uses code from various people. See 'README' for more!
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!
Playing MPEG stream from Foobar-GreatestHits.mp3 ...
MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo
/dev/dsp1.0 должно быть заменено соответствующим
устройством dsp для вашей системы.Копирование аудио дорожек с CDПеред тем как преобразовывать CD или дорожку CD в MP3, аудио данные
на CD должны быть скопированы на жёсткий диск. Это можно сделать путём
копирования данных CDDA (CD Digital Audio) в файл WAV.Утилита cdda2wav, которая является частью пакета
sysutils/cdrtools, может быть
использована для копирования аудио информации с CD, а также различной
связанной информации.Когда музыкальный CD находится в приводе, следующая команда может
быть выполнена под root для того,
чтобы скопировать весь CD в отдельные (один на каждую дорожку) WAV
файлы:&prompt.root; cdda2wav -D 0,1,0 -Bcdda2wav поддерживает ATAPI (IDE)
приводы CDROM. Для копирования с IDE привода, укажите имя устройства
вместо номеров SCSI. Например, для того, чтобы скопировать 7-ую
аудио дорожку с IDE-привода:&prompt.root; cdda2wav -D /dev/acd0a -t 7Параметр
указывает устройство SCSI 0,1,0,
соответственно результату работы cdrecord
-scanbus.Для того, чтобы копировать отдельные дорожки, используйте параметр
как показано ниже:&prompt.root; cdda2wav -D 0,1,0 -t 7Этот пример показывает как скопировать 7-ю дорожку музыкального CD.
Для того чтобы скопировать набор дорожек, например, с первой по
седьмую, укажите диапазон:&prompt.root; cdda2wav -D 0,1,0 -t 1+7Утилита &man.dd.1; также может быть использована для копирования
аудио дорожек на приводах ATAPI, для того, чтобы узнать больше об этом,
прочитайте .Создание (encoding) файлов MP3На сегодняшний день наилучшим выбором программы для создания mp3
является lame.
Lame находится в дереве портов в подкаталоге
audio/lame.Используя скопированные файлы WAV следующая команда преобразует
audio01.wav в
audio01.mp3:&prompt.root; lame -h -b 128 \
--tt "Foo Song Title" \
--ta "FooBar Artist" \
--tl "FooBar Album" \
--ty "2001" \
--tc "Ripped and encoded by Foo" \
--tg "Genre" \
audio01.wav audio01.mp3Частота 128 килобит является стандартом "де факто" для MP3. Многие,
однако, используют более высокие частоты для получения лучшего
качества, 160 или 192 килобита. Чем выше частота, тем больше дискового
пространства будет занимать получаемый MP3, но качество будет выше.
Параметр включает режим лучшее качество, но
меньше скорость. Параметры, начинающиеся с
указывают теги ID3, которые обычно содержат информацию о песне,
включаемую в файл MP3. О дополнительных настройках преобразования можно
узнать, прочитав страницу руководства lame.Декодирование MP3Для того, чтобы записать музыкальный CD из файлов MP3, они должны
быть преобразованы в несжатый формат WAV. Как
XMMS, так и
mpg123 поддерживают вывод MP3 в
распакованный формат файлов.Запись на диск в XMMS:Запустите XMMS:Нажмите правой кнопкой мыши в главном окне
XMMS для того, чтобы показать меню.Выберите Preferences (либо
Свойства, если у вас локализованная версия
XMMS) в
Options.Измените расширение вывода на Disk Writer Plugin
(или Расширение записи на диск, если у вас
локализованная версия XMMS).Нажмите Configure (или
Настройка, если у вас локализованная версия
XMMS).Введите (или выберите при помощи обзора) каталог, в который
следует сохранять распакованные файлы.Загрузите файл MP3 в XMMS как вы это
делаете обычно. Установите громкость на 100% и отключите
эквалайзер.Нажмите Воспроизвести —
XMMS будет выглядеть так же как и при
обычном воспроизведении MP3, но самой музыки слышно не будет. На
самом деле MP3 воспроизводится в файл.Убедитесь, что вы установили расширение вывода таким, как оно
было до этого, для того, чтобы снова слушать MP3.Запись в stdout в mpg123:Запустите mpg123 -s audio01.mp3 > audio01.pcmXMMS записывает файл в формате WAV, в то
время как mpg123 преобразовывает MP3 в
простые аудио данные PCM. Оба формата могут быть использованы
cdrecord для создания музыкальных
CD.
Для использования &man.burncd.8; вам потребуются простые аудио данные
PCM. Если же вы будете использовать файлы в формате WAV, то заметите
небольшой щелчок в начале каждой аудио дорожки, этот щелчок - заголовок
файла в формате WAV. Вы очень просто можете избавиться от него путём
удаления заголовка WAV при помощи утилиты
SoX (она может быть установлена из порта
audio/sox или соответствующего
пакета:&prompt.user; sox -t wav -r 44100 -s -w -c 2 track.wav track.rawПрочтите для того, чтобы узнать
больше о записи CD в FreeBSD.RossLippertПредоставил Воспроизведение видеоВоспроизведение видео является очень новой и быстро развивающейся
областью применения. Будьте терпеливы. Не всё будет работать так
беспроблемно, как это было со звуком.Прежде, чем вы начнёте, определите модель видеокарты и
чипсет, который она использует. Хотя &xorg;
и &xfree86;
поддерживают множество различных видеокарт, только их малая часть
показывает хорошую скорость воспроизведения видео. Для того, чтобы
получить список расширений, поддерживаемых X-сервером, который
используется вашей видеокартой, используйте команду &man.xdpyinfo.1; во
время работы X11.Неплохо также иметь небольшой файл MPEG, который бы использовался
как тестовый файл для проверки различных проигрывателей и настроек. Так
как некоторые проигрыватели DVD будут искать носитель DVD как
/dev/dvd по умолчанию или быть жёстко настроены
на него, возможно будет полезно сделать символические ссылки на
правильные устройства:&prompt.root; ln -sf /dev/acd0c /dev/dvd
&prompt.root; ln -sf /dev/racd0c /dev/rdvdДля FreeBSD 5.X, которая использует &man.devfs.5; рекомендуется
немного другой набор ссылок:&prompt.root; ln -sf /dev/acd0 /dev/dvd
&prompt.root; ln -sf /dev/acd0 /dev/rdvdОбратите внимание, природа &man.devfs.5; такова, что такие созданные
вручную ссылки не сохраняются при перезагрузке системы. Для
автоматического создания символических ссылок при каждой загрузке
системы добавьте в /etc/devfs.conf
следующие строки:link acd0 dvd
link acd0 rdvdКроме того, декодирование DVD требует доступа к специальным
функциям DVD-ROM, поэтому должен быть доступ на запись для устройств
DVD.параметры ядраoptions CPU_ENABLE_SSEпараметры ядраoptions USER_LDTНекоторые из обсуждаемых портов полагаются на наличие некоторых
параметров ядра для правильной сборки. Перед тем, как собирать порты,
добавьте эти параметры в файл конфигурации ядра, пересоберите ядро и
перезагрузите систему:option CPU_ENABLE_SSE
option USER_LDToption USER_LDT в &os; 5.X
не существует.Для того, чтобы улучшить работу разделяемой памяти X11,
рекомендуется увеличить значения некоторых переменных
&man.sysctl.8;:kern.ipc.shmmax=67108864
kern.ipc.shmall=32768Определение возможностей видеоXVideoSDLDGAСуществует несколько возможных путей отображения видео под X11. Что
именно будет действительно работать, во многом зависит от аппаратного
обеспечения. Каждый из описанных методов будет работать с различным
качеством
на разном аппаратном обеспечении. Во-вторых, воспроизведение видео в
X11, это тема, которой уделяется достаточно много внимания последнее
время, и с каждой новой версией &xorg;
или &xfree86; могут
наблюдаться значительные улучшения.Список наиболее часто используемых видеоинтерфейсов:X11: обычный вывод X11 с использованием разделяемой памяти.XVideo: расширение интерфейса X11, которое поддерживает видео в
любом объекте X11.SDL: the Simple Directmedia Layer.DGA: the Direct Graphics Access — Прямой Доступ для
Графики.SVGAlib: низкоуровневый доступ к графике на консоли.XVideo&xorg; и
&xfree86; 4.X включают в себя
расширение, называющееся XVideo (также известное
как Xvideo, Xv и xv), которое позволяет отображать видео прямо на
объектах при помощи специального ускорения. Это расширение
предоставляет очень хорошее качество воспроизведения даже на low-end
машинах.Для того чтобы проверить, работает ли это расширение, используйте
команду xvinfo:&prompt.user; xvinfoXVideo поддерживается вашей видеокартой, если результат выглядит приблизительно так:X-Video Extension version 2.2
screen #0
Adaptor #0: "Savage Streams Engine"
number of ports: 1
port base: 43
operations supported: PutImage
supported visuals:
depth 16, visualID 0x22
depth 16, visualID 0x23
number of attributes: 5
"XV_COLORKEY" (range 0 to 16777215)
client settable attribute
client gettable attribute (current value is 2110)
"XV_BRIGHTNESS" (range -128 to 127)
client settable attribute
client gettable attribute (current value is 0)
"XV_CONTRAST" (range 0 to 255)
client settable attribute
client gettable attribute (current value is 128)
"XV_SATURATION" (range 0 to 255)
client settable attribute
client gettable attribute (current value is 128)
"XV_HUE" (range -180 to 180)
client settable attribute
client gettable attribute (current value is 0)
maximum XvImage size: 1024 x 1024
Number of image formats: 7
id: 0x32595559 (YUY2)
guid: 59555932-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x32315659 (YV12)
guid: 59563132-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x30323449 (I420)
guid: 49343230-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x36315652 (RV16)
guid: 52563135-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x3e0, 0x7c00
id: 0x35315652 (RV15)
guid: 52563136-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x7e0, 0xf800
id: 0x31313259 (Y211)
guid: 59323131-0000-0010-8000-00aa00389b71
bits per pixel: 6
number of planes: 3
type: YUV (packed)
id: 0x0
guid: 00000000-0000-0000-0000-000000000000
bits per pixel: 0
number of planes: 0
type: RGB (packed)
depth: 1
red, green, blue masks: 0x0, 0x0, 0x0Следует заметить, что перечисленные форматы (YUV2, YUV12 и т.п.) не
присутствуют в каждой реализации XVideo и их отсутствие может быть
помехой для некоторых проигрывателей.Если результат выглядит так:X-Video Extension version 2.2
screen #0
no adaptors presentто, возможно, XVideo не поддерживается для вашей видеокарты.Если XVideo не поддерживается вашей видеокартой, то это всего лишь
означает, что будет сложнее получить приемлемые для воспроизведения
видео вычислительные мощности. В зависимости от вашей видеокарты и
процессора, возможно, вы сможете получить удовлетворительный результат.
Возможно, вы должны будете прочитать о путях улучшения
производительности здесь: .Simple Directmedia LayerSDL был задуман как уровень абстракции для разработки
кросплатформенных приложений под µsoft.windows;, BeOS и &unix;, позволяя
им эффективно использовать звук и графику. SDL предоставляет
низкоуровневые абстракции для аппаратного обеспечения, что, зачастую,
может быть более эффективным чем интерфейс X11.SDL есть в Коллекции портов FreeBSD: devel/sdl12.Прямой доступ для графики (DGA)DGA это расширение &xfree86; которое позволяет программам напрямую
изменять кадровый буфер (framebuffer) без участия X-сервера. Поскольку
DGA основывается на низкоуровневом доступе к памяти, программы, которые
используют его должны исполняться от пользователя
root.Расширение DGA может быть протестировано при помощи &man.dga.1;.
Когда dga запущена, она изменяет цвета на экране при
каждом нажатии клавиш. Для того, чтобы выйти из неё, используйте
q.Порты и пакеты для работы с видеовидео портывидео пакетыЭтот раздел обсуждает программное обеспечение для работы с видео
из Коллекции Портов FreeBSD. Воспроизведение видео является
очень активной сферой разработок программного обеспечения и возможности
различных приложений могут несколько отличаться от описанных
здесь.Во-первых, важно помнить, что многие приложения для работы с
видео, которые работают на FreeBSD, были разработаны как приложения
Linux. Многие из этих приложений все еще бета-качества. Вот
некоторые проблемы, которые могут встретиться в работе видео
пакетов на FreeBSD:Приложение не может воспроизвести файл, который создало другое
приложение.Приложение не может воспроизвести файл, который создало
само.Одно и то же приложение на разных машинах, скомпилированное на
каждой машине специально для неё, воспроизводит один и тот же файл
различно.Кажущийся тривиальным фильтр, например фильтр изменения размеров
изображения, приводит к очень плохим артефактам из-за
неправильной функции изменения размера.Приложение часто не работает (оставляет core-файл).Документация не устанавливается вместе с портом и может быть
найдена лишь на сайте или в каталоге порта
work.Многие из этих приложений могут также проявлять
линуксизмы. Так, это могут быть
некоторые проблемы, связанные со способом реализации некоторых
стандартных библиотек в дистрибутивах Linux, или некоторыми
дополнительными возможностями ядра Linux, которые авторы приложений
посчитали существующими везде. Эти проблемы не всегда могут быть
обнаружены людьми,
поддерживающими порт (порты), вследствие чего могут возникнуть проблемы,
сходные с нижеперечисленными:Использование /proc/cpuinfo для того, чтобы
определить характеристики процессора.Неправильное использование нитей (threads), которое может
привести к зависанию программы при завершении вместо нормального
выхода.Программного обеспечения, которое обычно используется совместно
с данным приложением, ещё нет в Коллекции Портов FreeBSD.Таким образом, разработчики этих приложений должны сотрудничать с
людьми, поддерживающими порты, для того, чтобы минимизировать количество
обходных путей, необходимых для портирования.MPlayerMPlayer это недавно разработанный и
быстро развивающийся проигрыватель видео. Задачами команды
разработчиков MPlayer являются скорость и
гибкость при работе на Linux и других Unix-системах. Проект был начал,
когда его основатель стал сыт по горло плохой производительностью и
качеством проигрывателей того времени. Некоторые могут сказать, что
графический интерфейс был принесён в жертву рационализированному
дизайну. Однако, как
только вы привыкнете к опциям командной строки MPlayer и его управлению
с клавиатуры, всё будет хорошо.Компиляция MPlayerMPlayerсборкаMPlayer находится в multimedia/mplayer. MPlayer производит
различные тесты аппаратного обеспечения во время процесса компиляции,
в результате чего полученные исполняемые модули не могут быть
перенесены с одной системы на другую. Поэтому важно собирать его из
портов, а не использовать бинарный пакет. Также, при сборке вы можете
указать различные установки при помощи параметров командной строки
make, как описывается в
Makefile в начале сборки:&prompt.root; cd /usr/ports/multimedia/mplayer
&prompt.root; make
N - O - T - E
Take a careful look into the Makefile in order
to learn how to tune mplayer towards you personal preferences!
For example,
make WITH_GTK1
builds MPlayer with GTK1-GUI support.
If you want to use the GUI, you can either install
/usr/ports/multimedia/mplayer-skins
or download official skin collections from
http://www.mplayerhq.hu/homepage/dload.html
Параметры порта по умолчанию должны подходить большинству
пользователей. Однако, если вам необходим кодек XviD,
необходимо указать в командной строке параметр
WITH_XVID. Устройство
DVD по умолчанию также может быть указано в командной
строке параметром WITH_DVD_DEVICE,
по умолчанию используется /dev/acd0.На время написания данного документа порт
MPlayer'а собирает и устанавливает свою
документацию в формате HTML и два исполняемых файла,
mplayer и mencoder,
который является утилитой для перекодировки видео.Документация к MPlayer очень
информативна. Если читатель найдет информацию этой главы о аппаратном
обеспечении для поддержки видео и интерфейсам недостаточной, то
документация MPlayer будет очень
хорошим дополнением. Обязательно уделите время
чтению документации MPlayer, если вам
нужна информация о поддержке видео под &unix;.Использование MPlayerMPlayerиспользованиеКаждый пользователь MPlayer должен
создать подкаталог .mplayer в своем домашнем
каталоге. Для того, чтобы его создать, выполните следующие
действия:&prompt.user; cd /usr/ports/multimedia/mplayer
&prompt.user; make install-userПараметры для mplayer перечислены в страничке
руководства mplayer. За более подробной информацией вы можете обратиться
к документации в формате HTML. В этом разделе мы опишем несколько самых
распространённых случаев использования mplayer.Для того, чтобы воспроизвести файл, например
testfile.avi через один из многих видеоинтерфейсов,
используйте параметр :&prompt.user; mplayer -vo xv testfile.avi&prompt.user; mplayer -vo sdl testfile.avi&prompt.user; mplayer -vo x11 testfile.avi&prompt.root; mplayer -vo dga testfile.avi&prompt.root; mplayer -vo 'sdl:dga' testfile.aviСтоит испробовать все варианты интерфейсов, так как их
производительность зависит от множества факторов и будет заметно меняться
в зависимости от аппаратного обеспечения.Для того, чтобы воспроизвести DVD, замените
testfile.avi на , где N является номером
дорожки, с которой следует начать воспроизведение и
DEVICE файл устройства
привода DVD. Например, для того, чтобы воспроизвести дорожку 3 с
/dev/dvd:&prompt.root; mplayer -vo xv dvd://3 -dvd-device /dev/dvdУстройство DVD по умолчанию может быть определено во время
сборки порта MPlayer параметром
WITH_DVD_DEVICE. По умолчанию,
это устройство /dev/acd0. Дополнительную
информацию можно найти в Makefile порта.Для того, чтобы остановить, приостановить или продолжить
воспроизведение, воспользуйтесь привязкой клавиш, информация о которой
может быть получена посредством запуска mplayer -h, либо
на страничке документации.Дополнительные, достаточно важные параметры воспроизведения:
, которые включают полноэкранный режим и
, который улучшает производительность на
медленных системах.Для того, чтобы командная строка запуска mplayer не становилась
слишком большой, пользователь может создать файл
.mplayer/config и установить параметры по умолчанию
там:vo=xv
fs=yes
zoom=yesТакже mplayer может быть использован для
копирования дорожек DVD в .vob файлы. Для того,
чтобы скопировать вторую дорожку DVD необходимо выполнить следующую
команду:&prompt.root; mplayer -dumpstream -dumpfile out.vob dvd://2 -dvd-device /dev/dvdПолученный файл, out.vob, будет представлять
собой MPEG, с которым можно производить различные действия при помощи
программ, которые будут описаны далее в этом разделе.mencodermencoderПеред использованием
mencoder, было бы
неплохо ближе ознакомится с его параметрами, используя документацию в
формате HTML. Также существует страничка справочника mplayer, но она не
очень полезна без HTML документации. Существует бесчисленное множество
способов улучшения качества, снижения битрейта и изменения формата; и
некоторые из этих приёмов могут влиять на производительность. Ниже
приведено несколько примеров использования mencoder.
Во-первых, простое копирование:&prompt.user; mencoder input.avi -oac copy -ovc copy -o output.aviНеправильная комбинация параметров командной строки привести к
появлению файлов, которые невозможно будет
воспроизвести даже mplayer. Поэтому, если вы хотите
скопировать в файл, лучше использовать только параметр
mplayer .Для того, чтобы преобразовать input.avi в MPEG4
со звуком в формате MPEG Audio Layer 3 (MP3) (требуется audio/lame):&prompt.user; mencoder input.avi -oac mp3lame -lameopts br=192 \
-ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.aviЭта команда создаст файл, воспроизводимый mplayer
и xine.input.avi может быть заменён на
и
mplayer, запущенный от
пользователя root, будет преобразовывать дорожку DVD
напрямую. Так как первый раз, скорее всего, вы будете недовольны
полученными результатами, всё же рекомендуется копировать
дорожку в файл и работать затем с файлом.Проигрыватель хinexine - это большой проект, в задачи
которого входит не только создание решения для видео все-в-одном, но и
создание базовой библиотеки с возможностью расширения возможностей путем
использования плагинов (расширений). Поставляется он как в виде порта,
так и в виде пакета, multimedia/xine.xine все еще несовершенен, но, все-таки это
хорошее начало. На практике xine требует либо
быстрого процессора с быстрой видеокартой или поддержку расширения
XVideo. Графический интерфейс можно использовать, но он все еще немного
неуклюж.На время написания этого документа в поставке
xine не существовало модуля ввода, который бы
мог воспроизводить DVD, закодированные по алгоритму CSS. Существуют
сборки, в которых есть такой модуль, но ни одна из них не входит в
Коллекцию Портов FreeBSD.По сравнению с MPlayer,
xine является более дружелюбным к
пользователю, но, в то же время, скрывает более тонкие настройки и
управление от пользователя. Также xine лучше
работает на XVideo интерфейсах.По умолчанию, xine запускается с
графическим интерфейсом. Для открытия файлов используются меню.&prompt.user; xineВ качестве альтернативы можно использовать его для запуска файла
непосредственно, без GUI, следующей командой:&prompt.user; xine -g -p mymovie.aviУтилиты transcodeПриложение transcode не является
проигрывателем. Это набор инструментов для преобразования
.avi и .mpg файлов. При помощи
transcode можно объединять видеофайлы,
исправлять поврежденные файлы, использовать инструменты командной строки
для работы с потоками ввода/вывода
stdin/stdout.Так же, как и MPlayer,
transcode является очень экспериментальным
программным продуктом, который необходимо собирать из порта multimedia/transcode. Этот порт имеет огромное
количество параметров для команды make при сборке.
Рекомендуется:&prompt.root; make WITH_LIBMPEG2=yesЕсли вы планируете установить multimedia/avifile, то добавьте параметр
WITH_AVIFILE в строку запуска make
как показано ниже:&prompt.root; make WITH_AVIFILE=yes WITH_LIBMPEG2=yesНиже приводятся два примера использования
transcode для преобразования видео, в результате
которого изменяется размер изображения. Первый пример преобразовывает
данные в openDIVX AVI файл, в то время как второй использует более
переносимый формат MPEG.&prompt.user; transcode -i input.vob -x vob -V -Z 320x240 \
-y opendivx -N 0x55 -o output.avi&prompt.user; transcode -i input.vob -x vob -V -Z 320x240 \
-y mpeg -N 0x55 -o output.tmp
&prompt.user; tcmplex -o output.mpg -i output.tmp.m1v -p output.tmp.mpa -m 1Существует страничка справочника для transcode, но
для различных утилит tc* (таких как
tcmplex), которые тоже устанавливаются в систему,
документации очень немного. Тем не менее, для получение краткой справки
по использованию команд, может быть задан параметр
.По сравнению с mencoder,
transcode работает заметно медленнее, но имеет больше
шансов создать более переносимый файл, который можно будет воспроизвести
на большем количестве систем. Например MPEG,
созданные при помощи transcode, воспроизводятся в
&windows.media; Player и Apple
&quicktime;.Дальнейшее чтениеРазличные пакеты видео программ для FreeBSD интенсивно
разрабатываются. Очень возможно, что в ближайшем будущем
многие обсуждаемые здесь проблемы разрешатся. Это займет время, и те, кто
желает получить максимум от аудио/видео возможностей FreeBSD, должны
будут собирать необходимые знания из нескольких списков часто задаваемых
вопросов и обучающих статей, а также использовать различные
приложения. Этот раздел существует для того, чтобы читатель мог получить
указания на несколько источников дополнительной информации.Документация
MPlayer очень содержательна в
техническом плане. Возможно, эти документы должны использоваться любым
человеком, желающим получить высокий уровень знаний о видео на &unix;
системах. Список рассылки MPlayer враждебен
для любого, кто не потрудился прочитать документацию, так что, если у вас
есть желание сообщать о найденных ошибках, прочитайте вначале
документацию.xine
HOWTO содержит главу об улучшении производительности, которая
применима к любому проигрывателю.Наконец, существует несколько многообещающих приложений, которые
читатель может испробовать:Avifile,
для которого также существует порт multimedia/avifile.Ogle, для
которого также существует порт multimedia/ogle.Xtheatermultimedia/dvdauthor, пакет с открытыми
текстами для распространения DVD контента.JosefEl-RayesПервоначально предоставил MarcFonvieilleУлучшил и адаптировал Настройка ТВ тюнеровТВ тюнерыВведениеТВ тюнеры предназначены для просмотра
широковещательного или кабельного телевидения на компьютере. Большинство
тюнеров поддерживают композитный видео вход RCA или
S-video, а некоторые из них поставляются с FM радио тюнером.&os; поддерживает PCI ТВ тюнеры, использующие
Brooktree Bt848/849/878/879 или Conexant CN-878/Fusion 878a
Video Capture Chip через драйвер &man.bktr.4;. Вы должны также
убедиться, что тюнер поддерживается; обратитесь к странице справочника
&man.bktr.4; за списком поддерживаемых тюнеров.Добавление драйвераДля использования карты потребуется загрузить драйвер
&man.bktr.4;, что можно сделать, добавив в
/boot/loader.conf следующую строку:bktr_load="YES"В качестве альтернативы, вы можете статически скомпилировать
ядро с поддержкой ТВ тюнера; добавьте следующие строки в
файл конфигурации ядра:device bktr
device iicbus
device iicbb
device smbusЭти дополнительные драйвера устройств необходимы, поскольку
компоненты карты соединены через шину I2C. Затем соберите и
установите новое ядро.Как только поддержка тюнера будет добавлена в систему, перегрузите
компьютер. Во время загрузки TV карта должна отобразить примерно
такие строки:bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0
iicbb0: <I2C bit-banging driver> on bti2c0
iicbus0: <Philips I2C bus> on iicbb0 master-only
iicbus1: <Philips I2C bus> on iicbb0 master-only
smbus0: <System Management Bus> on bti2c0
bktr0: Pinnacle/Miro TV, Philips SECAM tuner.Конечно, эти сообщения будут различаться на разном оборудовании.
Тем не менее, проверьте, что тюнер определяется правильно; возможна
перезапись параметров, определенных ядром, с помощью &man.sysctl.8;
MIB и параметров в файле настройки ядра. Например, если вы хотите
указать, что это Philips SECAM тюнер, добавьте следующую строку
к файлу настройки ядра:options OVERRIDE_TUNER=6или прямо задайте переменную &man.sysctl.8;:&prompt.root; sysctl hw.bt848.tuner=6Обратитесь к странице &man.bktr.4; и файлу
/usr/src/sys/conf/NOTES за более детальной
информацией о доступных параметрах (если вы работаете в
&os; 4.X, вместо
/usr/src/sys/conf/NOTES используйте
/usr/src/sys/i386/conf/LINT).Полезные приложенияДля использования ТВ тюнера вам потребуется установить одно из
следующих приложений:multimedia/fxtv
предоставляет возможности ТВ-в-окне и захвата
изображений/аудио/видео.multimedia/xawtv
это также приложение для ТВ тюнера, с теми же, что и у
fxtv возможностями.misc/alevt раскодирует
и отображает видеотекст/телетекст.audio/xmradio,
приложение для использования с FM радио тюнером, поставляемым
с некоторыми ТВ тюнерами.audio/wmtune, это
удобное приложение для радио тюнеров.В коллекции портов &os; можно найти и другие приложения.Решение проблемЕсли вы столкнулись с какой-либо проблемой, связанной с ТВ
тюнером, проверьте в первую очередь поддержку микросхемы захвата
видео и тюнера драйвером &man.bktr.4;, а также правильность установки
параметров. За дальнейшей поддержкой и с вопросами о ТВ тюнере
вы можете обращаться в &a.multimedia.name; и
использовать его архивы.MarcFonvieilleНаписана ДмитрийМорозовскийПеревод на русский язык: СканерысканерыВведение&os;, как и прочие современные операционные системы, поддерживает
сканеры. Стандартный доступ к сканерам обеспечивается программой
SANE (Scanner Access Now
Easy), обеспечивающей универсальный интерфейс
(API)
и доступной в коллекции портов &os;. Для общения со сканерами
SANE использует некоторые драйвера
устройств &os;.&os; поддерживает сканеры с интерфейсом как SCSI, так и USB.
Убедитесь, что ваш сканер поддерживается
SANE перед тем, как приступить к
конфигурации. Список устройств, поддерживаемых
SANE, можно найти здесь.
Кроме того, страница справочника &man.uscanner.4; также перечисляет
поддерживаемые устройства.Конфигурация ядраКак уже отмечалось, поддерживаются как SCSI, так и USB сканеры.
В зависимости от интерфейса вашего сканера требуется поддержка разных
драйверов устройств.USBСтандартное ядро GENERIC включает в себя
драйвера, необходимые для поддержки USB сканеров. Если вы
компилируете собственное ядро, убедитесь, что в его конфигурации
присутствуют строкиdevice usb
device uhci
device ohci
device uscannerВ зависимости от чипсета USB, встроенного в вашу материнскую
плату, потребуется лишь один из драйверов device
uhci или device ohci, однако, наличие
обеих строк в конфигурации ядра никому не повредит.Если вы не хотите перестраивать ядро, и при этом ваше ядро не
является стандартным (GENERIC), вы можете
загрузить модуль драйвера поддержки сканеров &man.uscanner.4;
при помощи команды &man.kldload.8;:&prompt.root; kldload uscannerДля автоматической загрузки модуля при старте системы добавьте
в файл /boot/loader.conf строкуuscanner_load="YES"После перезагрузки с новым ядром или загрузки модуля подключите
ваш USB сканер. В буфере системных сообщений (&man.dmesg.8;) должно
появиться сообщение о найденном устройстве, например:uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2В данном случае сканер будет использовать устройство
/dev/uscanner0.В &os; 4.X для корректного распознавания некоторых USB
устройств должен быть запущен даемон USB (&man.usbd.8;).
Для этого добавьте строку usbd_enable="YES"
в файл конфигурации системы /etc/rc.conf.
SCSIЕсли ваш сканер имеет интерфейс SCSI, важно знать, к какому
контроллеру он подключен. В зависимости от контроллера потребуются
различные драйвера в файле конфигурации ядра. Стандартное ядро
GENERIC поддерживает большинство
распространенных SCSI-контроллеров. Внимательно прочитайте файл
NOTES (в &os; 4.X файл
LINT) и добавьте необходимые строки в файл
конфигурации вашего ядра. Помимо строки для драйвера адаптера,
вам потребуются следующие строки:device scbus
device passПосле сборки и загрузки нового ядра, в буфере системных
сообщений должны появиться строки о вашем сканере, например:pass2 at aic0 bus 0 target 2 lun 0
pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device
pass2: 3.300MB/s transfersЕсли сканер не был включен в момент загрузки, его можно
принудительно опознать, выполнив сканирование SCSI шины при
помощи команды &man.camcontrol.8;:&prompt.root; camcontrol rescan all
Re-scan of bus 0 was successful
Re-scan of bus 1 was successful
Re-scan of bus 2 was successful
Re-scan of bus 3 was successfulПосле этого сканер должен появиться в списке устройств:&prompt.root; camcontrol devlist
<IBM DDRS-34560 S97B> at scbus0 target 5 lun 0 (pass0,da0)
<IBM DDRS-34560 S97B> at scbus0 target 6 lun 0 (pass1,da1)
<AGFA SNAPSCAN 600 1.10> at scbus1 target 2 lun 0 (pass3)
<PHILIPS CDD3610 CD-R/RW 1.00> at scbus2 target 0 lun 0 (pass2,cd0)More details about SCSI devices, are available in the
&man.scsi.4; and &man.camcontrol.8; manual pages.Конфигурация SANEСистема SANE состоит из двух частей:
аппаратной поддержки (backend, graphics/sane-backends) и программной
поддержки (frontend, graphics/sane-frontends). Первая часть
обеспечивает собственно доступ к сканеру. Список
поддерживаемых устройствSANE
содержит информацию о необходимом вам аппаратном модуле.
Вторая часть обеспечивает графический интерфейс для сканирования
(xscanimage).В первую очередь следует установить порт или пакет graphics/sane-backends, после чего при
помощи команды sane-find-scanner проверить
поддержку сканера системой SANE:&prompt.root; sane-find-scanner -q
found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3В выводе должны присутствовать интерфейс сканера и имя
используемого устройства. Производитель и модель сканера могут
отсутствовать: это нормально.Некоторым USB сканерам может потребоваться загрузка прошивки.
Подробности смотрите в страницах справочника драйвера сканера,
&man.sane-find-scanner.1; и &man.sane.7;.Теперь необходимо убедиться, что сканер опознан программой
графического интерфейса. В состав системы
SANE входит утилита &man.scanimage.1;,
позволяющая работать со сканером из командной строки. Опция
используется для показа информации
о сканере:&prompt.root; scanimage -L
device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scannerОтсутствие сообщений или сообщение об отсутствии устройств
означает, что утилита &man.scanimage.1; не смогла идентифицировать
сканер. В этом случае вам потребуется отредактировать файл
конфигурации аппаратного модуля и указать устройство, используемое
сканером. Все файлы настройки находятся в каталоге
/usr/local/etc/sane.d/.
Такие проблемы присущи некоторым моделям USB сканеров.
Например, в случае USB сканера, описанного в разделе , утилита
sane-find-scanner выдаст следующую информацию:
&prompt.root; sane-find-scanner -q
found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0Сканер обнаружен корректно, он использует интерфейс USB
и доступен через устройство /dev/uscanner0.
Теперь попробуем идентифицировать его:&prompt.root; scanimage -L
No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).Поскольку сканер не идентифицирован, нам потребуется изменить
файл конфигурации
/usr/local/etc/sane.d/epson.conf.
В нашем примере использован сканер &epson.perfection; 1650, так что
мы знаем, что будет использоваться драйвер epson.
Не забудьте прочитать комментарии в файле конфигурации. Требуемые
изменения весьма просты: закомментируйте все строки, описывающие
интерфейсы, не соответствующий интерфейсу вашего сканера (в нашем
случае, все строки, начинающиеся со scsi: наш
сканер использует интерфейс USB), и добавьте в конец файла строку,
содержащую интерфейс и имя использованного устройства.
Мы добавим строкуusb /dev/uscanner0Пожалуйста, прочтите комментарии в файле конфигурации, а также
страницы справочника для более полной информации. Теперь мы можем
проверить, что наш сканер опознан:&prompt.root; scanimage -L
device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scannerНаш USB сканер опознан. Не столь важно, что имя и номер модели
не совпадают, главное, что используются правильные имя устройства
и драйвер: `epson:/dev/uscanner0'.После того как команда scanimage -L опознала
сканер, конфигурация завершена. Все готово к сканированию.Хотя утилита &man.scanimage.1; позволяет производить сканирование
из командной строки, как правило, для сканирования предпочтительнее
использовать графический интерфейс. Для этого в состав
SANE входит простая, но эффективная
утилита xscanimage (graphics/sane-frontends).Другой популярной программой графического интерфейса к сканеру
является Xsane (graphics/xsane). Эта программа
поддерживает такие расширенные возможности, как разные режимы
сканирования (фотокопия, факс и т.п.), цветокоррекцию, потоковое
сканирование и другие. Оба приложения пригодны для использования
в качестве плагинов сканирования для GIMP.
Доступ к сканеру для других пользователейВсе описанные операции выполнялись нами с привилегиями
суперпользователя (root). Вам может
потребоваться дать доступ к сканеру другим пользователям.
Для этого необходимо разрешить доступ на чтение и запись
к файлу устройства, обслуживающему сканер. В нашем примере
USB сканер использует устройство /dev/uscanner0,
принадлежащее группе operator.
Добавление пользователя joe в группу
operator разрешит ему использовать сканер:
&prompt.root; pw groupmod operator -m joeЗа подробностями обращайтесь к странице справочника &man.pw.8;.
Вам также потребуется установить нужные права доступа (0660 или 0664)
к устройству /dev/uscanner0, поскольку по
умолчанию группа operator может лишь
читать из него. Это достигается добавлением следующей строки
в файл /etc/devfs.rules:[system=5]
add path uscanner0 mode 660Затем добавьте в файл конфигурации системы
/etc/rc.conf такую строку (после чего
перезагрузите систему):devfs_system_ruleset="system"Подробную информацию о правах на файлы устройств вы найдете
на странице справочника &man.devfs.8;. В &os; 4.X группа
operator по умолчанию имеет права как
на чтение, так и на запись, к устройству
/dev/uscanner0.Разумеется, по соображениям безопасности, вы должны как следует
подумать, прежде чем добавлять пользователя в другие группы,
в особенности в группу operator.
diff --git a/ru_RU.KOI8-R/books/handbook/network-servers/chapter.sgml b/ru_RU.KOI8-R/books/handbook/network-servers/chapter.sgml
index dc5d77e3af..5af9dd1d0e 100644
--- a/ru_RU.KOI8-R/books/handbook/network-servers/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/network-servers/chapter.sgml
@@ -1,5178 +1,5178 @@
MurrayStokelyРеорганизовал АндрейЗахватовПеревод на русский язык: Сетевые серверыКраткий обзорЭта глава посвящена некоторым наиболее часто используемым сетевым
службам систем &unix;. Мы опишем, как установить, настроить,
протестировать и поддерживать многие различные типы сетевых сервисов.
Для облегчения вашей работы в главу включены
примеры конфигурационных файлов.После чтения этой главы вы будете знать:Как управлять даемоном inetd.Как настроить сетевую файловую систему.Как настроить сетевой сервер информации для совместного
использования учётных записей пользователей.Как настроить автоматическое конфигурирование сетевых параметров
при помощи DHCP.Как настроить сервер имён.Как настроить Apache HTTP
сервер.Как настроить файловый и принт сервер для &windows;
клиентов с использованием Samba.Как синхронизировать дату и время, а также настроить сервер
времени с протоколом NTP.Перед чтением этой главы вы должны:Понимать основы работы скриптов
/etc/rc.Свободно владеть основными сетевыми терминами.Знать как устанавливать дополнительные программы сторонних
разработчиков ().ChernLeeТекст предоставил Супер-серверinetdОбзор&man.inetd.8; называют также супер-сервером
Интернет, потому что он управляет соединениями к многим
сервисам. Когда
inetd принимает соединение, он определяет,
для какой программы предназначено соединение, запускает соответствующий
процесс и предоставляет ему сокет, ссылка на который передается
процессу в качестве стандартных устройств ввода, вывода и сообщения об
ошибках. Запуск одного экземпляра
inetd уменьшает общую нагрузку на систему по
сравнению с запуском каждого даемона индивидуально в выделенном
режиме.В первую очередь inetd используется для
вызова других даемонов, но несколько простых протоколов, таких, как
chargen, auth и
daytime, обслуживаются
непосредственно.Этот раздел посвящен основам настройки
inetd посредством его параметров командной
строки и его конфигурационного файла,
/etc/inetd.conf.Настройкиinetd инициализируется посредством
системы /etc/rc.conf. Параметр
inetd_enable по умолчанию установлен в
NO, однако часто включается утилитой
sysinstall при выборе профиля среднего
уровня безопасности. Указание
inetd_enable="YES" или
inetd_enable="NO" в файле
/etc/rc.conf может задать или запретить запуск
inetd во время загрузки.Кроме того, через inetd_flags даемону
inetd могут быть переданы различные
параметры командной строки.Параметры командной строкиФормат вызова inetd:-dВключение отладочной информации.-lВключение регистрации успешных соединений.-wВключение механизма TCP Wrapping для внешних служб (по
умолчанию включено).-WВключение механизма TCP Wrapping для внутренних служб,
которые встроены в inetd (по
умолчанию включено).-c maximumОпределение максимального числа одновременных запусков каждой
службы; по умолчание не ограничено. Может быть переопределено
индивидуально для каждой службы при помощи параметра
.-C rateОпределение по умолчанию максимального количества раз,
которое служба может быть вызвана с одного IP-адреса в минуту; по
умолчанию не ограничено. Может быть переопределено для каждой
службы параметром
.-R rateОпределяет максимальное количество раз, которое служба может
быть вызвана в минуту; по умолчанию 256. Частота, равная 0,
не ограничивает число вызовов.-aЗадает один IP-адрес, к которому делается привязка.
Альтернативно может быть указано имя хоста, и в этом случае
используется соответствующий этому имени хоста адрес IPv4 или
IPv6. Обычно имя хоста задается, когда
inetd запускается в окружении
&man.jail.8;, и в этом случае имя хоста соответствует этому
&man.jail.8;-окружению.Если используется формат с именем хоста и требуется привязка
как для IPv4, так и для IPv6, то для каждой привязки требуется
запись с соответствующим типом протокола для каждой службы в
файле /etc/inetd.conf. К примеру, службе
на основе TCP потребуется две записи, в одной для протокола
используется tcp4, а в другой
используется tcp6.-pЗадает альтернативный файл для хранения ID процесса.Эти параметры могут быть переданы в
inetd при помощи
inetd_flags в файле
/etc/rc.conf. По умолчанию значение
inetd_flags установлено в -wW,
что включает механизм TCP wrapping для внутренних и внешних служб
inetd. Новичкам эти параметры изменять и
даже задавать их в файле /etc/rc.conf не
нужно.Внешняя служба является даемоном вне
inetd, который запускается при получении
соединения к нему. С другой стороны, внутренней службой является
услуга, которую inetd предоставляет
сам.inetd.confНастройка inetd управляется через файл
/etc/inetd.conf.Если в файле /etc/inetd.conf делались
изменения, то inetd можно заставить считать
его конфигурационный файл повторно, послав сигнал HangUP процессу
inetd, как показано здесь:Посылка сигнала HangUP процессу
inetd&prompt.root; kill -HUP `cat /var/run/inetd.pid`В каждой строке конфигурационного файла описывается отдельный
даемон. Комментариям в файле предшествует знак #. Файл
/etc/inetd.conf имеет такой формат:service-name
socket-type
protocol
{wait|nowait}[/max-child[/max-connections-per-ip-per-minute]]
user[:group][/login-class]
server-program
server-program-argumentsПример записи для даемона ftpd,
использующего IPv4:ftp stream tcp nowait root /usr/libexec/ftpd ftpd -lservice-nameЭто имя сервиса, предоставляемого конкретным даемоном. Оно
должно соответствовать сервису, указанному в файле
/etc/services. Здесь определяется, какой
порт должен обслуживать inetd. При
создании нового сервиса он должен помещаться сначала в файл
/etc/services.socket-typestream, dgram,
raw либо seqpacket.
stream должен использоваться для
ориентированных на соединение даемонов TCP, когда как
dgram используется для даемонов, использующих
транспортный протокол UDP.protocolОдно из следующих:
-
+ ПротоколОписаниеtcp, tcp4TCP IPv4udp, udp4UDP IPv4tcp6TCP IPv6udp6UDP IPv6tcp46TCP как для IPv4, так и для v6udp46UDP как для IPv4, так и для v6{wait|nowait}[/max-child[/max-connections-per-ip-per-minute]] определяет, может ли даемон,
вызванный из inetd, работать с
собственным сокетом, или нет. Сокеты типа
должны использовать параметр , когда как
даемоны с потоковыми
сокетами, которые обычно многопоточны, должны использовать
. обычно передает
много сокетов одному даемону, когда как
порождает даемон для каждого нового сокета.Максимальное число порожденных даемонов, которых может
создать inetd, может быть задано
параметром . Если нужно ограничение в
десять экземпляров некоторого даемона, то после параметра
нужно задать
/10.Кроме , может быть задействован
другой параметр, ограничивающий максимальное число соединений от
одного источника.
служит именно
для этого. Здесь значение, равное десяти, будет ограничивать
любой заданный IP-адрес на выполнение десяти попыток подключения
к некоторому сервису в минуту. Это полезно для предотвращения
намеренного или ненамеренного расходования ресурсов и атак типа
Denial of Service (DoS) на машину.В этом поле или
обязательны. и
опциональны.Многопоточный даемон типа stream без ограничений
или
будет
определен просто вот так: nowait.Тот же самый даемон с ограничением в максимум десять даемонов
будет определен так: nowait/10.Наконец, та же конфигурация с ограничением в двадцать
соединений на IP-адрес в минуту и общим ограничением в максимум
десять порожденных даемонов выглядит так:
nowait/10/20.Эти параметры, используемые все со значениями по умолчанию
даемоном fingerd, имеют такой
вид:finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -suserЭто имя пользователя, под которым должен
работать соответствующий даемон. Чаще всего даемоны работают
как пользователь root. Для обеспечения
безопасности некоторые серверы запускаются как пользователь
daemon или как пользователь с минимальными
правами nobody.server-programПолный маршрут к даемону, который будет выполняться при
установлении соединения. Если даемон является сервисом,
предоставляемым самим inetd, то нужно
задать ключевое слово .server-program-argumentsЭтот параметр работает вместе с параметром
, задавая параметры, начиная с
argv[0], передаваемые даемону при запуске.
Если в командной
строке задано mydaemon -d, то
mydaemon -d будет являться значением для
. И снова, если даемон
является внутренней службой, то здесь нужно использовать
.БезопасностьВ зависимости от схемы безопасности, выбранной при установке,
многие из даемонов inetd могут оказаться по
умолчанию включенными. Если нет особой нужды в некотором даемоне, то
выключите его! Поместите знак # перед ненужным даемоном
в /etc/inetd.conf
и пошлите сигнал для inetd.
Некоторые даемоны, такие, как fingerd,
вообще нежелательны, потому что они дают атакующему слишком много
информации.Некоторые даемоны не заботятся о безопасности и имеют большие
таймауты для соединений или вообще их не имеют. Это позволяет
атакующему неспешно устанавливать соединения к конкретному даемону,
истощая имеющиеся ресурсы. Может оказаться полезным задать для
некоторых даемонов ограничения
и
.По умолчанию механизм TCP wrapping включен. Обратитесь к
справочной странице по &man.hosts.access.5; для получения более
подробной информации о задании ограничений TCP для различных даемонов,
запускаемых посредством inetd.Разноеdaytime,
time,
echo,
discard,
chargen и
auth все являются услугами, предоставляемыми
самим inetd.Сервис auth предоставляет
идентификационные сетевые услуги
(ident, identd)
и поддается настройке.Обратитесь к справочной странице по &man.inetd.8; для получения
более подробной информации.TomRhodesРеорганизация и улучшения BillSwingleТекст создал Network File System (NFS)NFSКроме поддержки многих прочих типов файловых систем, во FreeBSD
встроена поддержка сетевой файловой системы (Network File System),
известной как NFS. NFS позволяет
системе использовать каталоги и файлы совместно с другими машинами,
посредством сети. Посредством NFS пользователи и
программы могут получать доступ к файлам на удалённых системах точно так
же, как если бы это были файлы на собственных дисках.Вот некоторые из наиболее заметных преимуществ, которые даёт
использование NFS:Отдельно взятые рабочие станции используют меньше собственного
дискового пространства, так как совместно используемые данные могут
храниться на одной отдельной машине и быть доступными для других
машин в сети.Пользователям не нужно иметь домашние каталоги, отдельные
для каждой машины в вашей сети. Домашние каталоги могут
располагаться на сервере NFS и их можно сделать
доступными отовсюду в сети.Устройства хранения информации, такие, как дискеты, приводы
CD-ROM и устройства &iomegazip;, могут использоваться другими машинами в
сети. Это может привести к уменьшению переносимых устройств хранения
информации в сети.Как работает NFSNFS строится по крайней мере из двух основных
частей: сервера и одного или большего количества клиентов. Клиент
обращается к данным, находящимся на сервере, в режиме удалённого
доступа. Для того, чтобы это нормально функционировало, нужно
настроить и запустить несколько процессов.В &os; 5.X, утилита portmap была
заменена на утилиту rpcbind.
Таким образом, при
использовании &os; 5.X пользователю необходимо заменить в
последующих примерах все команды portmap
на rpcbind.На сервере работают следующие даемоны:NFSсерверфайл серверunix клиентыportmapmountdnfsdДаемонОписаниеnfsdДаемон NFS, обслуживающий запросы от
клиентов NFS.mountdДаемон монтирования NFS, который
выполняет запросы, передаваемые ему от &man.nfsd.8;.portmapДаемон отображения портов позволяет клиентам
NFS определить порт, используемый сервером
NFS.Клиент может запустить также даемон, называемый
nfsiod. nfsiod
обслуживает запросы, поступающие от сервера от сервера
NFS. Он необязателен, увеличивает
производительность, однако для нормальной и правильной работы не
требуется. Для получения дополнительной информации обратитесь к
разделу справочной системы о &man.nfsiod.8;.Настройка NFSNFSнастройкаНастройка NFS является достаточно незамысловатым
процессом. Все процессы, которые должны быть запущены, могут быть
запущены во время загрузки посредством нескольких модификаций в
вашем файле /etc/rc.conf.Проверьте, что на NFS-сервере в файле
/etc/rc.conf имеются такие строки:portmap_enable="YES"
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 4"
mountd_flags="-r"mountd запускается автоматически, если включена
функция сервера NFS.На клиенте убедитесь, что в файле /etc/rc.conf
присутствует такой параметр:nfs_client_enable="YES"Файл /etc/exports определяет, какие
файловые системы на вашем сервере NFS будут
экспортироваться (иногда их называют совместно
используемыми). Каждая строка в
/etc/exports задаёт файловую систему, которая
будет экспортироваться и какие машины будут иметь к ней доступ. Кроме
машин, имеющих доступ, могут задаваться другие параметры, влияющие на
характеристики доступа. Имеется полный набор параметров,
которые можно использовать, но здесь пойдёт речь лишь о некоторых из
них. Описания остальных параметров можно найти на страницах справочной
системы по &man.exports.5;.Вот несколько примерных строк из файла
/etc/exports:NFSпримеры экспортированияВ следующих примерах даётся общая идея того, как экспортировать
файловые системы, хотя конкретные параметры могут отличаться в
зависимости от ваших условий и конфигурации сети. К примеру, чтобы
экспортировать каталог /cdrom для трёх машин,
находящихся в том же самом домене, что и сервер (поэтому отсутствует
доменное имя для каждой машины) или для которых имеются записи в
файле /etc/hosts. Флаг
указывает на использование экспортируемой файловой
системы в режиме только чтения. С этим флагом удалённая система не
сможет никоим образом изменить экспортируемую файловую систему./cdrom -ro host1 host2 host3В следующей строке экспортируется файловая система
/home, которая становится доступной трем хостам,
указанным по их IP-адресам. Это полезно, если у вас есть собственная
сеть без настроенного сервера DNS. Как вариант,
файл /etc/hosts может содержать внутренние имена
хостов; пожалуйста, обратитесь к справочную систему по &man.hosts.5;
для получения дополнительной информации. Флаг
позволяет рассматривать подкаталоги в
качестве точек монтирования. Другими словами, это не монтирование
подкаталогов, но разрешение клиентам монтировать только каталоги,
которые им требуются или нужны./home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4В строке, приведённой ниже, файловая система
/a экспортируется таким образом, что она доступна
двум клиентам из других доменов. Параметр
позволяет пользователю
root удалённой системы осуществлять запись на
экспортируемую файловую систему как пользователь
root. Если параметр
-maproot=root не задан,
то даже если пользователь имеет права доступа root
на удалённой системе, он не сможет модифицировать
файлы на экспортированной файловой системе./a -maproot=root host.example.com box.example.orgДля того, чтобы клиент смог обратиться к экспортированной файловой
системе, он должен иметь права сделать это. Проверьте, что клиент
указан в вашем файле /etc/exports.В файле /etc/exports каждая строка содержит
информацию об экспортировании для отдельной файловой системы для
отдельно взятого хоста. Удалённый хост может быть задан только
один раз для каждой файловой системы, и может иметь
только одну запись, используемую по умолчанию, для каждой локальной
файловой системы. К примеру, предположим, что
/usr является отдельной файловой системой.
Следующий /etc/exports будет некорректен:# Invalid when /usr is one file system
/usr/src client
/usr/ports clientОдна файловая система, /usr, имеет две
строки, задающие экспортирование для одного и того же хоста,
client. Правильный формат в этом случае таков:/usr/src /usr/ports clientСвойства отдельной файловой системы, экспортируемой некоторому
хосту, должны задаваться в одной строке. Строки без указания клиента
воспринимаются как отдельный хост. Это ограничивает то, как вы можете
экспортировать файловые системы, но для большинства это не
проблема.Ниже приведён пример правильного списка экспортирования, где
/usr и /exports являются
локальными файловыми системами:# Экспортируем src и ports для client01 и client02, но
# только client01 имеет права пользователя root на них
/usr/src /usr/ports -maproot=root client01
/usr/src /usr/ports client02
# Клиентские машины имеют пользователя root и могут монтировать всё в
# каталоге /exports. Кто угодно может монтировать /exports/obj в режиме чтения
/exports -alldirs -maproot=root client01 client02
/exports/obj -roВы должны перезапустить mountd после того, как
изменили /etc/exports, чтобы изменения вступили в
силу. Это может быть достигнуто посылкой сигнала HUP процессу
mountd:&prompt.root; kill -HUP `cat /var/run/mountd.pid`Как вариант, при перезагрузке FreeBSD всё настроится правильно.
Хотя выполнять перезагрузку вовсе не обязательно. Выполнение следующих
команд пользователем root запустит всё, что
нужно.На сервере NFS:&prompt.root; portmap
&prompt.root; nfsd -u -t -n 4
&prompt.root; mountd -rНа клиенте NFS:&prompt.root; nfsiod -n 4Теперь всё должно быть готово к реальному монтированию удалённой
файловой системы. В приводимых примерах сервер будет носить имя
server, а клиент будет носить имя
client. Если вы только хотите
временно смонтировать удалённую файловую систему, или всего лишь
протестировать ваши настройки, то просто запустите команды, подобные
приводимым здесь, работая как пользователь root на
клиентской машине:NFSмонтирование&prompt.root; mount server:/home /mntПо этой команде файловая система /home на
сервере будет смонтирована в каталог /mnt на
клиенте. Если всё настроено правильно, вы сможете войти в каталог
/mnt на клиенте и увидеть файлы, находящиеся на
сервере.Если вы хотите автоматически монтировать удалённую файловую
систему при каждой загрузке компьютера, добавьте файловую систему в
/etc/fstab. Вот пример:server:/home /mnt nfs rw 0 0На страницах справочной системы по &man.fstab.5; перечислены все
доступные параметры.Практическое использованиеУ NFS есть много вариантов практического
применения. Ниже приводится несколько наиболее широко распространённых
способов её использования:NFSиспользованиеНастройка несколько машин для совместного использования CDROM
или других носителей. Это более дешёвый и зачастую более удобный
способ установки программного обеспечения на несколько машин.В больших сетях может оказаться более удобным настроить
центральный сервер NFS, на котором размещаются
все домашние каталоги пользователей. Эти домашние каталоги могут
затем экспортироваться в сеть так, что пользователи всегда будут
иметь один и тот же домашний каталог вне зависимости от того, на
какой рабочей станции они работают.Несколько машин могут иметь общий каталог
/usr/ports/distfiles. Таким образом, когда
вам нужно будет установить порт на несколько машин, вы сможете быстро
получить доступ к исходным текстам без их загрузки на каждой
машине.WylieStilwellТекст предоставил ChernLeeТекст переписал Автоматическое монтирование с
amdamdдаемон автоматического монтирования&man.amd.8; (даемон автоматического монтирования) автоматически
монтирует удалённую файловую систему,
как только происходит обращение к файлу или каталогу в этой файловой
системе. Кроме того, файловые системы, которые были неактивны
некоторое время, будут автоматически размонтированы даемоном
amd. Использование
amd является простой альтернативой
статическому монтированию, так как в последнем случае обычно всё должно
быть описано в файле /etc/fstab.amd работает, сам выступая как сервер
NFS для каталогов /host и
/net. Когда происходит обращение к файлу в одном
из этих каталогов, amd ищет соответствующий
удаленный ресурс для монтирования и автоматически его монтирует.
/net используется для монтирования экспортируемой
файловой системы по адресу IP, когда как каталог
/host используется для монтирования ресурса по
удаленному имени хоста.Обращение к файлу в каталоге
/host/foobar/usr укажет
amd на выполнение попытки монтирования
ресурса /usr, который находится на хосте
foobar.Монтирование ресурса при помощи
amdВы можете посмотреть доступные для монтирования ресурсы
отдалённого хоста командой showmount. К примеру,
чтобы посмотреть ресурсы хоста с именем foobar, вы
можете использовать:&prompt.user; showmount -e foobar
Exports list on foobar:
/usr 10.10.10.0
/a 10.10.10.0
&prompt.user; cd /host/foobar/usrКак видно из примера, showmount показывает
/usr как экспортируемый ресурс. При переходе в
каталог /host/foobar/usr даемон
amd пытается разрешить имя хоста
foobar и автоматически смонтировать требуемый
ресурс.amd может быть запущен из скриптов
начальной загрузки, если поместить такую строку в файл
/etc/rc.conf:amd_enable="YES"Кроме того, даемону amd могут быть
переданы настроечные флаги через параметр
amd_flags. По умолчанию
amd_flags настроен следующим образом:amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map"Файл /etc/amd.map задает опции, используемые
по умолчанию при монтировании экспортируемых ресурсов. В файле
/etc/amd.conf заданы настройки некоторых более
сложных возможностей amd.Обратитесь к справочным страницам по &man.amd.8; и &man.amd.conf.5;
для получения более полной информации.JohnLindТекст предоставил Проблемы взаимодействия с другими системамиНекоторые сетевые адаптеры для систем PC с шиной ISA имеют
ограничения, которые могут привести к серьезным проблемам в сети, в
частности, с NFS. Эти проблемы не специфичны для FreeBSD, однако
эту систему они затрагивают.Проблема, которая возникает практически всегда при работе по сети
систем PC (FreeBSD) с высокопроизводительными рабочими станциями,
выпущенными такими производителями, как Silicon Graphics, Inc. и Sun
Microsystems, Inc. Монтирование по протоколу NFS будет работать
нормально, и некоторые операции также будут выполняться успешно, но
неожиданно сервер окажется недоступным для клиент, хотя запросы к и
от других систем будут продолжаться обрабатываться. Такое встречается
с клиентскими системами, не зависимо от того, является ли клиент
машиной с FreeBSD или рабочей станцией. Во многих системах при
возникновении этой проблемы нет способа корректно завершить работу
клиента. Единственным выходом зачастую является холодная перезагрузка
клиента, потому что ситуация с NFS не может быть разрешена.Хотя правильным решением является установка более
производительного и скоростного сетевого адаптера на систему FreeBSD,
имеется простое решение, приводящее к удовлетворительным результатам.
Если система FreeBSD является сервером, укажите
параметр на клиенте при монтировании. Если
система FreeBSD является клиентом, то смонтируйте
файловую систему NFS с параметром . Эти
параметры могут быть заданы в четвертом поле записи в файле
fstab клиента при автоматическом монтировании,
или при помощи параметра в команде &man.mount.8; при
монтировании вручную.Нужно отметить, что имеется также другая проблема, ошибочно
принимаемая за приведенную выше, когда серверы и клиенты NFS находятся
в разных сетях. Если это тот самый случай,
проверьте, что ваши маршрутизаторы пропускают
нужную информацию UDP, в противном случае вы
ничего не получите, что бы вы ни предпринимали.В следующих примерах fastws является именем хоста
(интерфейса) высокопроизводительной рабочей станции, а
freebox является именем хоста (интерфейса) системы
FreeBSD со слабым сетевым адаптером. Кроме того,
/sharedfs будет являться экспортируемой через NFS
файловой системой (обратитесь к страницам справочной системы по команде
&man.exports.5;), а /project будет точкой
монтирования экспортируемой файловой системы на клиенте. В любом
случае, отметьте, что для вашего приложения могут понадобиться
дополнительные параметры, такие, как ,
или .Пример системы FreeBSD (freebox) как клиента
в файле /etc/fstab на машине
freebox:fastws:/sharedfs /project nfs rw,-r=1024 0 0Команда, выдаваемая вручную на машине
freebox:&prompt.root; mount -t nfs -o -r=1024 fastws:/sharedfs /projectПример системы FreeBSD в качестве сервера в файле
/etc/fstab на машине
fastws:freebox:/sharedfs /project nfs rw,-w=1024 0 0Команда, выдаваемая вручную на машине
fastws:&prompt.root; mount -t nfs -o -w=1024 freebox:/sharedfs /projectПрактически все 16-разрядные сетевые адаптеры позволят работать
без указанных выше ограничений на размер блоков при чтении и
записи.Для тех, кто интересуется, ниже описывается, что же происходит в
при появлении этой ошибки, и объясняется, почему ее невозможно
устранить. Как правило, NFS работает с блоками размером
8 килобайт (хотя отдельные фрагменты могут иметь меньшие
размеры). Так, пакет Ethernet имеет максимальный размер около
1500 байт, то
блок NFS разбивается на несколько пакетов Ethernet, хотя
на более высоком уровне это все тот же единый блок, который должен быть
принят, собран и подтвержден как один блок.
Высокопроизводительные рабочие станции могут посылать пакеты, которые
соответствуют одному блоку NFS, сразу друг за другом, насколько это
позволяет делать стандарт. На слабых, низкопроизводительных адаптерах
пакеты, пришедшие позже, накладываются поверх ранее пришедших пакетов
того же самого блока до того, как они могут быть переданы хосту и
блок как единое целое не может быть собран или подтвержден. В
результате рабочая станция входит в ситуацию таймаута и пытается
повторить передачу, но уже с полным блоком в 8 КБ, и процесс будет
повторяться снова, до бесконечности.Задав размер блока меньше размера пакета Ethernet, мы достигаем
того, что любой полностью полученный пакет Ethernet может быть
подтвержден индивидуально, и избежим тупиковую ситуацию.Наложение пакетов может все еще проявляться, когда
высокопроизводительные рабочие станции сбрасывают данные на PC-систему,
однако повторение этой ситуации не обязательно с более скоростными
адаптерами с блоками NFS. Когда происходит наложение,
затронутые блоки будут переданы снова, и скорее всего, они будут
получены, собраны и подтверждены.BillSwingleТекст создал EricOgrenВнёс добавления UdoErdelhoffNetwork Information System (NIS/YP)Что это такое?NISSolarisHP-UXAIXLinuxNetBSDOpenBSDNIS,
что является сокращением от Network Information Services
(Сетевые Информационные Службы), которые были разработаны компанией
Sun Microsystems для централизованного администрирования систем &unix;
(изначально &sunos;). В настоящее время эти службы практически стали
промышленным стандартом; все основные &unix;-подобные системы
(&solaris;, HP-UX, &aix;, Linux, NetBSD, OpenBSD, FreeBSD и так далее)
поддерживают NIS.yellow pagesNISNIS
первоначально назывались Yellow Pages (или yp), но из-за
проблем с торговым знаком Sun изменила это название. Старое название
(и yp) всё ещё часто употребляется.NISдоменыЭто система клиент/сервер на основе вызовов RPC, которая позволяет
группе машин в одном домене NIS совместно использовать общий набор
конфигурационных файлов. Системный администратор может настроить
клиентскую систему NIS только с минимальной настроечной информацией, а
затем добавлять, удалять и модифицировать настроечную информацию из
одного места.Windows NTЭто похоже на систему доменов &windowsnt;; хотя их внутренние
реализации не так уж и похожи, основные функции сравнимы.Термины/программы, о которых вы должны знатьСуществует несколько терминов и некоторое количество
пользовательских программ, которые будут нужны, когда вы будете
пытаться сделать NIS во FreeBSD, и в случае создания сервера, и
в случае работы в качестве клиента NIS:portmapТерминОписаниеИмя домена NISГлавный сервер NIS и все его клиенты (включая вторичные
серверы), имеют доменное имя NIS. Как и в случае с именем
домена &windowsnt;, имя домена NIS не имеет ничего общего с
DNS.portmapДля обеспечения работы RPC (Remote Procedure Call,
Удалённого Вызова Процедур, сетевого протокола, используемого
NIS), должен быть запущен даемон portmap.
Если даемон portmap не запущен, невозможно
будет запустить сервер NIS, или работать как
NIS-клиент.ypbindСвязывает
NIS-клиента с его NIS-сервером. Он определяет имя NIS-домена
системы, и при помощи RPC подключается к серверу.
ypbind является основой клиент-серверного
взаимодействия в среде NIS; если на клиентской машине
программа ypbind перестанет работать, то
эта машина не сможет получить доступ к серверу NIS.ypservПрограмма ypserv, которая должна
запускаться только на серверах NIS: это и есть
сервер NIS. Если &man.ypserv.8; перестанет работать, то
сервер не сможет отвечать на запросы NIS (к счастью, на этот
случай предусмотрен вторичный сервер). Есть несколько
реализаций NIS (к FreeBSD это не относится), в которых не
производится попыток подключиться к другому серверу, если ранее
используемый сервер перестал работать. Зачастую единственным
средством, помогающим в этой ситуации, является перезапуск
серверного процесса (или сервера полностью) или процесса
ypbind на клиентской машине.rpc.yppasswddПрограмма rpc.yppasswdd, другой
процесс, который запускается только на главных NIS-серверах:
это даемон, позволяющий клиентам NIS изменять свои
пароли NIS. Если этот даемон не запущен, то пользователи
должны будут входить на основной сервер NIS и там менять свои
пароли.Как это работает?В системе NIS существует три типа хостов: основные (master)
серверы, вторичные (slave) серверы и клиентские машины. Серверы
выполняют роль централизованного хранилища информации о конфигурации
хостов. Основные серверы хранят оригиналы этой информации, когда как
вторичные серверы хранят ее копию для обеспечения избыточности.
Клиенты связываются с серверами, чтобы предоставить им эту
информацию.Информация во многих файлах может совместно использоваться
следующим образом. Файлы master.passwd,
group и hosts используются
совместно через NIS. Когда процессу, работающему на клиентской машине,
требуется информация, как правило, находящаяся в этих файлах локально,
то он делает запрос к серверу NIS, с которым связан.Типы машинNISглавный серверОсновной сервер NIS.
Такой сервер, по аналогии с первичным контроллером домена
&windowsnt;, хранит файлы, используемые всеми клиентами NIS. Файлы
passwd, group и
различные другие файлы, используемые клиентами NIS, находятся
на основном сервере.Возможно использование одной машины в качестве сервера для
более чем одного домена NIS. Однако, в этом введении такая
ситуация не рассматривается, и предполагается менее масштабное
использование NIS.NISвторичный серверВторичные серверы NIS. Похожие на
вторичные контроллеры доменов &windowsnt;, вторичные серверы
NIS содержат копии оригинальных файлов данных NIS. Вторичные
серверы NIS обеспечивают избыточность, что нужно в критичных
приложениях. Они также помогают распределять нагрузку на
основной сервер: клиенты NIS всегда подключаются к тому серверу
NIS, который ответил первым, в том числе и к вторичным
серверам.NISклиентКлиенты NIS.
Клиенты NIS, как и большинство рабочих станций &windowsnt;,
аутентифицируются на сервере NIS (или на контроллере домена
&windowsnt; для рабочих станций &windowsnt;) во время
входа в систему.Использование NIS/YPВ этом разделе приводится пример настройки NIS.В этом разделе предполагается, что вы работаете с FreeBSD 3.3
или выше. Указания, приводимые здесь, скорее всего,
будут работать с любой версией FreeBSD, выше,
чем 3.0, однако нет гарантий, что это на самом деле так.ПланированиеДавайте предположим, что вы являетесь администратором в маленькой
университетской лаборатории. В настоящий момент в этой лаборатории
с 15 машинами отсутствует единая точка администрирования; на каждой
машине имеются собственные файлы /etc/passwd и
/etc/master.passwd. Эти файлы синхронизируются
друг с другом только вручную; сейчас, когда вы добавляете
пользователя в лаборатории, вы должны выполнить команду
adduser на всех 15 машинах. Понятно, что такое
положение вещей нужно исправлять, так что вы решили перевести
сеть на использование NIS, используя две машины в качестве
серверов.Итак, конфигурация лаборатории сейчас выглядит примерно
так:
-
+ Имя машиныIP-адресРоль машиныellington10.0.0.2Основной сервер NIScoltrane10.0.0.3Вторичный сервер NISbasie10.0.0.4Факультетская рабочая станцияbird10.0.0.5Клиентская машинаcli[1-11]10.0.0.[6-17]Другие клиентские машиныЕсли вы определяете схему NIS первый раз, ее нужно хорошо
обдумать. Вне зависимости от размеров вашей сети, есть несколько
ключевых моментов, которые требуют принятия решений.Выбор имени домена NISNISимя доменаЭто имя не должно быть именем домена, которое
вы использовали. Более точно это имя называется именем
домена NIS. Когда клиент рассылает запросы на получение
информации, он включает в них имя домена NIS, частью которого
является. Таким способом многие сервера в сети могут указать,
какой сервер на какой запрос должен отвечать. Думайте о домене
NIS как об имени группы хостов, которые каким-то образом
связаны.Некоторые организации в качестве имени домена NIS используют
свой домен Интернет. Это не рекомендуется, так как может вызвать
проблемы в процессе решения сетевых проблем. Имя домена NIS должно
быть уникальным в пределах вашей сети и хорошо, если оно будет
описывать группу машин, которые представляет. Например,
художественный отдел в компании Acme Inc. может находиться в
домене NIS с именем acme-art. В нашем примере
положим, что мы выбрали имя test-domain.SunOSНесмотря на это, некоторые операционные системы (в частности,
&sunos;) используют свое имя домена NIS в качестве имени домена
Интернет. Если одна или более машин в вашей сети имеют такие
ограничения, вы обязаны использовать имя
домена Интернет в качестве имени домена NIS.Требования к серверуЕсть несколько вещей, которые нужно иметь в виду при выборе
машины для использования в качестве сервера NIS. Одной из
обескураживающей вещью, касающейся NIS, является уровень
зависимости клиентов от серверов. Если клиент не может
подключиться к серверу своего домена NIS, зачастую машину просто
становится нельзя использовать. Отсутствие информации о
пользователях и группах приводит к временной остановке работы
большинства систем. Зная это, вы должны выбрать машину, которая
не должна подвергаться частым перезагрузкам и не используется
для разработки. Сервер NIS в идеале должен быть отдельно стоящей
машиной, единственным целью в жизни которой является быть сервером
NIS. Если вы работаете в сети, которая не так уж сильно загружена,
то можно поместить сервер NIS на машине, на которой запущены и
другие сервисы, просто имейте в виду, что если сервер NIS
становится недоступным, то это негативно отражается на
всех клиентах NIS.Серверы NISОригинальные копии всей информации NIS хранится на единственной
машине, которая называется главным сервером NIS. Базы данных,
которые используются для хранения информации, называются картами NIS.
Во FreeBSD эти карты хранятся в
/var/yp/[domainname], где
[domainname] является именем обслуживаемого
домена NIS. Один сервер NIS может поддерживать одновременно
несколько доменов, так что есть возможность иметь несколько таких
каталогов, по одному на каждый обслуживаемый домен. Каждый домен
будет иметь свой собственный независимый от других набор карт.Основной и вторичный серверы обслуживают все запросы NIS с
помощью даемона ypserv. ypserv
отвечает за получение входящих запросов от клиентов NIS,
распознавание запрашиваемого домена и отображение имени в путь к
соответствующему файлы базы данных, а также передаче информации из
базы данных обратно клиенту.Настройка основного сервера NISNISнастройка сервераНастройка основного сервера NIS может оказаться сравнительно
простой, в зависимости от ваших потребностей. В поставку FreeBSD
сразу включена поддержка NIS. Все, что вам нужно, это добавить
следующие строки в файл /etc/rc.conf, а
FreeBSD сделает за вас всё остальное..nisdomainname="test-domain"
В этой строке задается имя домена NIS, которое будет
test-domain, еще до настройки сети
(например, после перезагрузки).nis_server_enable="YES"
Здесь указывается FreeBSD на запуск процессов серверов NIS,
когда дело доходит до сетевых настроек.nis_yppasswdd_enable="YES"
Здесь указывается на запуск даемона
rpc.yppasswdd, который, как это отмечено
выше, позволит пользователям менять свой пароль NIS с
клиентской машины.В зависимости от ваших настроек NIS, вам могут понадобиться
дополнительные строки. Обратитесь к разделу о серверах NIS,
которые являются и клиентами NIS ниже для получения
подробной информации.А теперь всё, что вам нужно сделать, это запустить команду
/etc/netstart, работая как администратор. По
ней произойдет настройка всего, при этом будут использоваться
значения, заданные в файле /etc/rc.conf.Инициализация карт NISNISкартыКарты NIS являются файлами баз данных,
которые хранятся в каталоге /var/yp.
Они генерируются из конфигурационных файлов, находящихся в каталоге
/etc основного сервера NIS, за одним
исключением: файл /etc/master.passwd.
На это есть весомая причина, вам не нужно распространять пароли
пользователя root и других административных
пользователей на все серверы в домене NIS. По этой причине, прежде
чем инициализировать карты NIS, вы должны сделать вот что:&prompt.root; cp /etc/master.passwd /var/yp/master.passwd
&prompt.root; cd /var/yp
&prompt.root; vi master.passwdВы должны удалить все записи, касающиеся системных
пользователей (bin, tty,
kmem, games и так далее), а
также записи, которые вы не хотите распространять клиентам NIS
(например, root и другие пользователи с UID,
равным 0 (администраторы)).Проверьте, чтобы файл
/var/yp/master.passwd был недоступен для
записи ни для группы, ни для остальных пользователей (режим
доступа 600)! Воспользуйтесь командой chmod,
если это нужно.Tru64 UNIXКогда с этим будет покончено, самое время инициализировать
карты NIS! В поставку FreeBSD включен скрипт с именем
ypinit, который делает это (обратитесь к его
справочной странице за дополнительной информацией). Отметьте, что
этот скрипт имеется в большинстве операционных систем &unix;, но не
во всех. В системе Digital Unix/Compaq Tru64 UNIX он называется
ypsetup. Так как мы генерируем карты для
главного сервера NIS, то при вызове программы
ypinit мы передаем ей параметр
. Для генерации карт NIS в предположении, что
вы уже сделали шаги, описанные выше, выполните следующее:ellington&prompt.root; ypinit -m test-domain
Server Type: MASTER Domain: test-domain
Creating an YP server will require that you answer a few questions.
Questions will all be asked at the beginning of the procedure.
Do you want this procedure to quit on non-fatal errors? [y/n: n] n
Ok, please remember to go back and redo manually whatever fails.
If you don't, something might not work.
At this point, we have to construct a list of this domains YP servers.
rod.darktech.org is already known as master server.
Please continue to add any slave servers, one per line. When you are
done with the list, type a <control D>.
master server : ellington
next host to add: coltrane
next host to add: ^D
The current list of NIS servers looks like this:
ellington
coltrane
Is this correct? [y/n: y] y
[..вывод при генерации карт..]
NIS Map update completed.
ellington has been setup as an YP master server without any errors.Программа ypinit должна была создать файл
/var/yp/Makefile из
/var/yp/Makefile.dist. При создании этого
файла предполагается, что вы работаете в окружении с единственным
сервером NIS и только с машинами FreeBSD. Так как в домене
test-domain имеется также и вторичный сервер,
то вы должны отредактировать файл
/var/yp/Makefile:ellington&prompt.root; vi /var/yp/MakefileВы должны закомментировать строку, в которой указаноNOPUSH = "True"(она уже не раскомментирована).Настройка вторичного сервера NISNISвторичный серверНастройка вторичного сервера NIS осуществляется ещё проще,
чем настройка главного сервера. Войдите на вторичный сервер и
отредактируйте файл /etc/rc.conf точно также,
как вы делали это ранее. Единственным отличием является то, что
при запуске программы ypinit мы теперь должны
использовать опцию . Применение опции
требует также указание имени главного сервера
NIS, так что наша команда должна выглядеть так:coltrane&prompt.root; ypinit -s ellington test-domain
Server Type: SLAVE Domain: test-domain Master: ellington
Creating an YP server will require that you answer a few questions.
Questions will all be asked at the beginning of the procedure.
Do you want this procedure to quit on non-fatal errors? [y/n: n] n
Ok, please remember to go back and redo manually whatever fails.
If you don't, something might not work.
There will be no further questions. The remainder of the procedure
should take a few minutes, to copy the databases from ellington.
Transferring netgroup...
ypxfr: Exiting: Map successfully transferred
Transferring netgroup.byuser...
ypxfr: Exiting: Map successfully transferred
Transferring netgroup.byhost...
ypxfr: Exiting: Map successfully transferred
Transferring master.passwd.byuid...
ypxfr: Exiting: Map successfully transferred
Transferring passwd.byuid...
ypxfr: Exiting: Map successfully transferred
Transferring passwd.byname...
ypxfr: Exiting: Map successfully transferred
Transferring group.bygid...
ypxfr: Exiting: Map successfully transferred
Transferring group.byname...
ypxfr: Exiting: Map successfully transferred
Transferring services.byname...
ypxfr: Exiting: Map successfully transferred
Transferring rpc.bynumber...
ypxfr: Exiting: Map successfully transferred
Transferring rpc.byname...
ypxfr: Exiting: Map successfully transferred
Transferring protocols.byname...
ypxfr: Exiting: Map successfully transferred
Transferring master.passwd.byname...
ypxfr: Exiting: Map successfully transferred
Transferring networks.byname...
ypxfr: Exiting: Map successfully transferred
Transferring networks.byaddr...
ypxfr: Exiting: Map successfully transferred
Transferring netid.byname...
ypxfr: Exiting: Map successfully transferred
Transferring hosts.byaddr...
ypxfr: Exiting: Map successfully transferred
Transferring protocols.bynumber...
ypxfr: Exiting: Map successfully transferred
Transferring ypservers...
ypxfr: Exiting: Map successfully transferred
Transferring hosts.byname...
ypxfr: Exiting: Map successfully transferred
coltrane has been setup as an YP slave server without any errors.
Don't forget to update map ypservers on ellington.Теперь у вас должен быть каталог с именем
/var/yp/test-domain. Копии карт главного
сервера NIS должны быть в этом каталоге. Вы должны удостовериться,
что этот каталог обновляется. Следующие строки в
/etc/crontab вашего вторичного сервера должны
это делать:20 * * * * root /usr/libexec/ypxfr passwd.byname
21 * * * * root /usr/libexec/ypxfr passwd.byuidЭти две строки заставляют вторичный сервер синхронизировать
свои карты с картами главного сервера. Хотя эти строчки не
обязательны, так как главный сервер делает попытки передать все
изменения в своих картах NIS на свои вторичные серверы, но из-за
того, что информация для входа в систему настолько жизненно важна для
систем, зависящих от сервера, что выполнение регулярных обновлений
является совсем не плохой идеей. Это ещё более важно в загруженных
сетях, в которых обновления карт могут не всегда завершаться
успешно.А теперь точно также запустите команду
/etc/netstart на вторичном сервере, по которой
снова выполнится запуск сервера NIS.Клиенты NISКлиент NIS выполняет так называемую привязку к конкретному
серверу NIS при помощи даемона ypbind.
ypbind определяет домен, используемый в системе
по умолчанию (тот, который устанавливается по команде
domainname), и начинает широковещательную рассылку
запросов RPC в локальной сети. В этих запросах указано имя домена,
к серверу которого ypbind пытается осуществить
привязку. Если сервер, который был настроен для обслуживания
запрашиваемого домена, получит широковещательный запрос, он ответит
ypbind, который, в свою очередь запомнит адрес
сервера. Если имеется несколько серверов (например, главный и
несколько вторичных), то ypbind будет использовать
адрес первого ответившего. С этого момента клиентская система будет
направлять все свои запросы NIS на этот сервер. Время от времени
ypbind будет пинать сервер для
проверки его работоспособности.
Если на один из тестовых пакетов не удастся получить ответа за
разумное время, то ypbind пометит этот домен как
домен, с которым связка разорвана, и снова начнет процесс посылки
широковещательных запросов в надежде найти другой сервер.Настройка клиента NISNISнастройка клиентаНастройка машины с FreeBSD в качестве клиента NIS достаточно
проста.Отредактируйте файл /etc/rc.conf,
добавив туда следующие строки для того, чтобы задать имя домена
NIS и запустить ypbind во время запуска
сетевых служб:nisdomainname="test-domain"
nis_client_enable="YES"Для импортирования всех возможных учётных записей от сервера
NIS, удалите все записи пользователей из вашего файла
/etc/master.passwd и воспользуйтесь
командой vipw для добавления следующей строки
в конец файла:+:::::::::Эта строчка даст всем пользователям с корректной учетной
записью в картах учетных баз пользователей доступ к этой
системе. Есть множество способов настроить ваш клиент NIS,
изменив эту строку. Посмотрите ниже текст, касающийся сетевых групп, чтобы
получить более подробную информацию. Дополнительная информация
для изучения находится в книге издательства O'Reilly под
названием Managing NFS and NIS.Вы должны оставить хотя бы одну локальную запись (то есть
не импортировать ее через NIS) в вашем
/etc/master.passwd и эта запись должна
быть также членом группы wheel. Если
с NIS что-то случится, эта запись может использоваться для
удаленного входа в систему, перехода в режим администратора и
исправления неисправностей.Для импортирования всех возможных записей о группах с
сервера NIS, добавьте в ваш файл
/etc/group такую строчку:+:*::После завершения выполнения этих шагов у вас должно получиться
запустить команду ypcat passwd и увидеть
карту учетных записей сервера NIS.Безопасность NISВ общем-то любой пользователь, зная имя вашего домена, может
выполнить запрос RPC к &man.ypserv.8; и получить содержимое ваших карт
NIS. Для предотвращения такого неавторизованного обмена &man.ypserv.8;
поддерживает так называемую систему securenets, которая может
использоваться для ограничения доступа к некоторой группе хостов. При
запуске &man.ypserv.8; будет пытаться загрузить информацию, касающуюся
securenets, из файла /var/yp/securenets.Имя каталога зависит от параметра, указанного вместе с опцией
. Этот файл содержит записи, состоящие из
указания сети и сетевой маски, разделенных пробелом. Строчки,
начинающиеся со знака #, считаются комментариями.
Примерный файл securenets может иметь примерно такой вид:# allow connections from local host -- mandatory
127.0.0.1 255.255.255.255
# allow connections from any host
# on the 192.168.128.0 network
192.168.128.0 255.255.255.0
# allow connections from any host
# between 10.0.0.0 to 10.0.15.255
# this includes the machines in the testlab
10.0.0.0 255.255.240.0Если &man.ypserv.8; получает запрос от адреса, который соответствует
одному из этих правил, он будет отрабатывать запрос обычным образом.
Если же адрес не подпадает ни под одно правило, запрос будет
проигнорирован и в журнал будет записано предупреждающее сообщение. Если
файл /var/yp/securenets не существует,
ypserv будет обслуживать соединения от любого
хоста.Программа ypserv также поддерживает пакет программ
tcpwrapper от Wietse Venema. Это позволяет
администратору для ограничения доступа вместо
/var/yp/securenets использовать конфигурационные
файлы tcpwrapper.Хотя оба этих метода управления доступом обеспечивают некоторую
безопасность, они, как основанные на проверке привилегированного
порта, оба подвержены атакам типа IP spoofing. Весь
сетевой трафик, связанный с работой NIS, должен блокироваться вашим
брандмауэром.Серверы, использующие файл /var/yp/securenets,
могут быть не в состоянии обслуживать старых клиентов NIS с древней
реализацией протокола TCP/IP. Некоторые из этих реализаций при
рассылке широковещательных запросов устанавливают все биты машинной
части адреса в ноль и/или не в состоянии определить маску подсети при
вычислении адреса широковещательной рассылки. Хотя некоторые из этих
проблем могут быть решены изменением конфигурации клиента, другие
могут привести к отказу от использования
/var/yp/securenets.Использование /var/yp/securenets на сервере
с такой архаичной реализацией TCP/IP является весьма плохой идеей, и
приведёт к потере работоспособности NIS в большой части вашей
сети.tcpwrapperИспользование пакета tcpwrapper увеличит
время отклика вашего сервера NIS. Дополнительной задержки может
оказаться достаточно для возникновения таймаутов в клиентских
программах, особенно в загруженных сетях или с медленными серверами
NIS. Если одна или более ваших клиентских систем страдают от таких
проблем, вы должны преобразовать такие клиентские системы во вторичные
серверы NIS и сделать принудительную их привязку к самим себе.Запрет входа некоторых пользователейВ нашей лаборатории есть машина basie, о которой
предполагается, что она является исключительно факультетской рабочей
станцией. Мы не хотим исключать эту машину из домена NIS, однако
файл passwd на главном сервере NIS содержит
учетные записи как для работников факультета, так и студентов. Что мы
можем сделать?Есть способ ограничить вход некоторых пользователей на этой машине,
даже если они присутствуют в базе данных NIS. Чтобы это сделать, вам
достаточно добавить
-username в конец файла
/etc/master.passwd на клиентской машине, где
username является именем пользователя,
которому вы хотите запретить вход. Рекомендуется сделать это с помощью
утилиты vipw, так как vipw
проверит ваши изменения в /etc/master.passwd, а
также автоматически перестроит базу данных паролей по окончании
редактирования. Например, если мы хотим запретить пользователю
bill осуществлять вход на машине
basie, то мы сделаем следующее:basie&prompt.root; vipw[add -bill to the end, exit]
vipw: rebuilding the database...
vipw: done
basie&prompt.root; cat /etc/master.passwd
root:[password]:0:0::0:0:The super-user:/root:/bin/csh
toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh
daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin
operator:*:2:5::0:0:System &:/:/sbin/nologin
bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin
tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin
kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin
games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin
news:*:8:8::0:0:News Subsystem:/:/sbin/nologin
man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin
bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin
uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin
pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin
nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
+:::::::::
-bill
basie&prompt.root;UdoErdelhoffТекст предоставил Использование сетевых группсетевые группыСпособ, описанный в предыдущем разделе, работает достаточно хорошо,
если вам нужны особые правила для очень малой группы пользователей или
машин. В более крупных сетях вы забудете о
запрете входа определенных пользователей на важные машины или даже
будете настраивать каждую машину по отдельности, теряя таким образом
главное преимущество использования NIS:
централизованное администрирование.Ответом разработчиков NIS на эту проблему являются
сетевые группы. Их назначение и смысл можно
сравнить с обычными группами, используемыми в файловых системах &unix;.
Главное отличие заключается в отсутствии числового идентификатора и
возможности задать сетевую группу включением как пользователей, так и
других сетевых групп.Сетевые группы были разработаны для работы с большими, сложными
сетями с сотнями пользователей и машин. С одной стороны, хорошо, если
вам приходится с такой ситуацией. С другой стороны, эта сложность
делает невозможным описание сетевых групп с помощью простых примеров.
Пример, используемый в дальнейшем, демонстрирует эту проблему.Давайте предположим, что успешное внедрение системы NIS в вашей
лаборатории заинтересовало ваше руководство. Вашим следующим заданием
стало расширение домена NIS для включения в него некоторых других
машин студенческого городка. В двух таблицах перечислены имена
новых машин и пользователей, а также их краткое описание.
-
+ Имена пользователейОписаниеalpha, betaОбычные служащие IT-департаментаcharlie, deltaПрактиканты IT-департаментаecho, foxtrott, golf, ...Обычные сотрудникиable, baker, ...Проходящие интернатуру
-
+ Имена машинОписаниеwar, death, famine, pollutionВаши самые важные серверы. Только служащим IT позволяется
входить на эти машины.pride, greed, envy, wrath, lust, slothМенее важные серверы. Все сотрудники департамента IT могут
входить на эти машины.one, two, three, four, ...Обычные рабочие станции. Только
реально нанятым служащим позволяется
использовать эти машины.trashcanОчень старая машина без каких-либо критичных данных. Даже
проходящим интернатуру разрешено ее использовать.Если вы попытаетесь реализовать эти требования, ограничивая
каждого пользователя по отдельности, то вам придется добавить на каждой
машине в файл passwd по одной строчке
-user для каждого пользователя, которому
запрещено входить на эту систему. Если вы забудете даже одну строчку,
у вас могут начаться проблемы. Гораздо проще делать это правильно во
время начальной установки, однако вы постепенно будете
забывать добавлять строчки для новых пользователей во время
повседневной работы. В конце концов, Мерфи был оптимистом.Использование в этой ситуации сетевых групп дает несколько
преимуществ. Нет необходимости описывать по отдельности каждого
пользователя; вы ставите в соответствие пользователю одну или
несколько сетевых групп и разрешаете или запрещаете вход всем членам
сетевой группы. Если вы добавляете новую машину, вам достаточно
определить ограничения на вход для сетевых групп. Если добавляется
новый пользователь, вам достаточно добавить его к одной или большему
числу сетевых групп. Эти изменения независимы друг от друга: нет
больше комбинаций для каждого пользователя и машины.
Если настройка вашей системы NIS тщательно спланирована, то для
разрешения или запрещения доступа к машинам вам нужно будет
модифицировать единственный конфигурационный файл.Первым шагом является инициализация карты NIS по имени netgroup.
Программа &man.ypinit.8; во FreeBSD по умолчанию этой карты не
создаёт, хотя реализация NIS будет её поддерживает, как только она
будет создана. Чтобы создать пустую карту, просто наберитеellington&prompt.root; vi /var/yp/netgroupи начните добавлять содержимое. Например, нам нужно по крайней
мере четыре сетевых группы: сотрудники IT, практиканты IT, обычные
сотрудники и интернатура.IT_EMP (,alpha,test-domain) (,beta,test-domain)
IT_APP (,charlie,test-domain) (,delta,test-domain)
USERS (,echo,test-domain) (,foxtrott,test-domain) \
(,golf,test-domain)
INTERNS (,able,test-domain) (,baker,test-domain)IT_EMP, IT_APP и так далее
являются именами сетевых групп. Несколько слов в скобках служат для
добавления пользователей в группу. Три поля внутри группы обозначают
следующее:Имя хоста или хостов, к которым применимы последующие записи.
Если имя хоста не указано, то запись применяется ко всем хостам.
Если же указывается имя хоста, то вы получите мир темноты, ужаса
и страшной путаницы.Имя учетной записи, которая принадлежит этой сетевой
группе.Домен NIS для учетной записи. Вы можете импортировать в вашу
сетевую группу учетные записи из других доменов NIS, если вы один
из тех несчастных, имеющих более одного домена NIS.Каждое из этих полей может содержать шаблоны, подробности даны в
странице справочника по &man.netgroup.5;.сетевые группыНе нужно использовать имена сетевых групп длиннее 8 символов,
особенно если в вашем домене NIS имеются машины, работающие под
управлением других операционных систем. Имена чувствительны к
регистру; использование заглавных букв для имен сетевых групп
облегчает распознавание пользователей, имен машин и сетевых
групп.Некоторые клиенты NIS (отличные от FreeBSD) не могут работать
с сетевыми группами, включающими большое количество записей.
Например, в некоторых старых версиях &sunos; возникают проблемы, если
сетевая группа содержит более 15 записей. Вы
можете обойти это ограничение, создав несколько подгрупп с 15 или
меньшим количеством пользователей и настоящую сетевую группу,
состоящую из подгрупп:BIGGRP1 (,joe1,domain) (,joe2,domain) (,joe3,domain) [...]
BIGGRP2 (,joe16,domain) (,joe17,domain) [...]
BIGGRP3 (,joe31,domain) (,joe32,domain)
BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3Вы можете повторить этот процесс, если вам нужно иметь более 225
пользователей в одной сетевой группе.Активация и распространение вашей карты NIS проста:ellington&prompt.root; cd /var/yp
ellington&prompt.root; makeЭто приведет к созданию трех карт NIS
netgroup, netgroup.byhost и
netgroup.byuser. Воспользуйтесь утилитой
&man.ypcat.1; для проверки доступности ваших новых карт NIS:ellington&prompt.user; ypcat -k netgroup
ellington&prompt.user; ypcat -k netgroup.byhost
ellington&prompt.user; ypcat -k netgroup.byuserВывод первой команды должен соответствовать содержимому файла
/var/yp/netgroup. Вторая команда не выведет
ничего, если вы не зададите сетевые группы, специфичные для хоста.
Третья команда может использоваться пользователем для получения
списка сетевых групп.Настройка клиента достаточно проста. Чтобы настроить сервер
war, вам достаточно запустить &man.vipw.8;
и заменить строку+:::::::::на+@IT_EMP:::::::::Теперь только данные, касающиеся пользователей, определенных в
сетевой группе IT_EMP, импортируются в
базу паролей машины war и только этим
пользователям будет разрешен вход.К сожалению, это ограничение также касается и функции ~ командного
процессора и всех подпрограмм, выполняющих преобразование между
именами пользователей и их числовыми ID. Другими
словами, команда cd ~user
работать не будет, команда ls -l будет выдавать
числовые идентификаторы вместо имён пользователей, а
find . -user joe -print работать откажется, выдавая
сообщение No such user. Чтобы это исправить,
вам нужно будет выполнить импорт всех записей о пользователях
без разрешения на вход на ваши серверы.Это можно сделать, добавив еще одну строку в файл
/etc/master.passwd. Эта строка должна
содержать:+:::::::::/sbin/nologin, что означает
Произвести импортирование всех записей с заменой командного
процессора на /sbin/nologin в импортируемых
записях. Вы можете заменить любое поле в строке с паролем,
указав значение по умолчанию в вашем
/etc/master.passwd.Проверьте, что строка
+:::::::::/sbin/nologin помещена после
+@IT_EMP:::::::::. В противном случае все
пользовательские записи, импортированные из NIS, будут иметь
/sbin/nologin в качестве оболочки.После этого изменения при появлении нового сотрудника IT вам будет
достаточно изменять только одну карту NIS. Вы можете применить
подобный метод для менее важных серверов, заменяя
старую строку +::::::::: в их файлах
/etc/master.passwd на нечто, подобное
следующему:+@IT_EMP:::::::::
+@IT_APP:::::::::
+:::::::::/sbin/nologinСоответствующие строки для обычных рабочих станций могут иметь
такой вид:+@IT_EMP:::::::::
+@USERS:::::::::
+:::::::::/sbin/nologinИ все было прекрасно до того момента, когда через несколько
недель изменилась политика: Департамент IT начал нанимать интернатуру.
Интернатуре в IT позволили использовать обычные рабочие станции и
менее важные серверы; практикантам позволили входить на главные
серверы. Вы создали новую сетевую группу IT_INTERN, добавили в нее
новую интернатуру и начали изменять настройки на всех и каждой
машине... Как говорит старая мудрость: Ошибки в
централизованном планировании приводят к глобальному
хаосу.Возможность в NIS создавать сетевые группы из других сетевых
групп может использоваться для предотвращения подобных ситуаций. Одним
из вариантов является создание сетевых групп на основе ролей.
Например, вы можете создать сетевую группу с именем
BIGSRV для задания ограничений на вход на
важные серверы, другую сетевую группу с именем
SMALLSRV для менее важных серверов и третью
сетевую группу под названием USERBOX для
обычных рабочих станций. Каждая из этих сетевых групп содержит
сетевые группы, которым позволено входить на эти машины. Новые записи
для вашей карты NIS сетевой группы должны выглядеть таким
образом:BIGSRV IT_EMP IT_APP
SMALLSRV IT_EMP IT_APP ITINTERN
USERBOX IT_EMP ITINTERN USERSЭтот метод задания ограничений на вход работает весьма хорошо,
если вы можете выделить группы машин с одинаковыми ограничениями. К
сожалению, такая ситуация может быть исключением, но не правилом. В
большинстве случаев вам нужна возможность определять ограничения на
вход индивидуально для каждой машины.Задание сетевых групп в зависимости от машин является другой
возможностью, которой можно воспользоваться при изменении политики,
описанной выше. При таком развитии событий файл
/etc/master.passwd на каждой машине содержит две
строки, начинающиеся с +. Первая из них добавляет
сетевую группу с учётными записями, которым разрешено входить на эту
машину, а вторая добавляет все оставшиеся учетные записи с
/sbin/nologin в качестве командного процессора.
Хорошей идеей является использование ИМЕНИ МАШИНЫ заглавными буквами
для имени сетевой группы. Другими словами, строки должны иметь такой
вид:+@BOXNAME:::::::::
+:::::::::/sbin/nologinКак только вы завершите эту работу для всех ваших машин, вам не
нужно будет снова модифицировать локальные версии
/etc/master.passwd. Все будущие изменения могут
быть выполнены изменением карты NIS. Вот пример возможной карты
сетевой группы для этого случая с некоторыми полезными
дополнениями:# Сначала определяем группы пользователей
IT_EMP (,alpha,test-domain) (,beta,test-domain)
IT_APP (,charlie,test-domain) (,delta,test-domain)
DEPT1 (,echo,test-domain) (,foxtrott,test-domain)
DEPT2 (,golf,test-domain) (,hotel,test-domain)
DEPT3 (,india,test-domain) (,juliet,test-domain)
ITINTERN (,kilo,test-domain) (,lima,test-domain)
D_INTERNS (,able,test-domain) (,baker,test-domain)
#
# Теперь задаем несколько групп на основе ролей
USERS DEPT1 DEPT2 DEPT3
BIGSRV IT_EMP IT_APP
SMALLSRV IT_EMP IT_APP ITINTERN
USERBOX IT_EMP ITINTERN USERS
#
# И группы для специальных задач
# Открыть пользователям echo и golf доступ к антивирусной машине
SECURITY IT_EMP (,echo,test-domain) (,golf,test-domain)
#
# Сетевые группы, специфичные для машин
# Наши главные серверы
WAR BIGSRV
FAMINE BIGSRV
# Пользователю india необходим доступ к этому серверу
POLLUTION BIGSRV (,india,test-domain)
#
# Этот очень важен и ему требуются большие ограничения доступа
DEATH IT_EMP
#
# Антивирусная машина, упомянутая выше
ONE SECURITY
#
# Ограничить машину единственным пользователем
TWO (,hotel,test-domain)
# [...далее следуют другие группы]Если вы используете какие-либо базы данных для управления
учетными записями ваших пользователей, вы должны смочь создать первую
часть карты с помощью инструментов построения отчетов вашей базы
данных. В таком случае новые пользователи автоматически получат
доступ к машинам.И последнее замечание: Не всегда бывает разумно использовать
сетевые группы на основе машин. Если в студенческих лабораториях вы
используете несколько десятков или даже сотен одинаковых машин, то
вам нужно использовать сетевые группы на основе ролей, а не основе
машин, для того, чтобы размеры карты NIS оставались в разумных
пределах.Важные замечанияЕсть некоторые действия, которые нужно будет выполнять по-другому,
если вы работаете с NIS.Каждый раз, когда вы собираетесь добавить пользователя в
лаборатории, вы должны добавить его только на
главном сервере NIS и обязательно перестроить карты
NIS. Если вы забудете сделать это, то новый
пользователь не сможет нигде войти, кроме как на главном сервере
NIS. Например, если в лаборатории нам нужно добавить нового
пользователя jsmith, мы делаем вот что:&prompt.root; pw useradd jsmith
&prompt.root; cd /var/yp
&prompt.root; make test-domainВместо pw useradd jsmith вы можете также
запустить команду adduser jsmith.Не помещайте административные учетные записи в карты
NIS. Вам не нужно распространять административных
пользователей и их пароли на машины, которые не должны иметь доступ
к таким учётным записям.Сделайте главный и вторичные серверы NIS безопасными
и минимизируйте их время простоя. Если кто-то либо
взломает, либо просто отключит эти машины, то люди без права
входа в лабораторию с легкостью получат доступ.Это основное уязвимое место в любой централизованно
администрируемой системе. Если вы не
защищаете ваши серверы NIS, вы будете иметь дело с толпой
разозлённых пользователей!Совместимость с NIS v1ypserv из поставки FreeBSD имеет
встроенную поддержку для обслуживания клиентов NIS v1. Реализация
NIS
во FreeBSD использует только протокол NIS v2, хотя другие реализации
имеют поддержку протокола v1 для совместимости со старыми системами.
Даемоны ypbind, поставляемые с такими
системами, будут пытаться осуществить привязку к серверу NIS v1, даже
если это им не нужно (и они будут постоянно рассылать широковещательные
запросы в поиске такого сервера даже после получения ответа от сервера
v2). Отметьте, что хотя имеется поддержка обычных клиентских вызовов,
эта версия ypserv не отрабатывает запросы на передачу карт v1;
следовательно, она не может использоваться в качестве главного или
вторичного серверов вместе с другими серверами NIS, поддерживающими
только протокол v1. К счастью, скорее всего, в настоящий момент
такие серверы практически не используются.Серверы NIS, которые также являются клиентами NISОсобое внимание следует уделить использованию
ypserv в домене со
многими серверами, когда серверные машины являются также клиентами
NIS.
Неплохо бы заставить серверы осуществить привязку к самим себе,
запретив рассылку запросов на привязку и возможно, перекрестную
привязку друг к другу. Если один сервер выйдет из строя, а другие
будут зависеть от него, то в результате могут возникнуть странные
ситуации. Постепенно все клиенты попадут в таймаут и попытаются
привязаться к другим серверам, но полученная задержка может быть
значительной, а странности останутся, так как серверы снова могут
привязаться друг к другу.Вы можете заставить хост выполнить привязку к конкретному серверу,
запустив команду ypbind с флагом
. Если вы не хотите делать это вручную каждый
раз при перезагрузке
вашего сервера NIS, то можете добавить в файл
/etc/rc.conf такие строки:nis_client_enable="YES" # run client stuff as well
nis_client_flags="-S NIS domain,server"Дополнительную информацию можно найти на странице справки по
&man.ypbind.8;.Форматы паролейNISформаты паролейОдним из общих вопросов, которые возникают в начале работы с NIS,
является вопрос совместимости форматов паролей. Если ваш сервер NIS
использует пароли, зашифрованные алгоритмом DES, то он будет
поддерживать только тех клиентов, что также используют DES. К
примеру, если в вашей сети имеются клиенты NIS, использующие &solaris;,
то вам, скорее всего, необходимо использовать пароли с шифрованием по
алгоритму DES.Чтобы понять, какой формат используют ваши серверы и клиенты,
загляните в файл /etc/login.conf. Если хост
настроен на использование паролей, зашифрованных по алгоритму DES,
то класс default будет содержать запись вроде
следующей:default:\
:passwd_format=des:\
:copyright=/etc/COPYRIGHT:\
[Последующие строки опущены]Другими возможными значениями для passwd_format
являются blf и md5 (для паролей,
шифруемых по стандартам Blowfish и MD5 соответственно).Если вы внесли изменения в файл
/etc/login.conf, то вам также нужно перестроить
базу данных параметров входа в систему, что достигается запуском
следующей команды пользователем root:&prompt.root; cap_mkdb /etc/login.confФормат паролей, которые уже находятся в файле
/etc/master.passwd, не будет изменён до тех пор,
пока пользователь не сменит свой пароль после
перестроения базы данных параметров входа в систему.После этого, чтобы удостовериться в том, что пароли зашифрованы
в том формате, который выбран вами, нужно проверить, что строка
crypt_default в /etc/auth.conf
указывает предпочтение выбранного вами формата паролей. Для этого
поместите выбранный формат первым в списке. Например, при
использовании DES-шифрования паролей строка будет выглядеть так:crypt_default = des blf md5Выполнив вышеперечисленные шаги на каждом из серверов и клиентов
NIS, работающих на FreeBSD, вы можете обеспечить их согласованность
относительно используемого в вашей сети формата паролей. Если у вас
возникли проблемы с аутентификацией клиента NIS, начать
её решать определённо стоит отсюда. Запомните: если вы хотите
использовать сервер NIS в гетерогенной сети, вам, наверное, нужно
будет использовать DES на всех системах в силу того, что это
минимальный общий стандарт.GregSutterТекст написал Автоматическая настройка сети (DHCP)Что такое DHCP?Dynamic Host Configuration ProtocolDHCPInternet Software Consortium (ISC)DHCP, или Dynamic Host Configuration Protocol (Протокол
Динамической Конфигурации Хостов), описывает порядок, по которому
система может подключиться к сети и получить необходимую информацию
для работы в ней. Во FreeBSD используется реализация DHCP от ISC
(Internet Software Consortium), так что вся информация, описывающая
особенности, зависящие от реализации, относится к дистрибутиву
ISC.Что описывается в этом разделеВ этом разделе описываются компоненты системы ISC DHCP как со стороны
клиента, так и со стороны сервера. Программа, работающая на клиентской
стороне, dhclient, интегрирована в поставку FreeBSD,
а серверная часть доступна в виде порта net/isc-dhcp3-server. Кроме ссылок ниже,
много полезной информации находится на страницах справочной системы,
описывающих &man.dhclient.8;, &man.dhcp-options.5; и
&man.dhclient.conf.5;.Как это работаетUDPКогда на клиентской машине выполняется программа
dhclient, являющаяся клиентом DHCP, она начинает
широковещательную рассылку запросов на получение настроечной информации.
По умолчанию эти запросы делаются на 68 порт UDP. Сервер отвечает на UDP
67, выдавая клиенту адрес IP и другую необходимую информацию, такую, как
сетевую маску, маршрутизатор и серверы DNS. Вся эта информация даётся в
форме аренды DHCP и верна только определенное время (что
настраивается администратором сервера DHCP). При таком подходе
устаревшие адреса IP тех клиентов, которые больше не подключены к сети,
могут автоматически использоваться повторно.Клиенты DHCP могут получить от сервера очень много информации.
Подробный список находится в странице Справочника
&man.dhcp-options.5;.Интеграция с FreeBSDКлиент DHCP от ISC, dhclient, полностью
интегрирован во FreeBSD. Поддержка клиента DHCP есть как в программе
установки, так и в самой системе, что исключает необходимость в
знании подробностей конфигурации сети в любой сети, имеющей сервер
DHCP. Утилита dhclient включена во все версии
FreeBSD, начиная с 3.2.sysinstallDHCP поддерживается утилитой sysinstall.
При настройке сетевого интерфейса из программы
sysinstall первый
вопрос, который вам задается: Do you want to try DHCP
configuration of this interface? (Хотите ли вы попробовать
настроить этот интерфейс через DHCP?). Утвердительный ответ
приведёт к запуску программы dhclient, и при удачном
его выполнении к автоматическому заданию информации для настройки
интерфейса.Есть две вещи, которые вы должны сделать для того, чтобы ваша
система использовала DHCP при загрузке:DHCPтребованияУбедитесь, что устройство bpf
включено в компиляцию вашего ядра. Чтобы это сделать, добавьте
строчку device bpf
(pseudo-device bpf в &os; 4.X)
в конфигурационный
файл ядра и перестройте ядро. Более подробная информация о
построении ядер имеется в .Устройство bpf уже является частью
ядра GENERIC, которое поставляется вместе с
FreeBSD, так что, если вы не используете другое ядро, то вам и
не нужно его делать для того, чтобы работал DHCP.Те, кто беспокоится о безопасности, должны иметь в виду, что
устройство bpf является также тем самым
устройством, которое позволяет работать программам-снифферам
пакетов (хотя для этого они должны быть запущены пользователем
root). Наличие устройства
bpfнеобходимо для
использования DHCP, но если вы чересчур беспокоитесь о
безопасности, то вам нельзя добавлять устройство
bpf в ядро только для того, чтобы
в неопределённом будущем использовать DHCP.Отредактируйте ваш файл /etc/rc.conf,
включив в него следующее:ifconfig_fxp0="DHCP"Обязательно замените fxp0 на имя интерфейса,
который вы хотите настраивать динамически, как это описано в .Если dhclient в вашей системе находится в другом
месте или если вы хотите задать дополнительные параметры для
dhclient, то также укажите следующее (изменив так,
как вам нужно):dhcp_program="/sbin/dhclient"
dhcp_flags=""DHCPсерверСервер DHCP, dhcpd, включён как часть порта
net/isc-dhcp3-server в коллекцию
портов. Этот порт содержит DHCP-сервер от ISC и документацию.ФайлыDHCPконфигурационные файлы/etc/dhclient.confdhclient требует наличия конфигурационного
файла, /etc/dhclient.conf. Как правило, файл
содержит только комментарии, а настройки по умолчанию достаточно
хороши. Этот настроечный файл описан на страницах справочной
системы по &man.dhclient.conf.5;./sbin/dhclientdhclient скомпонован статически и находится
в каталоге /sbin. На страница Справочника
&man.dhclient.8; дается более подробная информация о
dhclient./sbin/dhclient-scriptdhclient-script является специфичным для
FreeBSD скриптом настройки клиента DHCP. Он описан в
&man.dhclient-script.8;, но для нормального функционирования
никаких модификаций со стороны пользователя не требуется./var/db/dhclient.leasesВ этом файле клиент DHCP хранит базу данных выданных к
использованию адресов в виде журнала. На странице
&man.dhclient.leases.5; дается гораздо более подробное
описание.Дополнительная литератураПолное описание протокола DHCP дается в RFC 2131. Кроме
того, дополнительная информация есть на сервере .Установка и настройка сервера DHCPЧему посвящён этот разделЭтот раздел даёт информацию о том, как настроить систему
FreeBSD для работы в качестве сервера DHCP на основе реализации
пакета DHCP от ISC (Internet Software Consortium).Серверная часть пакета не поставляется как часть FreeBSD, так
что вам потребуется установить порт net/isc-dhcp3-relay для получения
этого сервиса. Обратитесь к для получения
более полной информации об использовании коллекции портов.Установка сервера DHCPDHCPустановкаДля того, чтобы настроить систему FreeBSD на работу в качестве
сервера DHCP, вам необходимо обеспечить присутствие устройства
&man.bpf.4;, вкомпилированного в ядро. Для этого
добавьте строку device bpf
(pseudo-device bpf в &os; 4.X) в файл
конфигурации вашего ядра. Для получения более полной информации о
построении ядер, обратитесь к .Устройство bpf уже входит в состав
ядра GENERIC, поставляемого с FreeBSD, так что
вам не нужно создавать собственное ядро для обеспечения работы
DHCP.Те, кто обращает особое внимание на вопросы безопасности,
должны заметить, что bpf является тем
устройством, что позволяет нормально работать снифферам пакетов
(хотя таким программам требуются привилегированный доступ).
Наличие устройства bpfобязательно для использования DHCP, но если
вы очень обеспокоены безопасностью, наверное, вам не нужно
включать bpf в ваше ядро только потому,
что в отдалённом будущем вы собираетесь использовать DHCP.Следующим действием, которое вам нужно выполнить, является
редактирование примерного dhcpd.conf, который
устанавливается в составе порта net/isc-dhcp3-server. По умолчанию это
файл /usr/local/etc/dhcpd.conf.sample, и вы
должны скопировать его в файл
/usr/local/etc/dhcpd.conf перед тем, как его
редактировать.Настройка сервера DHCPDHCPdhcpd.confdhcpd.conf состоит из деклараций
относительно подсетей и хостов, и проще всего описывается на
примере:option domain-name "example.com";
option domain-name-servers 192.168.4.100;
option subnet-mask 255.255.255.0;
default-lease-time 3600;
max-lease-time 86400;
ddns-update-style none;
subnet 192.168.4.0 netmask 255.255.255.0 {
range 192.168.4.129 192.168.4.254;
option routers 192.168.4.1;
}
host mailhost {
hardware ethernet 02:03:04:05:06:07;
fixed-address mailhost.example.com;
}Этот параметр задаёт домен, который будет выдаваться
клиентам в качестве домена, используемого по умолчанию при
поиске. Обратитесь к страницам справочной системы по
&man.resolv.conf.5; для получения дополнительной информации о
том, что это значит.Этот параметр задаёт список разделённых запятыми серверов
DNS, которые должен использовать клиент.Маска сети, которая будет выдаваться клиентам.Клиент может запросить определённое время, которое будет
действовать выданная информация. В противном случае сервер
выдаст настройки с этим сроком (в секундах).Это максимальное время, на которое сервер будет выдавать
конфигурацию. Если клиент запросит больший срок, он будет
подтверждён, но будет действовать только
max-lease-time секунд.Этот параметр задаёт, будет ли сервер DHCP пытаться
обновить DNS при выдаче или освобождении конфигурационной
информации. В реализации ISC этот параметр является
обязательным.Это определение того, какие IP-адреса должны использоваться
в качестве резерва для выдачи клиентам. IP-адреса между и
включая границы, будут выдаваться клиентам.Объявление маршрутизатора, используемого по умолчанию,
который будет выдаваться клиентам.Аппаратный MAC-адрес хоста (чтобы сервер DHCP мог
распознать хост, когда тот делает запрос).Определение того, что хосту всегда будет выдаваться один и
тот же IP-адрес. Заметьте, что указание здесь имени хоста
корректно, так как сервер DHCP будет разрешать имя хоста
самостоятельно до того, как выдать конфигурационную
информацию.Как только вы закончите составлять свой
dhcpd.conf, вы можете продолжить работу
запуском сервера при помощи следующей команды:&prompt.root; /usr/local/etc/rc.d/isc-dhcpd.sh startЕсли в будущем вам понадобится сделать изменения в настройке
вашего сервера, то важно заметить, что посылка сигнала
SIGHUP приложению
dhcpdне приведёт к
перезагрузке настроек, как это бывает для большинства даемонов.
Вам нужно послать сигнал SIGTERM для остановки
процесса, а затем перезапустить его при помощи вышеприведённой
команды.ФайлыDHCPконфигурационный файлы/usr/local/sbin/dhcpddhcpd скомпонован статически и
расположен в каталоге /usr/local/sbin.
Страницы справочной системы &man.dhcpd.8;,
устанавливаемые портом, содержат более полную информацию о
dhcpd./usr/local/etc/dhcpd.confdhcpd требует наличия
конфигурационного файла,
/usr/local/etc/dhcpd.conf, до того, как
он будет запущен и начнёт предоставлять сервис клиентам.
Необходимо, чтобы этот файл содержал все данные, которая
будет выдаваться обслуживаемым клиентам, а также информацию о
работе сервера. Этот конфигурационный файл описывается на
страницах справочной системы &man.dhcpd.conf.5;, которые
устанавливаются портом./var/db/dhcpd.leasesСервер DHCP ведёт базу данных выданной информации в этом
файле, который записывается в виде протокола. Страницы
справочной системы &man.dhcpd.leases.5;, устанавливаемые портом,
дают гораздо более подробное описание./usr/local/sbin/dhcrelaydhcrelay используется в сложных
ситуациях, когда сервер DHCP пересылает запросы от клиента
другому серверу DHCP в отдельной сети. Если вам нужна такая
функциональность, то установите порт net/isc-dhcp3-server. На страницах
справочной системы &man.dhcrelay.8;, которые устанавливаются
портом, даётся более полное описание.ChernLeeТекст предоставил Domain Name System (DNS)ОбзорBINDПо умолчанию во FreeBSD используется одна из версий программы BIND
(Berkeley Internet Name Domain), являющейся самой распространенной
реализацией протокола DNS. DNS - это протокол, при помощи которого
имена преобразуются в IP-адреса и наоборот. Например, в ответ на
запрос о www.FreeBSD.org будет получен IP-адрес
веб-сервера Проекта FreeBSD, а запрос о
ftp.FreeBSD.org возвратит IP-адрес соответствующей
машины с FTP-сервером. Точно также происходит и обратный процесс.
Запрос, содержащий IP-адрес машины, возвратит имя хоста. Для
выполнения запросов к DNS вовсе не обязательно иметь в системе
работающий сервер имён.DNSВ сети Интернет DNS управляется через достаточно сложную систему
авторизированных корневых серверов имён, и других менее крупных
серверов имён, которые содержат и кэшируют информацию о конкретных
доменах.В этом документа рассматривается BIND 8.x, так как это стабильная
версия, используемая во FreeBSD. BIND 9.x может быть установлен как
порт net/bind9.Протокол DNS стандартизован в RFC1034 и RFC1035.На данный момент пакет BIND поддерживается Internet Software
Consortium .Используемая терминологияДля понимания этого документа нужно понимать значения некоторых
терминов, связанных с работой DNS.резолверобратный DNSкорневая зонаТерминОпределениеПрямой запрос к DNS (forward DNS)Преобразование имён хостов в адреса IPОриджин (origin)Обозначает домен, покрываемый конкретным файлом
зоныnamed, bind, сервер
имёнОбщеупотребительные названия для обозначения пакета BIND,
обеспечивающего работу сервера имён во FreeBSD.РезолверСистемный процесс, посредством которого машина обращается
к серверу имён для получения информации о зонеОбратный DNS (reverse DNS)Операция, обратная прямому запросу к DNS; преобразование
адресов IP в имена хостовКорневая зонаНачало иерархии зон Интернет. Все зоны находятся под
корневой зоной, подобно тому, как все файлы располагаются ниже
корневого каталога.ЗонаОтдельный домен, поддомен или часть DNS, управляемая
одним сервером.зоныпримерыПримеры зон:. является корневой зонойorg. является зоной ниже корневой зоныexample.org является зоной под зоной
org.foo.example.org. является поддоменом,
зоной под зоной example.org.1.2.3.in-addr.arpa является зоной, в которую
включены все IP-адреса, формирующие пространство адресов
3.2.1.*.Как можно видеть, уточняющая часть имени хоста появляется слева.
Например, example.org. более точен, чем
org., также, как org. более
точен, чем корневая зона. Расположение каждой части имени хоста сильно
похоже на файловую систему: каталог /dev
расположен в корневой файловой системе, и так далее.Причины, по которым вам может понадобиться сервер имёнСервера имён обычно используются в двух видах: авторитетный сервер
имён и кэширующий сервер имён.Авторитетный сервер имён нужен, когда:нужно предоставлять информацию о DNS остальному миру, отвечая
на запросы авторизированно.зарегистрирован домен, такой, как
example.org и в этом домене требуется
поставить имена машин в соответствие с их адресами IP.блоку адресов IP требуется обратные записи DNS (IP в имена
хостов).резервный (slave) сервер имён должен отвечать на запросы о
домене, когда основной не работает или не доступен.Кэширующий сервер имён нужен, когда:локальный сервер DNS может кэшировать информацию и отвечать на
запросы быстрее, чем это происходит при прямом опросе внешнего
сервера имён.требуется уменьшение общего сетевого трафика (DNS
составляет около 5% всего трафика Интернет, или чуть
больше).Например, когда кто-нибудь запрашивает информацию о
www.FreeBSD.org, то обычно резолвер обращается к
серверу имён вашего провайдера, посылает запрос и ожидает ответа. С
локальным кэширующим сервером DNS запрос во внешний мир будет делаться
всего один раз. Каждый дополнительный запрос не будет посылаться за
пределы локальной сети, потому что информация уже имеется в
кэше.Как это работаетВо FreeBSD даемон BIND, по очевидным причинам, называется
named.
-
+ ФайлОписаниеnamedдаемон BINDndcпрограмма управления даемоном сервера имён/etc/namedbкаталог, в котором располагается вся информация о зонах
BIND/etc/namedb/named.confконфигурационный файл для даемонаФайлы зон обычно располагаются в каталоге
/etc/namedb и содержат информацию о зоне DNS,
за которую отвечает сервер имён.Запуск BINDBINDзапускТак как сервер имён BIND устанавливается по умолчанию, его
настройка сравнительно проста.Чтобы даемон named запускался во
время загрузки, поместите в /etc/rc.conf
следующую строку:named_enable="YES"Для запуска даемона вручную (после его настройки):&prompt.root; ndc startКонфигурационные файлыBINDконфигурационные файлыИспользование make-localhostОбязательно выполните следующие команды:&prompt.root; cd /etc/namedb
&prompt.root; sh make-localhostдля того, чтобы правильно создать файл
/etc/namedb/localhost.rev локальной обратной
зоны для loopback-интерфейса./etc/namedb/named.conf// $FreeBSD$
//
// Refer to the named(8) manual page for details. If you are ever going
// to setup a primary server, make sure you've understood the hairy
// details of how DNS is working. Even with simple mistakes, you can
// break connectivity for affected parties, or cause huge amount of
// useless Internet traffic.
options {
directory "/etc/namedb";
// In addition to the "forwarders" clause, you can force your name
// server to never initiate queries of its own, but always ask its
// forwarders only, by enabling the following line:
//
// forward only;
// If you've got a DNS server around at your upstream provider, enter
// its IP address here, and enable the line below. This will make you
// benefit from its cache, thus reduce overall DNS traffic in the
Internet.
/*
forwarders {
127.0.0.1;
};
*/Как и говорится в комментариях, если вы хотите получить эффект от
использования кэша провайдера, то можно включить раздел
forwarders. В обычном случае сервер имён будет
рекурсивно опрашивать определённые серверы имён Интернет до тех пор,
пока не получит ответ на свой запрос. При включении этого раздела
он будет автоматически опрашивать сервер имён вашего провайдера (или
тот, который здесь указан), используя преимущества его кэша.
наличия нужной информации. Если соответствующий сервер имён провайдера
работает быстро и имеет хороший канал связи, то в результате такой
настройки вы можете получить хороший результат.
127.0.0.1 здесь
работать не будет. Измените
его на IP-адрес сервера имён провайдера./*
* If there is a firewall between you and name servers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
/*
* If running in a sandbox, you may have to specify a different
* location for the dumpfile.
*/
// dump-file "s/named_dump.db";
};
// Note: the following will be supported in a future release.
/*
host { any; } {
topology {
127.0.0.0/8;
};
};
*/
// Setting up secondaries is way easier and the rough picture for this
// is explained below.
//
// If you enable a local name server, don't forget to enter 127.0.0.1
// into your /etc/resolv.conf so this server will be queried first.
// Also, make sure to enable it in /etc/rc.conf.
zone "." {
type hint;
file "named.root";
};
zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "localhost.rev";
};
zone
"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.INT" {
type master;
file "localhost.rev";
};
// NB: Do not use the IP addresses below, they are faked, and only
// serve demonstration/documentation purposes!
//
// Example secondary config entries. It can be convenient to become
// a secondary at least for the zone where your own domain is in. Ask
// your network administrator for the IP address of the responsible
// primary.
//
// Never forget to include the reverse lookup (IN-ADDR.ARPA) zone!
// (This is the first bytes of the respective IP address, in reverse
// order, with ".IN-ADDR.ARPA" appended.)
//
// Before starting to setup a primary zone, better make sure you fully
// understand how DNS and BIND works, however. There are sometimes
// unobvious pitfalls. Setting up a secondary is comparably simpler.
//
// NB: Don't blindly enable the examples below. :-) Use actual names
// and addresses instead.
//
// NOTE!!! FreeBSD runs BIND in a sandbox (see named_flags in rc.conf).
// The directory containing the secondary zones must be write accessible
// to BIND. The following sequence is suggested:
//
// mkdir /etc/namedb/s
// chown bind:bind /etc/namedb/s
// chmod 750 /etc/namedb/sДополнительная информация о запуске BIND в ограниченном окружении
находится в соответствующем
разделе./*
zone "example.com" {
type slave;
file "s/example.com.bak";
masters {
192.168.1.1;
};
};
zone "0.168.192.in-addr.arpa" {
type slave;
file "s/0.168.192.in-addr.arpa.bak";
masters {
192.168.1.1;
};
};
*/Это примеры описаний прямой и обратной зон из файла
named.conf для вторичных серверов.Для каждого новой зоны, которую будет обслуживать сервер имён,
в файл named.conf должна быть добавлена
запись.К примеру, самая простая запись для домена example.org может выглядеть вот так:zone "example.org" {
type master;
file "example.org";
};Зона является первичной, что отражается в поле
, и информация о зоне хранится в файле
/etc/namedb/example.org, что указывается в
поле .zone "example.org" {
type slave;
file "example.org";
};В случае вторичной зоны информация о ней передается с основного
сервера имён для заданной зоны и сохраняется в указанном файле. Если
и когда основной сервер имён выходит и строя или недосягаем, то
скачанная информация о зоне будет находиться на вторичных серверах и
они смогут обслуживать эту зону.Файлы зонПример файла зоны example.org
для основного
сервера (располагающийся в файле
/etc/namedb/example.org) имеет такой
вид:$TTL 3600
example.org. IN SOA ns1.example.org. admin.example.org. (
5 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
; DNS Servers
@ IN NS ns1.example.org.
@ IN NS ns2.example.org.
; Machine Names
localhost IN A 127.0.0.1
ns1 IN A 3.2.1.2
ns2 IN A 3.2.1.3
mail IN A 3.2.1.10
@ IN A 3.2.1.30
; Aliases
www IN CNAME @
; MX Record
@ IN MX 10 mail.example.org.Заметьте, что все имена хостов, оканчивающиеся на .,
задают полное имя, тогда как все имена без символа . на
конце считаются заданными относительно origin. Например,
www преобразуется в
www.origin.
В нашем воображаемом файле ориджином является
example.org., так что
www преобразуется в
www.example.org.Файл зоны имеет следующий формат:recordname IN recordtype valueDNSзаписиНаиболее часто используемые записи DNS:SOAначало зоны ответственностиNSавторитативный сервер именAадрес хостаCNAMEканоническое имя для алиасаMXобмен почтойPTRуказатель на доменное имя (используется в обратных
зонах DNS)example.org. IN SOA ns1.example.org. admin.example.org. (
5 ; Serial
10800 ; Refresh after 3 hours
3600 ; Retry after 1 hour
604800 ; Expire after 1 week
86400 ) ; Minimum TTL of 1 dayexample.org.имя домена, а также ориджин для этого файла зоны.ns1.example.org.основной/авторитативный сервер имён для этой зоны.admin.example.org.человек, отвечающий за эту зону, адрес электронной почты с
подменённым символом @. (admin@example.org
становится admin.example.org)5последовательный номер файла. При каждом изменении файла
зоны это число должно увеличиваться. В настоящее время для
нумерации многие администраторы предпочитают формат
ггггммддвв. 2001041002
будет означать, что
файл последний раз изменялся 10.04.2001, а последнее число
02
означает, что это была вторая модификация файла за день.
Последовательный номер важен, так как он служит для того, чтобы
вторичные серверы узнавали об обновлении зоны.@ IN NS ns1.example.org.Это NS-запись. Такие записи должны иметься для
всех серверов имён, которые будут отвечать за зону. Символ
@, используемый здесь, преобразуется в
example.org. Этот
символ @ соответствует ориджину.localhost IN A 127.0.0.1
ns1 IN A 3.2.1.2
ns2 IN A 3.2.1.3
mail IN A 3.2.1.10
@ IN A 3.2.1.30Записи типа A служат для обозначения имён машин. Как это видно
выше, имя ns1.example.org будет
преобразовано в
3.2.1.2. И снова здесь используется
символ ориджина @, обозначая, что
example.org будет преобразовано
в 3.2.1.30.www IN CNAME @Записи с каноническими именами обычно используются для присвоения
машинам псевдонимов. В этом примере www является
псевдонимом для машины, соответствующей ориджину, то есть
example.org (3.2.1.30).
Записи CNAME могут использоваться для присвоения
псевдонимов именам хостов или для использования одного имени
несколькими машинами по очереди.MX record@ IN MX 10 mail.example.org.MX-запись указывает, какие почтовые серверы
отвечают за обработку входящей электронной почты для зоны. mail.example.org является именем почтового
сервера, а 10 обозначает приоритет этого почтового сервера.Можно иметь несколько почтовых серверов с приоритетами 3, 2 и 1.
Почтовый сервер, пытающийся доставить почту для example.org,
сначала попробует связаться с машиной, имеющий MX-запись с самым
большим приоритетом, затем с приоритетом поменьше и так далее, до тех
пор, пока почта не будет отправлена.Для файлов зон in-addr.arpa (обратные записи DNS) используется тот
же самый формат, отличающийся только использованием записей
PTR вместо A или
CNAME.$TTL 3600
1.2.3.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. (
5 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
3600 ) ; Minimum
@ IN NS ns1.example.org.
@ IN NS ns2.example.org.
2 IN PTR ns1.example.org.
3 IN PTR ns2.example.org.
10 IN PTR mail.example.org.
30 IN PTR example.org.В этом файле дается полное соответствие имён хостов IP-адресам в
нашем описанном ранее вымышленном домене.Кэширующий сервер имёнBINDкэширующий сервер имёнКэширующий сервер имён - это сервер имён, не отвечающий ни
за какую зону. Он просто выполняет запросы от своего имени и сохраняет
результаты для последующего использования. Для настройки такого
сервера достаточно исключить все описания зон из стандартной
конфигурации сервера имён.Запуск named в песочницеBINDработа в песочницеchrootДля дополнительной безопасности вам может потребоваться запускать
&man.named.8; с правами непривилегированного пользователя и настроить
его на выполнение &man.chroot.8; в каталог-песочницу. Это позволит
сделать недоступным для даемона named все,
что расположено вне песочницы. Если named
будет взломан, то это поможет уменьшить возможный ущерб. По умолчанию
во FreeBSD имеются пользователь и группа с именами
bind, которые предназначены именно для такого
использования.Многие рекомендуют вместо настройки
named на использование
chroot, запускать named
внутри &man.jail.8;. В этом разделе такой подход не
рассматривается.Так как named не сможет обратиться ни к
чему вне песочницы (например, совместно используемым библиотекам,
сокетам протоколов и так далее), то нужно выполнить несколько шагов,
чтобы named смог работать нормально. В
следующем списке предполагается, что каталогом песочницы является
/etc/namedb и что вы не делали никаких изменений
в содержимом этого каталога. Выполните следующие шаги, работая как
пользователь root:Создайте все каталоги, которые ожидает увидеть
named:&prompt.root; cd /etc/namedb
&prompt.root; mkdir -p bin dev etc var/tmp var/run master slave
&prompt.root; chown bind:bind slave var/*Программе named нужен доступ с
правом записи в эти каталоги, так что это все, что мы ей
предоставим.Измените и создайте базовые файлы зоны и настроек:&prompt.root; cp /etc/localtime etc
&prompt.root; mv named.conf etc && ln -sf etc/named.conf
&prompt.root; mv named.root master
&prompt.root; sh make-localhost && mv localhost.rev localhost-v6.rev master
&prompt.root; cat > master/named.localhost
$ORIGIN localhost.
$TTL 6h
@ IN SOA localhost. postmaster.localhost. (
1 ; serial
3600 ; refresh
1800 ; retry
604800 ; expiration
3600 ) ; minimum
IN NS localhost.
IN A 127.0.0.1
^DЭто позволит программе named
протоколировать правильное время в &man.syslogd.8;.syslogлог файлыDNSЕсли вы используете &os; версии ранее 4.9-RELEASE, то постройте
статически скомпонованную копию
named-xfer и скопируйте её в
песочницу:&prompt.root; cd /usr/src/lib/libisc
&prompt.root; make cleandir && make cleandir && make depend && make all
&prompt.root; cd /usr/src/lib/libbind
&prompt.root; make cleandir && make cleandir && make depend && make all
&prompt.root; cd /usr/src/libexec/named-xfer
&prompt.root; make cleandir && make cleandir && make depend && make NOSHARED=yes all
&prompt.root; cp named-xfer /etc/namedb/bin && chmod 555 /etc/namedb/bin/named-xferПосле установки статически скомпонованного
named-xfer, во избежание появления старых копий
библиотек и программ в дереве исходного кода, требуется некоторая
зачистка:&prompt.root; cd /usr/src/lib/libisc
&prompt.root; make cleandir
&prompt.root; cd /usr/src/lib/libbind
&prompt.root; make cleandir
&prompt.root; cd /usr/src/libexec/named-xfer
&prompt.root; make cleandirИногда при выполнении этого шага возникают ошибки. Если
это случилось, выполните такую команду:&prompt.root; cd /usr/src && make cleandir && make cleandirи удалите ваше дерево /usr/obj:&prompt.root; rm -fr /usr/obj && mkdir /usr/objПри этом из вашего дерева исходных текстов будет удалён
весь мусор, и повторение вышеописанных шагов
должно выполниться успешно.Если вы используете &os; 4.9-RELEASE или более позднюю версию,
то копия named-xfer в каталоге
/usr/libexec по умолчанию является статически
скомпонованной, и вы можете просто скопировать её в песочницу при
помощи команды &man.cp.1;.Создайте файл устройства dev/null,
который named может видеть и писать в
него:&prompt.root; cd /etc/namedb/dev && mknod null c 2 2
&prompt.root; chmod 666 nullСоздайте символическую ссылку
/var/run/ndc на
/etc/namedb/var/run/ndc:&prompt.root; ln -sf /etc/namedb/var/run/ndc /var/run/ndcЭто просто для того, чтобы не задавать опцию
при каждом запуске &man.ndc.8;. Так как
содержимое каталога /var/run удаляется
при загрузке, и если это
показалось вам полезным, то вы можете добавить эту команду
в crontab для root
с использованием параметра
. Обратитесь к справочной странице по
&man.crontab.5; для получения более полной информации
относительно этого.syslogлог файлыnamedНастройте &man.syslogd.8; на создание дополнительного
протоколирующего сокета log, в который
может писать named. Для этого добавьте
-l /etc/namedb/dev/log к переменной
syslogd_flags из файла
/etc/rc.conf.chrootЗадайте запуск named и выполнение
chroot в песочницу, добавив следующее в
/etc/rc.conf:named_enable="YES"
named_flags="-u bind -g bind -t /etc/namedb /etc/named.conf"Заметьте, что конфигурационный файл
/etc/named.conf именуется по полному
имени относительно песочницы, то есть в
вышеприведённой строке указывается файл, который на самом деле
является файлом
/etc/namedb/etc/named.conf.Следующим шагом является редактирование файла
/etc/namedb/etc/named.conf так, чтобы
named знал, какую зону загружать и где найти
их на диске. Далее следует прокомментированный пример (все, что
специально не прокомментировано, ничем не отличается от настройки
сервера DNS, работающего не в песочнице):options {
directory "/";
named-xfer "/bin/named-xfer";
version ""; // Не выдавайте версию BIND
query-source address * port 53;
};
// управляющий сокет ndc
controls {
unix "/var/run/ndc" perm 0600 owner 0 group 0;
};
// Далее следуют зоны:
zone "localhost" IN {
type master;
file "master/named.localhost";
allow-transfer { localhost; };
notify no;
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "master/localhost.rev";
allow-transfer { localhost; };
notify no;
};
zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.int" {
type master;
file "master/localhost-v6.rev";
allow-transfer { localhost; };
notify no;
};
zone "." IN {
type hint;
file "master/named.root";
};
zone "private.example.net" in {
type master;
file "master/private.example.net.db";
allow-transfer { 192.168.10.0/24; };
};
zone "10.168.192.in-addr.arpa" in {
type slave;
masters { 192.168.10.2; };
file "slave/192.168.10.db";
};В директиве directory указан каталог
/, так как все файлы, которые нужны для
named, находятся внутри этого каталога
(вспомните, что это равнозначно обычному
пользовательскому /etc/namedb).Задает полный путь к двоичному выполнимому файлу
named-xfer (внутри границ видимости
named). Это необходимо, так как
named компилируется с тем, чтобы
брать named-xfer по умолчанию из
/usr/libexec.Задает имя файла (относительно директивы
directory выше), в котором
named может найти файл зоны для этой
зоны.Задает имя файла (относительно директивы
directory выше), в котором
named должен записывать копию файла
зоны для этой зоны после успешной передачи ее с основного сервера.
Вот почему нам нужно изменить владельца каталога
slave на bind на этапах
настроек выше.После выполнения шагов выше либо перезагрузите ваш сервер, либо
перезапустите &man.syslogd.8; и запустите &man.named.8;, не забыв
использовать новые опции, заданные в syslogd_flags и
named_flags. Теперь
named должен заработать в песочнице!БезопасностьХотя BIND является самой распространенной реализацией DNS, всегда
стоит вопрос об обеспечении безопасности. Время от времени
обнаруживаются возможные и реальные бреши в безопасности.Весьма полезно прочесть сообщения безопасности CERT и подписаться на
&a.security-notifications; для того, чтобы быть в курсе
текущих проблем с обеспечением безопасности Internet и FreeBSD.Если возникают проблемы, то наличие последних исходных текстов и
свежеоткомпилированного named
не помешает.Дополнительная литератураСправочная информация по BIND/named:
&man.ndc.8;, &man.named.8; и
&man.named.conf.5;
Официальная страница ISC BIND
FAQ по BIND
Книга издательства O'Reilly DNS and BIND 4th
EditionRFC1034 - Domain
Names - Concepts and FacilitiesRFC1035 - Domain
Names - Implementation and SpecificationTomRhodesАвтор: DmitryMorozovskyПеревод на русский язык: BIND9 и &os;bind9установка&os; начиная с версии 5.3 содержит в базовой поставке
сервер DNS BIND9.
Среди прочих нововведений стоит отметить новые возможности, связанные
с безопасностью, новую организацию файлов конфигурации и автоматическое
использование опции &man.chroot.8;. Первая часть этой главы посвящена
обсуждению новых возможностей и их использования, вторая описывает
процесс обновления сервера DNS при переходе на &os; 5.3. Мы будем
ссылаться на сервер BIND как &man.named.8;.
Мы подразумеваем, что читатель знаком с терминологией, описываемой в
предыдущей главе.Файлы конфигурации для named в настоящее время
располагаются в каталоге
/var/named/etc/namedb/ и требуют
модификации перед началом использования сервера. Большая часть работы
по конфигурации сервера DNS происходит именно в этом каталоге.Конфигурация основной (Master) зоныДля создания основной зоны перейдите в каталог
/var/named/etc/namedb/
и выполните команду&prompt.root; sh make-localhostПри удачном стечении обстоятельств в каталоге
master появится два новых файла:
localhost.rev для локального домена и
localhost-v6.rev для локальной зоны
IPv6. В поставляемом стандартном файле
конфигурации named.conf уже есть ссылки на оба
файла зон.Конфигурация зависимой (Slave) ЗоныДополнительные домены и поддомены могут быть добавлены как
зависимые зоны. В большинстве случаев достаточно просто скопировать
файл master/localhost.rev в каталог
slave и изменить копию.
После изменения файлов зон нужно добавить ссылки на них в
основной файл конфигурации named.conf, например,
так:zone "example.com" {
type slave;
file "slave/example.com";
masters {
10.0.0.1;
};
};
zone "0.168.192.in-addr.arpa" {
type slave;
file "slave/0.168.192.in-addr.arpa";
masters {
10.0.0.1;
};
};Отметим, что использованный в этом примере IP
адрес является адресом, с которого будут копироваться файлы зон;
этот адрес не обязательно является публичным сервером
DNS.Стартовая конфигурация системыДля автоматического запуска даемона named
при загрузке системы добавьте в файл стартовой конфигурации
rc.conf строкуnamed_enable="YES"Есть и другие параметры конфигурации, но эта строка —
минимально необходима. Список параметров можно найти на странице
справочника &man.rc.conf.5;. Если запуск named
не разрешен в rc.conf, сервер можно запустить
вручную командой&prompt.root; /etc/rc.d/named startBIND9: вопросы безопасности&os автоматически запускает named
в ограниченном пространстве &man.chroot.8;; кроме того, существует
еще несколько средств, помогающих защитить сервис
DNS от возможных атак.Списки ограничения доступаДля ограничения доступа к зонам могут применяться списки
доступа. Для этого опишите для домена список IP
адресов, которым разрешены запросы к содержимому доменной зоны, и
используйте имя этого списка в конфигурации зоны.
Вот пример описания списка ограничения доступа:acl "example.com" {
192.168.0.0/24;
};
zone "example.com" {
type slave;
file "slave/example.com";
masters {
10.0.0.1;
};
allow-query { example.com; };
};
zone "0.168.192.in-addr.arpa" {
type slave;
file "slave/0.168.192.in-addr.arpa";
masters {
10.0.0.1;
};
allow-query { example.com; };
};Версия сервераРазрешать всем запросы о версии вашего DNS
сервера может быть не самой лучшей идеей: возможный злоумышленник
может воспользоваться ей для выяснения известных ошибок и
уязвимостей и применить их вашего сервера. Для предотвращения этого
в раздел options файла конфигурации
named.conf можно вписать строку, скрывающую
версию сервера:options {
directory "/etc/namedb";
pid-file "/var/run/named/pid";
dump-file "/var/dump/named_dump.db";
statistics-file "/var/stats/named.stats";
version "None of your business";MurrayStokelyПредоставил Apache HTTP сервервеб сервернастройкаApacheОбзор&os; используется в качестве платформы для многих из самых
нагруженных серверов в мире. Большинство серверов в интернет
используют Apache HTTP сервер.
Пакеты Apache должны быть включены
в поставку FreeBSD. Если вы не установили их во вместе с
системой, воспользуйтесь портами www/apache13 или www/apache2.Как только Apache был успешно
установлен, его необходимо настроить.В этом разделе рассказывается о версии 1.3.X
Apache HTTP сервера, поскольку
эта версия наиболее широко используется в &os;.
Apache 2.X
содержит много новых технологий, но здесь они не обсуждаются.
За дополнительной информацией о
Apache 2.X, обращайтесь к .НастройкаApacheфайл настройкиВ &os; основной файл настройки Apache HTTP сервера
устанавливается в
/usr/local/etc/apache/httpd.conf.
Это обычный текстовый &unix; файл настройки с строками
комментариев, начинающимися с символа #.
Исчерпывающее описание всех возможных параметров настройки
находится за пределом рассмотрения этой книги, поэтому
здесь будут описаны только наиболее часто модифицируемые
директивы.ServerRoot "/usr/local"Указывает верхний каталог установки
Apache по
умолчанию. Бинарные файлы находятся в
bin и
sbin, подкаталоги
расположены относительно корневого каталога сервера, файлы
настройки находятся в
etc/apache.ServerAdmin you@your.addressАдрес, на который должны будут отправляться
сообщения о проблемах с сервером. Этот адрес
выводится на некоторые генерируемые сервером
страницы, например с сообщениями об ошибках.ServerName www.example.comServerName позволяет вам устанавливать имя хоста,
которое отправляется обратно клиентам, если оно
отличается от того, с которым настроен хост
(например, использование www вместо реального
имени хоста).DocumentRoot "/usr/local/www/data"DocumentRoot: Каталог, внутри которого будут храниться
документы. По умолчанию, все запросы обрабатываются внутри
этого каталога, но символические ссылки и синонимы могут
использоваться для указания на другие каталоги.Хорошей идеей будет сделать резервные копии настроек
Apache перед внесением изменений. Как только вы будете
удовлетворены первоначальной настройкой, можно запускать
Apache.Запуск ApacheApacheзапуск или остановкаApache не запускается из
inetd, как это делают многие
другие сетевые серверы. Он настроен для автономного запуска,
чтобы обеспечивать большую производительность при обработке
HTTP запросов от браузеров клиентов. Для упрощения запуска,
остановки и перезапуска сервера существует shell скрипт.
Для запуска Apache в первый раз
просто выполните:&prompt.root; /usr/local/sbin/apachectl startВы можете остановить сервер в любой момент, выполнив:&prompt.root; /usr/local/sbin/apachectl stopПосле внесения любых изменений в файл настроек, вам потребуется
перезапустить сервер:&prompt.root; /usr/local/sbin/apachectl restartДля запуска Apache при старте системы,
добавьте в /etc/rc.conf следующую строку:apache_enable="YES"Если вы хотите передать программе Apachehttpd дополнительные параметры командной
при загрузке системы, они могут быть помещены в дополнительную
строку rc.conf:apache_flags=""Теперь, когда веб сервер запущен, вы можете просмотреть свой веб
сайт, задав в строке браузера адрес
http://localhost/. По умолчанию отображается
веб страница
/usr/local/www/data/index.html.Виртуальный хостингApache поддерживает два различных
типа виртуального хостинга (Virtual Hosting). Первый метод
основан на именах (Name-based Virtual Hosting). Он использует
полученные от клиента заголовки HTTP/1.1 для определения имени
хоста. Это позволяет многим различным доменам использовать
один и тот же IP адрес.Для настройки Apache на использование
этого типа хостинга добавьте в httpd.conf
запись подобную следующей:NameVirtualHost *Если веб сервер назывался www.domain.tld и
вы хотите настроить виртуальный домен для
www.someotherdomain.tld, необходимо добавить
в httpd.conf следующие записи:<VirtualHost *>
ServerName www.domain.tld
DocumentRoot /www/domain.tld
<VirtualHost>
<VirtualHost *>
ServerName www.someotherdomain.tld
DocumentRoot /www/someotherdomain.tld
</VirtualHost>Замените адреса и пути к документам на те, что вы будете
использовать.За дополнительной информацией по настройке виртуальных хостов
обращайтесь к официальной документации
Apache: Модули ApacheApacheмодулиСуществуют множество различных модулей
Apache,
которые добавляют функциональность к основному
серверу. Коллекция портов FreeBSD предоставляет
простой способ установки Apache
с некоторыми наиболее популярными дополнительными
модулями.mod_sslвеб серверзащитаSSLкриптографияМодуль mod_ssl использует
библиотеку OpenSSL для
сильной криптографии через протоколы Secure Sockets Layer
(SSL v2/v3) и Transport Layer Security (TLS v1).
Этот модуль содержит все необходимое для запроса
подписанного сертификата из центра сертификации
для защищенного веб сервера на &os;.Если вы еще не установили
Apache, версия
Apache с
mod_ssl может быть установлена
через порт www/apache13-modssl.
Поддержка SSL также присутствует и включена по умолчанию
для порта www/apache2.mod_perlPerlПроект интеграции
Apache/Perl объединяет мощь
языка программирования Perl и HTTP сервера
Apache.
С модулем mod_perl возможно
написание модулей Apache
полностью на Perl. Кроме того, постоянно
запущенный встроенный в сервер интерпретатор
позволяет не тратить ресурсы на запуск внешнего
интерпретатора и время на запуск Perl.Если вы еще не установили Apache,
его версия с модулем mod_perl может
быть установлена через
порт www/apache13-modperl.PHPPHPPHP, сокращение от PHP: Hypertext
Preprocessor это широко используемый Open Source
скриптовый язык общего назначения, который в основном
предназначен для веб разработки и может быть встроен в
HTML. Его синтаксис был взят от C, &java;, и Perl и язык
легок в изучении. Основное преимущество языка в том, что
он позволяет веб разработчикам создавать веб страницы быстро,
но есть и множество других возможностей.PHP может быть установлен из порта lang/php5.MurrayStokelyПредоставил Файл сервер и печать для µsoft.windows; клиентов
(Samba)Samba серверMicrosoft Windowsфайл серверWindows клиентыпринт серверWindows клиентыОбзорSamba это популярный пакет
программ с открытыми исходными текстами, которая предоставляет
файловые и принт-сервисы µsoft.windows; клиентам.
Эти клиенты могут подключаться и использовать файловое
пространство FreeBSD, как если бы это был локальный диск,
или принтеры FreeBSD, как если бы это были локальные
принтеры.Пакет Samba должен быть включен
в поставку FreeBSD. Если вы не установили
Samba при первой установке системы,
ее можно установить из порта или пакета net/samba3.НастройкаФайл настройки Samba по умолчанию
устанавливается в
/usr/local/etc/smb.conf.default. Этот файл
необходимо скопировать в
/usr/local/etc/smb.conf и отредактировать
перед использованием Samba.В файле smb.conf находится информация,
необходимая для работы Samba,
например определение принтеров и общих каталогов,
которые будут использоваться совместно с &windows; клиентами.
В пакет Samba входит программа с
веб интерфейсом, называемая swat,
которая дает простой способ редактирования файла
smb.conf.Использование Samba Web Administration Tool (SWAT)Программа веб администрирования Samba (Samba Web
Administration Tool, SWAT) запускается как даемон из
inetd. Следовательно, в
/etc/inetd.conf необходимо снять комментарий
перед тем, как использовать swat для
настройки Samba:swat stream tcp nowait/400 root /usr/local/sbin/swatКак описано в ,
после изменения настроек inetd
необходимо отправить HangUP сигнал.Как только swat был включен
inetd.conf, вы можете использовать
браузер для подключения к .
Сначала необходимо зарегистрироваться с системной
учетной записью root.После успешного входа на основную страницу настройки
Samba, вы можете просмотреть
документацию или начать настройку, нажав на кнопку
Globals. Раздел Globals
соответствует переменным,
установленным в разделе [global] файла
/usr/local/etc/smb.conf.Глобальные настройкиНезависимо от того, используете ли вы
swat, или редактируете
/usr/local/etc/smb.conf непосредственно,
первые директивы, которые вы скорее всего встретите при
настройке Samba, будут
следующими:workgroupИмя домена или рабочей группы NT для компьютеров,
которые будут получать доступ к этому серверу.netbios nameNetBIOSУстанавливает имя NetBIOS, под которым будет
работать Samba сервер. По
умолчанию оно устанавливается
равным первому компоненту DNS имени хоста.server stringУстанавливает строку, которая будет показана командой
net view и некоторыми другими сетевыми
инструментами, которые отображают строку описания
сервера.Настройки безопасностиДве из наиболее важных настроек в
/usr/local/etc/smb.conf отвечают за
выбор модели безопасности и за формат паролей для
клиентов. Эти параметры контролируются следующими
директивами:securityДва наиболее часто используемых параметра это
security = share и security
= user. Если имена пользователей для клиентов
совпадают с их именами на компьютере &os;, вы возможно
захотите включить безопасность уровня пользователя (user).
Это политика безопасности по умолчанию, она требует,
чтобы клиент авторизовался перед доступом к совместно
используемым ресурсам.На уровне безопасности share клиенту не требуется
входить на сервер перед подключением к ресурсу.
Эта модель безопасности использовалась по умолчанию
в старых версиях Samba.passdb backendNIS+LDAPSQL база данныхSamba поддерживает
несколько различных подсистем аутентификации. Вы можете
аутентифицировать клиентов с помощью LDAP, NIS+,
базы данных SQL, или через модифицированный файл
паролей. Метод аутентификации по умолчанию
smbpasswd, и здесь рассматривается
только он.Предполагая, что используется подсистема по умолчанию
smbpasswd, необходимо создать файл
/usr/local/private/smbpasswd, чтобы
Samba могла аутентифицировать
клиентов. Если вы хотите разрешить всем учетным записям
&unix; доступ с &windows; клиентов, используйте следующую
команду:&prompt.root; grep -v "^#" /etc/passwd | make_smbpasswd > /usr/local/private/smbpasswd
&prompt.root; chmod 600 /usr/local/private/smbpasswdОбратитесь к документации на Samba
за дополнительной информацией о параметрах настройки.
Основные настройки, рассмотренные здесь, достаточны для
первого запуска Samba.Запуск SambaДля запуска Samba при
загрузке системы, добавьте в /etc/rc.conf
следующую строку:samba_enable="YES"Затем вы можете запустить Samba в
любой момент, набрав:&prompt.root; /usr/local/etc/rc.d/samba.sh start
Starting SAMBA: removing stale tdbs :
Starting nmbd.
Starting smbd.Samba состоит из трех
отдельных даемонов. Вы можете видеть, что
nmbd и smbd
запускаются скриптом samba.sh.
Если вы включили сервис разрешения имен winbind
в smb.conf, то увидите также
запуск даемона winbindd.Вы можете остановить Samba в любой
момент, набрав:&prompt.root; /usr/local/etc/rc.d/samba.sh stopSamba это сложный программный
набор с функциональностью, позволяющей полную интеграцию в сети
µsoft.windows;. За дальнейшей информацией о функциях,
выходящих за рамки описанной здесь базовой установки,
обращайтесь к .MurrayStokelyПредоставил Протокол передачи файлов (FTP)FTP серверОбзорПротокол передачи файлов (File Transfer Protocol, FTP) дает
пользователям простой путь передачи файлов на и с FTP сервера. В &os;
серверная программа FTP,
ftpd, включена в базовую систему.
Это упрощает настройку и администрирование FTP сервера в
FreeBSD.НастройкаНаиболее важный шаг заключается в определении того,
каким учетным записям будет позволено получать доступ
к FTP серверу. В обычной системе FreeBSD есть множество
системных учетных записей, используемых различными даемонами,
но пользователям должно быть запрещен вход с использованием
этих учетных записей. В файле /etc/ftpusers
находится список пользователей, которым запрещен доступ по
FTP. По умолчанию он включает упомянутые системные учетные
записи, но в него можно добавить и определенных пользователей,
которым будет запрещен доступ по FTP.Вам может понадобиться ограничить доступ определенных
пользователей без полного запрета использования FTP.
Это можно сделать через файл /etc/ftpchroot.
В нем находится список пользователей и групп, к которым
применяется ограничение доступа. На странице справочника
&man.ftpchroot.5; дана подробная информация, и она не будет
дублироваться здесь.Если вы захотите разрешить анонимный FTP доступ на
сервер, в системе &os; необходимо создать пользователя
ftp. Этот пользователь сможет
входить на FTP сервер с именем пользователя
ftp или anonymous,
с любым паролем (существует соглашение об использовании
почтового адреса пользователя в качестве пароля).
FTP сервер выполнит &man.chroot.2; при входе пользователя
anonymous для ограничения доступа только домашним каталогом
пользователя ftp.Существуют два текстовых файла, определяющих сообщение,
отправляемое FTP клиентам. Содержимое файла
/etc/ftpwelcome будет выведено пользователям
перед приглашением на вход. После успешного входа
будет выведено содержимое файла /etc/ftpmotd.
Обратите внимание, что путь к этому файлу задается относительно
домашнего каталога пользователя, так что анонимным пользователям
будет отправляться ~ftp/etc/ftpmotd.Как только FTP сервер был правильно настроен, он должен
быть включен в /etc/inetd.conf. Все, что
необходимо, это удалить символ комментария
# из начала существующей строки
ftpd:ftp stream tcp nowait root /usr/libexec/ftpd ftpd -lКак описано в ,
сигнал HangUP должен быть отправлен inetd
после того, как этот файл настройки был изменен.Теперь вы можете войти на FTP сервер, введя:&prompt.user; ftp localhostПоддержкаsyslogлог файлыFTPДля протоколирования даемон ftpd
использует сообщения &man.syslog.3;. По умолчанию, &man.syslog.3;
поместит сообщения, относящиеся к FTP, в файл
/var/log/xferlog. Местоположение
лог файла FTP может быть изменено путем изменения следующей
строки в файле /etc/syslog.conf:ftp.info /var/log/xferlogУчитывайте потенциальные проблемы, возникающие с
анонимным FTP сервером. В частности, вы должны дважды
подумать, прежде чем позволить анонимным пользователям
загружать файлы на сервер. Вы можете обнаружить, что
FTP сайт стал форумом, на котором происходит обмен
нелицензионным коммерческим программным обеспечением
или чем-то еще хуже. Если вам необходимо разрешить
анонимную выгрузку файлов на FTP, права должны быть настроены
таким образом, чтобы эти файлы не могли прочитать другие
анонимные пользователи до их рассмотрения администратором.TomHukinsТекст предоставил Синхронизация часов через NTPNTPОбзорС течением времени часы компьютера имеют тенденцию отставать.
Network Time
Protocol - Сетевой Протокол Времени (NTP) является одним из способов
вести точное время.Многие сервисы Интернет опираются или сильно зависят от точности
часов компьютеров. К примеру, веб-сервер может получать запрос на
посылку файла, который был недавно модифицирован. В локальной сети
необходимо, чтобы часы компьютеров, совместно использующих файлы,
были синхронизированы, чтобы время модификации файлов устанавливалось
правильно. Такие службы, как
&man.cron.8;, также зависят от правильности установки системных
часов, поскольку запускают команды в определенное время.NTPntpdFreeBSD поставляется с сервером NTP &man.ntpd.8;, который можно
использовать для опроса других серверов NTP для установки часов на
вашей машине или предоставления услуг точного времени.Выбор подходящих серверов NTPNTPвыбор серверовДля синхронизации ваших часов вам нужно найти для использования
один или большее количество серверов NTP. Ваш сетевой администратор
или провайдер могут иметь сервер NTP для этой цели—обратитесь к
ним, так ли это в вашем случае. Существует онлайн список
общедоступных серверов NTP, которым можно воспользоваться для
поиска ближайшего к вам сервера NTP. Не забудьте выяснить политику
выбранного вами сервера и спросить разрешения, если это
требуется.Выбор нескольких несвязанных серверов NTP является хорошей идеей в
том случае, если один из используемых вами серверов станет недоступным
или его часы неточны. &man.ntpd.8; использует ответы, которые он
получает от других серверов с умом—он делает предпочтение
надежным серверам.Настройка вашей машиныNTPнастройкаБазовая конфигурацияntpdateЕсли вам нужно только синхронизировать ваши часы при загрузке
машины, вы можете воспользоваться утилитой &man.ntpdate.8;. Это
может подойти для некоторых настольных машин, которые часто
перезагружаются и только требуют изредка синхронизироваться, но
на большинстве машин должен работать &man.ntpd.8;.Использование &man.ntpdate.8; при загрузке также хорошо для
машин, на которых запущен даемон &man.ntpd.8;. Программа
&man.ntpd.8; изменяет время постепенно, тогда как &man.ntpdate.8;
устанавливает время вне
зависимости от того, насколько велика разница между текущим временем
машины и точным временем.Для включения &man.ntpdate.8; во время загрузки, добавьте строчку
ntpdate_enable="YES" в файл
/etc/rc.conf. Вам также потребуется указать
все серверы, с которыми вы хотите синхронизироваться, и все
параметры, которые передаются в &man.ntpdate.8;, в
ntpdate_flags.NTPntp.confОбщие настройкиNTP настраивается в файле /etc/ntp.conf,
формат которого описан в &man.ntp.conf.5;. Вот простой
пример:server ntplocal.example.com prefer
server timeserver.example.org
server ntp2a.example.net
driftfile /var/db/ntp.driftПараметр server задает, какие серверы будут
использоваться, по одному в каждой строке. Если сервер задан с
аргументом prefer, как ntplocal.example.com, то этому серверу отдается
предпочтение перед остальными. Ответ от предпочтительного сервера
будет отброшен, если он значительно отличается от ответов других
серверов, в противном случае он будет использоваться безотносительно
к другим ответам. Аргумент prefer обычно
используется для серверов NTP, о которых известно, что они очень
точны, такими, на которых используется специальное оборудование
точного времени.Параметр driftfile задает файл, который
используется для хранения смещения частоты системных часов.
Программа &man.ntpd.8; использует его для автоматической компенсации
естественного смещения часов, позволяя ему поддерживать достаточно
правильную настройку, даже если он на некоторый период отключается от
внешнего источника информации о времени.Параметр driftfile задает, какой файл
используется для сохранения информации о предыдущих ответах от
серверов NTP, которые вы используете. Этот файл содержит внутреннюю
информацию для NTP. Он не должен изменяться никакими другими
процессами.Управление доступом к вашему серверуПо умолчанию ваш сервер NTP будет доступен всем хостам в
Интернет. Параметр restrict в файле
/etc/ntp.conf позволяет вам контролировать,
какие машины могут обращаться к вашему серверу.Если вы хотите запретить всем машинам обращаться к вашему серверу
NTP, добавьте следующую строку в
файл /etc/ntp.conf:restrict default ignoreЕсли вы хотите разрешить синхронизировать свои часы с вашим
сервером только машинам в вашей сети, но запретить им настраивать
сервер или быть равноправными участниками синхронизации времени, то
вместо указанной добавьте строчкуrestrict 192.168.1.0 mask 255.255.255.0 nomodify notrapгде 192.168.1.0 является адресом
IP вашей сети, а 255.255.255.0 её
сетевой маской./etc/ntp.conf может содержать несколько
директив restrict. Для получения подробной
информации обратитесь к подразделу Access Control
Support (Поддержка Управления Доступом) в
&man.ntp.conf.5;.Запуск сервера NTPДля того, чтобы сервер NTP запускался при загрузке, добавьте строку
xntpd_enable="YES" в файл
/etc/rc.conf. Если вы хотите передать
дополнительные опции в &man.ntpd.8;, то отредактируйте параметр
xntpd_flags в файле
/etc/rc.conf.Для запуска сервера без перезагрузки вашей машины, выполните
команду ntpd, не забыв задать дополнительные
параметры из переменной xntpd_flags в файле
/etc/rc.conf. К примеру:&prompt.root; ntpd -p /var/run/ntpd.pidВо &os; 5.X различные параметры из
/etc/rc.conf были переименованы. В частности,
в списке параметров вам необходимо заменить каждую строчку
xntpd на ntpd.Использование ntpd с временным подключением к
ИнтернетДля нормальной работы программе &man.ntpd.8; не требуется
постоянное подключение к Интернет. Однако если ваше временное
подключение к Интернет настроено для дозвона по требованию, хорошо бы
запретить трафику NTP вызывать дозвон или поддерживать соединение
постоянно. Если вы используете пользовательский PPP, то можете
воспользоваться директивами filter в файле
/etc/ppp/ppp.conf. К примеру: set filter dial 0 deny udp src eq 123
# Prevent NTP traffic from initiating dial out
set filter dial 1 permit 0 0
set filter alive 0 deny udp src eq 123
# Prevent incoming NTP traffic from keeping the connection open
set filter alive 1 deny udp dst eq 123
# Prevent outgoing NTP traffic from keeping the connection open
set filter alive 2 permit 0/0 0/0Более подробную информацию можно найти в разделе PACKET
FILTERING (ФИЛЬТРАЦИЯ ПАКЕТОВ) в &man.ppp.8;, а примеры в
/usr/share/examples/ppp/.Некоторые провайдеры Интернет блокируют трафик по портам с
маленькими номерами, что приводит к неработоспособности NTP, так как
ответы никогда не достигают вашей машины.Дополнительная литератураДокументация по серверу NTP может быть найдена в каталоге
/usr/share/doc/ntp/ в формате HTML.
diff --git a/ru_RU.KOI8-R/books/handbook/ports/chapter.sgml b/ru_RU.KOI8-R/books/handbook/ports/chapter.sgml
index 3bef80654a..9eb1b1b35e 100644
--- a/ru_RU.KOI8-R/books/handbook/ports/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/ports/chapter.sgml
@@ -1,1336 +1,1336 @@
АндрейЗахватовПеревод на русский язык: Установка приложений: порты и пакетыОбзорпортыпакетыВместе с FreeBSD в составе базового комплекта системы поставляется
богатый набор системный утилит. Однако для выполнения какой-то
реальной работы очень скоро возникает необходимость в установке
дополнительных приложений сторонних разработчиков. FreeBSD даёт две
взаимодополняющих технологии для установки программного обеспечения
сторонних разработчиков в вашу систему: Коллекция Портов FreeBSD и
бинарные пакеты с программным обеспечением. Любая из этих систем может
быть использована для установки самых последних версий ваших любимых
приложений с локальных носителей или прямо из сети.После чтения этой главы вы будете знать:Как устанавливать бинарные пакеты с программным обеспечением
сторонних разработчиков.Как строить программное обеспечение сторонних разработчиков при
помощи коллекции портов.Как удалять ранее установленные пакеты или порты.Как переопределить значения, используемые по умолчанию в
коллекции портов.Как обновить ваши порты.Обзор установки программного обеспеченияЕсли вы использовали &unix;-системы ранее, то знаете, что
стандартная процедура установки программного обеспечения сторонних
разработчиков выглядит примерно так:Загрузка программного обеспечения, которое может распространяться
в форме исходных текстов или двоичных файлов.Распаковка программного обеспечения из дистрибутивного формата
(обычно tar-архива, сжатого при помощи &man.compress.1;,
&man.gzip.1; или &man.bzip2.1;).Поиск документации (возможно, подойдут файлы
INSTALL, README
или несколько файлов из подкаталога doc/) и её
чтение в поиске описания установки программного обеспечения.Если программное обеспечение распространялось в форме исходных
текстов, его компиляция. Сюда может быть включено редактирования
файла Makefile, запуск скрипта
configure и другие работы.Тестирование и установка программного обеспечения.И это только всё проходит нормально. Если вы устанавливаете
программный пакет, который был специально перенесён на FreeBSD, то вам
может даже потребоваться редактировать код для того, чтобы он нормально
заработал.Если вы хотите, то можете продолжать устанавливать программное
обеспечение во FreeBSD традиционным способом. Однако
FreeBSD предоставляет две технологии, которые могут сохранить вам много
усилий: пакеты и порты. На момент написания таким образом были
доступны более &os.numports; сторонних приложений.Для любого конкретно взятого приложения пакет FreeBSD для такого
приложения является одним файлом, который вы должны загрузить. Пакет
содержит уже откомпилированные копии всех команд приложения, а также
- все конфигурационные файлы и документацию. Сгруженным файлом пакета
+ все конфигурационные файлы и документацию. Загруженным файлом пакета
можно управлять командами управления пакетами FreeBSD, такими, как
&man.pkg.add.1; &man.pkg.delete.1;, &man.pkg.info.1; и так далее.
Установка нового приложения может выполняться единственной
командой.Порт FreeBSD для приложения является набором файлов, предназначенных
для автоматизации процесса компиляции приложения из исходного
кода.Вспомните, что обычно вы должны выполнить некоторое количество
шагов, если компилируете программу самостоятельно (загрузка, распаковка,
изменение кода, компиляция, установка). Файлы, составляющие порт,
содержат всю информацию, необходимую для того, чтобы система сделала это
за вас. Вы задаёте пару простых команд, и исходный код приложения
- автоматически сгружается, распаковывается, модифицируется, компилируется
+ автоматически загружается, распаковывается, модифицируется, компилируется
и устанавливается.Действительно, система портов может также использоваться для
генерации пакетов, которые позже могут управляться командой
pkg_add и другими командами управления пакетами, о
которых скоро будет рассказано.Как пакеты, так и порты принимают во внимание
зависимости. Предположим, что вы хотите установить
приложение, которое зависит от некоторой установленной библиотеки. И
приложение, и библиотека доступны во FreeBSD в виде портов и пакетов.
Если вы используете команду pkg_add или систему
портов для добавления приложений, то в обоих случаях будет обнаружено,
что библиотека не была установлена, и сначала будет автоматически
выполнена установка библиотеки.Видя, что обе технологии весьма похожи, вы можете удивиться, почему
во FreeBSD используются обе. И пакеты, и порты имеют свои
преимущества, так что выбор используемой вами системы зависит от ваших
собственных предпочтений.Преимущества пакетовСжатый tar-архив обычно меньше, чем сжатый tar-архив, содержащий
исходный код приложения.Пакеты не требуют никакой дополнительной компиляции. Для таких
больших приложений, как Mozilla,
KDE или GNOME,
это может быть важно, в частности, если вы работаете на медленной
системе.Пакеты не требуют понимания процесса компиляции
программного обеспечения во FreeBSD.Преимущества портовПакеты обычно компилируются с консервативными параметрами,
потому что они должны работать на максимальном количестве систем.
При установке из порта вы можете изменять параметры компиляции для
того, чтобы (к примеру) генерировался код, специфичный для
процессора Pentium IV или Athlon.Некоторые приложения имеют опции времени компиляции, связанные с
тем, что они могут или не могут делать. К примеру,
Apache может быть настроен с широким
набором различных опций. При построении из порта вы можете не
принимать параметры по умолчанию, и задать их самостоятельно.В некоторых случаях для одного и того же приложения будут
иметься несколько пакетов для указания конкретных настроек.
Например, Ghostscript имеется как пакет
ghostscript и как пакет
ghostscript-nox11, в зависимости от того,
установили вы сервер X11 или нет. Такой тип грубой настройки
возможен при использовании пакетов, но быстро становится
недостижим, если приложение имеет более одного или двух параметров
времени компиляции.Условия лицензирования некоторых дистрибутивов программного
обеспечения запрещает распространение в двоичном виде. Они должны
распространяться в виде исходного кода.Некоторые не доверяют дистрибутивам в двоичном виде. При
использовании исходного кода вы по крайней мере (теоретически)
можете прочесть его и попытаться найти потенциальные проблемы
самостоятельно.Если у вас есть собственные патчи, вам нужен исходный код для
того, чтобы их применять.Некоторым нравится иметь исходный код, чтобы его можно было
смотреть и хакать, заимствовать из него (конечно, при разрешающей
лицензионном соглашении) и тому подобное.Чтобы отслеживать обновления портов, подпишитесь на
&a.ports; и &a.ports-bugs;.Перед установкой любого приложения необходимо зайти на , где находится информация
по вопросам безопасности приложений.Вы можете также установить security/portaudit, который автоматически
проверит все установленные приложения на наличие известных
уязвимостей, проверка также будет выполняться перед сборкой
какого-либо порта. Вы можете использовать portaudit
-F -a и после установки пакетов.В оставшейся части главы будет рассказано, как использовать пакеты
и порты для установки и управления программным обеспечением сторонних
разработчиков во FreeBSD.Поиск нужного вам приложенияПеред тем, как устанавливать какое-либо приложение, вам нужно знать,
что вы хотите и как называется нужное вам приложение.Список имеющихся для FreeBSD приложений постоянно растёт. К счастью,
есть несколько способов найти то, что вам нужно:На сайте FreeBSD поддерживается обновляемый список имеющихся
приложений для FreeBSD, в котором можно выполнять поиск, по адресу
http://www.FreeBSD.org/ports/. Порты разбиты на категории,
и вы можете либо выполнить поиск приложения по имени (если его
знаете), либо просмотреть список всех приложений, относящихся к
определённой категории.FreshPortsDan Langille поддерживает сайт FreshPorts по адресу .
На нём отслеживаются изменения в приложениях из дерева портов, как
только они происходят, он позволяет вам отслеживать
один или несколько портов, и может высылать оповещение по электронной
почте при их обновлении.FreshMeatЕсли вы не знаете названия нужного вам приложения, попытайтесь
воспользоваться сайтом типа FreshMeat ()
для поиска приложения, а затем возвратитесь на сайт FreeBSD, чтобы
проверить, есть ли порт для этого приложения.Если вы знаете точное имя порта, и хотите определить, в какой
категории он находится, используйте команду &man.whereis.1;.
Просто наберите в приглашении whereis
file,
где file - программа,
которую вы хотите установить. И если она имеется в системе,
об этом будет сообщено, как показано ниже:&prompt.root; whereis lsof
lsof: /usr/ports/sysutils/lsofЭто говорит о том, что lsof (системная
утилита) находится в каталоге
/usr/ports/sysutils/lsof.Ещё одним способом поиска некоторого порта является
использование встроенной возможности поиска в коллекции портов.
Чтобы ею воспользоваться, вы должны находиться в каталоге
/usr/ports. Очутившись в этом каталоге,
выполните команду make search
name=program-name, где
program-name – это
название программы, которую вы хотите найти. Например, если
вы ищете lsof:&prompt.root; cd /usr/ports
&prompt.root; make search name=lsof
Port: lsof-4.56.4
Path: /usr/ports/sysutils/lsof
Info: Lists information about open files (similar to fstat(1))
Maint: obrien@FreeBSD.org
Index: sysutils
B-deps:
R-deps:Вам следует обратить особое внимание на строчку
Path:, так как в ней указывается, где найти порт.
Остальная сообщаемая информация для установки порта не
нужна, поэтому здесь она описываться не будет.Для выполнения более глубокого поиска вы можете также использовать
make search key=string,
где string
представляет собой некоторый текст, который ищется. При этом будет
выполнен поиск в именах портов, комментариях, описаниях и
зависимостях, и его можно использовать для поиска портов, связанных с
некоторой темой, если вы не знаете названия программы, которую вы
ищете.В обоих этих случаях строка поиска нечувствительна к регистру.
Поиск LSOF приводит к тому же самому результату, что и
поиск lsof.ChernLeeТекст предоставил Использование системы пакетовУстановка пакетапакетыустановкаpkg_addДля установки пакетов программного обеспечения для FreeBSD из
локальных файлов или с сервера в сети вы можете использовать утилиту
&man.pkg.add.1;.Загрузка пакета вручную и его локальная установка&prompt.root; ftp -a ftp2.FreeBSD.org
Connected to ftp2.FreeBSD.org.
220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230-
230- This machine is in Vienna, VA, USA, hosted by Verio.
230- Questions? E-mail freebsd@vienna.verio.net.
230-
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>cd /pub/FreeBSD/ports/packages/sysutils/
250 CWD command successful.
ftp>get lsof-4.56.4.tgz
local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
200 PORT command successful.
150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
100% |**************************************************| 92375 00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
ftp>exit
&prompt.root; pkg_add lsof-4.56.4.tgzЕсли у вас нет исходных текстов локальных пакетов (например,
набор CD-ROM с FreeBSD), то проще всего, наверное, воспользоваться
опцией для &man.pkg.add.1;. Это приведёт к тому,
что утилита автоматически определит правильный формат объектных файлов
и релиз, а затем загрузит и установит пакет с сервера FTP.pkg_add&prompt.root; pkg_add -r lsof
- В примере выше нужный пакет будет сгружен и установлен без всякого
+ В примере выше нужный пакет будет загружен и установлен без всякого
дополнительного взаимодействия с пользователем.
Если вместо основного сайта вы хотите указать другое зеркало пакетов
&os;, то для переопределения используемых по умолчанию значений вам
необходимо задать соответствующим образом значение переменной
PACKAGESITE.
Для загрузки файлов утилита &man.pkg.add.1; использует функцию
&man.fetch.3;, которая принимает во внимание различные переменные
окружения, включая FTP_PASSIVE_MODE,
FTP_PROXY и FTP_PASSWORD. Если вы
находитесь за сетевым экраном или для работы с работы с FTP/HTTP вам
необходимо использовать прокси, то определите соответствующие
переменные. Обратитесь к справочной странице по &man.fetch.3; для
получения полного списка переменных.
Заметьте, что в примере выше вместо
lsof-4.56.4 используется lsof.
При использовании функций загрузки с сети номер версии в имени пакета
должен быть опущен. Утилита &man.pkg.add.1; автоматически загрузит
последнюю версию приложения.Файлы пакетов распространяются в форматах
.tgz и .tbz. Вы можете найти
их по адресу или
взять с дистрибутива FreeBSD на CD-ROM. Каждый CD из комплекта
FreeBSD на 4 дисках (а также PowerPak и тому подобное) содержит
пакеты в каталоге /packages. Расположение
пакетов похоже на то, как организовано дерево
/usr/ports. Каждая категория имеет собственный
каталог, и каждый пакет помещается в каталог
All.Структура каталогов системы пакетов соответствует структуре
системы портов; они взаимодействуют друг с другом для формирования
единой системы пакетов/портов.Управление пакетамипакетыуправление&man.pkg.info.1; является утилитой для вывода списка и описаний
различных установленных пакетов.pkg_info&prompt.root; pkg_info
cvsup-16.1 A general network file distribution system optimized for CV
docbook-1.2 Meta-port for the different versions of the DocBook DTD
...&man.pkg.version.1; является утилитой для вывода отчёта о версиях
всех установленных пакетов. Она сравнивает версию имеющегося пакета
с текущей версией, находящейся в дереве портов.pkg_version&prompt.root; pkg_version
cvsup =
docbook =
...Символы во второй колонке указывают сравнительную разницу в
возрасте установленной версии и версии, находящейся в локальном дереве
портов.
-
+ СимволЗначение=Версия установленного пакета соответствует версии,
находящейся в локальном дереве портов.<Установленная версия старее, чем та, что имеется в
дереве портов.>Установленная версия новее чем та, что есть в дереве
портов. (Скорее всего, локальное дерево портов
устарело.)?В индексном файле портов установленный пакет не может быть
найден. (Это может случиться, например, если установленный
порт был удалён из коллекции портов или переименован.)*Имеется несколько версий пакета.Удаление пакетаpkg_deleteпакетыудалениеДля удаления ранее установленных пакетов с программным
обеспечением используйте утилиту &man.pkg.delete.1;.&prompt.root; pkg_delete xchat-1.7.1РазноеВся информация о пакете хранится в каталоге
/var/db/pkg. Список установленных файлов и
описания всех пакетов могут быть найдены среди файлов этого
каталога.Использование Коллекции ПортовВ этих разделах описаны основные приемы использования коллекции
портов для установки и удаления программ из вашей системы.Получение Коллекции ПортовПеред тем, как вы сможете устанавливать порты, вы сначала должны
установить коллекцию портов—она представляет собой в основном
набор файлов Makefile, патчей, файлов описаний, и
она размещается в каталоге /usr/ports.При установке вашей системы FreeBSD утилита
sysinstall запрашивает, требуется ли вам
установка коллекции портов. Если вы ответили отрицательно, то можете
следовать следующим указаниям для установки коллекции портов:Метод с использованием SysinstallВ этом методе повторно используется
sysinstall для ручной установки коллекции
портов.Работая как пользователь root, запустите
/stand/sysinstall так, как это показано
ниже:&prompt.root; /stand/sysinstallОпуститесь вниз и выберите
Configure, нажмите
EnterОпуститесь вниз и выберите
Distributions,
затем нажмите EnterОпуститесь вниз к пункту ports,
нажмите клавишу ПробелПоднимитесь вверх к Exit, нажмите
EnterВыберите желаемый носитель для установки, например, CDROM,
FTP и так далее.Перейдите на пункт меню Exit и
нажмите Enter.Нажмите X для выхода из
sysinstall.Альтернативный метод получения и постоянной актуализации
вашей коллекции портов заключается в использовании
CVSup. Посмотрите на файл
CVSup из портов,
/usr/share/examples/cvsup/ports-supfile.
Прочтите раздел Использование CVSup
() для получения более полной информации об
использовании CVSup и этого файла.Метод с использованием CVSupЭто быстрый способ для получения коллекции портов при помощи
CVSup. Если вы хотите поддерживать ваше
дерево портов в актуальном состоянии, или узнать больше о
CVSup, то прочтите вышеотмеченные
разделы.Установите порт net/cvsup. Обратитесь к разделу
Установка CVSup () для получения более подробной
информации.Работая как пользователь root, скопируйте
/usr/share/examples/cvsup/ports-supfile в
новое место, например, в каталог /root или в
ваш домашний каталог.Отредактируйте ports-supfile.Измените CHANGE_THIS.FreeBSD.org на
близкий к вам сервер CVSup. Посмотрите
Зеркала CVSup () для получения полного списка
зеркалирующих сайтов.Запустите
cvsup&prompt.root; cvsup -g -L 2 /root/ports-supfileПри повторных запусках этой команды все последние изменения
(кроме реального перестроения портов для вашей системы) будут
- сгружаться и переноситься в вашу коллекцию портов.
+ загружаться и переноситься в вашу коллекцию портов.
Установка портовпортыустановкаКогда речь заходит о коллекции портов, то первым делом вы должны
понять, что именно подразумевается под словом скелет.
По сути скелетом порта является минимальный набор файлов, который
указывает вашей системе FreeBSD, как корректно откомпилировать и
установить программу. Скелет каждого порта включает:Makefile. Makefile
содержит различные директивы, которые определяют, как приложение
должно быть откомпилировано и куда в вашей системе оно должно быть
установлено.Файл distinfo. Этот файл содержит
информацию о файлах, которые должны существовать на вашей
системе для успешной сборки порта, и их контрольные суммы, для
проверки при помощи &man.md5.1; того, что файлы в процессе загрузки
не были повреждены.Каталог files. Этот каталог
содержит патчи, использование которых необходимо для компиляции и
установки программы в вашей системе FreeBSD. Патчи - это, как
правило, маленькие файлы, в которых содержатся изменения, которые
нужно внести в какой-то конкретный файл. Они имеют обычный
текстовый формат и в основном содержат указания типа Удалить
строку 10 или Заменить строку 26 на
такую .... Патчи также называются
diff-файлами или просто диффами,
потому что они генерируются программой &man.diff.1;.Этот каталог также может содержать другие файлы, используемые
для построения порта.pkg-descr. Это более подробное,
зачастую многострочное описание программы.pkg-plist. Это список всех файлов,
которые будут установлены портом. В нем также содержатся
указания системе портов на удаление определенных файлов во
время удаления порта.В некоторых портах присутствуют и другие файлы, такие, как
pkg-message. Система портов использует эти файлы
для обработки особых ситуаций. Если вы хотите узнать более подробно
об этих файлах и о портах вообще, то обратитесь к Руководству по созданию
портов для FreeBSD.В порт включаются инструкции
относительно того, как выполнять построение из исходного кода, но не
сам код. Вы можете получить исходный код с CD-ROM или из Интернет.
Исходный код распространяется в том виде, какой предпочёл выбрать
разработчик. Зачастую это tar-файл, обработанный утилитой gzip, но он
может также быть упакованным каким-то другим инструментом или быть
не сжатым. Исходный код программы, в каком бы то виде он ни был,
называется дистрибутивным (distfile). Два метода
установки портов &os; описаны ниже.Для установки портов вы должны войти в систему как пользователь
root.Перед установкой любого порта необходимо убедиться в
наличии свежей коллекции портов и заглянуть на , где могут
освещаться вопросы безопасности, связанные с этим портом.Проверка на наличие уязвимостей может быть автоматически
выполнена portaudit перед установкой
нового приложения. Эту программу можно найти в коллекции портов
(security/portaudit).
Запустите portaudit -F перед установкой
нового порта для загрузки свежей базы данных уязвимостей.
Проверка безопасности и обновление базы данных должны
выполняться при повседневной проверке безопасности системы.
За дальнейшей информацией обращайтесь к страницам справочника
&man.portaudit.1; и &man.periodic.8;.Установка портов с CD-ROMпортыустановка с CD-ROMОфициальные образы CD-ROM Проекта FreeBSD больше не содержат
дистрибутивные файлы. На них есть достаточно места, которое лучше
использовать для предкомпилированных пакетов. Продукты на CD-ROM,
такие, как FreeBSD PowerPak, включают дистрибутивные файлы, и вы
можете заказать их от таких поставщиков, как FreeBSD Mall. В этом
разделе предполагается, что у вас есть такой набор CD-ROM с
FreeBSD.Вставьте ваш CD-ROM с FreeBSD в привод. Смонтируйте его в
каталог /cdrom. (Если вы используете другую
точку монтирования, то установка работать не будет.) Чтобы начать,
перейдите в каталог с портом, который вы хотите установить:&prompt.root; cd /usr/ports/sysutils/lsofОказавшись в каталоге lsof, вы увидите
структуру порта. Следующим шагом является компиляция, или построение
(build) порта. Это выполняется простой выдачей
команды make в ответ на приглашение командного
процессора. Как только вы это сделаете, то увидите выдачу,
выглядящую примерно так:&prompt.root; make
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from file:/cdrom/ports/distfiles/.
===> Extracting for lsof-4.57
...
[выдача при распаковке опущена]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===> Patching for lsof-4.57
===> Applying FreeBSD patches for lsof-4.57
===> Configuring for lsof-4.57
...
[выдача при конфигурации опущена]
...
===> Building for lsof-4.57
...
[выдача при компиляции опущена]
...
&prompt.root;Заметьте, что, как только компиляция закончится, вы снова
вернётесь к приглашению вашего командного процессора. Следующим
шагом является установка порта. Чтобы это сделать, вам нужно просто
добавить одно слово к команде make, а именно слово
install:&prompt.root; make install
===> Installing for lsof-4.57
...
[выдача при установке опущена]
...
===> Generating temporary packing list
===> Compressing manual pages for lsof-4.57
===> Registering installation for lsof-4.57
===> SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.
&prompt.root;Как только вы вернулись к приглашению вашей оболочки, вы должны
суметь запустить приложение, которое только что установили. Так как
lsof является программой, которая запускается с
повышенными правами, то выдаётся предупреждение о безопасности. Во
время построения и установки портов вы должны принимать во внимание
все выдаваемые предупреждения.Вы можете сэкономить лишний шаг, просто выдав команду
make install вместо make и
последующей make install в двух отдельных
шагах.Некоторые командные процессоры для ускорения поиска выполнимых
файлов и команд кэшируют имена таких программ, которые доступны для
вызова из каталогов, перечисленных в переменной окружения
PATH. Если вы используете один из таких командных
процессоров, то перед использованием только что добавленных команд
вам может понадобиться вызвать директиву rehash
после установки порта. Это верно как для оболочек, являющихся
частями базового системного набора (например,
tcsh), так и командных процессоров, доступных в
виде портов (например, shells/zsh).Пожалуйста, будьте готовы к тому, что лицензии некоторых
портов не позволяют помещать их на CD-ROM. Это может
делаться из-за обязательности заполнения регистрационной формы
перед загрузкой или запрета на дальнейшее распространение, либо по
какой-то другой причине. Если вы хотите установить порт, которого
нет на CD-ROM, вам нужно иметь подключение к Интернет, чтобы это
сделать (обратитесь к следующему разделу).Установка портов из ИнтернетКак и в предыдущем разделе, здесь предполагается, что у вас
имеется работающее подключение к Интернет. Если это не ваш случай,
вам нужно выполнять установку с
CD-ROM либо поместить копию дистрибутивного файла в каталог
/usr/ports/distfiles вручную.Установка порта из Интернет производится точно так же, как если
бы делали её с CD-ROM. Единственным отличием между ними
- является тот факт, что дистрибутивный файл сгружается из Интернет, а
+ является тот факт, что дистрибутивный файл загружается из Интернет, а
не считывается с CD-ROM.Выполняются те же самые шаги:&prompt.root; make install
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.
Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100%
439860 bytes transferred in 18.0 seconds (23.90 kBps)
===> Extracting for lsof-4.57
...
[выдача при распаковке опущена]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===> Patching for lsof-4.57
===> Applying FreeBSD patches for lsof-4.57
===> Configuring for lsof-4.57
...
[выдача процесса конфигурации опущена]
...
===> Building for lsof-4.57
...
[выдача компиляции опущена]
...
===> Installing for lsof-4.57
...
[выдача процедуры установки опущена]
...
===> Generating temporary packing list
===> Compressing manual pages for lsof-4.57
===> Registering installation for lsof-4.57
===> SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.
&prompt.root;Как вы видите, единственным отличием является строка, в которой
- указывается, откуда система сгружает дистрибутивный файл
+ указывается, откуда система загружает дистрибутивный файл
порта.Для загрузки файлов система портов использует утилиту
&man.fetch.1;, которая принимает во внимание различные переменные
окружения, включая FTP_PASSIVE_MODE,
FTP_PROXY и FTP_PASSWORD. Если вы
находитесь за сетевым экраном или для работы с работы с FTP/HTTP вам
необходимо использовать прокси, то определите соответствующие
переменные. Обратитесь к справочной странице по &man.fetch.3; для
получения полного списка переменных.Пользователям, которые не могут быть постоянно подключенными
к сети, поможет команда make
fetch. Просто запустите эту
команду в каталоге самого верхнего уровня
- (/usr/ports), и требуемые файлы будут сгружены.
+ (/usr/ports), и требуемые файлы будут загружены.
Эта команда будут работать также и с вложенными категориями,
например: /usr/ports/net.
Заметьте, что если порт имеет зависимости от библиотек или других
- портов, то он не будет также сгружать
+ портов, то он не будет также загружать
дистрибутивные файлы этих портов. Замените
fetch на
fetch-recursive, если вы хотите выполнить
загрузку также и всех этих зависимостей порта.Вы можете построить все порты в категории за раз, запустив
команду make в каталоге верхнего уровня, как и
в вышеописанном методе с make
fetch. Однако это опасно, так как
некоторые порты не могут сосуществовать. В других случаях
некоторые порты могут устанавливать два различных файла с одним и
тем же именем.В некоторых редких случая пользователям необходимо получить
tar-архивы с сайтов, отличающихся от MASTER_SITES
- (это место, откуда файлы обычно сгружаются). Вы можете
+ (это место, откуда файлы обычно загружаются). Вы можете
переопределять значение MASTER_SITES посредством
следующей команды:&prompt.root; cd /usr/ports/directory
&prompt.root; make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetchВ этом примере мы изменили значение переменной
MASTER_SITES на
ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.Некоторые порты позволяют (или даже требуют) задавать
параметры, которые включают или выключают построение отдельных
частей приложения, которые не нужны, некоторые параметры
безопасности, а также прочие настройки. К некоторым из них, часто
упоминаемым, относятся
пакеты www/mozilla,
security/gpgme и
mail/sylpheed-claws. При
наличии подобных параметров будет выдано сообщение.Переназначение каталогов с портами по умолчаниюИногда бывает полезным (или необходимым) использование
других каталогов с портами и дистрибутивными файлами. Для
переопределения каталогов, используемых по умолчанию, используются
переменные PORTSDIR и PREFIX.
К примеру:&prompt.root; make PORTSDIR=/usr/home/example/ports installбудет компилировать порт в каталоге
/usr/home/example/ports, а установит всё в
/usr/local.&prompt.root; make PREFIX=/usr/home/example/local installбудет компилировать его в каталоге
/usr/ports, а установит в
/usr/home/example/local.И, конечно,&prompt.root; make PORTSDIR=../ports PREFIX=../local installиспользует обе возможности (полная команда слишком длинна для
написания на этой странице, однако вы должны уловить общую
идею).Альтернативным способом является задание значений этих переменных
в параметрах вашего окружения. Обратитесь к страницам справки по
вашему командному процессору для получения инструкций о том, как это
сделать.Работа с imakeНекоторые порты, использующие imake (часть
X Window System) нормально не работают с PREFIX,
и будут пытаться установиться в дерево
/usr/X11R6. Аналогично некоторые Perl-порты
игнорируют значения PREFIX и устанавливаются в
дерево Perl. Заставить такие порты воспринимать переменную
PREFIX является сложной или невыполнимой
задачей.Удаление установленных портовпортыудалениеТеперь, когда вы знаете, как устанавливать порты, вы наверное, уже
задумывались о том, как же их удалять, просто даже на тот случай, если
вы установили один из них, а позже решили, что установили не тот порт.
Мы удалим порт из нашего предыдущего примера (а это была программа
lsof, если вы обратили внимание). Как и при
установке портов, первым делом вы должны перейти в каталог с портом,
/usr/ports/sysutils/lsof. После смены каталога вы
готовы к удалению xchat. Это делается командой
make deinstall:&prompt.root; cd /usr/ports/sysutils/lsof
&prompt.root; make deinstall
===> Deinstalling for lsof-4.57Это было достаточно легко. Вы удалили lsof из
вашей системы. Если вам захочется переустановить эту программу, то это
можно будет сделать, выдав команду make reinstall
из каталога /usr/ports/sysutils/lsof.Последовательность команд make deinstall и
make reinstall не сработает, если вы запустите
команду make clean. Если вы хотите убрать порт из
системы после зачистки каталога, используйте команду
&man.pkg.delete.1;, как это описано в разделе о пакетах Руководства.Порты и дисковое пространствопортыдисковое пространствоИспользование коллекции портов может определённо стоить вам
дискового пространства. По этой причине вы не должны забывать о
зачистке рабочих каталогов при помощи команды make
clean. При этом будет удаляться каталог
work, возникающий после построения и установки
порта. Вы можете также удалить tar-файлы из каталога
distfiles, а позже удалить установленные порты,
если они не используются.Некоторые пользователи ограничивают набор категорий портов,
помещая в файл refuse соответствующую запись.
В этом случае при запуске программы CVSup
она не будет загружать файлы из указанных категорий. Дополнительную
информацию, относящуюся к файлу refuse, можно
найти в .Обновление портовportupgradeпортыобновлениеПосле обновления коллекции портов, и перед тем, как обновить
приложение из порта, сверьтесь с файлом
/usr/ports/UPDATING. В нем дана информация
по различным вопросам и дополнительным шагам, которые
могут быть необходимы для обновления порта.Поддержание ваших портов в актуальном состоянии может оказаться
нудным занятием. К примеру, чтобы обновить порт, вам нужно перейти в
каталог с портами, построить порт, удалить старый порт, установить
новый, а затем вычистить его после построения. Представьте, сколько
действий (пять) нужно сделать! Скучно, да? Это было большой
проблемой для системных администраторов, но теперь есть утилиты,
выполняющие эти действия за нас. Например, утилита
sysutils/portupgrade сделает всё за
вас сама! Просто установите её, как обычный порт, при помощи команды
make install clean.Теперь создайте базу данных командой pkgdb -F.
Она выяснит перечень установленных портов и создаст файл базы данных
в каталоге /var/db/pkg. Теперь при вызове
команды portupgrade -a, она будет использовать эту
базу данных и файл портов INDEX. Наконец,
portupgrade загрузит, построит, сделает
резервную копию, установит и очистит порты, которые были обновлены.
portupgrade имеет массу параметров для
использования в разных ситуациях, из которых наибольшего внимания
заслуживает описываемая далее.Если вы хотите обновить только определённое приложение, но не
полностью базу данных, используйте portupgrade
pkgname, с флагом
, если portupgrade
должен отработать все пакеты, которые зависят от указанного, и
использовать флаг для отработки всех пакетов,
которые требуют указанные пакеты. Для использования при установке
пакетов, а не портов, укажите флаг , а для простой
загрузки дистрибутивных файлов без построения или установки чего бы то
ни было задайте флаг . Дополнительную информацию
можно получить на странице справки по
утилите &man.portupgrade.1;.Важно регулярно обновлять базу данных пакетов при помощи
команды pkgdb -F для восстановления целостности,
особенно когда portupgrade запрашивает
вас это сделать. Не прерывайте работы
portupgrade при обновлении базы данных
пакетов, это может привести к рассогласованию данных.Существуют и другие утилиты, которые делают подобные вещи,
посмотрите в каталоге ports/sysutils и выберите
то, что вам подходит.Действия после установкиПосле установки нового приложения вам обычно требуется прочесть
какую-либо документацию, если она есть, отредактировать нужные
конфигурационные файлы, проверить, что приложение запускается во время
загрузки системы (если это даемон), и так далее.Очевидно, что в шаги, в точности требуемые для конфигурации каждого
приложения, отличаются. Однако, если если вы только что установили
новое приложение и вам интересно, Что же дальше?, то вам
могут помочь следующие советы:Воспользуйтесь командой &man.pkg.info.1; для определения того,
куда и какие файлы были установлены. К примеру, если вы только что
установили FooPackage версии 1.0.0, то по команде&prompt.root; pkg_info -L foopackage-1.0.0 | lessбудут выведен список всех файлов, установленных пакетов.
Обратите особое внимание на файлы в каталогах
man/, которые являются справочными страницами,
etc/, которые будут являться конфигурационными
файлами, и doc/, которые будут являться более
подробной документацией.Если вы не уверены, какая версия приложения была только что
установлена, то по команде типа&prompt.root; pkg_info | grep -i foopackageбудут выведен список всех установленных пакетов, в названии
которых присутствует foopackage Замените
foopackage в командной строке на то, что вам
нужно.Как только вы определите, куда были установлены справочные
страницы приложения, просмотрите их при помощи команды &man.man.1;.
Подобным же образом просмотрите примеры конфигурационных файлов и
всю дополнительную документацию, которая была поставлена.Если у приложения имеется веб-сервер, поищите там дополнительную
документацию, ответы на часто задаваемые вопросами и так далее. Если
вы не уверены, каков адрес веб-сайта, он может быть указан в выводе
команды&prompt.root; pkg_info foopackage-1.0.0Строка WWW:, если она есть, должна содержать
URL Web-сайта приложения.Порты, которые должны запускаться при загрузке системы (такие,
как серверы Internet), как правило, устанавливают примерный скрипт в
каталог /usr/local/etc/rc.d. Вы должны
просмотреть скрипт на предмет его корректности и отредактировать или
переименовать его, если это нужно. Обратитесь к разделу о Запуске сервисов для
получения более полной информации.Обработка нерабочих портовЕсли вы встретили порт, который у вас не работает, есть несколько
вещей, которые вы можете сделать, а именно:Исправьте его! В Руководстве по созданию
портов содержится подробная информация об инфраструктуре
Портов, так что вы сможете исправить иногда
встречающиеся порты с ошибками или даже создать собственные!Надавите—только по электронной
почте! Сначала пошлите письмо человеку, сопровождающему
порт. Наберите команду make maintainer или
прочтите Makefile, чтобы найти его адрес. Не
забудьте указать имя и версию порта (скопировав строчку
$FreeBSD: из файла
Makefile) и включите в письмо весь
вывод, предшествующий возникновению ошибки.
Если вы не получили ответа от этого человека, то можете
воспользоваться командой &man.send-pr.1; для посылки
сообщения об ошибке.Загрузите пакет с ближайшего к вам FTP-сервера.
Основная коллекция пакетов находится на сервере
ftp.FreeBSD.org в каталоге
с пакетами, но первым делом проверьте
местное зеркало! Это, скорее всего, будет работать, и сделать это,
кроме того, будет гораздо быстрее, чем пытаться компилировать порты
из исходного кода. Воспользуйтесь программой &man.pkg.add.1; для
установки пакета в вашей системе.
diff --git a/ru_RU.KOI8-R/books/handbook/printing/chapter.sgml b/ru_RU.KOI8-R/books/handbook/printing/chapter.sgml
index 9935c72295..ca786131e5 100644
--- a/ru_RU.KOI8-R/books/handbook/printing/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/printing/chapter.sgml
@@ -1,4924 +1,4924 @@
SeanKellyНаписал JimMockРеструктурировал и обновил ВалерийКравчукПеревод на русский язык: ПечатьКраткий обзорсистема спулинга LPDпечатьFreeBSD можно использовать для печати на широком спектре принтеров, от
старых матричных до новейших лазерных, без исключений, что позволяет
создавать высококачественные распечатки из используемых приложений.FreeBSD можно также сконфигурировать для работы в качестве сервера
печати в сети; в этом качестве FreeBSD может получать задания печати от множества
других компьютеров, включая другие компьютеры под управлением ОС FreeBSD, хосты &windows;
и &macos;. FreeBSD будет гарантировать печать заданий по одному и может сохранять
информацию о том, какие пользователи и машины выполняют основную часть печати,
выдавать страницы-баннеры, показывающие, кому принадлежит распечатка,
и многое другое.При прочтении этой главы вы узнаете:Как конфигурировать спулер печати FreeBSD.Как устанавливать фильтры печати для специфической обработки определенных
заданий печати, включая преобразование поступающих на печать документов в
форматы, которые понимает принтер.Как включить при печати колонтитулы или выдачу страниц-баннеров.Как печатать на принтеры, подключенные к другим компьютерам.Как печатать на принтеры, подключенные непосредственно к сети.Как задавать ограничения для принтера, включая ограничение
размера заданий печати и запрет печати для отдельных пользователей.Как сохранять статистическую информацию о печати и учитывать использование
принтера.Как решать проблемы печати.Прежде чем читать эту главу, вы должны:Знать, как сконфигурировать и установить новое ядро
().ВведениеДля использования принтеров в ОС FreeBSD надо настроить их для
работы с системой спулинга печати Беркли (Berkeley line printer spooling system),
также известной как система спулинга LPD.
Это - стандартная система управления принтером во FreeBSD. В этой главе
представлена система спулинга LPD,
которую часто называют просто LPD, и описано
ее конфигурирование.Если вы уже знакомы с LPD или другой
системой спулинга печати, вы можете сразу перейти к разделу Настройка системы спулинга.LPD управляет всеми аспектами работы принтеров
хоста. Она отвечает за несколько вещей:Она управляет доступом к непосредственно подключенным принтерам и
принтерам, подключенным к другим хостам в сети.задания печатиОна позволяет пользователям посылать файлы на печать; эти посылки
называют заданиями.Она предотвращает одновременный доступ к принтеру нескольких
пользователей путем поддержки очереди для каждого
принтера.Она позволяет печатать страницы заголовка (их также
называют баннерными или начальными
страницами), чтобы пользователи могли легко находить распечатанные задания
в пачке распечаток.Она обеспечивает установку параметров взаимодействия для принтеров
подключенных, к последовательным портам.Она может отправлять задания по сети спулеру
LPD на другом хосте.Она может применять специальные фильтры для форматирования заданий
для печати на разных языках описания страниц или задействования специфических
возможностей принтера.Она учитывает использование принтера.С помощью файла конфигурации
(/etc/printcap) и за счет предоставления специальных
программ фильтрования, можно потребовать от системы LPD
выполнять все или некоторые из перечисленных выше функций на широком
спектре принтерного оборудования.Зачем использовать спулерЕсли вы - единственный пользователь системы, вы можете спросить,
зачем возиться со спулером, если управление доступом,
страницы заголовка или учет использования принтера вам не нужно. Хотя можно
обеспечить непосредственный доступ к принтеру, в любом случае следует
использовать спулер, поскольку:LPD печатает задания в фоновом режиме;
вам не придется ждать, пока данные будут скопированы на принтер.&tex;LPD позволяет легко пропустить
задание печати через фильтры для добавления заголовков с
датой/временем или преобразования специального формата файлов
(такого как файла &tex; DVI) в формат, который понимает принтер.
Вам не придется выполнять эти шаги вручную.Многие свободно распространяемые и коммерческие программы,
обеспечивающие возможность печати, обычно предполагают
взаимодействие со спулером системы. Путем настройки
системы спулинга вы упростите поддержку другого
программного обеспечения, которое может быть добавлено
в дальнейшем или уже установлено.Основная настройкаДля использования принтеров с системой спулинга
LPD, необходимо настроит как сам
принтер, так и программное обеспечение
LPD. Этот документ описывает два уровня
настройки:См. раздел Простая настройка
принтера, чтобы узнать, как подключить принтер,
объяснить LPD, как с ним
взаимодействовать, и отправлять на принтер простые текстовые
файлы.См. раздел Расширенная
настройка принтера, чтобы узнать, как печатать файлы
множества специальных форматов, как печатать страницы заголовка,
печатать по сети, управлять доступом к принтерам и учитывать
использование принтера.Простая настройка принтераВ этом разделе описано, как сконфигурировать принтер
и программное обеспечение LPD для
использования принтера. Здесь рассматриваются следующие вопросы:В разделе Настройка
оборудования представлены советы по подключению
принтера к порту компьютера.В разделеНастройка
программного обеспечения показано, как настроить
файл конфигурации спулера LPD
(/etc/printcap).Если вы настраиваете принтер, использующий для принятия
заданий печати вместо последовательного или параллельного
интерфейса сетевой протокол, см. раздел
Принтеры с
сетевыми интерфейсами для приема данных.Хотя этот раздел и назван Простая настройка
принтера, это, на самом деле, достаточно сложно.
Заставить принтер работать с компьютером и спулером
LPD - самая сложная часть.
Расширенные опции, вроде выдачи страниц заголовков и учета
использования, установить несложно, как только принтер
заработает.Настройка оборудованияВ этом разделе описаны различные способы подключения
принтера к ПК. Рассматриваются различные порты и кабели, а
также параметры конфигурации ядра, которые может потребоваться
установить, чтобы ОС FreeBSD могла взаимодействовать с
принтером.Если вы уже подключили ваш принтер и успешно печатали на
него в другой операционной системе, можете перейти к разделу
Настройка программного
обеспечения.Порты и кабелиПринтеры, которые продаются сегодня для использования на ПК,
обычно поддерживают один или несколько из следующих
интерфейсов:принтерыпоследовательныеПоследовательные интерфейсы, также
известные как RS232C или RS232D, или COM-порты, используют
для посылки данных на принтер последовательный порт
компьютера. Последовательные интерфейсы широко
распространены в компьютерной индустрии, кабели для них легко
найти и просто сделать. Для последовательных интерфейсов
иногда нужны специальные кабели, и для их использования может
потребоваться настраивать достаточно сложные опции
взаимодействия. Большинство последовательных портов ПК имеют
максимальную скорость передачи 115200 бит/сек, поэтому
печатать через них большие графические задания
неудобно.принтерыпараллельныеПараллельные интерфейсы используют
параллельный порт компьютера для посылки данных на принтер.
Параллельные интерфейсы широко распространены на рынке ПК
и работают быстрее, чем последовательные RS232.
Кабели легко найти, но сделать самостоятельно сложнее. При
использовании параллельных интерфейсов опции взаимодействия
обычно задавать не надо, что делает их конфигурирование
существенно проще.centronicsпараллельные принтерыПараллельные интерфейсы иногда называют
интерфейсами Centronics, по названию типа
разъема на принтере.принтерыUSBИнтерфейсы USB (сокращение от Universal Serial
Bus - универсальная последовательная шина), могут работать
на еще больших скоростях, чем параллельные или
последовательные интерфейсы RS232. Кабели для них -
простые и дешевые. USB превосходит последовательный RS232
и параллельный интерфейсы для печати, но не слишком
хорошо поддерживается в &unix;-системах. Обойти эту проблему
можно, купив принтер с двумя интерфейсами, USB и
параллельным, как у многих принтеров.В общем случае, параллельные интерфейсы обычно
обеспечивают только одностороннюю передачу (с компьютера
на принтер), тогда как последовательные и USB поддерживают
двустороннюю. Более новые параллельные порты (EPP и ECP) и принтеры
могут взаимодействовать в обоих направлениях под FreeBSD, если
используется кабель, соответствующий стандарту IEEE1284.PostScriptДвустороннее взаимодействие с принтером через параллельный
порт обычно выполняется одним из двух способов. Первый метод
опирается на использование специально созданного драйвера
принтера для FreeBSD, который поддерживает специфический язык
данного принтера. Этот метод типичен для струйных принтеров и
может использоваться для получения информации об уровне чернил и
другой информации о состоянии. Второй метод используется, когда
принтер поддерживает &postscript;.Фактически, задания &postscript;
являются программами, посылаемыми для выполнения принтеру;
они вообще могут не выдавать результат на бумагу и возвращать
их непосредственно компьютеру. &postscript; также использует
двустороннее взаимодействие для сообщения компьютеру о проблемах,
таких как ошибки в &postscript;-программе или замятие бумаги.
Такая информация может пригодиться пользователям. Более того,
лучший способ эффективного учета использования
&postscript;-принтера требует двустороннего взаимодействия:
вы запрашиваете у принтера значение счетчика страниц (сколько
страниц напечатал принтер за все время существования), затем
посылаете задание пользователя, затем снова запрашиваете значение
его счетчика страниц. Вычитаем одно значение из другого, и узнаем,
сколько бумаги потратил пользователь.Параллельные портыДля подключения принтера через параллельный интерфейс,
соедините принтер и компьютер кабелем Centronics.
Инструкции для принтера, для компьютера или обе должны полностью
описывать эту процедуру.Помните, какой параллельный порт компьютера вы использовали.
Первый параллельный порт в ОС FreeBSD -
/dev/ppc0; второй -
/dev/ppc1, и так далее. Имена устройств для
принтеров используют ту же схему: /dev/lpt0
для принтера на первом параллельном порту и т.д.Последовательные портыДля подключения принтера через последовательный интерфейс,
соедините принтер с компьютером подходящим последовательным кабелем.
Инструкции для принтера, для компьютера или обе должны полностью
описывать эту процедуру.Если вы не знаете, что такое подходящий последовательный
кабель, можете попробовать использовать один из следующих:Модемный кабель соединяет каждый штырёк
на одном конце кабеля напрямую с соответствующим штырьком
на другом конце. Кабель такого типа также называют
кабелем DTE-to-DCE.нуль-модемный кабельНуль-модемный кабель соединяет часть
штырьков напрямую, другие - меняет (пересылку данных на приём
данных, например), а некоторые - закорачивает на каждом разъеме.
Кабель такого типа также называют кабелем
DTE-to-DTE cable.Кабель последовательного принтера,
необходимый для некоторых редко используемых принтеров, похож
на нуль-модемный кабель, но посылает часть сигналов на
соответствующие штырьки, а не закорачивает их.скорость передачичетностьпротокол управления передачейВам надо также настроить эти параметры взаимодействия с принтером,
обычно - через элементы управления на лицевой панели или переключатели
(DIP switches) на принтере. Выберите максимальную скорость передачи
bps (бит в секунду, иногда -
baud rate), которую могут поддерживать как
компьютер, так и принтер. Выберите 7 или 8 битов данных; четность none,
even или odd; и 1 или 2 стоп-бита. Также надо выбрать протокол управления
передачей: none или XON/XOFF (также известный как
внутриполосный или программный).
Запомните выбранные установки для последующего конфигурирования
программного обеспечения.Настройка программного обеспеченияВ этом разделе описана настройка программного обеспечения,
необходимая для печати с помощью системы спулинга
LPD в ОС FreeBSD.
Вот план действий, которые необходимо выполнить:При необходимости, сконфигурировать в ядре поддержку порта,
к которому подключен принтер; в разделе Конфигурирование ядра описано,
что надо сделать.Установить режим взаимодействия для параллельного порта,
если используется параллельный порт; детали представлены
в разделе Настройка
режима взаимодействия для параллельного порта.Проверить, может ли операционная система посылать данные
на принтер. В разделе Проверка
взаимодействия с принтером даны советы, как это сделать.Настроить LPD для принтера,
изменяя файл /etc/printcap. Как это
сделать описано далее в этой главе.Конфигурирование ядраЯдро операционной системы компилируется для работы с
конкретным набором устройств. Последовательный или параллельный
интерфейс для принтера входит в этот набор. Поэтому может
понадобиться добавить поддержку для дополнительного
последовательного или параллельного порта, если он еще
не сконфигурирован в ядре.Чтобы узнать, поддерживает ли используемое в настоящий
момент ядро последовательный интерфейс, наберите:&prompt.root; grep sioN /var/run/dmesg.bootГде N - номер последовательного
порта, начиная с нуля. Если вы получаете результат, подобный
следующему:sio2 at port 0x3e8-0x3ef irq 5 on isa
sio2: type 16550Aзначит, ядро поддерживает порт.Чтобы узнать, поддерживает ли ядро параллельный интерфейс,
наберите:&prompt.root; grep ppcN /var/run/dmesg.bootГде N номер параллельного порта,
начиная с нуля. Если вы получаете результат, подобный
следующему:ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/8 bytes thresholdзначит, ядро поддерживает порт.Может потребоваться переконфигурировать ядро, чтобы
операционная система распознала и использовала параллельный
или последовательный порт, используемый для подключения
принтера.Чтобы добавить поддержку последовательного порта,
обратитесь к разделу, посвященному конфигурированию ядра.
Чтобы добавить поддержку параллельного порта, почитайте
этот же раздел и следующий раздел.Добавление файлов /dev для портовFreeBSD 5.0 включает файловую систему
devfs, которая автоматически создает
специальные файлы устройств по мере необходимости.
Если вы используете версию FreeBSD с включенной поддержкой
devfs, можно пропустить этот раздел.Хотя ядро может уже поддерживать взаимодействие по
последовательному или параллельному порту, вам необходим
программный интерфейс, через которых работающие в системе программы
смогут посылать и принимать данные. Именно для этого и
существуют специальные файлы устройств в каталоге
/dev.Для добавления файла в каталог /dev
для порта:Станьте пользователем root с помощью
команды &man.su.1;.
Введите пароль пользователя root
в ответ на приглашение.Перейдите в каталог /dev:&prompt.root; cd /devВведите команду:&prompt.root; ./MAKEDEV portГде port - имя специального файла
устройства для порта, который вы хотите создать. Используйте
lpt0 для принтера на первом параллельном порту,
lpt1 для принтера на втором порту и т.д.;
используйте ttyd0 для первого последовательного
порта, ttyd1 - для второго и так далее.Введите команду:&prompt.root; ls -l portчтобы убедиться, что требуемый специальный файл устройства
создан.Настройка режима взаимодействия для параллельного портаПри использовании параллельного интерфейса можно выбрать,
должна ли ОС FreeBSD взаимодействовать с принтером на основе
прерываний или путем опроса. Универсальный драйвер принтера
(&man.lpt.4;) во FreeBSD 4.X и 5.X использует
систему &man.ppbus.4;, которая управляет чипсетом порта
с помощью драйвера &man.ppc.4;.Метод взаимодействия на основе прерываний
является стандартным для ядра GENERIC. По этому методу,
операционная система использует линию запроса прерывания (IRQ line)
для определения готовности принтера к приему данных.Метод взаимодействия путем опроса
требует от операционной системы постоянно запрашивать
принтер, готов ли он к приему данных. Когда он отвечает,
что готов, ядро посылает дополнительные данные.Метод взаимодействия на основе прерываний обычно работает
несколько быстрее, но использует ценную линию запроса прерывания.
Про некоторые новые принтеры HP утверждают, что они работают
некорректно в режиме взаимодействия на основе прерываний,
вероятно, из-за некоторой (еще не вполне понятной) проблемы
синхронизации. Для этих принтеров необходимо устанавливать
режим опроса. Используйте тот режим, который работает. Некоторые
принтеры будут работать в обоих режимах, но оказываются
крайне медленными в режиме на основе прерываний.Режим взаимодействия можно установить двумя способами:
конфигурируя ядро или с помощью программы &man.lptcontrol.8;.Для установки режима взаимодействия путем
конфигурирования ядра:Отредактируйте файл конфигурации ядра. Найдите запись
ppc0. Если вы настраиваете второй
параллельный порт, ищите запись ppc1.
Используйте запись ppc2 для третьего порта,
и так далее.Если необходимо установить режим на основе прерываний,
для FreeBSD 4.X добавьте спецификацию
irq:device ppc0 at isa? irq NГде N - номер IRQ
для параллельного порта компьютера.Для FreeBSD 5.X, отредактируйте следующую строку:hint.ppc.0.irq="N"в файле /boot/device.hints, заменив
N соответствующим номером IRQ.
Файл конфигурации ядра также должен содержать драйвер
&man.ppc.4;:device ppcЕсли необходимо установить режим опроса, не добавляйте
спецификацию irq:Для FreeBSD 4.X используйте следующую строку в
файле конфигурации ядра:device ppc0 at isa?Для FreeBSD 5.X просто удалите из файла
/boot/device.hints следующую
строку:hint.ppc.0.irq="N"В некоторых случаях, этого недостаточно для перевода
порта в режим опроса под FreeBSD 5.X. Чаще всего,
проблема связана с драйвером &man.acpi.4;, который может
опрашивать и подключать устройства и, тем самым,
управлять режимом доступа к порту принтера. Чтобы решить
эту проблему, проверьте конфигурацию &man.acpi.4;.Сохраните файл. Затем сконфигурируйте, соберите и установите
ядро и перезагрузите систему. Подробнее см. в разделе конфигурирование ядра.Для настройки режима взаимодействия с помощью
утилиты &man.lptcontrol.8;:Введите команду:&prompt.root; lptcontrol -i -d /dev/lptNдля установки режима взаимодействия на основе прерываний
для lptN.Введите команду:&prompt.root; lptcontrol -p -d /dev/lptNдля установки режима взаимодействия по опросу для
lptN.Вы можете поместить эти команды в файл
/etc/rc.local для установки требуемого режима
при каждой загрузке системы. Дополнительную информацию об этом
ищите на странице справочного руководства &man.lptcontrol.8;.Проверка взаимодействия с принтеромПрежде чем переходить к конфигурированию системы спулинга,
надо убедиться, что операционная система может успешно посылать данные
на принтер. Намного проще отлаживать взаимодействие с принтером и
систему спулинга отдельно.Для тестирования принтера мы пошлем на него текст. Для принтеров,
которые могут непосредственно печатать посланные на них символы,
программа &man.lptest.1; идеально подходит: она генерирует все 96
печатных символов ASCII в 96 строках.PostScriptДля &postscript;- (или основанного на другом языке) принтера,
необходим более сложный тест. Подойдет небольшая
&postscript;-программа, вроде следующей:%!PS
100 100 moveto 300 300 lineto stroke
310 310 moveto /Helvetica findfont 12 scalefont setfont
(Is this thing working?) show
showpageПредставленный выше &postscript;-код можно поместить в
в файл и использовать, как показано в примерах в следующих
разделах.PCLКогда в этом документе речь идет о языке принтера,
подразумевается язык типа &postscript;, а не PCL компании Hewlett
Packard. Хотя PCL имеет прекрасные функциональные возможности, в нем
можно смешивать обычный текст с его управляющими
последовательностями. &postscript; не позволяет непосредственно
печатать обычный текст, и это язык принтера именно того рода,
для которого надо выполнять специальные настройки.Проверка параллельного принтерапринтерыпараллельныеВ этом разделе описано, как проверить, может ли ОС FreeBSD
взаимодействовать с принтером, подключенным к параллельному порту.Для тестирования принтера на параллельном порту:Станьте пользователем root с помощью
команды &man.su.1;.Пошлите данные на принтер.Если принтер может печатать обычный текст, используйте
утилиту &man.lptest.1;. Введите команду:&prompt.root; lptest > /dev/lptNГде N - номер параллельного порта,
начиная с нуля.Если принтер понимает &postscript; или другой язык принтера,
пошлите на принтер небольшую программу. Введите команду:&prompt.root; cat > /dev/lptNЗатем, построчно, внимательно введите
программу, поскольку вы не сможете отредактировать строку
после нажатия клавиши RETURN
или ENTER. По окончании ввода программы,
нажмите CONTROL+D или другую комбинацию клавиш,
используемую для ввода символа конца файла.Можно также поместить программу в файл и выполнить команду:&prompt.root; cat file > /dev/lptNГде file - имя файла, содержащего
программу, которую вы хотите послать принтеру.Вы должны увидеть распечатку. Не переживайте, если текст выглядит
не так, как предполагалось; этими проблемами мы займемся позже.Проверка последовательного принтерапринтерыпоследовательныеВ этом разделе описано, как проверить, может ли ОС FreeBSD
взаимодействовать с принтером, подключенным к последовательному
порту.Для тестирования принтера на последовательном
порту:Станьте пользователем root с помощью
команды &man.su.1;.Отредактируйте файл /etc/remote.
Добавьте следующую запись:printer:dv=/dev/port:br#bps-rate:pa=parityбит в секундупоследовательный портчетностьГде port - специальный файл
устройства для последовательного порта (ttyd0,
ttyd1 и т.д.), bps-rate -
скорость обработки данных принтером, в битах в секунду,
а parity - требуемая принтером четность
(значение even, odd,
none или zero).Вот пример записи для принтера, подключенного
к третьему последовательному порту на скорости 19200 bps
без четности:printer:dv=/dev/ttyd2:br#19200:pa=noneПодключитесь к принтеру с помощью &man.tip.1;.
Введите команду:&prompt.root; tip printerЕсли этот шаг не срабатывает, снова отредактируйте
файл /etc/remote и попробуйте использовать
устройство /dev/cuaaN
вместо /dev/ttydN.Пошлите данные на принтер.Если принтер может печатать обычный текст, используйте
утилиту &man.lptest.1;. Введите команду:&prompt.user; $lptestЕсли принтер понимает &postscript; или другой язык
принтера, пошлите на принтер небольшую программу.
Вводите программу, построчно, очень
внимательно, поскольку нажатие клавиши Backspacе
или других клавиш редактирования может иметь значение
для принтера. Может также понадобиться нажать специальную
комбинацию клавиш, обозначающую конец файла, чтобы принтер
понял, что получена вся программа. Для
&postscript;-принтеров нажмите CONTROL+D.Можно также поместить программу в файл и ввести команду:&prompt.user; >fileГде file - имя файла,
содержащего программу. После того, как утилита
&man.tip.1; пошлет файл, нажмите требуемую для
ввода признака конца файла комбинацию клавиш.Вы должны увидеть распечатку. Не переживайте, если текст выглядит
не так, как предполагалось; этими проблемами мы займемся позже.Включение спулера: файл /etc/printcapСейчас ваш принтер уже должен быть подключен, ядро
(при необходимости) - сконфигурировано для взаимодействия с ним,
и вы смогли послать на принтер простые данные. Теперь мы готовы
к конфигурированию системы LPD для управления
доступом к принтеру.Система LPD конфигурируется путем
редактирования файла /etc/printcap. Система
спулинга LPD читает этот файл при
каждом использовании спулера, так что, изменения в файле
сразу же учитываются.принтерыхарактеристикиФормат файла &man.printcap.5; прост. Используйте
свой любимый текстовый редактор для изменения файла
/etc/printcap. Формат файла идентичен
формату других файлов, описывающих характеристики, например,
/usr/share/misc/termcap и
/etc/remote. Полная информация о формате
представлена на странице справочного руководства &man.cgetent.3;.Простое конфигурирование спулера включает следующие шаги:Выберите имя (и несколько удобных псевдонимов) для принтера
и поместите их в файл /etc/printcap; подробнее
об именовании см. в разделе
Именование принтера.начальные страницыОтключите выдачу начальных страниц (которые по умолчанию выдаются),
вставив характеристику sh; подробнее об
этом см. в разделе
Подавление выдачи
начальных страниц.Создайте каталог для спулинга и укажите его местонахождение
с помощью характеристики sd; подробнее об этом
см. в разделе Создание
каталога спулинга.Выберите специальный файл устройства /dev для
использования с принтером и укажите его в файле
/etc/printcap с помощью характеристики
lp; подробнее об этом см. в разделе
Выбор устройства для принтера.
Кроме того, если принтер подключен к последовательному порту,
настройте параметры взаимодействия с помощью характеристики
ms#, которая обсуждается в разделе
Конфигурирование параметров
взаимодействия для спулера.Установите фильтр для обычного текста; подробнее об этом
см. в разделе Установка
текстового фильтра.Проверьте настройку, напечатав что-нибудь с помощью команды
&man.lpr.1;. Подробнее об этом см. в разделах
Проверка и
Выявление
проблем.Принтеры, использующие специальные языки, например, &postscript;-принтеры,
не могут непосредственно печатать обычный текст. Простая настройка,
представленная выше и описанная в следующих разделах, предполагает, что,
если вы устанавливаете такой принтер, то будете печатать только файлы,
которые он может обработать.Пользователи часто предполагают, что они могут печатать обычный
текст на любом из установленных в системе принтеров. Программы,
взаимодействующие для обеспечения печати с системой
LPD, обычно исходят из этого же предположения.
Если вы устанавливаете такой принтер и хотите иметь возможность посылать
на печать задания на языке принтера и в виде обычного
текста, настоятельно рекомендуется добавить дополнительный шаг к представленной
выше простой последовательности настройки: установите программу
автоматического преобразования обычного текста в &postscript; (или
другой язык принтера). В разделе
Прием заданий с обычным текстом
на &postscript;-принтеры рассказано, как это сделать.Именование принтераПервый (простой) шаг - выбрать имя для принтера.
На самом деле, не важно, выберите ли вы функциональное имя или
причудливое, поскольку для принтера можно также задать несколько
псевдонимов.По крайней мере, один из принтеров, указанных в файле
/etc/printcap, должен иметь псевдоним
lp. Это - стандартное имя принтера.
Если пользователи не установят переменную среды PRINTER
и не укажут имя принтера в командной сроке при вводе любой
команды системы LPD, по умолчанию для
ее выполнения будет использован принтер lp.Также широко распространена практика в качестве последнего
псевдонима для принтера задавать полное его описание, включая
производителя и модель.После выбора имени и нескольких популярных псевдонимов поместите
их в файл /etc/printcap. Имя принтера должно начинаться
с крайнего левого столбца. Каждый псевдоним отделяйте вертикальной
чертой, а после последнего псевдонима поместите двоеточие.В следующем примере мы начнем со скелетного файла
/etc/printcap, определяющего два принтера
(построчный принтер Diablo 630 и лазерный &postscript;-принтер
Panasonic KX-P4455):#
# /etc/printcap для хоста rose
#
rattan|line|diablo|lp|Diablo 630 Line Printer:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:В этом примере первый принтер назван
rattan и ему заданы псевдонимы
line, diablo,
lp и Diablo 630 Line
Printer. Поскольку у него есть псевдоним
lp, он является стандартным принтером. Второму
принтеру дано имя bamboo и ему заданы псевдонимы
ps, PS,
S, panasonic и
Panasonic KX-P4455 PostScript v51.4.Подавление выдачи начальных страницпечатьначальных страницСистема спулинга LPD будет по умолчанию
печатать заголовочную страницу для каждого задания.
Заголовочная страница содержит имя пользователя, отправившего задание,
хост, с которого поступило задание, и имя задания, красивыми большими
буквами. К сожалению, все эти дополнительные тексты мешают
отладке простой настройки принтера, поэтому мы будет отключать
выдачу начальных страниц.Для подавления выдачи начальных страниц добавьте характеристику
sh к записи принтера в файле
/etc/printcap. Вот пример файла
/etc/printcap с добавлением sh:#
# /etc/printcap для хоста rose - никаких начальных страниц
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:Обратите внимание, как мы использовали правильный формат: первая
строка начинается с самого левого столбца, а последующие строки
смещены на один символ табуляции. Каждая строка в записи,
кроме последней, завершается символом обратной косой.Создание каталога для спулингаprinter spoolзадания печатиСледующий шаг в простой настройке спулера - создать
каталог для спулинга, каталог, в котором
находятся задания печати, пока не будут напечатаны, и находятся
еще несколько других файлов для поддержки спулера.Из-за присущих каталогам спулинга постоянных изменений, принято
помещать эти каталоги в каталог /var/spool.
Кроме того, не нужно создавать резервные копии содержимого каталогов
спулинга. Пересоздать их можно с помощью простой команды
&man.mkdir.1;.Принято также задавать для каталога имя, совпадающее с именем
принтера, как показано ниже:&prompt.root; mkdir /var/spool/имя-принтераОднако при наличии большого количества принтеров в сети
может иметь смысл поместить все каталоги спулинга в один каталог,
который просто резервируется для печати с помощью
LPD. Мы сделаем это для наших двух принтеров,
rattan и bamboo:&prompt.root; mkdir /var/spool/lpd
&prompt.root; mkdir /var/spool/lpd/rattan
&prompt.root; mkdir /var/spool/lpd/bambooЕсли вас интересует конфиденциальность заданий, отправляемых
пользователями на печать, можно защитить каталог спулинга, чтобы
он не был общедоступным. Каталоги спулинга должны принадлежать и
быть доступны на чтение, запись и просмотр содержимого пользователю
daemon и группе daemon, и никому больше. Мы установим это для
каталогов спулинга принтеров из нашего примера:&prompt.root; chown daemon:daemon /var/spool/lpd/rattan
&prompt.root; chown daemon:daemon /var/spool/lpd/bamboo
&prompt.root; chmod 770 /var/spool/lpd/rattan
&prompt.root; chmod 770 /var/spool/lpd/bambooНаконец, надо сообщить системе LPD
об этих каталогах с помощью файла /etc/printcap.
Полное имя каталога спулинга задается с помощью характеристики
sd:#
# /etc/printcap для хоста rose - добавлены каталоги спулинга
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:Обратите внимание, что имя принтера начинается с самого
первого столбца, а все последующие строки смещены на один
символ табуляции и каждая строка в записи,
кроме последней, завершается символом обратной косой.Если вы не зададите каталог спулинга с помощью характеристики
sd, система спулинга будет использовать по умолчанию
каталог /var/spool/lpd.Выбор устройства для принтераВ разделе Добавление файлов
/dev для портов мы выяснили, какой специальный
файл устройства в каталоге /dev FreeBSD будет
использовать для взаимодействия с принтером. Теперь мы сообщаем эту
информацию системе LPD. Когда у системы
спулинга есть задание для печати, она будет открывать указанное устройство
от имени программы-фильтра (которая отвечает за передачу данных
на принтер).Задайте полное имя устройства /dev в файле
/etc/printcap с помощью характеристики
lp.В нашем текущем примере давайте предположим, что принтер
rattan подключен к первому параллельному порту,
а принтер bamboo - к шестому последовательному
порту; вот что нужно добавить в файл /etc/printcap:#
# /etc/printcap для хоста rose - указано, какие устройства использовать
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:Если вы не укажете характеристику lp для
принтера в файле /etc/printcap, система
LPD использует по умолчанию
устройство /dev/lp. Устройство
/dev/lp сейчас в ОС FreeBSD не существует.Если устанавливаемый принтер подключен к параллельному порту,
перейдите к разделу Установка
текстового фильтра. Иначе выполните сначала инструкции,
представленные в следующем разделе.Конфигурирование параметров взаимодействия спулерапринтерыпоследовательныеДля принтеров на последовательных портах система
LPD может устанавливать скорость передачи,
четность и другие параметры взаимодействия через последовательных порт
от имени программы-фильтра, которая посылает данные на принтер.
Это полезно потому, что:Позволяет опробовать различные параметры взаимодействия, просто
редактируя файл /etc/printcap; программу-фильтр
перекомпилировать не нужно.Позволяет системе спулинга использовать одну и ту же
программу-фильтр для нескольких принтеров, которые могут иметь
различные установки для взаимодействия через последовательный
порт.Следующие характеристики в файле /etc/printcap
задают параметры взаимодействия через последовательный порт
для устройства, указанного в качестве значения характеристики
lp:br#bps-rateУстанавливает скорость взаимодействия для устройства в
bps-rate, где
bps-rate может иметь значение 50, 75, 110,
134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600,
19200, 38400, 57600 или 115200 бит в секунду.ms#stty-modeУстанавливает опции для терминального устройства после открытия устройства.
Поддерживаемые опции описаны на странице справочного руководства &man.stty.1;.Когда система LPD открывает устройство,
заданное характеристикой lp, она устанавливает
опции устройства в соответствии со значением характеристики
ms#. Наибольший интерес представляют
режимы parenb, parodd,
cs5, cs6, cs7,
cs8, cstopb,
crtscts и ixon, которые
описаны на странице справочного руководства &man.stty.1;.Давайте зададим опции для нашего принтера на шестом последовательном
порту. Мы установим скорость передачи 38400. В качестве режима
установим без четности с помощью -parenb,
8-битовые символы с помощью cs8,
отсутствие модемного управления с помощью clocal и
аппаратное управление потоком с помощью опции crtscts:bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:Установка текстового фильтрапечатьфильтрыТеперь мы готовы задать системе LPD,
какой текстовый фильтр использовать для посылки заданий на принтер.
Текстовый фильтр, известный также как
входной фильтр, - это программа, которую система LPD запускает при получении задания на
печать. Когда система LPD запускает
текстовый фильтр для принтера, она направляет на стандартный
входной поток фильтра задание печати, а его стандартный выходной
поток - на устройство принтера, заданное характеристикой lp.
Предполагается, что фильтр прочитает задание из стандартного входного
потока, выполнит все необходимые для принтера преобразования и
выдаст результат в стандартный выходной поток, который и будет
напечатан. Подробнее о текстовом фильтре см. в разделе
Фильтры.Для простой настройки принтера в качестве текстового фильтра можно
задать небольшой скрипт командного интерпретатора, который просто
выполняет /bin/cat для посылки задания на принтер.
В составе FreeBSD поставляется другой фильтр, lpf,
обрабатывающий забой и подчеркивание для принтеров, которые не слишком
хорошо справляются с потоком данных, содержащих такие символы. И,
конечно же, вы можете использовать любую другую необходимую
программу-фильтр. Фильтр lpf детально описан в разделе
lpf: текстовый фильтр.Сначала давайте создадим скрипт командного интерпретатора
/usr/local/libexec/if-simple для простого
тестового фильтра. Поместите в этот файл следующий текст с помощью
любимого текстового редактора:#!/bin/sh
#
# if-simple - Простой фильтр входного текста для lpd
# Установлен в /usr/local/libexec/if-simple
#
# Просто копирует stdin в stdout. Игнорирует все аргументы фильтра.
/bin/cat && exit 0
exit 2Сделайте этот файл выполняемым:&prompt.root; chmod 555 /usr/local/libexec/if-simpleА теперь потребуйте от системы LPD его использовать, указав его в
качестве значения характеристики if в файле
/etc/printcap. Мы добавим его для двух принтеров,
имеющихся пока в примере файла /etc/printcap:#
# /etc/printcap для хоста rose - добавлен текстовый фильтр
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:\
:if=/usr/local/libexec/if-simple:Копию скрипта if-simple можно
найти в каталоге /usr/share/examples/printing.Запуск системы LPDДемон &man.lpd.8; запускается из /etc/rc,
а необходимость запуска задается переменной lpd_enable.
Эта переменная по умолчанию имеет значение NO. Если
вы еще этого не сделали, добавьте строку:lpd_enable="YES"в файл /etc/rc.conf, а затем либо перезапустите
машину, либо просто выполните команду &man.lpd.8;.&prompt.root; lpdПроверкаВы добрались до конца простой настройки системы
LPD. К сожалению,
поздравлять вас еще рано, поскольку надо еще проверить
настройку и устранить все выявленные проблемы. Для проверки
настройки, попытайтесь что-то распечатать. Для печати с помощью
системы LPD используется
команда &man.lpr.1;, которая посылает задание на печать.Можно скомбинировать &man.lpr.1; с программой &man.lptest.1;,
представленной в разделе Проверка
взаимодействия с принтером, генерирующей тестовый текст.Для тестирования простой настройки
LPD:Введите команду:&prompt.root; lptest 20 5 | lpr -Pprinter-nameГде printer-name - имя
(или псевдоним) принтера, заданное в файле
/etc/printcap. Для проверки стандартного
принтера, введите команду &man.lpr.1; без аргумента .
Как уже отмечалось, если тестируется принтер, предполагающий использование
&postscript;, пошлите ему &postscript;-программу вместо использования
утилиты &man.lptest.1;. Это можно сделать, поместив программу в файл
и выполнив команду lpr file.Для &postscript;-принтера вы должны получить результаты выполнения
программы. Если вы используете &man.lptest.1;, ваши результаты должны
иметь такой вид:!"#$%&'()*+,-./01234
"#$%&'()*+,-./012345
#$%&'()*+,-./0123456
$%&'()*+,-./01234567
%&'()*+,-./012345678Для дальнейшего тестирования принтера, попытайтесь загрузить
программы побольше (для принтеров, поддерживающих определенный язык)
или выполните команду &man.lptest.1; с другими аргументами. Например,
команда lptest 80 60 выдаст 60 строк по 80
символов в каждой.Если принтер не работает, см. раздел Выявление проблем.Расширенная настройка принтераВ этом разделе описаны фильтры для печати специально сформатированных
файлов, начальных страниц, печати по сети, ограничения и учета использования
принтера.ФильтрыпечатьфильтрыХотя система LPD поддерживает сетевые
протоколы, очереди, контроль доступа и другие аспекты печати, большая
часть реальной работы происходит в
фильтрах. Фильтры - это программы,
взаимодействующие с принтером и обеспечивающие учет особенностей
устройства и специальных требований. При простой настройке принтера
мы установили фильтр для обычного текста—крайне простой, который
должен работать с большинством принтеров (см. раздел
Установка текстового
фильтра).Однако, чтобы обеспечить преобразования формата, учет использования
принтера и индивидуальных особенностей отдельных принтеров и т.п.,
надо разобраться, как работают фильтры. В конечном итоге, всеми этими
аспектами печати должен заниматься фильтр. А плохая новость состоит
в том, что, в большинстве случаев, вы сами
должны предоставить соответствующие фильтры. Хорошая новость состоит
в том, что многие фильтры общедоступны; а если подходящих нет,
их обычно легко написать.Кроме того, в составе ОС FreeBSD поставляется один фильтр,
/usr/libexec/lpr/lpf, работающий со многими
принтерами, которые могут печатать обычный текст. (Он обрабатывает
символы забоя и табуляции в файле, выполняет учет использования, но
и не более того.) Есть также ряд фильтров и компонентов фильтров
в наборе портов FreeBSD.Вот что вы найдете в этом разделе:В разделе Как работают
фильтры сделана попытка дать обзор роли фильтра в процессе
печати. Прочтите этот раздел, чтобы понять, что происходит
за кадром, когда система LPD
использует фильтры. Это понимание поможет предвидеть и решать
проблемы, с которыми вы можете столкнуться при добавлении дополнительных
фильтров для каждого из принтеров.Система LPD предполагает, что
каждый принтер, по умолчанию, может печатать обычный текст. Это
проблематично для &postscript;-принтеров (или принтеров на базе
другого языка), поскольку они не могут печатать обычный текст
непосредственно. В разделе
Прием заданий с
обычным текстом на &postscript;-принтеры описано, что
нужно сделать, чтобы решить эту проблему. Прочтите этот раздел,
если используете &postscript;-принтер.&postscript; - популярный формат выдачи для многих программ.
Некоторые люди даже пишут &postscript;-код непосредственно. К
сожалению, &postscript;-принтеры дороги. В разделе Имитация &postscript; на
не-&postscript; принтерах описано, как можно дополнительно
изменить текстовый фильтр принтера для приема и печати данных
&postscript; не не-&postscript; принтере.
Прочтите этот раздел, если ваш принтер не поддерживает
&postscript;.В разделе Фильтры преобразования
описан способ автоматизации преобразования определенных форматов
файлов, например, графики или данных для печатного станка, в форматы,
которые может обработать ваш принтер. После чтения этого раздела
вы сможете настроить свои принтеры так, что пользователи смогут
выполнять команду lpr -t для печати данных troff,
или lpr -d для печати данных &tex; DVI, или
lpr -v - для печати растровых изображений, и
так далее. Я рекомендую прочитать этот раздел.В разделе Выходные фильтры
описана не часто используемая возможность задавать выходные
фильтры в системе LPD. Если только вы
не печатаете начальные страницы (см. Начальные страницы),
можно, пожалуй, вообще пропустить этот раздел.В разделе lpf: текстовый
фильтр описана команда lpf, - достаточно
полный, хотя и простой текстовый фильтр для строчных принтеров
(и лазерных принтеров, работающих как строчные), поставляемый в
составе ОС FreeBSD. Если надо быстро настроить учет использования
принтера для обычного текста или если используется принтер,
из которого при получении символов забоя идет дым, несомненно,
стоит подумать об использовании lpf.Различные скрипты, описанные далее, можно найти в каталоге
/usr/share/examples/printing.Как работают фильтрыКак уже упоминалось, фильтр - это выполняемая программа, запускаемая
системой LPD для поддержки специфических
особенностей устройства при взаимодействии с принтером.Когда системе LPD надо напечатать
входящий в задание файл, она запускает программу-фильтр. Стандартный
входной поток фильтра связывается с файлом, который надо распечатать,
его стандартный выходной поток - с принтером, а стандартный поток
ошибок перенаправляется в файл регистрации ошибок (задается
характеристикой lf в файле
/etc/printcap, или используется стандартное
устройство /dev/console).troffЗапускаемый системой LPD фильтр и его
аргументы зависят от того, что указано в файле
/etc/printcap, и какие аргументы указал
пользователь для задания в команде &man.lpr.1;. Например,
если пользователь ввел команду lpr -t,
система LPD должна запустить фильтр troff,
заданный характеристикой tf для соответствующего
принтера. Если пользователь хочет печатать обычный текст, система
должна запустить фильтр if (это верно в большинстве
случаев: подробнее см. в разделе
Выходные фильтры).В файле /etc/printcap можно задавать
три вида фильтров:Текстовый фильтр, который в документации
LPD двусмысленно называют
входным фильтром, обеспечивает печать
обычного текста. Рассматривайте его как стандартный фильтр.
Система LPD предполагает, что любой
принтер может по умолчанию печатать обычный текст, а на текстовый
фильтр возлагается задача обеспечить, чтобы символы забоя,
табуляции или другие специальные символы не сбивали принтер с
толку. Если вы работаете в среде, где надо учитывать
использование принтера, текстовый фильтр должен также
учитывать количество напечатанных страниц, обычно, подсчитывая
количество напечатанных строк и сравнивая их с количеством строк на
страницу, поддерживаемых принтером. Текстовый фильтр запускается со
следующим списком аргументов:
имя-фильтра-c-wширина-lдлина-iсдвиг-n имя-пользователя-h хостучетный-файл
где
указывается, если задание послано командой
lpr -lшириназначение из характеристики pw (page
width - ширина страницы), указанной в файле
/etc/printcap, по умолчанию - 132длиназначение из характеристики pl (page
length - длина страницы), по умолчанию - 66сдвигсдвиг, заданный командой lpr -i,
по умолчанию - 0имя-пользователярегистрационное имя пользователя, печатающего файлхостимя хоста, с которого было послано заданиеучетный-файлимя учетного файла, задаваемое характеристикой
af.печатьфильтрыФильтр преобразования преобразует
специфичный формат файла в то, что принтер может воспроизвести
на бумаге. Например, данные системы набора ditroff нельзя печатать
непосредственно, но можно установить фильтр преобразования
для файлов ditroff, чтобы преобразовывать данные ditroff
в тот вид, который принтер может воспринять и напечатать. В разделе
Фильтры
преобразования описано всё об этих фильтрах. Фильтры
преобразования также необходимы для учета, если предполагается
учет использования принтера. Фильтры преобразования
запускаются со следующими аргументами:
имя-фильтра-xширина-пиксела-yвысота-пиксела-n имя-пользователя-h хостучетный-файл
где ширина-пиксела - значение
характеристики px (по умолчанию - 0),
а высота-пиксела - значение характеристики
py (по умолчанию - 0).Выходной фильтр используется только
если нет текстового фильтра или если включена выдача начальных
страниц. Судя по моему опыту, выходные фильтры используются редко.
Они описаны в разделе Выходные
фильтры. У выходного фильтра есть всего два аргумента:
имя-фильтра-wширина-lдлина
которые идентичны аргументам и
текстового фильтра.Фильтры также должны завершать работу со
следующим статусом выхода:exit 0Если фильтр успешно напечатал файл.exit 1Если фильтр не смог напечатать файл, но хочет, чтобы
система LPD попыталась
распечатать файл ещё раз. Система LPD
перезапустит фильтр, если его работа завершена с этим статусом.exit 2Если фильтр не смог напечатать файл и не хочет, чтобы
система LPD пыталась его печатать
еще раз. Система LPD удалит файл.Поставляемый в составе FreeBSD текстовый фильтр
/usr/libexec/lpr/lpf использует аргументы, задающие
ширину и длину страницы для определения того, когда посылать символ
прогона страницы (form feed) и как учитывать использование принтера.
Он использует переданные в качестве аргументов имя пользователя,
хост и учетный файл для внесения учетных записей.При поиске фильтров убедитесь, что они совместимы с системой LPD.
Если да, они должны поддерживать описанные выше списки аргументов.
Если вы планируете создавать фильтры для общего использования,
позаботьтесь о поддержке этих списков аргументов и кодов выхода.Прием заданий с обычным текстом на &postscript;-принтерызадания печатиЕсли вы - единственный пользователь компьютера и &postscript;-принтера
(или принтера на основе другого языка), и вы обещаете никогда не
посылать на принтер обычный текст и никогда не использовать возможностей
различных программ, требующих посылки на принтер обычного текста,
вам можно не заботиться о том, что описано в этом разделе.Но, если вы хотите посылать на принтер как задания &postscript;,
так и обычный текст, рекомендуется дополнить настройку принтера. Для
этого надо, чтобы текстовый фильтр определял, является ли поступающее
задание обычным текстом или программой на языке &postscript;. Все
&postscript;-задания должны начинаться с %! (для
других языков принтеров обратитесь к соответствующей документации).
Если первые два символа в задании - именно эти, речь идет о &postscript;,
и мы можем остальную часть задания передавать непосредственно. Если же
первые два символа в файле - другие, фильтр будет преобразовывать
текст в &postscript; и печатать результат.Как нам это сделать?принтерыпоследовательныеЕсли вы используете последовательный принтер, хороший способ
достичь поставленной цели состоит в установке lprps.
lprps - это фильтр для &postscript;-принтера,
выполняющий двустороннее взаимодействие с принтером. Он обновляет файл
состояния принтера, помещая в него подробную информацию, выданную
принтером, так что пользователи и администраторы могут узнать,
в каком именно состоянии (например, toner low
или paper jam) находится принтер. Но еще
важнее, что он включает программу psif, которая
определяет, является ли входящее задание обычным текстом, и вызывает
textps (еще одну программу, поставляемую вместе
с lprps) для преобразования его в &postscript;.
Затем lprps посылает преобразованное задание
на принтер.lprps входит в набор портов FreeBSD
(см. Набор портов). Вы, конечно, можете
загрузить, собрать и установить его самостоятельно. После установки
lprps просто укажите путь к программе
psif, входящей в состав пакета
lprps. Если вы установили lprps
из набора портов, используйте следующий текст в записи для
последовательного &postscript;-принтера в файле
/etc/printcap::if=/usr/local/libexec/psif:Надо также задать характеристику rw;
она требует от системы LPD открывать принтер
в режиме чтения и записи.При использовании параллельного &postscript;-принтера (что не
позволяет обеспечить двустороннее взаимодействие с принтером,
необходимое для системы lprps), можно
использовать в качестве текстового фильтра следующий скрипт командного
интерпретатора:#!/bin/sh
#
# psif - Печать PostScript или обычного текста на PostScript-принтере
# Скрипт, а НЕ версия, входящая в состав lprps
# Установлен в /usr/local/libexec/psif
#
IFS="" read -r first_line
first_two_chars=`expr "$first_line" : '\(..\)'`
if [ "$first_two_chars" = "%!" ]; then
#
# Задание PostScript, печатать его.
#
echo "$first_line" && cat && printf "\004" && exit 0
exit 2
else
#
# Обычный текст, преобразовать его, а затем напечатать.
#
( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0
exit 2
fiВ представленном выше скрипте, textps - отдельно
установленная программа для преобразования обычного текста в
&postscript;. Можно использовать любую программу преобразования текста
в &postscript;. Набор портов FreeBSD (см. Набор
портов) включает полнофункциональную программу преобразования
текста в &postscript; под названием a2ps, которую
тоже можно попробовать использовать.Имитация &postscript; на не-&postscript; принтерахPostScriptэмуляцияGhostscript&postscript; является фактическим стандартом для
высококачественного набора и печати. &postscript;, однако, -
дорогой стандарт. К счастью, благодаря компании
Aladdin Enterprises есть свободный аналог &postscript; под названием
Ghostscript, который работает с FreeBSD.
Ghostscript может читать большинство &postscript;-файлов и выдавать
соответствующие страницы на множество устройств, включая много
моделей не-PostScript принтеров. Установив Ghostscript и используя
специальный текстовых фильтр для принтера, можно заставить ваш
не-&postscript; принтер работать фактически как &postscript;-принтер.Ghostscript входит в набор портов FreeBSD, если вы хотите
устанавливать его оттуда. Вы можете также легко загрузить, собрать и
установить его самостоятельно.Для имитации &postscript; надо, чтобы текстовый фильтр
определял, печатается ли &postscript;-файл. Если нет, фильтр будет
передавать файл на принтер непосредственно; в противном случае, он
будет использовать Ghostscript, чтобы сначала преобразовать файл в
формат, который поймет принтер.Рассмотрим пример: следующий сценарий представляет собой
текстовый фильтр для принтеров Hewlett Packard DeskJet 500.
Для других принтеров замените аргумент
в команде gs (Ghostscript). (Введите
команду gs -h для получения списка устройств,
поддерживаемых установленной версией Ghostscript.)#!/bin/sh
#
# ifhp - Печать Ghostscript-эмулированного PostScript на DeskJet 500
# Установлен в /usr/local/libexec/ifhp
#
# Обрабатывать LF как CR+LF (чтобы избежать "эффекта ступенек"
# на принтерах HP/PCL:
#
printf "\033&k2G" || exit 2
#
# Прочитать первые два символа файла
#
IFS="" read -r first_line
first_two_chars=`expr "$first_line" : '\(..\)'`
if [ "$first_two_chars" = "%!" ]; then
#
# Это PostScript; используем Ghostscript для чтения, преобразования и печати.
#
/usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \
-sOutputFile=- - && exit 0
else
#
# Обычный текст или HP/PCL, поэтому просто печатаем его напрямую; печатаем в
# конце символ прогона страницы, чтобы была выдана последняя страница.
#
echo "$first_line" && cat && printf "\033&l0H" &&
exit 0
fi
exit 2Наконец, надо указать системе LPD,
какой фильтр использовать, задав характеристику if::if=/usr/local/libexec/ifhp:Вот и все. Теперь можно выполнять lpr plain.text
и lpr whatever.ps, и обе команды должны успешно
печатать.Фильтры преобразованияПосле завершения простой настройки, описанной в разделе
Простая настройка принтера,
прежде всего, вам может потребоваться установить фильтры
преобразования для любимых форматов файлов (кроме обычных
текстов ASCII).Зачем устанавливать фильтры преобразования?&tex;печать файлов dviФильтры преобразования упрощают печать различного рода файлов.
В качестве примера, предположим, что активно используется
издательская система &tex; и имеется &postscript;-принтер.
При каждой генерации DVI-файла из &tex;, мы не можем печатать его
непосредственно, пока не преобразуем в &postscript;. Для этого
используется такая последовательность команд:&prompt.user; dvips seaweed-analysis.dvi
&prompt.user; lpr seaweed-analysis.psУстановив фильтр преобразования для файлов DVI, мы можем не
конвертировать файл каждый раз вручную, возложив эту задачу на
систему LPD. Теперь при каждом получении
DVI-файла нас от его распечатки отделяет только один шаг:&prompt.user; lpr -d seaweed-analysis.dviМы заставили систему LPD автоматически
преобразовывать DVI-файл, указав опцию . Все
опции преобразования представлены в разделе
Опции форматирования
и преобразования.Для каждой из опций преобразования, которая должна поддерживаться
принтером, установите фильтр преобразования и
укажите его полное имя в файле /etc/printcap.
Фильтр преобразования аналогичен текстовому фильтру для простой
настройки принтера (см. раздел
Установка текстового фильтра),
но вместо печати обычного текста он преобразует файл в формат,
который может понять принтер.Какие фильтры преобразования следует устанавливать?Устанавливать надо те фильтры преобразования, которые
предполагается использовать. Если вы часто печатаете файлы DVI,
значит, фильтр преобразования DVI необходим. Если вам часто
приходится печатать результаты работы troff, может потребоваться
фильтр troff.В следующей таблице представлены фильтры, с которыми
работает система LPD, их
соответствующие характеристики для файла
/etc/printcap, а также способ их вызова
в команде lpr:
-
+ Тип файлаХарактеристика /etc/printcapОпция lprcifplotcfDVIdfplotgfditroffnfТекст на языке FORTRANrftrofftfрастровое изображениеvfобычный текстifникакой, или
В нашем примере использование lpr -d означает,
что для принтера должна быть задана характеристика
df в записи в файле
/etc/printcap.FORTRANВопреки мнению многих, форматы вроде текста на языке FORTRAN
и plot, вероятно, устарели. У себя на машине вы можете дать
новые значения этим или любым другим опциям форматирования,
установив соответствующие специализированные фильтры. Например,
пусть необходимо напрямую печатать файлы Printerleaf (файлы
настольной издательской системы Interleaf), но вообще вы не собираетесь
печатать файлы типа plot. Можно установить фильтр преобразования
Printerleaf в качестве значения характеристики gf
и научить своих пользователей, что команда lpr -g
означает печатать файлы Printerleaf.Установка фильтров преобразованияПоскольку фильтры преобразования представляют собой программы,
не входящие в базовую поставку FreeBSD, их, видимо, надо помещать
в каталоге /usr/local. Популярное
местонахождение - каталог /usr/local/libexec,
поскольку эти фильтры являются специализированными программами для
выполнения системой LPD; обычным
пользователям никогда не понадобится их выполнять.Для включения фильтра преобразования, укажите его полное
имя в качестве значения соответствующей характеристики для принтера
в файле /etc/printcap.В качестве примера, давайте добавим фильтр преобразования DVI
в запись для принтера bamboo. Вот опять пример
файла /etc/printcap, с новой характеристикой
df для принтера bamboo.#
# /etc/printcap для хоста rose - добавлен фильтр df для bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Фильтр DVI - скрипт командного интерпретатора по имени
/usr/local/libexec/psdf. Вот его текст:#!/bin/sh
#
# psdf - фильтр принтера, преобразующий DVI в PostScript
# Установлен в /usr/local/libexec/psdf
#
# Вызывается системой lpd при выполнении пользователем команды lpr -d
#
exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"Это скрипт выполняет команду dvips в режиме
фильтрования (аргумент ) входного потока,
представляющего собой задание для печати. Затем запускается
фильтр &postscript;-принтера lprps (см. раздел
Прием заданий с
обычным текстом на &postscript;-принтеры) с аргументами,
переданными системой LPD этому скрипту.
Команда lprps будет использовать эти аргументы
для учета распечатанных страниц.Дополнительные примеры фильтров преобразованияПоскольку нет фиксированного набора шагов для установки
фильтров преобразования, я просто представлю дополнительные
примеры. Используйте их в качестве руководства при создании
собственных фильтров. Используйте их непосредственно, если
нужно.Следующий пример фильтра преобразует растровый файл (точнее,
GIF-файл) для печати на принтере Hewlett Packard LaserJet III-Si:#!/bin/sh
#
# hpvf - Преобразовать GIF-файлы в HP/PCL и напечатать
# Установлен в /usr/local/libexec/hpvf
PATH=/usr/X11R6/bin:$PATH; export PATH
giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \
&& exit 0 \
|| exit 2Он работает путем преобразования GIF-файла в переносимый формат anymap,
его - в переносимый формат graymap, затем - в переносимый bitmap,
а уже его - в данные, подходящие для LaserJet/PCL.Вот файл /etc/printcap с записью для
принтера, в которой используется представленный выше фильтр:#
# /etc/printcap для хоста orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:\
:vf=/usr/local/libexec/hpvf:Следующий скрипт является фильтром преобразования для печати
данных troff, получаемых из системы набора groff, на
&postscript;-принтере bamboo:#!/bin/sh
#
# pstf - Преобразует выдаваемые groff данные troff в PS и печатает.
# Установлен в /usr/local/libexec/pstf
#
exec grops | /usr/local/libexec/lprps "$@"Представленный выше скрипт снова использует команду
lprps для взаимодействия с принтером.
Если принтер подключен к параллельному порту, придется
использовать следующий скрипт:#!/bin/sh
#
# pstf - Преобразует выдаваемые groff данные troff в PS и печатает.
# Установлен в /usr/local/libexec/pstf
#
exec gropsВот и все. Вот какую запись надо добавить в файл
/etc/printcap, чтобы включить этот фильтр::tf=/usr/local/libexec/pstf:Вот пример, который пригодится старым специалистам по языку FORTRAN.
Это фильтр для печати текста программы на языке FORTRAN на любом принтере,
который может непосредственно печатать обычный текст. Мы установим его
для принтера teak:#!/bin/sh
#
# hprf - Фильтр текста на языке FORTRAN для LaserJet 3si:
# Установлен в /usr/local/libexec/hprf
#
printf "\033&k2G" && fpr && printf "\033&l0H" &&
exit 0
exit 2Надо добавить следующую строку к записи в файле
/etc/printcap для принтера
teak, чтобы включить этот фильтр::rf=/usr/local/libexec/hprf:Перейдем к последнему, более сложному примеру. Мы добавим фильтр
DVI для уже использовавшегося принтера LaserJet по имени
teak. Сначала простая часть: изменить файл
/etc/printcap, указав местонахождение
фильтра DVI::df=/usr/local/libexec/hpdf:А теперь - часть посложнее: создать фильтр. Для этого нам
понадобится программа преобразования DVI в LaserJet/PCL. Набор
портов FreeBSD (см. Набор портов)
содержит одну: соответствующий пакет называется
dvi2xx. Установка этого пакета дает нам
необходимую программу, dvilj2p, которая
преобразует DVI в коды, подходящие для LaserJet IIp,
LaserJet III и LaserJet 2000.Команда dvilj2p требует создания
достаточно сложного фильтра hpdf, поскольку
она не может читать стандартный входной поток. Она хочет работать
с именем файла. Что еще хуже, имя файла должно завершаться
расширением .dvi, так что использование
стандартного входного потока /dev/fd/0
тоже проблематично. Мы можем обойти эту проблему, создав (символическую)
связь (с именем, завершающимся суффиксом .dvi) с
устройством /dev/fd/0, тем самым, заставив
команду dvilj2p читать из стандартного входного
потока.Единственная оставшаяся проблема состоит в том, что мы не можем
создавать временную связь в каталоге /tmp.
Символьные связи принадлежат пользователю и группе bin.
Фильтр же работает от имени пользователя daemon. А у
каталога /tmp установлен sticky bit. Фильтр сможет
создать связь, но не сможет почистить за собой и удалить ее, поскольку
связь будет принадлежать другому пользователю.Вместо этого, фильтр будет создавать символическую связь в текущем
рабочем каталоге, которым является каталог спулинга (задаваемый
характеристикой sd в файле
/etc/printcap). Это отличное место для выполнения
фильтрами своих действий, особенно потому, что (иногда)
в каталоге спулинга места больше, чем в /tmp.Вот, наконец, и сам фильтр:#!/bin/sh
#
# hpdf - Печать данных DVI на принтере HP/PCL
# Установлен в /usr/local/libexec/hpdf
PATH=/usr/local/bin:$PATH; export PATH
#
# Определяем функцию для удаления временных файлов. Они существуют
# в текущем каталоге - в каталоге спулинга для принтера.
#
cleanup() {
rm -f hpdf$$.dvi
}
#
# Определяем функцию для обработки критических ошибок: напечатать заданное
# сообщение и выйти с кодом 2. Код выхода 2 сообщает системе LPD, что не
# надо повторно пытаться печатать задание.
#
fatal() {
echo "$@" 1>&2
cleanup
exit 2
}
#
# Если пользователь удаляет задание, система LPD будет посылать сигнал SIGINT,
# поэтому перехватываем SIGINT (и пару других сигналов), чтобы убрать за собой.
#
trap cleanup 1 2 15
#
# Гарантируем, что не конфликтуем с существующими файлами.
#
cleanup
#
# Связываем входной файл DVI со стандартным входным потоком (файлом для печати).
#
ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0"
#
# Заменяем LF = CR+LF
#
printf "\033&k2G" || fatal "Cannot initialize printer"
#
# Преобразуем и печатаем. Значение, возвращаемое программой dvilj2p, не надежно,
# так что мы его игнорируем.
#
dvilj2p -M1 -q -e- dfhp$$.dvi
#
# Убираем за собой и завершаем работу
#
cleanup
exit 0Автоматизированное преобразование: альтернатива фильтрам преобразованияВсе эти фильтры преобразования многое дают для среды печати,
но требуют от пользователя указывать (в командной строке
&man.lpr.1;), какой именно фильтр использовать. Если пользователи
не особенно разбираются в компьютерах, необходимость указывать
опцию фильтра будет их раздражать. Что еще хуже, однако,
при неправильном указании опции фильтрования может быть применен
фильтр, не соответствующий типу файла, и принтер испортит несколько
сотен страниц бумаги.Вместо установки фильтров преобразования, можно попытаться
заставить текстовый фильтр (поскольку он применяется по умолчанию)
определять тип файла, который его попросили напечатать, и затем
автоматически вызывать соответствующий фильтр преобразования.
В этом могут помочь утилиты вроде file. Конечно,
будет сложно различать некоторые типы
файлов—и, кончено же, можно задавать фильтры преобразования
только для них.apsfilterпечатьфильтрыapsfilterВ наборе портов FreeBSD есть текстовый фильтр, выполняющий
автоматическое преобразование; это apsfilter.
Он может выявлять обычный текст, &postscript; и файлы DVI,
выполнять соответствующие преобразования и печатать
результат.Выходные фильтрыСистема спулинга LPD поддерживает еще
один тип фильтров, который мы еще не рассматривали: выходные фильтры.
Выходной фильтр предназначен только для печати обычного текста,
как текстовый фильтр, но с множеством упрощений. Если вы используете
выходной фильтр, а текстовый фильтр не задан, то:Система LPD запускает выходной
фильтр один раз для всего задания, а не для каждого файла задания.Система LPD не пытается определить начало
или конец файлов в задании для выходного фильтра.Система LPD не передает выходному
фильтру имя пользователя или хоста, так что этот фильтр не предназначен
для учета использования принтера. Фактически, он получает всего два
аргумента:имя-фильтра-wширина-lдлинаГде ширина берется из характеристики
pw, а длина - из
характеристики pl для соответствующего
принтера.Не соблазняйтесь простотой выходного фильтра. Если вы хотите,
чтобы каждый файл в задании начинал печататься с новой страницы,
выходной фильтр не поможет. Используйте текстовый
фильтр (также известный как входной); см. раздел
Установка текстового фильтра.
Более того, выходной фильтр, фактически, - более
сложный, поскольку он должен проверять посылаемый ему
поток байтов в поисках специальных символов-флагов и посылать себе
сигналы от имени системы LPD.Однако выходной фильтр необходим, если
надо выдавать начальные страницы и требуется посылать управляющие
последовательности или другие строки инициализации, чтобы можно было
напечатать начальную страницу. (Но он не поможет,
если необходимо учитывать начальные страницы для пользователя,
поскольку система LPD не передает
выходному фильтру никакой информации о пользователе или хосте.)На одном принтере система LPD
позволяет совместно с выходным использовать текстовый или другие
фильтры. В таких случаях, система LPD будет
запускать выходной фильтр только для печати начальной страницы (см.
раздел Начальные
страницы). Система LPD затем
предполагает, что выходной фильтр остановится,
посылая ему два байта: ASCII 031 и ASCII 001. Когда выходной фильтр
видит эти два байта (031, 001), он должен остановиться, посылая
себе сигнал SIGSTOP. Когда система
LPD закончит выполнение остальных фильтров,
она перезапускает выходной фильтр, посылая ему сигнал
SIGCONT.Если есть выходной фильтр, но нет текстового,
и система LPD обрабатывает задания с обычным
текстом, LPD использует для выполнения
задания выходной фильтр. Как уже было сказано, выходной фильтр
будет печатать все файлы задания последовательно, без прогонов
страниц или других настроек бумаги, а это вряд ли
вас устроит. Почти во всех случаях необходим текстовый фильтр.Программа lpf, которую мы представили ранее
как текстовый фильтр, может также работать как выходной фильтр. Если
срочно необходим простой выходной фильтр, но вы не хотите писать
код ля выявления байтов и посылки сигнала, попробуйте использовать
lpf. Можно также поместить lpf
в скрипт командного интерпретатора для обработки любых
кодов инициализации, которые может потребовать принтер.lpf: текстовый фильтрПрограмма /usr/libexec/lpr/lpf,
поставляемая в составе двоичного дистрибутива FreeBSD,
представляет собой текстовый (входной) фильтр, который может
печатать с отступом (если задание послано командой
lpr -i), пропускать все символы буквально
(если задание послано командой lpr -l),
настраивать позицию печати при получении в задании символов
забоя и табуляции, а также учитывать количество напечатанных страниц.
Она может также использоваться как выходной фильтр.Программа lpf подходит для многих сред печати.
И хотя она не позволяет посылать на принтер инициализационные
последовательности, легко написать скрипт командного интерпретатора,
который будет выполнять необходимую инициализацию, а затем вызывать
lpf.учет страницучетиспользования принтераЧтобы программа lpf корректно выполняла учет
страниц, ей необходимо указать корректные значения характеристик
pw и pl в файле
/etc/printcap. Она использует эти значения для
определения того, сколько текста может поместиться на странице и сколько
страниц было в задании пользователя. Подробнее об учете использования
принтера см. в разделе Учет
использования принтера.Начальные страницыПри наличии множества пользователей, использующих
различные принтеры, вероятно, можно считать начальные
страницы неизбежным злом.баннерные страницыначальные страницыначальные страницыНачальные страницы, которые также называют баннерными
или разделительными страницами, идентифицируют,
кому принадлежат задания после их печати. Обычно информация на них
выдается большими, жирными буквами, возможно, с декоративными рамочками,
чтобы в пачке распечаток они отличались от реальных документов,
образующих задания пользователей. Они позволяют пользователям быстро
находить свои задания. Очевидный недостаток выдачи начальных страниц
состоит в том, что для каждого задания надо печатать на одну страницу
больше, причем, страница эта хоть сколько-нибудь нужна несколько минут, а
затем она оказывается в мусорной корзине или сдается в макулатуру.
(Учтите, что начальная страница выдается в начале задания, а не перед каждым
файлом, так что бумаги может теряться не так уж и много.)Система LPD может выдавать заголовочные
страницы для ваших распечаток автоматически, если
ваш принтер может непосредственно печатать обычный текст. Если используется
&postscript;-принтер, потребуется внешняя программа для генерации начальной
страницы; см. Начальные
страницы на &postscript;-принтерах.Включение выдачи начальных страницВ разделе Простая настройка
принтера мы отключили выдачу начальных страниц, задав характеристику
sh (что означает suppress header) в
файле /etc/printcap. Для включения Для обеспечения
выдачи начальных страниц на принтер, просто удалите характеристику
sh.Кажется слишком просто, правда?Вы правы. Может потребоваться задать выходной
фильтр для посылки строк инициализации на принтер. Вот пример выходного
фильтра для Hewlett Packard PCL-совместимых принтеров:#!/bin/sh
#
# hpof - Выходной фильтр для Hewlett Packard PCL-совместимых принтеров
# Установлен в /usr/local/libexec/hpof
printf "\033&k2G" || exit 2
exec /usr/libexec/lpr/lpfЗадайте полное имя выходного фильтра в качестве значения
характеристики of. Подробнее об этом см.
в разделе Выходные фильтры.Вот пример файла /etc/printcap для принтера
teak, который мы представили ранее; мы включили
выдачу начальных страниц и добавили показанный выше выходной фильтр:#
# /etc/printcap для хоста orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:\
:vf=/usr/local/libexec/hpvf:\
:of=/usr/local/libexec/hpof:Теперь, когда пользователи выдают задания на принтер
teak, они получают начальную страницу с каждым
заданием. Если пользователи хотят тратить время на поиск своих
распечаток, они могут подавить вывод начальных страниц,
посылая задание с опцией lpr -h;
другие опции &man.lpr.1; см. в разделе
Опции начальных
страниц.Система LPD выдает символ прогона
страницы (form feed) после начальной страницы. Если ваш принтер
использует другой символ или последовательность символов
для выброса напечатанной страницы, укажите их в
качестве значения характеристики ff
в файле /etc/printcap.Управление начальными страницамиВключая выдачу начальных страниц, система LPD
будет выдавать длинный длинный заголовок, целую страницу
с большими буквами, идентифицирующими пользователя, хост и задание. Ниже
представлен пример (kelly напечатала задание по имени outline с хоста rose): k ll ll
k l l
k l l
k k eeee l l y y
k k e e l l y y
k k eeeeee l l y y
kk k e l l y y
k k e e l l y yy
k k eeee lll lll yyy y
y
y y
yyyy
ll
t l i
t l
oooo u u ttttt l ii n nnn eeee
o o u u t l i nn n e e
o o u u t l i n n eeeeee
o o u u t l i n n e
o o u uu t t l i n n e e
oooo uuu u tt lll iii n n eeee
r rrr oooo ssss eeee
rr r o o s s e e
r o o ss eeeeee
r o o ss e
r o o s s e e
r oooo ssss eeee
Job: outline
Date: Sun Sep 17 11:04:58 1995Система LPD добавляет прогон страницы
после этого текста, чтобы задание начиналось с новой страницы
(если только вы не указали характеристику sf (suppress
form feeds) в записи соответствующего принтера в файле
/etc/printcap).Если вы предпочитаете, чтобы система LPD
создавала короткий заголовок, укажите
характеристику sb (short banner) в файле
/etc/printcap. Начальная страница будет
иметь следующий вид:rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995Также по умолчанию система LPD печатает
начальную страницу перед заданием. Для изменения порядка на обратный,
укажите характеристику hl (header last) в файле
/etc/printcap.Учет начальных страницИспользование встроенных начальных страниц системы
LPD порождает определенную парадигму
учета использования принтера: начальные страницы пользователи
не должны оплачивать.Почему?Поскольку выходной фильтр - единственная внешняя программа,
управляющая выдачей начальных страниц, которая может выполнять учет,
а ей не передают информацию о пользователе или хосте
и учётный файл, так что, она не имеет никакого представления о том,
на чей счет отнести использование принтера. Также недостаточно
просто добавлять одну страницу в текстовом фильтре
или в любом из фильтров преобразований (которые имеют информацию
о пользователе и хосте), поскольку пользователи могут подавлять
выдачу начальных страниц с помощью опции lpr -h.
И их заставят оплачивать начальные страницы, которые они не печатали.
Понятно, что опцию lpr -h будут использовать в большинстве
случаев те, кто озабочен проблемами окружающей среды, но вы никак не
можете стимулировать ее использование.Также недостаточно, чтобы каждый из фильтров
генерировал собственные начальные страницы (и, тем самым,
мог их учитывать). Если пользователи захотят отказаться от выдачи
начальных страниц и укажут опцию lpr -h, они все
равно их получат, и будут вынуждены оплатить, поскольку система
LPD не передает информации о наличии опции
ни одному из этих фильтров.Итак, что же вы можете сделать?Вы можете:Принять парадигму системы LPD и
сделать начальные страницы бесплатными.Установить альтернативную систему вместо LPD,
такую как LPRng. В разделе
Альтернативы стандартному
спулеру представлена дополнительная информация о других
системах спулинга, которые можно использовать вместо
LPD.
Написать умный выходной фильтр. Обычно
выходной фильтр не предназначен для выполнения чего-то кроме
инициализации принтера и простых преобразований символов. Он
подходит для начальных страниц и заданий с обычным текстом
(когда нет текстового (входного) фильтра). Но, если есть текстовый
фильтр для заданий с обычным текстом, то система
LPD будет запускать выходной фильтр только
для начальных страниц. И выходной фильтр может анализировать
текст начальной страницы, которую генерирует система
LPD, чтобы определить, на счет какого
пользователя и хоста отнести начальную страницу. Единственная
проблема этого метода в том, что выходной фильтр все равно не
знает, какой учетный файл использовать (ему не передают
имя файла, заданное в качестве значения характеристики
af), но при наличии хорошо известного учетного
файла, его имя можно явно указать в выходном фильтре. Для
упрощения этапа анализа задайте характеристику
sh (short header) в файле
/etc/printcap. Повторимся, что это может
оказаться слишком сложным, и пользователи, несомненно, больше оценят
великодушного системного администратора, который сделает начальные
страницы бесплатными.Начальные страницы на &postscript;-принтерахКак было описано выше, система LPD может
генерировать начальную страницу в виде обычного текста, что подходит для
многих принтеров. Конечно, &postscript;-принтеры не могут непосредственно
печатать обычный текст, так что, для них возможность выдачи начальных
страниц системы LPD бесполезна—или почти
бесполезна.Один очевидный способ получить начальные страницы — заставить
каждый фильтр преобразования и текстовый фильтр генерировать начальную
страницу. Эти фильтры должны использовать аргументы имя пользователя и хост
для генерации соответствующей начальной страницы. Недостаток этого
метода состоит в том, что пользователи будут всегда получать начальные
страницы, даже если будут посылать задания с помощью команды
lpr -h.Давайте рассмотрим этот метод детально. Следующий сценарий
принимает три аргумента (регистрационное имя пользователя,
имя хоста и имя задания) и создает простую
начальную страницу на языке &postscript;:#!/bin/sh
#
# make-ps-header - выдать начальную страницу на языке PostScript в stdout
# Установлен в /usr/local/libexec/make-ps-header
#
#
# Это единицы измерения PostScript (72 на дюйм). Измените значения для A4 или
# другого используемого формата бумаги:
#
page_width=612
page_height=792
border=72
#
# Проверяем аргументы
#
if [ $# -ne 3 ]; then
echo "Usage: `basename $0` <user> <host> <job>" 1>&2
exit 1
fi
#
# Сохраняем значения в переменных, в основном, для упрощения понимания
# последующего PostScript-кода.
#
user=$1
host=$2
job=$3
date=`date`
#
# Посылаем PostScript-код в stdout.
#
exec cat <<EOF
%!PS
%
% Гарантируем, что не будем влиять на следующее далее задание пользователя
%
save
%
% Делаем тонкую некрасивую рамку по краям бумаги.
%
$border $border moveto
$page_width $border 2 mul sub 0 rlineto
0 $page_height $border 2 mul sub rlineto
currentscreen 3 -1 roll pop 100 3 1 roll setscreen
$border 2 mul $page_width sub 0 rlineto closepath
0.8 setgray 10 setlinewidth stroke 0 setgray
%
% Выдаем регистрационное имя пользователя, красивыми, большими и рельефными буквами
%
/Helvetica-Bold findfont 64 scalefont setfont
$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto
($user) show
%
% Теперь выдаем всякие детали
%
/Helvetica findfont 14 scalefont setfont
/y 200 def
[ (Job:) (Host:) (Date:) ] {
200 y moveto show /y y 18 sub def }
forall
/Helvetica-Bold findfont 14 scalefont setfont
/y 200 def
[ ($job) ($host) ($date) ] {
270 y moveto show /y y 18 sub def
} forall
%
% Вот и все
%
restore
showpage
EOFТеперь, каждый из фильтров преобразования и текстовый фильтр
может вызвать этот сценарий, чтобы сначала сгенерировать
начальную страницу, а затем напечатать задание пользователя.
Вот фильтр преобразования DVI, представленные ранее в этом
документе, измененный для выдачи начальной страницы:#!/bin/sh
#
# psdf - фильтр преобразования DVI в PostScript
# Установлен в /usr/local/libexec/psdf
#
# Вызывается системой lpd при выполнении пользователем команды lpr -d
#
orig_args="$@"
fail() {
echo "$@" 1>&2
exit 2
}
while getopts "x:y:n:h:" option; do
case $option in
x|y) ;; # Ignore
n) login=$OPTARG ;;
h) host=$OPTARG ;;
*) echo "LPD started `basename $0` wrong." 1>&2
exit 2
;;
esac
done
[ "$login" ] || fail "No login name"
[ "$host" ] || fail "No host name"
( /usr/local/libexec/make-ps-header $login $host "DVI File"
/usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_argsОбратите внимание, как фильтр должен анализировать список
аргументов, чтобы определить имя пользователя и имя хоста.
Анализ аргументов в других фильтрах аргументов выполняется точно так же.
Текстовый фильтр принимает, однако, немного другой набор аргументов
(см. раздел Как работают
фильтры).Как уже упоминалось, представленная выше схема хотя и достаточно
проста, но не позволяет учесть опцию подавить вывод
начальной страницы (опция ) команды
lpr. Если пользователи хотят сберечь деревья
(или несколько копеек, если вы берете деньги и за начальные страницы),
они не смогут этого сделать, поскольку каждый фильтр будет
выдавать начальную страницу для каждого задания.Чтобы позволить пользователям отключать выдачу начальной страницы для
отдельного задания, надо будет использовать прием, представленный в
разделе Учет
начальных страниц: написать выходной фильтр, который анализирует
сгенерированную системой LPD начальную страницу и выдает ее
&postscript;-версию. Если пользователь посылает задание командой
lpr -h, система LPD
не будет генерировать начальную страницу, как и ваш выходной
фильтр. В противном случае, ваш выходной фильтр будет читать текст,
полученный от системы LPD, и
посылать на принтер соответствующий &postscript;-код для начальной
страницы.Если вы используете &postscript;-принтер с последовательным
интерфейсом, можно использовать систему lprps,
которая включает выходной фильтр, psof,
делающий то, что описано выше. Помните, что программа
psof не учитывает напечатанные пользователями
начальные страницы.Печать по сетипринтерысетевыепечать по сетиFreeBSD поддерживает печать по сети: посылку заданий на
удаленные принтеры. Печатью по сети обычно называют две разные
ситуации:Работа с принтером, подключенным к удаленному хосту. Вы
устанавливаете принтер с обычным последовательным или параллельным
интерфейсом на одном хосте. Затем, вы настраиваете систему
LPD для обеспечения доступа к принтеру
с других хостов в сети. В разделе
Принтеры, установленные
на удаленных хостах описано, как это сделать.Работа с принтером, подключенным непосредственно к сети.
Принтер имеет сетевой интерфейс, кроме (или вместо) более
традиционного последовательного или параллельного. Такой принтер
может работать следующим образом:Он может понимать протокол LPD и
даже поддерживать очереди заданий с удаленных хостов. В этом
случае, он работает просто как обычный хост с системой
LPD. Для настройки такого принтера
следуйте той же процедуре, которая описана в разделе
Принтеры,
установленные на удаленных хостах.Он может поддерживать получение потока данных по сети. В
этом случае, вы подключаете принтер к одному
из хостов в сети, делая этот хост ответственным за поддержку
очередей заданий и их посылку на принтер. В разделе
Принтеры с
интерфейсами для получения потока данных по сети представлен
ряд советов по установке таких принтеров.Принтеры, установленные на удаленных хостахСистема спулинга LPD имеет встроенную
поддержку для посылки заданий на другие хосты, на которых тоже работает
система LPD (или совместимая с
LPD). Это позволяет установить принтер
на одном хосте и сделать его доступным с других хостов. Она также
работает с принтерами, имеющими сетевые интерфейсы и понимающими
протокол LPD.Для обеспечения такого рода удаленной печати, сначала установите
принтер на одном хосте, хосте принтера, с помощью
процедуры, описанной в разделе Простая
настройка принтера. Выполните любые необходимые дополнительные
настройки, как описано в разделе Расширенная
настройка принтера. Не забудьте протестировать принтер и убедиться,
обеспечивает ли он заданные возможности системы LPD.
Также проверьте, что локальный хост имеет право
использовать службу LPD на
удаленном хосте (см. раздел
Ограничение приема
заданий с удаленных хостов).принтерысетевыепечать по сетиЕсли вы используете принтер с сетевым интерфейсом,
совместимый с системой LPD, упомянутым
в обсуждении выше хостом принтера будет сам
принтер, а в качестве имена принтера будет
выступать имя, которое вы сконфигурировали для принтера. См.
документацию, поставляемую с принтером и/или сетевым интерфейсом
принтера.Если вы используете Hewlett Packard Laserjet, то при задании
принтеру имени text будет автоматически
выполняться преобразование символа LF в последовательность
CRLF, так что, сценарий hpif не понадобится.Затем, на других хостах, для которых вы хотите обеспечить доступ
к принтеру, создайте запись в их файлах /etc/printcap
со следующими компонентами:Дайте записи любое подходящее имя. Для простоты, однако,
имеет смысл задавать такое же имя и псевдонимы, как и на хосте
принтера.Характеристику lp оставьте пустой, указав
это явно (:lp=:).Создайте каталог спулинга и укажите его местонахождение в
характеристике sd. Система
LPD будет сохранять задания в нем,
прежде чем они будут посланы на хост принтера.Укажите имя хоста принтера в качестве значения характеристики
rm.Укажите имя принтера на хосте принтера
в качестве значения характеристики rp.Вот и все. Не нужно перечислять фильтры преобразования, размеры
страницы и вообще ничего больше в файле
/etc/printcap.Рассмотрим пример. На хосте rose есть два принтера,
bamboo и rattan.
Мы позволим пользователям хоста orchid печатать на эти
принтеры. Вот файл /etc/printcap для хоста
orchid (из раздела
Включение
выдачи начальных страниц). В нем уже есть запись для принтера
teak; мы добавили две записи для принтеров на
хосте rose:#
# /etc/printcap для хоста orchid - добавлены (удаленные) принтеры на rose
#
#
# teak - локальный принтер; он подключен непосредственно к orchid:
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/ifhp:\
:vf=/usr/local/libexec/vfhp:\
:of=/usr/local/libexec/ofhp:
#
# rattan подключен к rose; посылать задания для rattan на хост rose:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
#
# bamboo тоже подключен к rose:
#
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:Затем достаточно только создать каталоги спулинга на
orchid:&prompt.root; mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo
&prompt.root; chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo
&prompt.root; chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bambooТеперь пользователи хоста orchid могут печатать на
принтеры rattan и bamboo. Если,
например, пользователь на orchid выполнит команду
&prompt.user; lpr -P bamboo -d sushi-review.dvi
система LPD на orchid
будет копировать задание в каталог спулинга
/var/spool/lpd/bamboo и учтет, что печатается
задание DVI. Как только на хосте rose появится место
в каталоге спулинга принтера bamboo, две системы
LPD передадут файл на хост rose.
Файл будет ждать в очереди на rose пока, наконец, не будет
напечатан. Он будет преобразован из формата DVI в &postscript; (поскольку
bamboo является &postscript;-принтером) на хосте
rose.Принтеры с интерфейсами для получения потока данных по сетиЧасто при покупке сетевой карты для принтера можно приобрести
две версии: эмулирующую спулер (более дорогая версия) или просто
позволяющую принимать на принтер данные так, как если бы
использовался последовательный или параллельный порт (более
дешевая версия). В этом разделе описано, как использовать
более дешёвую версию. Использование более дорогой версии
описано в предыдущем разделе
Принтеры, установленные
на удаленных хостах.Формат файла /etc/printcap позволяет
указывать, какой последовательный или параллельный интерфейс
использовать, и (при использовании последовательного интерфейса),
какую установить скорость, использовать ли управление потоком,
размер отступов для табуляций, преобразование символов новой строки
и другие параметры. Но нет способа указать подключение к принтеру,
прослушивающему TCP/IP или другой сетевой порт.Для посылки данных на подключенный к сети принтер, надо разработать
программу взаимодействия, которую могут вызывать текстовый фильтр и
фильтры преобразований. Вот один из примеров: скрипт
netprint принимает все данные со стандартного
входного потока и посылает их на принтер, подключенный к сети.
Мы указываем имя хоста принтера в качестве первого аргумента, а
номер порта, к которому надо подключаться - в качестве второго
аргумента команды netprint. Учтите, что
поддерживается только одностороннее взаимодействие (с ОС FreeBSD
на принтер); многие сетевые принтеры поддерживают двустороннее
взаимодействие, и вы можете захотеть его использовать (для
получения состояния принтера, учета и т.п.).#!/usr/bin/perl
#
# netprint - Текстовый фильтр для принтера, подключенного к сети
# Установлен в /usr/local/libexec/netprint
#
$#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>";
$printer_host = $ARGV[0];
$printer_port = $ARGV[1];
require 'sys/socket.ph';
($ignore, $ignore, $protocol) = getprotobyname('tcp');
($ignore, $ignore, $ignore, $ignore, $address)
= gethostbyname($printer_host);
$sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address);
socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol)
|| die "Can't create TCP/IP stream socket: $!";
connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!";
while (<STDIN>) { print PRINTER; }
exit 0;Затем можно использовать этот сценарий в различных фильтрах. Пусть
у нас есть строчный принтер Diablo 750-N, подключенный к сети. Принтер
принимает данные на печать через порт 5100. Имя хоста для принтера -
scrivener. Вот текстовый фильтр для этого принтера:#!/bin/sh
#
# diablo-if-net - Текстовый фильтр для принтера Diablo `scrivener',
# прослушивающего порт 5100. Установлен в /usr/local/libexec/diablo-if-net
#
exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100Ограничение использования принтерапринтерыограничение доступаВ этом разделе представлена информация об ограничении доступа к
принтеру. Система LPD позволяет управлять
тем, кто может обращаться к принтеру, как локально, так и удаленно,
смогут ли они печатать несколько копий, насколько большими могут
быть их задания и насколько могут разрастаться очереди печати.Ограничение количества копийСистема LPD позволяет пользователям
легко печатать несколько копий файла. Пользователи могут печатать
задания с помощью команды lpr -#5
(например) и получать пять копий каждого файла в задании. Хорошо это
или нет - решать вам.Если вы считаете, что многочисленные копии только изнашивают ваши
принтеры, можете отключить опцию команды
&man.lpr.1;, добавив характеристику sc в файл
/etc/printcap. Когда пользователи пошлют
задания с опцией , они увидят:lpr: multiple copies are not allowedУчтите, что если вы настроили удаленный доступ к принтеру (см.
раздел Принтеры,
установленные на удаленных хостах), необходимо задать
характеристику sc также и в файлах
/etc/printcap удаленных хостов, иначе
пользователи все равно смогут посылать задания с несколькими
копиями с других хостов.Рассмотрим пример. Вот файл /etc/printcap
для хоста rose. Принтер rattan
вполне надежен, поэтому мы разрешим печатать на него несколько
копий, но лазерный принтер bamboo несколько
более изношен, поэтому мы отключим для него печать нескольких
копий, добавив характеристику sc:#
# /etc/printcap для хоста rose - запрещает печать нескольких копий на bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Теперь нам также нужно добавить характеристику sc
в файле /etc/printcap на хосте orchid
(и раз уж мы его меняем, давайте отключим печать нескольких копий для
принтера teak):#
# /etc/printcap для хоста orchid - отключена печать нескольких копий на
# локальном принтере teak и на удаленном принтере bamboo
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\
:if=/usr/local/libexec/ifhp:\
:vf=/usr/local/libexec/vfhp:\
:of=/usr/local/libexec/ofhp:
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:С помощью характеристики sc мы предотвращаем
использование команды lpr -#, но это не мешает
пользователям просто выполнить команду &man.lpr.1; несколько раз
или просто послать один и тот же файл несколько раз в одном задании
следующим образом:&prompt.user; lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.signЕсть много способов предотвратить такое некорректное использование
(включая его игнорирование), которые вы можете разработать самостоятельно.Ограничение доступа к принтерамВы можете управлять тем, кто и на какие принтеры может печатать,
с помощью механизма групп &unix; и характеристики
rg в файле /etc/printcap.
Просто поместите пользователей, которым необходимо предоставить
доступ к принтеру, в определенную группу, a затем укажите эту
группу в качестве значения характеристики rg.Пользователи, не входящие в эту группу (включая root)
будут получать уведомление
lpr: Not a member of the restricted group
при попытке печатать на контролируемый принтер.Как и в случае с характеристикой sc (подавить
выдачу нескольких копий), при необходимости, надо указывать
характеристику rg и на удаленных хостах, имеющих
доступ к вашим принтерам (см. раздел
Принтеры, установленные
на удаленных хостах).Например, давайте разрешим всем обращаться к принтеру
rattan, но только пользователи группы
artists смогут использовать принтер
bamboo. Вот знакомый уже файл
/etc/printcap для хоста rose:#
# /etc/printcap для хоста rose - ограничение группы для bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Давайте не будем менять другой рассматриваемый файл
/etc/printcap (для хоста
orchid). Конечно, в результате, любой пользователь
orchid может печатать на bamboo.
Возможно, на хосте orchid учетных записей и так
немного, и вы хотите, чтобы все они имели доступ к принтеру. Или нет.Для принтера может быть только одна ограниченная группа.Контроль размеров посылаемых заданийзадания печатиЕсли к принтеру обращается несколько пользователей, вам,
возможно, понадобиться установить ограничение на максимальный
размер файлов, которые пользователи могут посылать ан печать.
В конечном итоге, размер файловой системы, в которой находятся
каталоги спулинга, ограничен, и надо гарантировать, что
в нем останется место для заданий других пользователей.задания печатиуправленияСистема LPD ограничить максимально
допустимый размер файла в задании с помощью характеристики
mx. Размер задается в блоках, размер которых,
BUFSIZ, составляет 1024 байта.
Если задать этой характеристике значение ноль, размер файла
ограничиваться не будет; однако, если характеристика
mx вообще не задана, то будет использоваться
стандартное ограничение - 1000 блоков.Ограничение применяется к файлам в задании,
а не к общему размеру задания.Система LPD не откажется печатать
файл больше максимально допустимого для принтера размера. Вместо
этого, она поставит в очередь часть файла до заданного
предела, и она будет напечатана. Остальное не будет напечатано.
Правильность такого поведения не бесспорна.Давайте установим ограничения для принтеров из наших примеров,
rattan и bamboo. Поскольку
&postscript;-файлы этих художников обычно бывают весьма
большими, мы ограничим их размер пятью мегабайтами. Мы не
будем ограничивать использование обычного текстового строчного
принтера:#
# /etc/printcap для хоста rose
#
#
# Без ограничения на размер задания:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:mx#0:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
#
# Размер файла - не более пяти мегабайт:
#
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Опять таки, ограничения применяются только для локальных
пользователей. Если вы настроили удаленный доступ к принтерам,
для удаленных пользователей эти ограничения не действуют.
Надо задать характеристику mx и в файлах
/etc/printcap удаленных хостов. Более
детальную информацию по удаленной печати см. в разделе
Принтеры,
установленные на удаленных хостах.Есть еще один специализированный способ ограничить
размер заданий печати с удаленных принтеров; см. раздел
Ограничение
печати заданий с удаленных хостов.Ограничение печати заданий с удаленных хостовСистема спулинга LPD обеспечивает
несколько способов ограничить посылку заданий с удаленных
хостов:Ограничения хостовВы можете управлять тем, с каких удаленных хостов
локальная система LPD принимает
запросы, с помощью файлов /etc/hosts.equiv и
/etc/hosts.lpd. Система
LPD проверяет, поступает ли
входящий запрос с хоста, указанного в одном из этих файлов.
Если нет, система LPD отвергает
запрос.Формат этих файлов простой: по одному имени хоста в строке.
Учтите, что файл /etc/hosts.equiv также
используется протоколом &man.ruserok.3; и влияет на
программы &man.rsh.1; и &man.rcp.1;, так что, будьте
внимательны.Например, вот файл /etc/hosts.lpd
для хоста rose:orchid
violet
madrigal.fishbaum.deЭто означает, что хост rose будет
принимать запросы с хостов orchid,
violet и
madrigal.fishbaum.de. Если любой
другой хост попытается обратиться к системе
LPD хоста rose,
его задание будет отвергнуто.Ограничения размераВы можете управлять тем, сколько свободного места должно
оставаться в файловой системе, в которой находится каталог
спулинга. Создайте файл с именем minfree
в каталоге спулинга для локального принтера. Вставьте в этот
файл число, задающее, сколько блоков диска (по 512 байтов)
должно быть свободными, чтобы удаленное задание было принято.Это позволяет гарантировать, что удаленные пользователи не
заполнят вашу файловую систему. Можно также использовать этот
механизм для предоставления определенного преимущества
локальным пользователям: они смогут ставить задания в очередь
еще долго после того, как свободного места на диске станет
меньше, чем указано в файле minfree.Например, давайте добавим файл minfree
для принтера bamboo. Найдем в файле
/etc/printcap каталог спулинга для этого
принтера; вот запись для принтера bamboo:bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:mx#5000:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Каталог спулинга задается характеристикой
sd. Укажем, что в файловой системе
должно быть три мегабайта (что составляет 6144 блоков диска)
свободного места, чтобы система LPD
принимала удаленные задания:&prompt.root; echo 6144 > /var/spool/lpd/bamboo/minfree
Ограничения пользователейВы можете управлять тем, какие удаленные пользователи
смогут печатать на локальные принтеры, задавая характеристику
rs в файле /etc/printcap.
Когда характеристика rs указана в записи
для локально подключенного принтера, система
LPD будет принимать задания с
удаленных хостов, если пользователь,
посылающий задание, также имеет учетную запись с тем же
именем на локальном хосте. В противном случае,
система LPD отвергает задание.Эта возможность особенно полезна в среде, где есть,
например, несколько отделов, совместно использующих сеть,
и некоторые пользователи могут переходить из отдела в отдел.
Если дать им учетные записи в системах, они смогут использовать
принтеры из систем в своих отделах. Если вы хотели бы
позволить им использовать только
принтеры, но не остальные ресурсы вашего компьютера,
можно дать им формальные учетные записи,
без начального каталога и с бесполезным начальным
командным интерпретатором вроде /usr/bin/false.Учет использования принтераучетиспользования принтераИтак, вам надо брать деньги за распечатки. А почему нет?
Бумага и чернила стоят денег. А есть еще и затраты на
поддержку в работоспособном состоянии—принтеры имеют
множество движущихся частей и склонны к поломкам. Вы проанализировали
состояние принтеров, объемы использования и затраты на их эксплуатацию,
и получили определенную стоимость страницы (или фута, метра или
чего угодно). Теперь, как же начать реально учитывать распечатки?Итак, плохая новость состоит в том, что система спулинга
LPD в этом не сильно поможет. Учет сильно
зависит от типа используемого принтера, форматов распечаток и
ваших требований к оплате использования
принтеров.Для реализации учета надо изменить текстовый фильтр принтера
(чтобы учитывать обычные текстовые задания) и фильтры преобразования
(чтобы учитывать другие форматы файлов), для подсчета страниц или
запроса количества напечатанных страниц у принтера. Не получится
обойтись использованием простого выходного фильтра, поскольку
он не может выполнять учет. См. раздел
Фильтры.Обычно есть два способа выполнения учета:Периодический учет - более распространенный
способ, возможно, потому, что он проще. Когда кто-то печатает
задание, фильтр регистрирует пользователя, хост и количество
страниц в учетном файле. Каждый месяц, семестр, год или раз в
любой желаемый период времени, вы собираете учетные файлы для
различных принтеров, суммируете напечатанные каждым пользователем
страницы и выставляете суммы за использование. Затем вы
очищаете все регистрационные файлы, начиная с чистого листа новый
отчетный период.Постоянный учет используется реже,
вероятно, потому, что сложнее в реализации. Этот метод требует от
фильтров выставлять пользователям суммы за распечатки сразу после
использования принтеров. Как и проверка дисковых квот, этот учет
выполняется немедленно. Вы можете не давать пользователям печатать,
если баланс на их счету стал отрицательным, а также предоставить
им способ проверить и изменить свои квоты печати.
Но этот метод требует поддержки базы данных для отслеживания
пользователей и квот.Система спулинга LPD легко поддерживает
оба метода: поскольку вы (в большинстве случаев) должны предоставить
фильтры, вам придется предоставить и код для учета. Но есть и
положительный момент: методы учета могут быть сколько угодно гибкими.
Например, можно выбрать периодический или постоянный учет. Можно
выбрать, какую именно информацию регистрировать: имена пользователей,
имена хостов, типы заданий, количество напечатанных страниц,
квадратные метры использованной бумаги, продолжительность печати
заданий, и т.д. Это делается путем изменения фильтров так, чтобы
они сохраняли соответствующую информацию.Простая система учета использования принтераВ составе FreeBSD поставляется две программы, которые можно сразу
использовать для организации простой системы периодического учета.
Речь идет о текстовом фильтре lpf, описанном в
разделе lpf: текстовый фильтр,
и о программе &man.pac.8;, обеспечивающей сбор и суммирование
записей из учетных файлов принтеров.Как уже упоминалось в разделе, посвященном фильтрам
(Фильтры), система
LPD при запуске текстового фильтра и
фильтров преобразований передает им имя учетного файла в командной
строке. Фильтры могут использовать соответствующий аргумент, чтобы
определить, куда записывать учетную информацию. Имя этого файла
берется из значения характеристики af в файле
/etc/printcap и, если не заданно как абсолютное,
интерпретируется относительно каталога спулинга.Система LPD запускает lpf
с аргументами ширины и длины страницы (которые берутся из
характеристик pw и pl).
Программа lpf использует эти аргументы для
определения количества бумаги, которая будет использована. После
посылки файла на принтер она вносит запись в учетный файл. Эти
записи имеют следующий вид:2.00 rose:andy
3.00 rose:kelly
3.00 orchid:mary
5.00 orchid:mary
2.00 orchid:zhangСледует использовать отдельный учетный файл для каждого принтера,
поскольку программа lpf не реализует механизм
блокирования файлов, и два экземпляра lpf могут
повредить записи друг друга, если записывают одновременно в один
и тот же файл. Простой способ выделить отдельный учетный файл для
каждого принтера - использовать характеристику
af=acct в файле /etc/printcap.
Тогда каждый учетный файл окажется в каталоге спулинга соответствующего
принтера и будет назван acct.Когда вы будете готовы выставить пользователям счет за
распечатки, запустите программу &man.pac.8;. Просто перейдите в
каталог спулинга принтера, учетную информацию которого вы хотите
обработать, и введите команду pac. Вы
получите итоговые суммы в долларах, как показано ниже: Login pages/feet runs price
orchid:kelly 5.00 1 $ 0.10
orchid:mary 31.00 3 $ 0.62
orchid:zhang 9.00 1 $ 0.18
rose:andy 2.00 1 $ 0.04
rose:kelly 177.00 104 $ 3.54
rose:mary 87.00 32 $ 1.74
rose:root 26.00 12 $ 0.52
total 337.00 154 $ 6.74Команда &man.pac.8; принимает следующие аргументы:По какому принтеру подсчитывать
итоговые суммы. Эта опция работает, только если в качестве
значения характеристики af в файле
/etc/printcap указано абсолютное имя.Сортировать отчет по сумме, а не по имени пользователя в
алфавитном порядке.Игнорировать имя хоста в учетных файлах. При указании этой
опции, пользователь smith на хосте
alpha считается тем же, что и пользователь
smith на хосте gamma.
Обычно эти пользователи считаются разными.Вычислять суммы из расчета стоимость
долларов за страницу или за фут, вместо использования
значения характеристики pc в файле
/etc/printcap, или двух центов (как принято по
умолчанию). Можно задавать стоимость
как число с плавающей запятой.Изменить порядок сортировки.Создать итоговый учетный файл и очистить учетный файл.имя…Выдать учетную информацию только для пользователей с
заданными именами.В стандартном отчете, который создает команда &man.pac.8;,
выдается количество страниц, напечатанное каждым из пользователей с
различных хостов. Если для вас хосты не имеют значения (поскольку
пользователи могут работать на любом хосте), выполните команду
pac -m для получения следующих итогов: Login pages/feet runs price
andy 2.00 1 $ 0.04
kelly 182.00 105 $ 3.64
mary 118.00 35 $ 2.36
root 26.00 12 $ 0.52
zhang 9.00 1 $ 0.18
total 337.00 154 $ 6.74Для получения сумм в долларах программа &man.pac.8; использует
значение характеристики pc в файле
/etc/printcap (по умолчанию - 200, или 2 цента
за страницу). Укажите в качестве значения этой характеристики, в
сотых долях цента, стоимость страницы или фута, исходя из которой
вы хотите брать деньги за распечатки. Это значение можно
переопределить при вызове команды &man.pac.8; с помощью опции
. Но при использовании опции
стоимость надо указывать в долларах, а не в сотых долях цента.
Например, команда
&prompt.root; pac -p1.50
приводит к тому, что страница будет стоить один доллар пятьдесят
центов. Используя эту опцию, можно фактически начинать грести деньги
лопатой.Наконец, при выполнении команды pac -s итоговая
информация будет сохранена в итоговом учетном файле, имя которого
строится как имя учетного файла принтера с суффиксом
_sum. Затем учетный файл принтера очищается.
Когда команда &man.pac.8; выполняется повторно, она перечитывает
итоговый файл для получения начальных сумм, а затем добавляет
информацию из обычного учетного файла.Как можно подсчитать количество напечатанных страниц?Для выполнения хоть отдаленно точного учета надо уметь определять,
сколько бумаги использовано для печати задания. Это - основная
проблема учета использования принтеров.Для обычных текстовых заданий решить эту проблему не сложно: надо
считать, сколько строк входит в задание, и сравнивать с количеством
строк на страницу, которые поддерживает принтер. Не забывайте
учитывать символы забоя в файлах, которые приводят к перепечатке
строк поверх, а также длинные логические строки, которые переносятся
на несколько физических.Текстовый фильтр lpf (представленный в разделе
lpf: текстовый фильтр)
учитывает эти вещи при выполнении учета. Если вы пишете текстовый
фильтр, который должен осуществлять учет, может иметь смысл
просмотреть исходный код программы lpf.Но как обрабатывать файлы других форматов?Ну, для преобразования из DVI в формат LaserJet или из DVI в
&postscript;, можно в фильтре анализировать диагностические
результаты команды dvilj или dvips,
чтобы определить, сколько страниц было преобразовано. Может оказаться
возможным применить этот прием и для других форматов файлов и
программ преобразования.Но эти методы несовершенны из-за того, что принтер мог
фактически и не напечатать все эти страницы. Например, он мог
замять бумагу, в нем мог закончиться тонер или он мог вообще
взорваться—и пользователю все равно пришлось бы платить.Так что же делать?Есть только один надежный способ
точного учета. Купите принтер, который может
сообщать, сколько бумаги он использовал, и подключите его
через последовательный порт или по сети. Практически все
&postscript;-принтеры поддерживают такую возможность. Другие
модели - тоже (сетевые лазерные принтеры Imagen, например).
Измените фильтры для этих принтеров так, чтобы получать количество
использованных страниц после печати каждого задания, и пусть они
записывают учетную информацию только на основе
этого значения. Не надо ни считать строки, ни выполнять
чреватую ошибками обработку файла.Конечно, всегда можно поступить великодушно и не брать денег
за распечатки.Использование принтеровпринтерыиспользованиеВ этом разделе описано, как использовать настроенные принтеры
в ОС FreeBSD. Вот сводка команд пользовательского уровня:&man.lpr.1;Печать заданий&man.lpq.1;Проверка очередей принтеров&man.lprm.1;Удаление заданий из очередей принтеровЕсть также административная команда, &man.lpc.8;, описанную в
разделе Администрирование спулера
LPD, используемая для управления
принтерами и их очередями.Все три команды, &man.lpr.1;, &man.lprm.1; и &man.lpq.1;,
поддерживают опцию ,
позволяющую указать, с каким принтером/очередью из указанных в
файле /etc/printcap работать. Это позволяет
посылать, удалять и проверять задания на разных принтерах. Если вы
не используете опцию , эти команды используют
принтер, указанный в качестве значения переменной среды
PRINTER. Наконец, если переменная среды
PRINTER не задана, эти команды по умолчанию
направляются на принтер по имени lp.Далее термин стандартный принтер
означает принтер, указанный переменной среды PRINTER
или принтер по имени lp, если переменная
среды PRINTER не задана.Задания печатиДля печати файлов, выполните команду:&prompt.user; lpr имя-файла...печатьЭта команда печатает каждый из перечисленных файлов на стандартный
принтер. Если файлы не указаны, команда &man.lpr.1; читает данные для
печати со стандартного входного потока. Например, следующая команда
печатает некоторые важные системные файлы:&prompt.user; lpr /etc/host.conf /etc/hosts.equivДля выбора конкретного принтера, введите:&prompt.user; lpr -P имя-принтераимя-файла...Следующая команда печатает подробный листинг текущего каталога
на принтере rattan:&prompt.user; ls -l | lpr -P rattanПоскольку для команды &man.lpr.1; файлы не указаны,
команда lpr читает данные для печати из стандартного
входного потока, который содержит результат выполнения команды
ls -l.Команда &man.lpr.1; может также принимать множество опций
для управления форматированием, применения преобразований,
печати нескольких копий и т.д. Дополнительную информацию см. в
разделе Опции печати.Проверка заданийзадания печатиПри печати с помощью команды &man.lpr.1;, данные, которые надо
напечатать, помещаются вместе в пакет, который называют заданием
печати, и посылаются системе спулинга LPD.
Каждый принтер имеет очередь заданий, и ваше задание ждет в этой
очереди вместе с другими вашими заданиями и заданиями других
пользователей. Принтер печатает эти задания по принципу первым пришло,
первым выполнено.Для получения очереди стандартного принтера, введите команду
&man.lpq.1;. Чтобы указать конкретный принтер, используйте
опцию . Например, команда
&prompt.user; lpq -P bamboo
показывает очередь для принтера по имени bamboo.
Вот пример результатов выполнения команды lpq:bamboo is ready and printing
Rank Owner Job Files Total Size
active kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes
2nd kelly 10 (standard input) 1635 bytes
3rd mary 11 ... 78519 bytesПоказано, что в очереди bamboo есть три
задания. Первое задание, посланное пользователем kelly, получило
номер задания 9. Каждое задание для принтера получает
уникальный номер задания. В большинстве случаев номер задания можно
игнорировать, но он потребуется, если надо будет отменить задание;
подробнее об этом см. в разделе Удаление
заданий.Задание номер 9 состоит из двух файлов; несколько файлов,
указанных в командной строке &man.lpr.1;, считаются частью одного
задания. Это задание является текущим активным (обратите внимание на
слово active в столбце Rank),
т.е. принтер должен сейчас печатать это задание. Второе задание
состоит из данных, передаваемых в качестве стандартного входного
потока команде &man.lpr.1;. Третье задание послано пользователем
mary; оно намного больше по объему.
Полное имя файла, который печатается, слишком длинное и не помещается,
поэтому команда &man.lpq.1; просто выдает три точки.Самая первая строка результатов команды &man.lpq.1; тоже полезна:
она говорит о том, что сейчас делает принтер (или, по крайней мере,
что он делает по мнению системы LPD).Команда &man.lpq.1; также поддерживает опцию
для генерации подробного длинного листинга. Вот пример результатов
выполнения команды lpq -l:waiting for bamboo to become ready (offline ?)
kelly: 1st [job 009rose]
/etc/host.conf 73 bytes
/etc/hosts.equiv 15 bytes
kelly: 2nd [job 010rose]
(standard input) 1635 bytes
mary: 3rd [job 011rose]
/home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytesУдаление заданийЕсли вы передумали печатать задание, можно удалить его из очереди
заданий с помощью команды &man.lprm.1;. Часто можно использовать
&man.lprm.1; для удаления активного задания, но часть задания или
даже все задание все равно может быть напечатано.Для удаления задания со стандартного принтера сначала используйте
команду &man.lpq.1; для поиска номера задания. Затем введите команду:&prompt.user; lprm номер-заданияДля удаления задания с указанного принтера, задайте опцию
option. Следующая команда удаляет задание номер
10 из очереди заданий принтера bamboo:&prompt.user; lprm -P bamboo 10Для команды &man.lprm.1; есть ряд сокращений:lprm -Удаляет все задания (со стандартного принтера), принадлежащие
пользователю, который выполнил команду.lprm пользовательУдаляет все задания (для стандартного принтера), принадлежащие
указанному пользователю. Суперпользователь
может удалять задания других пользователей; обычный пользователь
может удалять только собственные задания.lprmЕсли в командной строке не указаны номер задания, имя
пользователя, или указана опция ,
команда &man.lprm.1; удаляет текущее активное задание на стандартном
принтере, если оно принадлежит вам. Суперпользователь может удалять
любое активное задание.Добавьте опцию для любого из перечисленных выше
сокращений, чтобы работать с любым необходимым принтером вместо
стандартного. Например, следующая команда удаляет все задания текущего
пользователя из очереди принтера по имени rattan:&prompt.user; lprm -P rattan -Если вы работаете в сетевой среде, команда &man.lprm.1; позволит
вам удалять задания только с хоста, с которого они были посланы,
даже если тот же принтер доступен и с других хостов. Следующая
последовательность команд демонстрирует это:&prompt.user; lpr -P rattan myfile
&prompt.user; rlogin orchid
&prompt.user; lpq -P rattan
Rank Owner Job Files Total Size
active seeyan 12 ... 49123 bytes
2nd kelly 13 myfile 12 bytes
&prompt.user; lprm -P rattan 13
rose: Permission denied
&prompt.user; logout
&prompt.user; lprm -P rattan 13
dfA013rose dequeued
cfA013rose dequeued
Не только обычный текст: опции печатиКоманда &man.lpr.1; поддерживает несколько опций, управляющих
форматированием текста, преобразованием графики и других форматов
файлов, выдачей нескольких копий, обработкой задания и др. В этом
разделе описаны эти опции.Опции форматирования и преобразованияСледующие опции команды &man.lpr.1; управляют форматированием
файлов в задании. Используйте эти опции, если задание содержит не
простой текст или если вы хотите сформатировать простой текст с
помощью утилиты &man.pr.1;.&tex;Например, следующая команда печатает файл DVI (из системы
верстки &tex;) по имени fish-report.dvi
на принтере bamboo:&prompt.user; lpr -P bamboo -d fish-report.dviЭти опции применяются для каждого файла в задании, так что нельзя
смешивать (например) файлы DVI и ditroff в одном задании. Вместо этого
посылайте однотипные файлы отдельными заданиями, используя для каждого
задания соответствующие опции преобразования.Все эти опции, кроме и ,
требуют наличия установленных для целевого принтера фильтров
преобразования. Например, опция требует фильтра
преобразования DVI. Подробнее см. в разделе
Фильтры преобразования.Печать файлов cifplot.Печать файлов DVI.Печать текстовых файлов на языке FORTRAN.Печать графиков.Сдвинуть результат вправо на число
столбцов; если число не указано,
сдвиг выполняется на 8 столбцов. Эта опция работает только с
определенными фильтрами преобразования.Не помещайте пробелы между и числом.Печать текстовых данных буквально, включая управляющие символы.Печать данных ditroff (device independent troff).-pФорматировать обычный текст перед печатью утилитой &man.pr.1;.
Подробнее см. &man.pr.1;.Использовать указанный заголовок
в колонтитуле &man.pr.1; вместо имени файла. Эта опция учитывается
только при использовании вместе с опцией .Печать данных troff.Печать растровых данных.Вот пример: следующая команда печатает красиво сформатированную
версию справочного руководства по команде &man.ls.1; на стандартный
принтер:&prompt.user; zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -tКоманда &man.zcat.1; распаковывает исходный код страницы справочного
руководства &man.ls.1; и передает его команде &man.troff.1;, которая
форматирует его и выдает результат в формате GNU troff, передаваемый
команде &man.lpr.1;, посылающей задание спулеру LPD.
Поскольку мы использовали опцию команды &man.lpr.1;,
спулер при печати задания будет преобразовывать результат GNU troff в
формат, понятный стандартному принтеру.Опции обработки заданийСледующие опции команды &man.lpr.1; требуют от системы
LPD специальной обработки задания:-# копийВыдавать указанное количество копий
каждого файла в задании вместо одной. Администратор может отключить
эту опцию для уменьшения износа принтера и поощрения использования
ксерокса. См. раздел
Ограничение
количества копий.В следующем примере на стандартный принтер печатается три
копии файла parser.c, а затем - три копии
parser.h:&prompt.user; lpr -#3 parser.c parser.h-mПосылать почту после завершения задания печати. При указании
этой опции, система LPD будет посылать
почту на ваше имя после завершения обработки вашего задания. В
сообщении будет сказано, выполнено ли задание успешно или по ходу
была ошибка, и (часто) - в чем она состояла.-sНе копировать файлы в каталог спулинга, а сделать там на них
символические связи.Эту опцию имеет смысл использовать при печати больших заданий.
Она экономит место в каталоге спулинга (ваше задание может занять
все свободное место в файловой системе, в которой находится каталог
спулинга). Она также экономит время, поскольку системе
LPD не придется копировать каждый байт
задания в каталог спулинга.Есть, однако, и недостаток: поскольку система
LPD будет ссылаться на исходные
файлы непосредственно, вы не сможете изменять или удалять их,
пока они не будут распечатаны.Если вы печатаете на удаленный принтер, система LPD
будет вынуждена, так или иначе, скопировать файлы с локального хоста
на удаленный, поэтому опция сэкономит место только
в локальном каталоге спулинга, но не в удаленном. Но, она все равно
полезна.-rУдалять файлы в задании после копирования в каталог спулинга
или после печати, если указана опция . Будьте
внимательны при использовании этой опции!Опции начальных страницЭти опции команды &man.lpr.1; изменяют текст, который обычно
выдается на начальной странице задания. Если выдача начальных страниц
для целевого принтера отключена, эти опции не действуют. Информацию по
настройке начальных страниц см. в разделе
Начальные страницы.-C текстЗаменить имя хоста на начальной странице
текстом. Обычно на ней выдается имя хоста,
с которого было послано задание.-J текстЗаменить имя задания на начальной странице
текстом. Имя задания обычно совпадает с
именем первого файла в задании или имеет значение stdin,
если печатается стандартный входной поток.-hНе выдавать начальной страницы.В некоторых организациях эта опция может не действовать, что
определяется способом генерации начальных страниц. Подробнее см. в
разделе Начальные
страницы.Администрирование принтеровКак администратор принтеров, вы должны их установить, настроить и
протестировать. С помощью команды &man.lpc.8; вы можете
взаимодействовать с принтерами и другими способами. С помощью
&man.lpc.8; вы можете:Запускать и останавливать принтерыВключать и отключать их очередиИзменять порядок заданий в каждой очереди.Начнем с замечания по терминологии: если принтер
остановлен, он не будет печатать ничего из
своей очереди. Пользователи могут продолжать посылать задания,
которые будут ждать в очереди, пока принтер не будет
запущен или пока очередь не будет очищена.Если очередь отключена, ни один пользователь
(кроме root) не может посылать задания на
принтер. Во включенную очередь можно посылать
задания. Принтер для отключенной очереди может быть
запущен; при этом он будет продолжать печатать
находящиеся в очереди задания, пока очередь не станет пустой.В общем случае, для использования команды &man.lpc.8; необходимо
иметь привилегии root. Обычные пользователи
могут использовать команду &man.lpc.8; только для получения состояния
принтера и перезапуска зависшего принтера.Далее представлена сводка команд &man.lpc.8;. Большинство команд
принимает аргумент имя-принтера, задающий,
с каким принтером работать. Можно использовать значение all
вместо имени-принтера, означающее все
принтеры, перечисленные в файле /etc/printcap.abort
имя-принтераСнять текущее задание и остановить принтер. Пользователи могут
продолжать посылать задания, если очередь включена.clean
имя-принтераУдалить старые файлы из каталога спулинга принтера.
Иногда файлы, составляющие задание, не удаляются как положено
системой LPD, особенно если
в ходе печати были ошибки и выполнялось много административных
действий. Эта команда находит файлы, не принадлежащие каталогу
спулинга, и удаляет их.disable
имя-принтераОтключить постановку новых заданий в очередь. Если принтер
работает, он продолжит печатать задания, остающиеся в очереди.
Суперпользователь (root) всегда может посылать
задания, даже в отключенную очередь.Эта команда полезна при тестировании вновь установленного
принтера или фильтра: отключаем очередь и посылаем задания как
root. Другие пользователи не смогут посылать
задания, пока вы не закончите тестирование и не включите очередь
повторно командой enable.down имя-принтерасообщениеОтключить принтер. Аналогична последовательности команд
disable и stop.
Указанное сообщение выдается как
состояние принтера при проверке пользователем очереди принтера
с помощью &man.lpq.1; или запросе его состояния командой
lpc status.enable
имя-принтераВключить очередь для принтера. Пользователи могут посылать
задания, но принтер не будет их печатать, пока не будет запущен.help
имя-командыВыдать справочную информацию по команде
имя-команды. Если
имя-команды не указано,
выдает сводку по имеющимся командам.restart
имя-принтераПерезапустить принтер. Обычные пользователи могут использовать эту
команду, если в результате неких чрезвычайных обстоятельств система
LPD зависла, но они не могут запустить
принтер, остановленный командами stop или
down. Команда restart
эквивалентна последовательности команд abort
и start.start
имя-принтераЗапустить принтер. Принтер будет печатать задания, находящиеся в
его очереди.stop
имя-принтераОстановить принтер. Принтер закончит печать текущего задания
и больше ничего из очереди печатать не будет. Хотя принтер и
остановлен, пользователи могут посылать задания во включенную
очередь.topq имя-принтеразадание-или-имя-пользователяПереупорядочить очередь для указанного принтера, помещая
указанные по номеру задания или
задания указанного по имени пользователя
в начало очереди. Для этой команды нельзя использовать
all в качестве имени-принтера.up
имя-принтераВключить принтер; команда по действию противоположна команде
down. Эквивалентна последовательности команд
start и enable.Утилита &man.lpc.8; принимает перечисленные выше команды в
командной строке. Если команда не указана, утилита &man.lpc.8;
входит в интерактивный режим, в котором можно вводить команды,
пока не будет введена команда exit,
quit или символ конца файла.Альтернативы стандартному спулеруЕсли вы прочитали все это руководство, к этому моменту вы
знаете практически все, что надо знать о системе спулинга
LPD, входящей в состав ОС FreeBSD.
Вы, возможно, уже осознали многие из ее недостатков, что, естественно,
приводит к вопросу: Какие еще системы спулинга существуют (и
работают с ОС FreeBSD)?LPRngLPRngСистема LPRng, имя которой означает
LPR: the Next Generation (LPR: следующее поколение) -
это полностью переписанная система PLP. Патрик Пауэл (Patrick Powell)
и Джастин Мейсон (Justin Mason) (основной специалист, занимающийся
поддержкой PLP) объединили усилия для создания системы
LPRng. Основной сайт по системе
LPRng -
.CUPSCUPSСистема CUPS (сокращение от Common
UNIX Printing System) предоставляет переносимый механизм печати для
операционных систем, основанных на &unix;. Она была разработана
компанией Easy Software Products в качестве стандартного механизма
печати для всех производителей и пользователей &unix;.Система CUPS использует протокол
Internet Printing Protocol (IPP) для управления
заданиями и очередями. Протоколы Line Printer Daemon (LPD),
Server Message Block (SMB) и AppSocket (известный
также как JetDirect) также поддерживаются, но с меньшими возможностями.
Система CUPS добавляет поиск сетевых принтеров и опции печати на
основе PostScript Printer Description (PPD), для
поддержки практической печати в &unix;.Основной сайт по системе CUPS -
.Выявление проблемПосле выполнения простого тестирования с помощью команды
&man.lptest.1; вы можете получить один из следующих результатов вместо
корректной распечатки:Все работает, после определенной задержки; или не выдается
распечатанная страница.Принтер напечатал все, что нужно, но он на некоторое время
задумывался и ничего не делал. Фактически, могло потребоваться
нажать кнопку PRINT REMAINING или FORM FEED на принтере, чтобы
результаты были выданы.Если это произошло, вероятно, принтер ждал, нет ли в задании
еще данных, прежде чем что бы то ни было печатать. Для решения
этой проблемы можно посылать в текстовом фильтре на принтер символ
FORM FEED (или любую необходимую последовательность символов).
Этого обычно достаточно, чтобы принтер немедленно распечатал
любой остающийся в его внутреннем буфере текст. Также полезно
убедиться, что каждое задание печати заканчивается полной страницей,
чтобы следующее задание не начиналось где-то с середины последней
страницы предыдущего задания.Следующий измененный скрипт командного интерпретатора
/usr/local/libexec/if-simple выдает символ
прогона страницы после посылки задания на принтер:#!/bin/sh
#
# if-simple - Простой текстовый входной фильтр для lpd
# Установлен в /usr/local/libexec/if-simple
#
# Просто копирует stdin в stdout. Игнорирует все аргументы фильтра.
# Выдает символ прогона страницы (\f) после печати задания.
/bin/cat && printf "\f" && exit 0
exit 2Принтер печатает лесенкой.Вы получаете на бумаге следующее:!"#$%&'()*+,-./01234
"#$%&'()*+,-./012345
#$%&'()*+,-./0123456MS-DOSOS/2ASCIIВы стали очередной жертвой эффекта лесенки,
вызванного различными интерпретациями того, какие символы должны
обозначать новую строку. Операционные системы &unix;-стиля используют
один символ: ASCII-код 10, перевод строки (line feed - LF). &ms-dos;,
&os2; и другие используют пару символов, ASCII-код 10
и ASCII-код 13 (возврат каретки, carriage return
или CR). Многие принтеры используют соглашение &ms-dos; для
представления новых строк.При печати из FreeBSD в тексте используется только символ перевода
строки. Принтер, встретив символ перевода строки, переходит на
следующую строку, но оставляет ту же горизонтальную позицию на
строке для следующего печатаемого символа. Вот зачем нужен символ
возврата каретки: чтобы перенести следующий печатаемый символ
на левый край бумаги.Вот что ОС FreeBSD хочет от принтера:
-
+ Принтер получает CRПринтер печатает CRПринтер получает LFПринтер печатает CR + LFВот несколько способов этого добиться:Использовать переключатели конфигурации принтера или панель
управления, чтобы изменить его интерпретацию этих символов.
Поищите как это сделать в руководстве по своему принтеру.Если вы загружаете другие операционные системы, кроме
FreeBSD, может иметь смысл переконфигурировать
принтер для использования такой интерпретации символов CR и LF,
которая принята в этих операционных системах. Затем можно
использовать одно из представленных далее решений.Заставить драйвер последовательного порта FreeBSD автоматически
преобразовывать LF в CR+LF. Конечно, это подойдет
только для принтеров, подключенных к
последовательным портам. Для включения этой возможности используйте
характеристику ms# и установите режим
onlcr для принтера в файле
/etc/printcap.Послать управляющий код на принтер,
заставляющий его временно обрабатывать символы LF по-другому.
Управляющие коды, которые может поддерживать ваш принтер, поищите
в руководстве своего принтера. Когда найдете соответствующий
управляющий код, измените текстовый фильтр для посылки сначала
этого кода, а затем - задания печати.PCLВот пример текстового фильтра для принтеров, понимающих
управляющие последовательности языка Hewlett-Packard PCL. Этот
фильтр заставляет принтер обрабатывать символы LF как LF и CR;
затем он посылает задание; наконец, он посылает символ
прогона страницы для выдачи последней страницы задания. Он должен
работать практически со всеми принтерами Hewlett Packard.#!/bin/sh
#
# hpif - Простой текстовый входной фильтр для lpd для принтеров на базе HP-PCL
# Установлен в /usr/local/libexec/hpif
#
# Просто копирует stdin в stdout. Игнорирует все аргументы фильтра.
# Требует от принтера обрабатывать LF как CR+LF. Выдает страницу по окончании.
printf "\033&k2G" && cat && printf "\033&l0H" && exit 0
exit 2Вот пример файла /etc/printcap с хоста
orchid. К нему через первый параллельный порт
подключен один принтер, Hewlett Packard LaserJet 3Si, по имени
teak. Для него в качестве текстового фильтра
используется представленный выше скрипт:#
# /etc/printcap для хоста orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:Строки напечатаны одна поверх другой.Принтер так и не перешел на следующую строку. Все строки текста
были напечатаны одна поверх другой, на одной строке.Эта проблема обратна эффекту лесенки, описанному
выше, и встречается намного реже. Каким-то образом, символы LF,
которые ОС FreeBSD использует для завершения строк, обрабатывались
как символы CR и вызывали перевод позиции печати на левый край
бумаги, но не переход на следующую строку.Используйте переключатели конфигурации принтера или панель управления
для обеспечения следующей интерпретации символов LF и CR:
-
+ Принтер получаетПринтер печатаетCRCRLFCR + LFПринтер теряет символы.По ходу печати принтер не печатает несколько символов в каждой
строке. Проблема со временем может становиться все хуже, так что
теряется все больше символов.Проблема состоит в том, что принтер не справляется с той скоростью,
с которой компьютер посылает данные по последовательной линии (эта
проблема не должна возникать на принтерах, подключенных к параллельным
портам). Есть два способа решить проблему:Если принтер поддерживает управление потоком XON/XOFF,
заставить FreeBSD использовать его, указав режим
ixon в характеристике ms#.Если принтер поддерживает управление несущим потоком
(carrier flow control), укажите режим crtscts
в характеристике ms#. Убедитесь, что кабель,
соединяющий принтер с компьютером, правильно распаян для управления
несущим потоком.Напечатан мусор.Принтер напечатал нечто похожее на случайный мусор, а не
требуемый текст.Это, обычно, - еще один симптом неправильных параметров
взаимодействия с последовательным принтером. Перепроверьте
скорость взаимодействия в характеристике br
и установку четности в характеристике ms#;
проверьте, что принтер использует те же установки, которые
заданы в файле /etc/printcap.Ничего не произошло.Если ничего не произошло, проблема, вероятно, связана с FreeBSD, а
не с оборудованием. Добавьте характеристику журнального файла
(lf) в файл /etc/printcap для
принтера, работу с которым отлаживаете. Например, вот запись для
принтера rattan с характеристикой
lf:rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:\
:lf=/var/log/rattan.logЗатем попытайтесь напечатать снова. Поищите в журнальном файле
(в нашем примере - /var/log/rattan.log)
возможные сообщения об ошибках. На основе полученных сообщений
попытайтесь решить проблему.Если вы не зададите характеристику lf,
система LPD использует по умолчанию
/dev/console.
diff --git a/ru_RU.KOI8-R/books/handbook/security/chapter.sgml b/ru_RU.KOI8-R/books/handbook/security/chapter.sgml
index 095ef69047..fc6aab2791 100644
--- a/ru_RU.KOI8-R/books/handbook/security/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/security/chapter.sgml
@@ -1,5723 +1,5089 @@
MatthewDillonБольшая часть этой главы была взята из страницы справочника
security(7) которую написал ДенисПеплинПеревод на русский язык: БезопасностьбезопасностьКраткое описаниеЭта глава представляет введение в основные концепции безопасности
системы, некоторые эмпирические правила и более подробно обращается к
отдельным темам, касающимся &os;. Большая часть затрагиваемых тем может
быть применена к безопасности системы и безопасности в интернет вообще.
Интернет больше не то дружественное место, где каждый
хочет быть вам добрым соседом. Защита системы необходима для сохранения
ваших данных, интеллектуальной собственности, времени и всего остального
от хакеров и им подобных.
- FreeBSD предоставляет массу утилит и механизмов для обеспечения
+ &os; предоставляет массу утилит и механизмов для обеспечения
целостности и безопасности системы и сети.После прочтения этой главы вы узнаете:Основные концепции безопасности системы, специфику &os;.О различных механизмах шифрования в &os;, таких как
DES и MD5.Как настроить аутентификацию с использованием одноразовых
паролей.Как настроить TCP Wrappers для
использования с inetd.Как настроить KerberosIV в релизах
&os; до 5.0.Как настроить Kerberos5 в релизах &os;
после 5.0.
- Как создать межсетевые экраны с помощью
+ Как создать брандмауэры с помощью
IPFW.Как настроить IPsec и создать VPN между
компьютерами на &os;/&windows;.Как настроить и использовать OpenSSH,
реализацию SSH в &os;.Что такое ACL и как их использовать.Как работать с сообщениями безопасности &os;.Перед чтением этой главы вам потребуется:Понимание основных концепций &os; и интернет.ВведениеБезопасность это первая и основная функция системного
администратора. Хотя все многопользовательские системы BSD &unix;
уже снабжены некоторой защитой, работа по созданию и поддержке
дополнительных механизмов безопасности, обеспечивающих защищенную работу
пользователей, это одна из самых серьезных задач системного
администратора. Компьютеры безопасны настолько, насколько вы сделаете
их безопасными и требования безопасности всегда находятся в противоречии
с удобством работы пользователей. Системы &unix; способны одновременно
работать с огромным количеством процессов и многие из этих процессов
серверные — это означает, что с ними могут взаимодействовать
внешние программы. Сегодня десктопы заменили мини-компьютеры и
мэйнфрэймы, и поскольку компьютеры в наши дни подключены к сети
интернет, безопасность важна как никогда.Наилучшая реализация системы безопасности представима в виде
послойной системы. Вообще говоря все, что нужно сделать,
это создать столько слоев безопасности, сколько необходимо и затем
внимательно следить за вторжениями в систему. Не переусердствуйте в
настройке системы безопасности, иначе она сделает невозможной
обнаружение вторжений, являющееся одним из наиболее важных аспектов
механизма безопасности. Например, нет большого смысла в установке
флага schg (&man.chflags.1;) на каждый исполняемый
файл системы, поскольку хотя таким способом можно временно защитить
исполняемые файлы, это помешает обнаружению факта взлома
системы.Безопасность системы также относится к различным формам атак,
имеющих своей целью вызвать крах системы, или сделать систему
недоступной другим способом, но не пытающихся получить доступ к учетной
записи root (break root).
Угрозы безопасности могут быть поделены на несколько категорий:Отказ в обслуживании (Denial of service, DoS).Взлом пользовательских учетных записей.Взлом учетной записи root через доступные сервисы.Взлом учетной записи root через учетные записи
пользователей.Создание backdoor.DoS атакиотказ в обслуживании (Denial of Service, DoS)безопасностьDoS атакиотказ в обслуживании (Denial of Service, DoS)Отказ в обслуживании (Denial of Service, DoS)Атака отказ в обслуживании отбирает у машины
необходимые ресурсы. Обычно DoS атаки используют грубую силу, чтобы
попытаться обрушить систему или сделать ее недоступной другим способом,
превысив лимиты ее сервисов или сетевого стека. Некоторые DoS атаки
пытаются использовать ошибки в сетевом стеке для обрушения системы одним
пакетом. Эту проблему можно решить только исправив ядро системы. Атаки
зачастую можно предотвратить правильной установкой параметров,
ограничивающих нагрузку на систему в неблагоприятных условиях. С
атаками, использующими грубую силу, бороться сложно. Например, атака с
использованием пакетов с поддельными адресами, которую почти невозможно
остановить, может быстро отключить вашу систему от интернет. Возможно,
она не приведет к отказу системы, но сможет переполнить соединение с
интернет.безопасностьвзлом учетных записейВзлом учетной записи пользователя обычно встречается чаще, чем DoS
атаки. Многие системные администраторы все еще используют стандартные
сервисы telnetd,
rlogind и ftpd на
своих серверах. Эти сервисы по умолчанию не работают с зашифрованными
соединениям. В результате при среднем количестве пользователей пароль
одного или нескольких пользователей, входящих в систему через внешнее
соединение (это обычный и наиболее удобный способ входа в систему),
будет перехвачен. Внимательный системный администратор должен
анализировать логи удаленного доступа на предмет подозрительных адресов
пользователей даже в случае успешного входа.Кто-то может предположить, что атакующий при наличии доступа к
учетной записи пользователя может взломать учетную запись
root. Однако, реальность такова, что в хорошо
защищенной и поддерживаемой системе доступ к учетной записи пользователя
не обязательно даст атакующему доступ к root.
Разница между доступом к обычной учетной записи и к
root важна, поскольку без доступа к
root атакующий обычно не способен скрыть свои
действия, и в худшем случае сможет лишь испортить файлы пользователя или
вызвать крах системы. Взлом пользовательских учетных записей
встречается очень часто, поскольку пользователи заботятся о безопасности
так, как системные администраторы.безопасностьbackdoorsСистемные администраторы должны помнить, что существует множество
потенциальных способов взлома учетной записи root.
Атакующий может узнать пароль root, найти ошибку в
сервисе, работающем с привилегиями и взломать учетную запись
root через сетевое соединение с этим сервисом, или
узнать об ошибке в suid-root программе, позволяющей атакующему взлом
root с помощью взломанной учетной записи
пользователя. Если атакующий нашел способ взлома
root, ему может не понадобиться установка backdoor.
Многие из обнаруженных и закрытых на сегодняшний день брешей
в системе, позволяющие взлом root, требуют от
атакующего серьезной работы по заметанию следов, поэтому большинство
атакующих устанавливают backdoor. Backdoor предоставляет атакующему
простой способ восстановления доступа к системе с привилегиями
root, но также дает системному администратору
удобный способ обнаружения вторжения. Устранение возможности установки
backdoor возможно повредит безопасности системы, поскольку это
не устранит брешь, позволившую проникнуть в
систему.Меры безопасности всегда должны быть реализованы многоуровнево,
и могут быть классифицированы следующим образом:Защита root и служебных учетных
записей.Защита работающих под root
сервисов и suid/sgid исполняемых файлов.Защита учетных записей пользователей.Защита файла паролей.Защита ядра, raw устройств и файловых
систем.Быстрое обнаружение несанкционированных изменений в
системе.Паранойя.В следующем разделе этой главы эти темы изложены более
подробно.
- Защита FreeBSD
+ Защита &os;безопасность
- защита FreeBSD
+ защита &os;Команда и протоколВ этом документе мы будет использовать
выделенный текст, упоминая приложение,
и моноширинный шрифт, упоминая определенные
команды. Для протоколов используется обычный шрифт. Это
типографическое отличие полезно для таких случаев, как ssh, поскольку
это и команда и протокол.В последующем разделе будут рассмотрены методы защиты системы
- FreeBSD, упомянутые в предыдущем разделе этой главы.Защита учетной записи root и служебных
учетных записейsuВо-первых, не беспокойтесь о защите служебных учетных записей,
если не защищена учетная запись root. В
большинстве систем у учетной записи root есть
пароль. Использование пароля root
опасно всегда. Это не означает, что вы должны
удалить пароль. Пароль почти всегда необходим для доступа
по консоли. Но это означает, что вы должны сделать невозможным
использование пароля не из консоли или может быть даже с помощью
команды &man.su.1;. Например, убедитесь, что псевдотерминалы
в файле /etc/ttys перечислены с параметром
insecure, что делает невозможным вход на них
под root напрямую с помощью
telnet или rlogin. При
использовании других средств входа, таких как
sshd, убедитесь что вход под
root напрямую отключен и в них. Сделайте
это, открыв файл /etc/ssh/sshd_config, и
убедившись, что параметр PermitRootLogin
установлен в NO. Проверьте каждый метод доступа
— сервис FTP и ему подобные часто подвержены взлому. Прямой
вход под root должен быть разрешен только с
системной консоли.wheelКонечно, как системный администратор вы должны иметь доступ
root, поэтому потребуется открыть несколько
лазеек. Но убедитесь, что для доступа к ним необходим
дополнительный пароль. Одним из способов доступа к
root является добавление соответствующих учетных
записей к группе wheel (в файле
/etc/group). Это позволяет использовать
su для доступа к root.
Вы никогда не должны давать таким учетным записям доступ
к wheel непосредственно, помещая их в группу
wheel в файле паролей. Служебные учетные
записи должны помещаться в группу staff,
а затем добавляться к группе wheel в файле
/etc/group. Только те члены группы staff,
которым действительно нужен доступ к root,
должны быть помещены в группу wheel.
При работе с такими методами аутентификации как Kerberos, возможно также
использование файла .k5login в каталоге
пользователя root для доступа к учетной записи
root с помощью &man.ksu.1; без помещения
кого-либо в группу wheel. Это решение возможно
лучше, поскольку механизм wheel все еще
позволяет взлом root, если злоумышленник
получил копию файла паролей и смог взломать служебную учетную запись.
Хотя использование механизма wheel лучше,
чем работа через root напрямую, это не
обязательно самый безопасный способ.Непрямой способ защиты служебных учетных записей и конечно
root это использование альтернативных методов
доступа и замена зашифрованных паролей на символ
*. Используя команду
&man.vipw.8;, замените каждый зашифрованный пароль служебных учетных
записей на этот символ для запрета входа с аутентификацией по паролю.
Эта команда обновит файл /etc/master.passwd и
базу данных пользователей/паролей.Служебная учетная запись вроде этой:foobar:R9DT/Fa1/LV9U:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcshДолжна быть заменена на такую:foobar:*:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcshЭто изменение предотвратит обычный вход, поскольку зашифрованный
пароль никогда не совпадет с *.
После этого члены группы staff должны использовать другой механизм
аутентификации, например &man.kerberos.1; или &man.ssh.1; с парой
ключей: публичным и приватным. При использовании такой системы как
Kerberos, потребуется защитить сервер Kerberos и рабочую станцию.
При использовании пары публичного/приватного ключей с ssh,
потребуется защитить компьютер, с которого
происходит вход (обычно это рабочая станция). Дополнительных слой
защиты может быть добавлен путем защиты пары ключей при создании их
с помощью &man.ssh-keygen.1;. Возможность заменить пароли служебных
учетных записей на * гарантирует
также, что вход может быть осуществлен только через защищенные методы
доступа, которые вы настроили. Это принуждает всех членов staff
использовать защищенные, шифрованные соединения для всех входов,
что закрывает большую брешь, используемую многими нарушителями:
перехват паролей с другого, слабо защищенного компьютера.Более непрямой механизм безопасности предполагает, что вы входите
с более защищенного сервера на менее защищенный. Например, если
главный сервер работает со всеми сервисами, рабочая станция не должна
работать ни с одним. Для поднятия уровня безопасности до приемлемого
уровня, число запущенных на ней сервисов необходимо сократить до
минимума, вплоть до отключения их всех, кроме того необходимо
использовать защищенный паролем хранитель экрана. Конечно, при
наличии физического доступа к рабочей станции атакующий может взломать
любую систему безопасности. Это определенно проблема, которую вы
должны учитывать, но учтите также тот факт, что большинство взломов
совершаются удаленно, через сеть, людьми, которые не имеют физического
доступа к вашим рабочим станциям или серверам.KerberosIVИспользование такой системы как Kerberos дает возможность
заблокировать или изменить пароль в одном месте, что сразу
отразиться на всех компьютерах, где существует служебная учетная
запись. Если эта учетная запись будет взломана, возможность
немедленно изменить пароль на всех компьютерах нельзя недооценивать.
Без этой возможности изменение паролей на N машинах может стать
проблемой. Вы можете также наложить ограничения на смену паролей
с помощью Kerberos: не только установить значения timeout в
Kerberos, но и добавить требование смены пароля пользователем
после определенного периода времени (скажем, раз в месяц).Защита работающих под root сервисов и suid/sgid исполняемых
файловntalkcomsatfingersandboxessshdtelnetdrshdrlogindПредусмотрительный системный администратор запускает только те
сервисы, в которых нуждается, ни больше ни меньше. Учитывайте, что
сервисы сторонних разработчиков наиболее подвержены ошибкам. К примеру,
работа со старыми версиями imapd или
popper это все равно что раздача доступа
root всему миру. Никогда не запускайте
сервисы, которые вы не проверили достаточно внимательно. Многим
сервисам не требуется работа под root.
Например, даемоны ntalk,
comsat, и
finger могут быть запущены в так
называемых песочницах
(sandboxes). Песочница это не идеальное
решение, поскольку вызывает много проблем, но она подходит под
модель послойной безопасности: если кто-то сможет взломать сервис,
работающий в песочнице, ему потребуется взломать еще и саму
песочницу. Чем больше уровней (слоев) потребуется
пройти атакующему, тем меньше вероятность его успеха. Ошибки,
позволяющие получать root доступ, находили фактически во всех
сервисах, запускаемых под root, включая
основные системные сервисы. Если вы обслуживаете машину, на которую
входят только через sshd и никогда не
входят через telnetd,
rshd или
rlogind, отключите эти сервисы!
- В FreeBSD сервисы
+ В &os; сервисы
ntalkd,
comsat и
finger теперь по умолчанию работают в
песочнице. Другая программа, которая может быть
кандидатом на запуск в песочнице это
&man.named.8;. /etc/defaults/rc.conf включает
необходимые для запуска named
в песочнице аргументы в закомментированой форме.
В зависимости от того, устанавливаете ли вы новую систему, или
обновляете старую, учетные записи пользователей, используемые
этими песочницами могут не быть созданы.
Предусмотрительный системный администратор должен узнать о
песочницах для сервисов и установить их если есть
возможность.sendmailЕсть множество других сервисов, которые обычно не работают в
песочницах: sendmail,
popper,
imapd, ftpd,
и другие. Некоторым из этих сервисов есть альтернативы,
но их установка может потребовать больше работы, чем вы готовы
выполнить (фактор удобства). Вы можете запустить эти сервисы под
root и положиться на другие механизмы обнаружения
вторжений, которые могут пройти через них.Другая большая потенциальная root брешь
в системе это suid-root и sgid исполняемые файлы. Большинство
этих исполняемых файлов, таких как rlogin,
установлены в /bin, /sbin,
/usr/bin, или /usr/sbin.
Хотя ничто не может быть безопасно на 100%, находящиеся по умолчанию
в системе suid и sgid исполняемые файлы могут быть признаны
достаточно безопасными. Но root бреши все еще
обнаруживаются в этих исполняемых файлах. root
брешь, обнаруженная в Xlib в 1998 делала
xterm (который обычно suid) подверженным
взлому. Лучше сразу принять меры предосторожности, чем сожалеть
потом. Предусмотрительный системный администратор ограничит права
запуска suid исполняемых файлов, которые должны запускаться
пользователями группы staff, только этой группой, а также запретит
доступ (chmod 000) к тем исполняемым файлам
suid, которые никем не используются. Серверу без монитора обычно
не требуется исполняемый файл xterm.
Исполняемые sgid исполняемые файлы могут быть почти так же опасны.
Если нарушитель сможет взломать sgid-kmem исполняемый файл, он
возможно сможет прочесть /dev/kmem и
таким образом получить файл зашифрованных паролей, что потенциально
делает возможным взлом любой защищенной паролем учетной записи.
Аналогично нарушитель, проникший в группу kmem,
может отслеживать последовательности клавиш, отправленные через
псевдотерминалы, включая псевдотерминалы, используемые через
безопасные соединения. Нарушитель, вошедший в группу
tty может сделать вывод почти на любой
пользовательский терминал. Если пользователь работает с
терминальной программой или эмулятором с возможностью эмуляции
клавиатуры, взломщик может потенциально сгенерировать поток данных,
который заставит терминал пользователя ввести команду, и она будет
запущена с правами этого пользователя.Защита учетных записей пользователейУчетные записи пользователей обычно сложнее всего защитить.
Вы можете ввести драконовские ограничения доступа к служебным учетным
записям, заменив их пароли на символ
*, но возможно не сможете сделать
то же с обычными учетными записями пользователей. Если есть
такая возможность, вы возможно сможете защитить учетные записи
пользователей соответствующим образом. Если нет, просто
более бдительно отслеживайте эти учетные записи. Использование
ssh и Kerberos для учетных записей пользователей более
проблематично, поскольку требует дополнительной административной
работы и технической поддержки, но все же это решение лучше,
чем файл с шифрованными паролями.Защита файла паролейЕдинственный абсолютно надежный способ это замена на
* максимально возможного количества паролей и
использование ssh или Kerberos для доступа к таким учетным записям.
Хотя файл с шифрованными паролями (/etc/spwd.db)
доступен для чтения только root, возможно, что
нарушитель сможет получить доступ на чтение к этому файлу, даже если
не получит права root на запись.Ваши скрипты безопасности должны всегда проверять и составлять
отчет об изменениях файла паролей (обратитесь к разделу Проверка целостности файлов
ниже по тексту).Защита ядра, raw устройств и файловых
системЕсли атакующий взломает root, он сможет
сделать практически все, но есть способы усложнить его задачу.
Например, в большинстве современных ядер встроено устройство
- перехвата пакетов. В FreeBSD оно называется
+ перехвата пакетов. В &os; оно называется
bpf. Нарушитель обычно пытается запустить
перехват пакетов на взломанной машине. Вы не должны предоставлять
ему такой возможности, на большинстве систем устройство
bpf не должно быть встроено в ядро.sysctlНо даже если вы выключите устройство bpf,
все еще остаются проблемы, связанные с устройствами
/dev/mem и
/dev/kmem.
Нарушитель все еще может писать на дисковые raw устройства.
Есть также другая возможность ядра, загрузка модулей, &man.kldload.8;.
Активный нарушитель может использовать KLD модуль для установки
собственного устройства bpf или другого
перехватывающего устройства на работающее ядро. Для решения этих
проблем запускайте ядро с большим уровнем безопасности, как минимум 1.
Уровень безопасности может быть установлен с помощью
sysctl через переменную
kern.securelevel. После установки уровня
безопасности в 1 доступ на запись в raw устройства будет запрещена и
полностью заработают специальные флаги chflags,
такие как schg. Убедитесь также, что
флаг schg установлен на критически важных
загрузочных исполняемых файлах, каталогах и файлах скриптов —
на всем, что запускается до установке уровня безопасности.
Это требует большого объема работы, и обновление системы на более
высоком уровне безопасности может стать гораздо сложнее. Вы можете
пойти на компромисс и запускать систему на высоком уровне безопасности,
но не устанавливать флаг schg для каждого
существующего системного файла и каталога. Другая возможность
состоит в монтировании / и
/usr только для чтения. Необходимо заметить,
что такие правила слишком жесткие и могут помешать обнаружению
вторжения.Проверка целостности файлов: исполняемые, конфигурационные файлы
и т.д.Вы можете защищать только ядро, файлы настройки и управления
системой только до тех пор, пока эта защита не вступит в конфликт
с удобством работы в системе. Например, использование
chflags для установки бита
schg на большинство файлов в /
вероятно может только навредить, поскольку хотя и может защитить
файлы, препятствует обнаружению. Последний слой системы безопасности,
возможно, наиболее важный — обнаружение. Остальные меры
безопасности практически бесполезны (или, что еще хуже, могут дать
вам ложное ощущение безопасности) если вы не обнаружите потенциальное
вторжение. Половина функций системы безопасности направлена на
замедление атакующего, а не на его остановку, для того, чтобы дать
системе обнаружения возможность поймать нарушителя на месте
преступления.Лучший способ обнаружения вторжения — отслеживание
измененных, отсутствующих, или неожиданно появившихся файлов.
Для наблюдения за измененными файлами лучше всего использовать
другую (зачастую централизованную) систему с ограниченным
доступом. Добавление написанных вами скриптов к этой дополнительно
защищенной системе с ограниченным доступом делает ее практически
невидимой для потенциальных взломщиков, и это важно. В целях
достижения максимального эффекта вам может потребоваться предоставить
этой системе доступ к другим машинам в сети, обычно с помощью
NFS экспорта только для чтения или сгенерировав пары ключей ssh
для доступа к другим машинам по ssh. Помимо большого объема
сетевого трафика, NFS более скрытый метод — он позволяет
контролировать файловые системы на каждом клиентском компьютере
практически незаметно. Если ваш сервер с ограниченным доступом
подключен к клиентским компьютерам через коммутатор, NFS метод
это зачастую лучший выбор. При соединении через концентратор, или
через несколько маршрутизаторов, NFS метод может стать слишком
небезопасным и использование ssh может стать лучшим выбором даже
несмотря на то, что ssh оставляет следы своей работы.Как только у вас появился сервер с ограниченным доступом,
и как минимум доступ на чтение в клиентских системах, потребуется
написать скрипты для выполнения мониторинга. При наличии доступа
по NFS вы можете написать скрипты с помощью простых системных утилит,
таких как &man.find.1; и &man.md5.1;. Лучше всего подсчитывать
md5 файлов на клиентском компьютере как минимум один раз в день,
а файлы, контролирующие запуск из /etc и
/usr/local/etc даже более часто. При
обнаружении расхождений в md5, контролирующий компьютер должен
просигналить системному администратору проверить изменившиеся
файлы. Хороший скрипт безопасности проверит также наличие
несоответствующих исполняемых suid файлов и новых или измененных
файлов в системных разделах / и
/usr.При использовании ssh вместо NFS, написать скрипты безопасности
гораздо сложнее. Вам обязательно потребуется скопировать
(scp) скрипты на клиентский компьютер,
сделать из невидимыми, и для безопасности потребуется также
скопировать исполняемые файлы (такие как find), которые будут
использоваться скриптом. Приложение ssh
на клиентском компьютере может быть уже взломано. В конечном итоге,
без ssh не обойтись при работе через небезопасные соединения,
но его гораздо сложнее использовать.Хороший скрипт безопасности проверит также изменения в файлах
настройки, работающих при подключении пользователей и служебных учетных
записей:
.rhosts, .shosts,
.ssh/authorized_keys и так далее…
файлы, которые могли не попасть в область проверки
MD5.Если для пользователей выделен большой объем дискового
пространства, проверка каждого файла на таких разделах может занять
слишком много времени. В таком случае установка флагов монтирования
для запрета suid исполняемых файлов и устройств на таких разделах
это хорошая идея. Примените параметры &man.mount.8;
nodev и nosuid. Проверяйте
эти разделы в любом случае, хотя бы раз в неделю, поскольку
необходимо обнаруживать попытки взлома, независимо от того,
эффективны они или нет.Учет процессов (&man.accton.8;) это относительно несложная
возможность операционной системы, которая может помочь
как механизм обнаружения состоявшихся вторжений. Она особенно
полезна для обнаружения пути проникновения нарушителя в систему,
если файл не был затронут проникновением.Наконец, скрипты безопасности должны обработать лог файлы,
которые необходимо создавать настолько защищенным способом, насколько
это возможно — подключение syslog удаленно может быть очень
полезным. Злоумышленник попытается уничтожить следы взлома,
и лог файлы критически важны для системного администратора,
пытающегося отследить время и метод первого проникновения.
Один из надежных способов получения лог файлов является подключение
системной консоли к последовательному порту и постоянный
сбор информации через защищенную машину, отслеживающую
консоли.ПаранойяНемного паранойи никогда не повредит. Как правило, системный
администратор может добавлять элементы безопасности в любом
количестве, пока это не влияет на удобство, а также некоторое
количество элементов безопасности, влияющих
на удобство. Что даже более важно, системный администратор должен
немного изменить их — если вы используете рекомендации, например
те, что даны в этом документе, они становятся известны атакующему,
который также имеет доступ к этому документу.
prospective attacker who also has access to this document.Атаки DoSОтказ в обслуживании (DoS)Этот раздел охватывает DoS атаки. DoS атаки это обычно
пакетные атаки. Хотя против современной атаки с подделкой пакетов,
которая перегружает сеть, мало что можно сделать, вы можете
ограничить повреждения, убедившись, что атака не может
обрушить ваши сервера.Ограничение количества порождаемых процессов.Уменьшение последствий springboard атак (ICMP ответ,
широковещательный ping и т.д.).Кэш маршрутизации ядра.Обычная DoS атака против порождающего процессы сервера пытается
исчерпать ресурсы сервера по процессам, файловым дескрипторам и
памяти до тех пор, пока машина не подвиснет. У
inetd (обратитесь к &man.inetd.8;)
есть несколько параметров, позволяющих ограничить такие атаки.
Необходимо учесть, что хотя можно предотвратить падение системы, в
общем случае невозможно предотвратить прекращение работы сервиса.
Внимательно прочтите страницу справочника и обратите особое внимание
на параметры , , и
. Учтите, что параметр не
работает в случае атак с использованием поддельных IP пакетов,
поэтому как правило необходимо использование комбинации параметров.
Некоторые standalone сервисы используют собственные параметры,
ограничивающие порождение процессов.У Sendmail есть собственный параметр
, которая работает гораздо лучше,
чем параметр sendmail, ограничивающий нагрузку. Вам необходимо задать
параметр запуска sendmailMaxDaemonChildren достаточно большим, чтобы
обслуживать ожидаемую нагрузку, но так, чтобы компьютер мог обслужить
такое количество приложений sendmail без
падения системы. Хорошей мерой является запуск sendmail в режиме
очереди () и запуск даемона
(sendmail -bd) отдельно от очереди
(sendmail -q15m). Если вы все же хотите
организовать доставку в режиме реального времени, запускайте
очередь с меньшим интервалом , но убедитесь
в правильной установке параметра sendmail
MaxDaemonChildren для предотвращения
ошибок.Syslogd может быть атакован
непосредственно, настоятельно рекомендуется использовать параметр
если это возможно и параметр
в остальных случаях.Вы также должны быть очень осторожны с сервисами, совершающими
обратное подключение, такими как tcpwrapper
с reverse-identd, который может быть атакован непосредственно.
По этой причине возможность tcpwrappers
reverse-ident обычно не следует использовать.Правильным будет запрет доступа к внутренним сервисам из внешней
- сети путем соответствующей настройки межсетевого экрана на внешнем
+ сети путем соответствующей настройки брандмауэра на внешнем
маршрутизаторе. Идея в том, чтобы предотвратить перегрузку сервисов
атаками из внешней сети, а кроме того защитить
root от взлома через сеть. Всегда настраивайте
- исключающий межсетевой экран, т.е. закрыть все
+ исключающий брандмауэр, т.е. закрыть все
кроме портов A, B, C, D, и M-Z.
Этим способом вы можете закрыть все порты нижнего диапазона,
кроме явно указанных, таких как named
(если вы поддерживаете интернет-зону),
ntalkd,
sendmail, и других сервисов, доступных
- из интернет. Если вы попробуете настроить межсетевой экран другим
- способом — включающий, или разрешающий межсетевой экран, есть
+ из интернет. Если вы попробуете настроить брандмауэр другим
+ способом — включающий, или разрешающий брандмауэр, есть
большой шанс забыть закрыть пару сервисов, или
- добавить новый внутрисетевой сервис и забыть обновить межсетевой
- экран. Вы можете открыть диапазон портов с большими номерами
+ добавить новый внутрисетевой сервис и забыть обновить брандмауэр.
+ Вы можете открыть диапазон портов с большими номерами
для обычных приложений без угрозы портам нижнего диапазона.
- Учтите также, что FreeBSD позволяет вам контролировать диапазоны
+ Учтите также, что &os; позволяет вам контролировать диапазоны
портов, используемые для динамической привязки через различные
переменные sysctlnet.inet.ip.portrange (sysctl -a | fgrep
portrange), что позволяет упростить настройку
- межсетевого экрана. Например, вы можете использовать обычный
+ брандмауэра. Например, вы можете использовать обычный
диапазон портов со значениями от 4000 до 5000, и диапазон портов с
большими номерами от 49152 до 65535, а затем заблокировать все до
4000 порта (конечно оставив доступ из интернет к определенным
портам.ICMP_BANDLIMДругой распространенный тип DoS атак называется springboard
— сервер атакуется таким образом, что генерируемые ответы
перегружают его, локальную сеть или какие-то другие компьютеры.
Наиболее распространенная атака этого вида это
широковещательная ICMP ping атака.
Атакующий подделывает пакеты ping, подставляя IP адрес машины, которую
он намеревается атаковать, и отправляет их на широковещательный
адрес вашей локальной сети. Если ваш внешний маршрутизатор не
настроен на отбрасывание пакетов ping на широковещательные адреса,
ваша сеть начинает генерировать соответствующие ответы на
поддельный адрес, что приводит к перегрузке хоста-жертвы, особенно
если атакующий использует этот же трюк с множеством
широковещательных адресов в множестве сетей одновременно.
Были зарегистрированы широковещательные атаки свыше ста двадцати
мегабит. Другая распространенная springboard атака направлена на
ICMP систему сообщения об ошибках. Конструируя пакеты, вызывающие
ICMP сообщения об ошибках, атакующий может нагрузить входящее
соединение сервера и вынудить сервер нагрузить исходящее соединение
ICMP ответами. Этот тип атаки может также обрушить сервер, когда
тот исчерпает mbuf, обычно если сервер не может ограничить число
ответов ICMP, когда они генерируются слишком быстро. В ядре
- FreeBSD есть новая опция сборки, ,
+ &os; есть новая опция сборки, ,
которая ограничивает эффективность этого типа атак. Последний
основной класс springboard атак относится к определенным
внутренним сервисам inetd, таким как
сервис udp echo. Атакующий просто подделывает адрес источника
и адрес назначения UDP пакетов, устанавливая в их качестве
соответственно echo порт сервера A и B, оба этих сервера принадлежат
вашей локальной сети. Эти два сервера начинают перебрасываться
этим пакетом друг с другом. Атакующий может вызвать перегрузку
обеих серверов и их сетей, просто отправив несколько пакетов таким
способом. Аналогичные проблемы существуют с портом
chargen. Компетентный системный
администратор должен отключить эти тестовые сервисы inetd.Атаки с поддельными пакетами могут также использоваться для
переполнения кэша маршрутизации ядра. Обратитесь к параметрам
sysctlnet.inet.ip.rtexpire,
rtminexpire, и rtmaxcache.
Атака с поддельными пакетами, использующая произвольный IP адрес
источника, заставит ядро сгенерировать временный кэшированный
маршрут в таблице маршрутизации, который можно увидеть с помощью
netstat -rna | fgrep W3. Эти маршруты обычно
удаляются через 1600 секунд или около того. Если ядро определит,
что кэшированная маршрутная таблица стала слишком большой, оно
динамически уменьшит rtexpire, но никогда не
станет делать его меньше чем rtminexpire.
С этим связаны две проблемы:Ядро не отреагирует достаточно быстро, когда легко нагруженный
сервер будет внезапно атакован.Значение rtminexpire недостаточно мало
для поддержки работоспособности в условиях продолжительной
атаки.Если ваши серверы подключены к интернет через линию T3 или
более быструю, предусмотрительно будет изменить оба значения
rtexpire и rtminexpire
с помощью &man.sysctl.8;. Никогда не устанавливайте ни один из этих
параметров в нуль (если только вы не хотите обрушить систему).
Установка обеих параметров в значение 2 секунды должна предотвратить
таблицу маршрутизации от атак.Проблемы, связанные с доступом к Kerberos и SSHsshKerberosIVПри использовании Kerberos и ssh необходимо учесть несколько
возможных проблем. Kerberos V это отличный протокол
аутентификации, но в адаптированных к нему приложениях
telnet и
rlogin есть несколько ошибок, которые
могут сделать их непригодными к работе с бинарными потоками.
К тому же, по умолчанию Kerberos не шифрует сессию, если вы не
используете параметр .
ssh шифрует все по умолчанию.
ssh работает очень хорошо во всех ситуациях, но пересылает
ключи по умолчанию. Это означает, что если вы работаете с
защищенной рабочей станции, ключи на которой дают доступ к
остальной сети, и заходите по ssh на незащищенный компьютер,
эти ключи могут быть использованы для взлома. Атакующему
не удастся получить сами ключи, но поскольку ssh открывает порт
во время входа в систему, то если на незащищенной машине
взломан root, эти ключи могут быть использованы
для доступа к другим компьютерам, на которых они действуют.Мы рекомендуем использовать ssh в комбинации с Kerberos
для служебных учетных записей если это возможно.
ssh может быть собран с поддержкой
Kerberos. Это уменьшает зависимость от потенциально подверженных
взлому ssh ключей, и в то же время защищает пароли через
Kerberos. Ключи ssh должны использоваться только для работы
скриптов на защищенных компьютерах (там, где Kerberos использовать
не получится). Мы также рекомендуем или выключить передачу ключей
в настройках ssh, или использовать параметр
from=IP/DOMAIN, поддерживаемый ssh в файле
authorized_keys, который позволяет использовать
ключи только с определенных компьютеров.BillSwingleЧастично переписал и обновил DES, MD5, и шифрованиебезопасностьшифрованиешифрованиеDESMD5У каждого пользователя &unix; системы есть пароль, связанный с его
учетной записью. Очевидно, что эти пароли должны быть известны только
пользователю и соответствующей операционной системе. Для защиты паролей
они шифруются способом, известным как односторонний хэш,
то есть их можно легко зашифровать, но нельзя расшифровать. Другими
словами, то, что мы сказали чуть раньше было очевидно, но не совсем
верно: операционной системе сам пароль
неизвестен. Ей известен только пароль в
зашифрованной форме. Единственный способ получить
обычный пароль это простой перебор всех возможных
паролей.К сожалению, единственный способ шифрования пароля при появлении
&unix; был основан на DES, Data Encryption Standard. Это не было
проблемой для пользователей, живущих в США, но поскольку исходный код
- DES нельзя было экспортировать из США, FreeBSD нашла способ одновременно
+ DES нельзя было экспортировать из США, &os; нашла способ одновременно
не нарушать законов США и сохранить совместимость со всеми другими
вариантами &unix;, где все еще использовался DES.Решение было в разделении библиотек шифрования, чтобы пользователи
в США могли устанавливать и использовать библиотеки DES, а у остальных
пользователей был метод шифрования, разрешенный к экспорту. Так
- FreeBSD пришла к использованию MD5 в качестве метода шифрования по
+ &os; пришла к использованию MD5 в качестве метода шифрования по
умолчанию. MD5 считается более безопасным, чем DES, поэтому установка
DES рекомендуется в основном из соображений совместимости.Определения механизма шифрования
- До FreeBSD 4.4 libcrypt.a была
+ До &os; 4.4 libcrypt.a была
символической ссылкой на библиотеку, используемую для шифрования.
- В FreeBSD 4.4 libcrypt.a была изменена
+ В &os; 4.4 libcrypt.a была изменена
для предоставления настраиваемой библиотеки аутентификации по хэшу
пароля. На данный момент библиотека поддерживает хэши DES, MD5 и
- Blowfish. По умолчанию FreeBSD использует для шифрования паролей
+ Blowfish. По умолчанию &os; использует для шифрования паролей
MD5.Довольно легко определить какой метод шифрования используется
- в FreeBSD. Один из способов это проверка файла
+ в &os;. Один из способов это проверка файла
/etc/master.passwd. Пароли, зашифрованные в
хэш MD5 длиннее, чем те, что зашифрованы с помощью DES и начинаются
с символов $1$. Пароли, начинающиеся
с символов $2a$ зашифрованы с помощью
Blowfish. Пароли, зашифрованные DES не содержат каких-то определенных
идентифицирующих символов, но они короче, чем пароли MD5 и
закодированы в 64-символьном алфавите, не содержащем символа
$, поэтому относительно короткая строка,
не начинающаяся с этого символа это скорее всего DES пароль.Формат паролей, используемых для новых паролей, определяется
параметром passwd_format в
/etc/login.conf, которое может принимать значения
des, md5 или
blf. Обратитесь к странице справочника
&man.login.conf.5; за дополнительной информацией о параметрах
login.Одноразовые паролиодноразовые паролибезопасностьодноразовые паролиS/Key это схема с одноразовыми паролями, основанная на одностороннем
- хэше. FreeBSD использует хэш MD4 для совместимости, но другие системы
- используют MD5 и DES-MAC. S/Key была частью базовой системы FreeBSD
+ хэше. &os; использует хэш MD4 для совместимости, но другие системы
+ используют MD5 и DES-MAC. S/Key была частью базовой системы &os;
начиная с версии 1.1.5 и используется также во все большем числе
операционных систем. S/Key это зарегистрированная торговая марка
Bell Communications Research, Inc.
- Начиная с FreeBSD версии 5.0, S/Key была замещена на функциональный
+ Начиная с &os; версии 5.0, S/Key была замещена на функциональный
эквивалент — OPIE (One-time Passwords In Everything).
OPIE по умолчанию использует MD5.Есть три различных вида паролей, о которых мы поговорим ниже.
Первый вид это ваш обычный пароль &unix; или пароль Kerberos; мы
будем называть его пароль &unix;. Второй вид это
одноразовый пароль, сгенерированный программой S/Key
key или программой OPIE &man.opiekey.1; и принимаемый
командами keyinit или &man.opiepasswd.1;
и в приглашении login; мы будем называть их одноразовыми
паролями. Последний вид паролей это защищенные пароли, которые
вы передаете программам
key/opiekey (и иногда
программам keyinit/opiepasswd),
и которые эти программы используют для создания одноразовых паролей;
мы будем называть его защищенными паролями или просто
паролями.Защищенный пароль не имеет никакого отношения к вашему паролю
&unix;; они могут быть одинаковыми, но это не рекомендуется.
Защищенные пароли S/Key и OPIE не ограничены 8-ю символами, как
старые &unix; паролиВ &os; стандартный пароль
может быть до 128 символов длиной.,
они могут быть настолько длинными, насколько вы захотите. Очень часто
используются пароли длиной в шесть или семь символов. По большей части
система S/Key или OPIE работает полностью независимо от системы
паролей &unix;.Помимо паролей, есть два других вида данных, важных для S/Key и
OPIE. Первый, известный как seed или
ключ, состоит из двух букв и пяти цифр. Другой,
называемый счетчиком цикла, это номер от 1 до 100.
S/Key создает одноразовый пароль, соединяя ключ и защищенный пароль,
а затем применяя MD4/MD5 столько раз, сколько указано счетчиком цикла и
выдает результат в виде шести коротких слов на английском. Эти шесть
слов на английском и есть ваш одноразовый пароль. Система
аутентификации (как правило PAM) хранит последний использованный
одноразовый пароль, и пользователь аутентифицитуется если хэш вводимого
пользователем пароля совпадает с предыдущим паролем. Поскольку
используется односторонний хэш, невозможно сгенерировать следующий
одноразовый пароль если получен предыдущий; счетчик цикла уменьшается
после каждого успешного входа для поддержки синхронизации пользователя
с программой login. Когда счетчик цикла уменьшается до 1, S/Key и OPIE
должны быть переинициализированы.В каждой из обсуждаемых ниже систем задействованы три программы.
Программы key и opiekey
получают счетчик цикла, ключ и защищенный пароль и создают одноразовый
пароль или последовательный список одноразовых паролей. Программы
keyinit и opiepasswd
используются для инициализации S/Key и OPIE соответственно,
и для смены паролей, счетчиков цикла, или ключей; они принимают
защищенный пароль или счетчик цикла, ключ и одноразовый пароль.
Программы keyinfo и opieinfo
проверяют соответствующие файлы (/etc/skeykeys
или /etc/opiekeys) и печатают текущий счетчик
цикла и ключ вызывающего пользователя.Мы рассмотрим четыре вида операций. Первая это использование
keyinit или opiepasswd через
защищенное соединение для первоначальной настройки системы одноразовых
паролей, или для изменения пароля или ключа. Вторая операция это
использование в тех же целях keyinit или
opiepasswd через незащищенное соединение, в сочетании
с key или opiekey через защищенное
соединение. Третья это использование
key/opiekey для входа через
незащищенное соединение. Четвертая это использование
key или opiekey для генерации
набора ключей, которые могут быть записаны или распечатаны для
соединения из места, где защищенное соединение недоступно.Защищенная установка соединенияДля первоначальной настройки S/Key, измените ваш пароль или
ключ при входе через защищенное соединение (например, с консоли
компьютера или через ssh), используйте
команду keyinit без параметров при входе под
своим именем:&prompt.user; keyinit
Adding unfurl:
Reminder - Only use this method if you are directly connected.
If you are using telnet or rlogin exit with no password and use keyinit -s.
Enter secret password:
Again secret password:
ID unfurl s/key is 99 to17757
DEFY CLUB PRO NASH LACE SOFTДля OPIE, вместо этого используется
opiepasswd:&prompt.user; opiepasswd -c
[grimreaper] ~ $ opiepasswd -f -c
Adding unfurl:
Only use this method from the console; NEVER from remote. If you are using
telnet, xterm, or a dial-in, type ^C now or exit with no password.
Then run opiepasswd without the -c parameter.
Using MD5 to compute responses.
Enter new secret pass phrase:
Again new secret pass phrase:
ID unfurl OTP key is 499 to4268
MOS MALL GOAT ARM AVID COED
В приглашениях Enter new secret pass phrase: или
Enter secret password:, введите пароль или фразу.
Запомните, это не тот пароль, с которым вы будете входить, он
используется для генерации одноразовых паролей. Строка
ID содержит информацию для вашего конкретного случая:
имя пользователя, счетчик цикла и ключ. При входе система запомнит
эти параметры и отправит их вам, поэтому их не надо запоминать. В
последней строке находится одноразовый пароль, соответствующий
этим параметрам и секретному паролю; если вы войдете в систему сразу,
используйте этот одноразовый пароль.Незащищенная установка соединенияДля инициализации или изменения защищенного пароля через
незащищенное соединение, вам потребуется существующее защищенное
соединение куда-то, где вы сможете запустить key
или opiekey; это может быть средство доступа
&macintosh; или shell на компьютере, которому вы доверяете.
Вам потребуется также установить значение счетчика цикла (100
возможно подойдет), и задать ключ или использовать сгенерированный.
Через незащищенное соединение (к компьютеру, на котором производится
настройка), используйте команду keyinit -s:&prompt.user; keyinit -s
Updating unfurl:
Old key: to17758
Reminder you need the 6 English words from the key command.
Enter sequence count from 1 to 9999: 100
Enter new key [default to17759]:
s/key 100 to 17759
s/key access password:
s/key access password:CURE MIKE BANE HIM RACY GOREДля OPIE, используйте opiepasswd:&prompt.user; opiepasswd
Updating unfurl:
You need the response from an OTP generator.
Old secret pass phrase:
otp-md5 498 to4268 ext
Response: GAME GAG WELT OUT DOWN CHAT
New secret pass phrase:
otp-md5 499 to4269
Response: LINE PAP MILK NELL BUOY TROY
ID mark OTP key is 499 gr4269
LINE PAP MILK NELL BUOY TROY
Чтобы принять ключ по умолчанию нажмите Enter.
Затем, перед вводом пароля доступа введите те же параметры в
вашем защищенном соединении или средстве доступа S/Key:&prompt.user; key 100 to17759
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password: <secret password>
CURE MIKE BANE HIM RACY GOREИли для OPIE:&prompt.user; opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHAT
Теперь переключитесь на незащищенное соединение и скопируйте
одноразовый пароль, сгенерированный соответствующей программой.Создание одного одноразового пароляКак только вы настроите S/Key или OPIE, во время входа появится
приглашение вроде этого:&prompt.user; telnet example.com
Trying 10.0.0.1...
Connected to example.com
Escape character is '^]'.
FreeBSD/i386 (example.com) (ttypa)
login: <username>
s/key 97 fw13894
Password: Или для OPIE:&prompt.user; telnet example.com
Trying 10.0.0.1...
Connected to example.com
Escape character is '^]'.
FreeBSD/i386 (example.com) (ttypa)
login: <username>
otp-md5 498 gr4269 ext
Password: Кроме того, у S/Key и OPIE есть полезная особенность (не
показанная здесь): если вы нажмете Enter
в приглашении на ввод пароля, включится эхо, и вы сможете увидеть
то, что вводите. Это может быть очень полезно, если вы пытаетесь
ввести пароль вручную, например с распечатки.MS-DOSWindowsMacOSВ этот момент вам потребуется сгенерировать одноразовый пароль,
чтобы ввести его в приглашение. Это должно быть выполнено на
защищенной системе, в которой вы можете запустить
key или opiekey (есть версии
для DOS, &windows; и &macos;). Им требуются значения счетчика цикла
и ключ в качестве параметров командной строки. Вы можете скопировать
и вставить их прямо из приглашения login компьютера, на который
входите.В защищенной системе:&prompt.user; key 97 fw13894
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password:
WELD LIP ACTS ENDS ME HAAGДля OPIE:&prompt.user; opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHATТеперь, когда у вас есть одноразовый пароль, можете продолжить
вход в систему:login: <username>
s/key 97 fw13894
Password: <return to enable echo>
s/key 97 fw13894
Password [echo on]: WELD LIP ACTS ENDS ME HAAG
Last login: Tue Mar 21 11:56:41 from 10.0.0.2 ... Создание нескольких одноразовых паролейИногда вы отправляетесь туда, где нет доступа к защищенному
компьютеру или защищенному соединению. В этом случае, можно
использовать команды key и
opiekey для создания нескольких одноразовых
паролей, которые вы сможете распечатать и забрать с собой.
Например:&prompt.user; key -n 5 30 zz99999
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password: <secret password>
26: SODA RUDE LEA LIND BUDD SILT
27: JILT SPY DUTY GLOW COWL ROT
28: THEM OW COLA RUNT BONG SCOT
29: COT MASH BARR BRIM NAN FLAG
30: CAN KNEE CAST NAME FOLK BILKИли для OPIE:&prompt.user; opiekey -n 5 30 zz99999
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase: <secret password>
26: JOAN BORE FOSS DES NAY QUIT
27: LATE BIAS SLAY FOLK MUCH TRIG
28: SALT TIN ANTI LOON NEAL USE
29: RIO ODIN GO BYE FURY TIC
30: GREW JIVE SAN GIRD BOIL PHIПараметр запрашивает пять паролей,
указывает значение последнего счетчика цикла.
Обратите внимание, что пароли печатаются в
обратном по сравнению с обычным использованием
порядке. Если вы действительно параноик, перепишите результат
вручную; иначе скопируйте и передайте его lpr.
Обратите внимание, что каждая линия содержит как счетчик цикла, так
и одноразовый пароль; вам может показаться удобным отрывать пароль
после использования.Ограничение использования &unix; паролейS/Key может наложить ограничения на использование &unix; паролей
на основе имени хоста, имени пользователя, порта терминала или IP
адреса сессии. Эти ограничения можно найти в файле настройки
/etc/skey.access. Страница справочника
&man.skey.access.5; содержит дополнительную информацию о полном
формате файла а также детали о некоторых предосторожностях, которые
должны быть предприняты перед тем, как положиться в вопросах
безопасности на этот файл.Если файла /etc/skey.access нет (это
- ситуация по умолчанию в системах FreeBSD 4.X), всем пользователям
+ ситуация по умолчанию в системах &os; 4.X), всем пользователям
будет разрешено входить с паролями &unix;. Если файл существует,
использование S/Key станет обязательно для всех, если только
параметры настройки в файле skey.access не
указывают иначе. В любом случае, пароли &unix; разрешены при входе
с консоли.Вот пример файла настройки skey.access,
иллюстрирующий три наиболее распространенных вида параметров
настройки:permit internet 192.168.0.0 255.255.0.0
permit user fnord
permit port ttyd0Первая строка (permit internet) разрешает
пользователям, чей IP адрес (который подвержен подделке)
соответствует заданному значению и маске, входить с использованием
паролей &unix;. Это должно рассматриваться не как механизм
безопасности, а как напоминание пользователям, что они работают через
небезопасное соединение и должны использовать для аутентификации
S/Key.Вторая строка (permit user) позволяет
определенным пользователям, в данном случае
fnord, всегда использовать пароли &unix;.
Вообще говоря, это должно использоваться только для тех, кто
не может использовать программу key, например
если они работают с простых терминалов или необучаемы.Третья строка (permit port) позволяет всем
пользователям, вошедшим с определенного терминала использовать
пароли &unix;; этот параметр должен использоваться для подключений
по dial-up.OPIE может ограничивать использование паролей &unix; на основе IP
адреса как и S/Key. Соответствующий файл называется
/etc/opieaccess, он существует по умолчанию в
- FreeBSD 5.0 и более современных системах. Обратитесь к
+ &os; 5.0 и более современных системах. Обратитесь к
&man.opieaccess.5; за более подробной информацией об этом файле и о
предосторожностях, которые вы должны предпринять при использовании
этого файла.Вот пример файла opieaccess:permit 192.168.0.0 255.255.0.0Эта строка позволяет пользователям, чей IP адрес (который
подвержен подделке) соответствует указанному значению и маске,
входить с паролем &unix;.Если ни одно из правил в opieaccess не
сработало, поведением по умолчанию является запрет всех не-OPIE
входов.TomRhodesНаписал: TCP WrappersTCP WrappersКаждый, кто знаком с &man.inetd.8;, возможно когда-то слышал
о TCP Wrappers. Но немногие полностью
понимают их полезность в сетевой среде: большинство
используют брандмауэр. Хотя его применимость очень широка,
есть вещи, с которыми брандмауэр не может работать, такие
как отправка текста обратно вызывающей стороне. Программное
обеспечение уровня TCP может делать это
и многое другое. В следующих нескольких разделах обсуждаются
многие возможности TCP Wrappers, и, когда
это необходимо, даются примеры настроек.Программное обеспечение TCP Wrappers
расширяет возможность inetd по поддержке
каждого даемона. С ним становится возможным протоколирование,
возврат сообщений вызывающей стороне, ограничение подключений
внутренней сетью и т.п. Хотя некоторые из этих возможностей
могут быть реализованы брандмауэром, TCP
Wrappers не только предоставляют дополнительный уровень защиты,
но и дают больше контроля над системой, чем это возможно
с брандмауэром.Поскольку рассматривается расширение к настройкам
inetd, предполагается, что читатель ознакомился
с разделом о настройке
inetd.Хотя программы, запускаемые из &man.inetd.8;, на самом деле не
соответствуют термину даемоны, существует традиция
называть их именно так. Этот термин и используется в данном
разделе.Начальная настройкаЕдинственное требование для использования TCP
Wrappers в &os; это наличие в rc.conf
параметров запуска inetd ;
это настройки по умолчанию. Конечно, ожидается также наличие
правильной настройки /etc/hosts.allow,
но &man.syslogd.8; отправит сообщения в системный протокол если
что-то не так.В отличие от других реализаций TCP
Wrappers, использование hosts.deny не
поддерживается. Все параметры настройки должны быть помещены
в /etc/hosts.allow.В простейшей конфигурации, политика подключения сводится к
разрешению или блокированию в зависимости от параметров в
/etc/hosts.allow. Настройка в &os;
по умолчанию заключается в разрешении подключения к любому
даемону, запущенному из inetd. Изменение
этого поведения будет обсуждаться только после рассмотрения
базовой настройки.Базовая настройка обычно принимает форму
daemon : address : action, где
daemon это имя даемона, который запускается
inetd. В поле address
может находиться имя хоста, IP адрес, или
IPv6 адрес, заключенный в квадратные скобки ([ ]).
Поле action может принимать значения allow или deny,
чтобы соответственно разрешать или запрещать доступ.
Помните, что поиск правил производится до первого совпадения.
При обнаружении совпадения применяется соответствующее правило
и поиск прерывается.Существуют и другие параметры, но они будут описаны в следующих
разделах. Простая конфигурация может быть, например, такой:
для разрешения соединений по протоколу POP3
к даемону mail/qpopper,
в hosts.allow необходимо добавить следующие
строки:# This line is required for POP3 connections:
qpopper : ALL : allowПосле добавления этой строки, inetd
необходимо перезапустить. Это можно выполнить командой
&man.kill.1; или скриптом /etc/rc.d/inetd
с параметром restart.Расширенная конфигурацияУ TCP Wrappers имеются дополнительные
параметры; они дают дополнительные возможности контроля над
соединениями. Иногда бывает полезно возвращать комментарий
определенным хостам или при подключении к определенным
даемонам. В других случаях может быть необходимо добавить
запись в лог файл, или отправить письмо администратору.
В определенных ситуациях сервис должен использоваться
только для локальных соединений. Все это возможно с
использованием параметров c шаблонами, символами подстановки
и путем выполнения внешних команд. Следующие два раздела
посвящены этим типам настроек.Внешние командыПредположим ситуацию, в которой соединение должно
быть запрещено, а о причине необходимо сообщить вызывающей
стороне. Как это можно сделать? Соответствующую
возможность предоставляет параметр .
При попытке подключения выполняется команда или скрипт,
заданный этим параметром. Пример дан в файле
hosts.allow:# The rest of the daemons are protected.
ALL : ALL \
: severity auth.info \
: twist /bin/echo "You are not welcome to use %d from %h."В этом примере сообщение,
You are not allowed to use daemon
from hostname. будет возвращено
от всех даемонов, которые не были предварительно настроены
в файле доступа. Обратите внимание, что возвращаемое
сообщение должно быть заключено в
кавычки; из этого правила нет исключений.Возможна реализация DoS атаки, когда группа
атакующих производит множество запросов на подключение.Возможно также использование параметра .
Как и параметр , параметр
подразумевает запрет соединения
и может использоваться для запуска команд или скриптов.
В отличие от , не
отправляет ответ вызывающей стороне. Например, следующая
конфигурация:# We do not allow connections from example.com:
ALL : .example.com \
: spawn (/bin/echo %a from %h attempted to access %d >> \
/var/log/connections.log) \
: denyотклонит все попытки соединения из домена
*.example.com; имя хоста,
IP адрес и даемон протоколируются в файл
/var/log/connections.log.Помимо приведенных выше символов подстановки, например
%a, существует еще несколько символов. Обратитесь к странице
&man.hosts.access.5; справочной системы за полным списком.Параметры – шаблоныДо этого момента в примерах использовался шаблон
ALL. Существуют и другие параметры,
функциональность которых в дальнейшем может быть расширена.
ALL соответствует любому даемону,
домену или IP адресу. Другой доступный
шаблон это PARANOID, который соответствует
хосту, IP адрес которого может быть
подделан. Другими словами, paranoid
может быть использован для определения действия с хостами,
IP адрес которых не соответствует имени
хоста. Вот пример применения этого параметра:# Block possibly spoofed requests to sendmail:
sendmail : PARANOID : denyВ этом примере все запросы на подключения к
sendmail от хостов, IP
адрес которых не соответствует имени хоста, будут
отклонены.Использование PARANOID невозможно,
если у клиента или сервера неправильно настроен
DNS. В таких случаях необходимо
вмешательство администратора.Более подробная информация о шаблонах и их возможностях
дана на странице &man.hosts.access.5; справочной
системы.Для того, чтобы любая выбранная конфигурация заработала,
в hosts.allow необходимо закомментировать
первую строку настройки. В начале раздела об этом не
упоминалось.MarkMurrayПредоставил MarkDapozОригинальный текст предоставил KerberosIVKerberos это сетевая дополнительная система/протокол, которая
делает возможной аутентификацию пользователей через сервисы на защищенном
сервере. Такие сервисы, как удаленный вход, удаленное копирование,
защищенное копирование файлов между системами и другие задачи с
высоким риском становятся допустимо безопасными и более
контролируемыми.Последующие инструкции могут использоваться в качестве руководства
- по настройке поставляемого с FreeBSD Kerberos. Тем не менее, вам
+ по настройке поставляемого с &os; Kerberos. Тем не менее, вам
могут потребоваться страницы справочника полного дистрибутива.Установка KerberosIVMITKerberosIVустановкаKerberos это опциональный компонент &os;. Простейший способ
установки этой программы это выбор krb4 или
krb5 из sysinstall
- во время первой установки FreeBSD. Будет установлен
+ во время первой установки &os;. Будет установлен
eBones (KerberosIV) или Heimdal
(Kerberos5) вариант Kerberos. Включение этих реализаций объясняется
тем, что они разработаны вне США/Канады и доступны вне этих стран,
поскольку на них не влияют ограничения на экспорт криптографического
кода из США.Кроме того, реализация MIT Kerberos доступна из коллекции портов
в виде пакета
security/krb5.Создание базы данныхЭто необходимо сделать только на сервере Kerberos. Во-первых,
убедитесь что не осталось старой базы данных Kerberos. Войдите
в каталог /etc/kerberosIV и убедитесь, что в нем
находятся только эти файлы:&prompt.root; cd /etc/kerberosIV
&prompt.root; ls
README krb.conf krb.realmsЕсли присутствуют еще какие-то файлы (такие как
principal.* или master_key),
используйте команду kdb_destroy для удаления старой
базы данных Kerberos, или, если Kerberos не запущен, просто удалите
эти файлы.Затем отредактируйте файлы krb.conf и
krb.realms, введя ваши данные. В этом примере
уникальный идентификатор EXAMPLE.COM, сервер
grunt.example.com. Отредактируем или
создадим файл krb.conf:&prompt.root; cat krb.conf
EXAMPLE.COM
EXAMPLE.COM grunt.example.com admin server
CS.BERKELEY.EDU okeeffe.berkeley.edu
ATHENA.MIT.EDU kerberos.mit.edu
ATHENA.MIT.EDU kerberos-1.mit.edu
ATHENA.MIT.EDU kerberos-2.mit.edu
ATHENA.MIT.EDU kerberos-3.mit.edu
LCS.MIT.EDU kerberos.lcs.mit.edu
TELECOM.MIT.EDU bitsy.mit.edu
ARC.NASA.GOV trident.arc.nasa.govВ этом примере другие идентификаторы введены для иллюстрации
настройки c несколькими хостами. С целью упрощения
настройки вы можете не включать их.Первая строка содержит идентификатор, под которым работает эта
система. Остальные строки связывают идентификаторы с именами хостов.
Сначала указывается идентификатор, затем хост под этим
идентификатором, работающий как центр распространения
ключей. Слова admin server с последующим
именем хоста означают, что этот хост также является сервером
администрирования базы данных. За дальнейшей информацией об этих
терминах обратитесь к страницам справочника по Kerberos.Мы добавили grunt.example.com
к идентификатору EXAMPLE.COM и кроме того
сопоставили всем хостам в домене
.example.com идентификатор
EXAMPLE.COM. Файл
krb.realms будет выглядеть так:&prompt.root; cat krb.realms
grunt.example.com EXAMPLE.COM
.example.com EXAMPLE.COM
.berkeley.edu CS.BERKELEY.EDU
.MIT.EDU ATHENA.MIT.EDU
.mit.edu ATHENA.MIT.EDUКак и в предыдущем примере, другие идентификаторы добавлены только
для примера. С целью упрощения настройки вы можете не включать
их.В первой строке определенная система
сопоставляется с идентификатором. В остальных строках показано,
сопоставить идентификатору остальные системы определенного
поддомена.Теперь мы готовы к созданию базы данных. Потребуется всего лишь
запустить сервер Kerberos (или центр распространения ключей).
Используйте для этого kdb_init:&prompt.root; kdb_initRealm name [default ATHENA.MIT.EDU ]:EXAMPLE.COM
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Введите главный ключ Kerberos:Теперь мы должны сохранить ключ, чтобы сервера на локальных
компьютерах могли его взять. Используйте для этого команду
kstash:&prompt.root; kstashEnter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!Этой командой зашифрованный главный пароль сохранен в
/etc/kerberosIV/master_key.Запуск KerberosKerberosIVпервый запускДля каждой системы, защищаемой Kerberos, в базу данных должны
быть добавлены две записи. Это kpasswd и
rcmd. Они добавляются вместе с именем
системы.Эти даемоны, kpasswd и
rcmd позволяют другим системам изменять
пароли Kerberos и запускать такие команды как &man.rcp.1;,
&man.rlogin.1;, &man.rsh.1;.Теперь добавим эти записи:&prompt.root; kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name:passwdInstance:grunt
<Not found>, Create [y] ?y
Principal: passwd, Instance: grunt, kdc_key_ver: 1
New Password: <---- enter RANDOM here
Verifying password
New Password: <---- enter RANDOM here
Random password [y] ?y
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?Max ticket lifetime (*5 minutes) [ 255 ] ?Attributes [ 0 ] ?
Edit O.K.
Principal name:rcmdInstance:grunt
<Not found>, Create [y] ?
Principal: rcmd, Instance: grunt, kdc_key_ver: 1
New Password: <---- enter RANDOM here
Verifying password
New Password: <---- enter RANDOM here
Random password [y] ?
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?Max ticket lifetime (*5 minutes) [ 255 ] ?Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- null entry here will cause an exitСоздание файла настройки сервераТеперь необходимо создать все записи сервисов, которые были
определены для каждого компьютера. Используем для этого команду
ext_srvtab. Будет создан файл, который должен
быть скопирован или перемещен безопасным способом
в каталог /etc/kerberosIV каждого Kerberos
клиента. Этот файл должен присутствовать на каждом сервере и
клиенте, он необходим для работы Kerberos.&prompt.root; ext_srvtab gruntEnter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Generating 'grunt-new-srvtab'....Эта команда создаст временный файл, который должен быть
переименован в srvtab, чтобы серверы смогли
обратиться к нему. Используйте команду &man.mv.1; для перемещения
его в исходной системе:&prompt.root; mv grunt-new-srvtab srvtabЕсли файл предназначен для клиентской системы, и сеть не
безопасна, скопируйте
client-new-srvtab
на съемный носитель и перенесите файл с его помощью. Убедитесь, что
переименовали его в srvtab в каталоге
/etc/kerberosIV клиента, и что режим доступа к
нему 600:&prompt.root; mv grumble-new-srvtab srvtab
&prompt.root; chmod 600 srvtabПополнение базы данныхТеперь необходимо добавить в базу данных пользователей.
Во-первых, создадим запись для пользователя jane.
Используйте команду kdb_edit:&prompt.root; kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name:janeInstance:
<Not found>, Create [y] ?y
Principal: jane, Instance: , kdc_key_ver: 1
New Password: <---- enter a secure password here
Verifying password
New Password: <---- re-enter the password here
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?Max ticket lifetime (*5 minutes) [ 255 ] ?Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- null entry here will cause an exitТестирование всей системыВо-первых, запустите даемоны Kerberos. При правильном
редактировании файла /etc/rc.conf они запустятся
автоматически при перезагрузке. Это необходимо только на сервере
Kerberos. Клиенты Kerberos получат все необходимые данные из
каталога /etc/kerberosIV.&prompt.root; kerberos &
Kerberos server starting
Sleep forever on error
Log file is /var/log/kerberos.log
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Current Kerberos master key version is 1
Local realm: EXAMPLE.COM
&prompt.root; kadmind -n &
KADM Server KADM0.0A initializing
Please do not use 'kill -9' to kill this job, use a
regular kill instead
Current Kerberos master key version is 1.
Master key entered. BEWARE!Теперь для получения доступа через созданного пользователя
jane используйте kinit:&prompt.user; kinit jane
MIT Project Athena (grunt.example.com)
Kerberos Initialization for "jane"
Password:Попробуйте просмотреть имеющиеся данные с помощью
klist:&prompt.user; klist
Ticket file: /tmp/tkt245
Principal: jane@EXAMPLE.COM
Issued Expires Principal
Apr 30 11:23:22 Apr 30 19:23:22 krbtgt.EXAMPLE.COM@EXAMPLE.COMТеперь попробуйте изменить пароль с помощью &man.passwd.1;,
чтобы убедиться, что даемон kpasswd
может получить информацию из базы данных Kerberos:&prompt.user; passwd
realm EXAMPLE.COM
Old password for jane:New Password for jane:
Verifying password
New Password for jane:
Password changed.Включение suKerberos позволяет назначить каждому
пользователю, который нуждается в привилегиях
root, свой собственный
пароль &man.su.1;. Необходимо добавить учетную запись, которой
разрешено получать root доступ через &man.su.1;.
Это делается путем связывания учетной записи root
с пользовательской учетной записью. Создадим в базе данных Kerberos
запись jane.root с помощью
kdb_edit:&prompt.root; kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name:janeInstance:root
<Not found>, Create [y] ? y
Principal: jane, Instance: root, kdc_key_ver: 1
New Password: <---- enter a SECURE password here
Verifying password
New Password: <---- re-enter the password here
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?Max ticket lifetime (*5 minutes) [ 255 ] ?12 <--- Keep this short!
Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- null entry here will cause an exitТеперь проверим работоспособность этой записи:&prompt.root; kinit jane.root
MIT Project Athena (grunt.example.com)
Kerberos Initialization for "jane.root"
Password:Необходимо добавить пользователя к root
файлу .klogin:&prompt.root; cat /root/.klogin
jane.root@EXAMPLE.COMТеперь попробуйте выполнить &man.su.1;:&prompt.user; suPassword:и посмотрите на имеющиеся данные:&prompt.root; klist
Ticket file: /tmp/tkt_root_245
Principal: jane.root@EXAMPLE.COM
Issued Expires Principal
May 2 20:43:12 May 3 04:43:12 krbtgt.EXAMPLE.COM@EXAMPLE.COMИспользование других командВ примере выше мы создали запись (principal)
jane с доступом к root
(instance). Она основана на пользователе с таким же именем, как
и идентификатор, что принято Kerberos по умолчанию;
<principal>.<instance> в форме
<username>.root
позволяет использовать &man.su.1; для доступа к
root, если соответствующие записи находятся
в файле .klogin домашнего каталога
root:
&prompt.root; cat /root/.klogin
jane.root@EXAMPLE.COMПодобно этому, если в файле .klogin
из домашнего каталога пользователя есть строки в форме:&prompt.user; cat ~/.klogin
jane@EXAMPLE.COM
jack@EXAMPLE.COMэто позволит любому с идентификатором
EXAMPLE.COM, кто аутентифицировался как
jane или jack
(с помощью команды kinit, см. выше)
получить доступ к учетной пользователя jane
или файлам этой системы (grunt) через
&man.rlogin.1;, &man.rsh.1; или &man.rcp.1;.Например, jane может входить в другую систему
используя Kerberos:&prompt.user; kinit
MIT Project Athena (grunt.example.com)
Password:
&prompt.user; rlogin grunt
Last login: Mon May 1 21:14:47 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995Или jack входит в учетную запись
jane's на этом же компьютере
(файл .kloginjane
настроен как показано выше, и в Kerberos настроена учетная
запись jack):&prompt.user; kinit
&prompt.user; rlogin grunt -l jane
MIT Project Athena (grunt.example.com)
Password:
Last login: Mon May 1 21:16:55 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995TillmanHodgsonПредоставил MarkMurrayОригинальный материал предоставил Kerberos5Все релизы &os; после &os;-5.1 включают поддержку только
Kerberos5. Таким образом,
Kerberos5 это единственная включаемая в
поставку версия и его конфигурация похожа на
KerberosIV во многих аспектах. Эта
информация применима только к Kerberos5
из релизов после &os;-5.0. Пользователи, желающие использовать
пакет KerberosIV, могут установить его из
порта security/krb4.Kerberos это дополнительная сетевая
система/протокол, позволяющая пользователям авторизоваться через
защищенные сервисы на защищенном сервере. Такие сервисы как
удаленный вход, удаленное копирование, защищенное копирование файлов
между системами и другие задачи с высоким риском становятся
допустимо безопасными и более контролируемыми.Kerberos может быть описана как
прокси система идентификации-проверки. Она также может быть описана
как защищенная внешняя система аутентификации.
Kerberos предоставляет только одну функцию
— защищенную аутентификацию пользователей сети. Он не предоставляет
Он не предоставляет функций авторизации (что разрешено делать
пользователям) или функций аудита (какой пользователь что делает).
После того, как клиент и сервер использовали
Kerberos для идентификации, они могут
зашифровать все соединения для гарантирования собственной безопасности и
целостности данных.Следовательно крайне рекомендуется использовать
Kerberos с другими методами безопасности,
предоставляющими сервисы авторизации и аудита.Последующие инструкции могут использоваться в качестве руководства
по настройке Kerberos, поставляемого с &os;.
Тем не менее, вам потребуется обратиться к соответствующим страницам
справочника за полным описанием.В целях демонстрации установки Kerberos,
будут применены следующие обозначения:DNS домен (зона)
example.org.Уникальный идентификатор Kerberos
EXAMPLE.ORG.Используйте действующие имена доменов при настройке
Kerberos даже если вы будете использовать
его во внутренней сети. Это позволит избежать проблем с
DNS и гарантирует возможность связи с
Kerberos под другими
идентификаторами.ИсторияKerberos5историяKerberos был создан
MIT в качестве решения проблем с безопасностью
сети. Протокол Kerberos использует
стойкую криптографию, так что клиент может идентифицироваться на
сервере (и обратно) через незащищенное сетевое соединение.Kerberos это и имя сетевого протокола
аутентификации и общий термин для описания программ, где он
реализован (например, Kerberos telnet).
Текущая версия протокола 5 описана в
RFC 1510.Доступно несколько свободных реализаций этого протокола,
работающих на множестве операционных систем. Massachusetts
Institute of Technology (MIT), где
Kerberos был первоначально разработан,
продолжает разрабатывать собственный пакет
Kerberos. Он обычно использовался
в США как криптографический продукт,
и в этом качестве попадал под действие ограничений на экспорт.
MIT Kerberos
доступен в виде порта (security/krb5). Heimdal
Kerberos это другая реализация версии
5, которая разрабатывалась исключительно вне США
для обхода экспортных ограничений (и поэтому часто включалась в
некоммерческие реализации &unix;). Heimdal
Kerberos доступен в виде порта
(security/heimdal),
его минимальный комплект включен в базовую установку &os;.В целях получения наибольшей аудитории, в этих инструкциях
предполагается использование Heimdal включаемого в &os;.Настройка Heimdal KDCKerberos5настройка центра распространения ключейЦентр распространения ключей (Key Distribution Center,
KDC) это централизованный сервис аутентификации,
предоставляемый Kerberos —
это компьютер, который предоставляет доступ через
Kerberos. KDC
считается доверяемым всеми другими компьютерами с определенным
идентификатором Kerberos и поэтому
к нему предъявляются высокие требования безопасности.Имейте ввиду, что хотя работа сервера
Kerberos требует очень немного
вычислительных ресурсов, из соображений безопасности для него
рекомендуется отдельный компьютер, работающий только в качестве
KDC.Перед началом настройки KDC, убедитесь что в
файле /etc/rc.conf содержатся правильные
настройки для работы в качестве KDC (вам может
потребоваться изменить пути в соответствии с собственной
системой):kerberos5_server_enable="YES"
kadmind5_server_enable="YES"
kerberos_stash="YES"Параметр существует только в
&os; 4.X.Затем приступим к редактированию файла настройки
Kerberos,
/etc/krb5.conf:[libdefaults]
default_realm = EXAMPLE.ORG
[realms]
EXAMPLE.ORG = {
kdc = kerberos.example.org
+ admin_server = kerberos.example.org
}
[domain_realm]
.example.org = EXAMPLE.ORGОбратите внимание что в файле /etc/krb5.conf
подразумевается наличие у KDC полного имени
kerberos.example.org. Вам потребуется
добавить CNAME (синоним) к файлу зоны, если у
KDC другое имя.Для больших сетей с правильно настроенным сервером
BIND DNS пример выше
может быть урезан до:[libdefaults]
default_realm = EXAMPLE.ORGСо следующими строками, добавленными в файл зоны
example.org:_kerberos._udp IN SRV 01 00 88 kerberos.example.org.
_kerberos._tcp IN SRV 01 00 88 kerberos.example.org.
_kpasswd._udp IN SRV 01 00 464 kerberos.example.org.
_kerberos-adm._tcp IN SRV 01 00 749 kerberos.example.org.
_kerberos IN TXT EXAMPLE.ORG.
+
+ Чтобы клиенты могли найти сервисы
+ Kerberos,
+ необходимо наличие или полностью
+ настроенного /etc/krb5.conf или минимально
+ настроенного /etc/krb5.conf
+ и правильно настроенного DNS
+ сервера.
+
+
Создадим теперь базу данных Kerberos.
Эта база данных содержит ключи всех основных хостов, зашифрованных
с помощью главного пароля. Вам не требуется помнить этот пароль,
он хранится в файле (/var/heimdal/m-key).
Для создания главного ключа запустите kstash
и введите пароль.Как только будет создан главный ключ, вы можете инициализировать
базу данных с помощью программы kadmin с ключом
-l (означающим local). Этот
ключ сообщает kadmin обращаться к файлам базы
данных непосредственно вместо использования сетевого сервиса
kadmind. Это помогает решить проблему
курицы и яйца, когда обращение идет к еще не созданной базе
данных. Как только вы увидите приглашение kadmin,
используйте команду init для создания базы
данных идентификаторов.Наконец, оставаясь в приглашении kadmin,
создайте первую запись с помощью команды add.
Оставьте неизменными параметры по умолчанию, вы всегда сможете
изменить их позже с помощью команды modify.
Обратите внимание, что вы всегда можете использовать команду
? для просмотра доступных параметров.Пример создания базы данных показан ниже:&prompt.root; kstash
Master key: xxxxxxxx
Verifying password - Master key: xxxxxxxx
&prompt.root; kadmin -l
kadmin> init EXAMPLE.ORG
Realm max ticket life [unlimited]:
kadmin> add tillman
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Attributes []:
Password: xxxxxxxx
Verifying password - Password: xxxxxxxxТеперь пришло время запустить сервисы KDC.
Выполните команды /etc/rc.d/kerberos start и
/etc/rc.d/kadmind start для запуска сервисов.
Ни один из поддерживающих Kerberos
даемонов на этот момент запущен не будет, но у вас должна быть
возможность убедиться в том, что KDC функционирует
путем получения списка доступа для пользователя, которого вы только
что самостоятельно создали из командной строки самого
KDC:&prompt.user; k5init tillman
tillman@EXAMPLE.ORG's Password:
&prompt.user; k5list
Credentials cache: FILE:/tmp/krb5cc_500
Principal: tillman@EXAMPLE.ORG
Issued Expires Principal
Aug 27 15:37:58 Aug 28 01:37:58 krbtgt/EXAMPLE.ORG@EXAMPLE.ORGСервер Kerberos с сервисами
HeimdalKerberos5включение сервисовДля начала нам потребуется копия файла настройки
Kerberos,
/etc/krb5.conf.
Просто скопируйте его с KDC на клиентский
компьютер безопасным способом (используя сетевые утилиты, такие
как &man.scp.1;, или физически, с помощью дискеты).Затем вам понадобится файл /etc/krb5.keytab.
Это основное различие между сервером, поддерживающим
Kerberos и рабочими станциями —
на сервере должен быть файл keytab.
В этом файле находится центральный ключ сервера, который позволяет
KDC проверять все другие идентификаторы. Он
должен быть помещен на сервер безопасным способом, поскольку
безопасность сервера может быть нарушена, если ключ станет
общедоступен. Это означает, что его передача через незашифрованный
канал, такой как FTP — очень плохая
идея.Обычно перенос файла keytab на сервер
производится с помощью программы kadmin.
Это удобно, поскольку вам потребуется также создать запись хоста
(KDC часть krb5.keytab)
с помощью kadmin.Обратите внимание, что должны быть уже зарегистрированы в
системе и необходимо наличие прав на использование интерфейса
kadmin в файле kadmind.acl.
Обратитесь к разделу Remote administration в info
страницах Heimdal (info heimdal) за деталями по
составлению списка доступа. Если вы не хотите включать удаленный
доступ kadmin, можете просто подключиться к
KDC через защищенное соединение (локальную
консоль, &man.ssh.1; или Kerberos
&man.telnet.1;) и выполнять администрирование локально с помощью
kadmin -l.После добавления файла /etc/krb5.conf,
вы можете использовать kadmin с сервера
Kerberos. Команда
add --random-key позволит вам добавить запись
для сервера, а команда ext позволит перенести
эту запись в собственный keytab файл сервера. Например:&prompt.root; kadmin
kadmin> add --random-key host/myserver.example.org
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Attributes []:
kadmin> ext host/myserver.example.org
kadmin> exitОбратите внимание, что команда ext
(сокращение от extract) сохраняет полученный ключ в
файле /etc/krb5.keytab по умолчанию.Если на KDC не запущен
kadmind (возможно по соображениям безопасности)
и вы не можете получить доступ к kadmin
удаленно, возможно добавление записи хоста
(host/myserver.EXAMPLE.ORG) непосредственно
на KDC с последующим извлечением ее во временный
файл (и перезаписью /etc/krb5.keytab на
KDC) примерно так:&prompt.root; kadmin
kadmin> ext --keytab=/tmp/example.keytab host/myserver.example.org
kadmin> exitЗатем вы можете скопировать keytab на сервер защищенным способом
(например, используя scp или дискету).
Убедитесь, что используемое имя keytab не совпадает с именем
по умолчанию во избежание перезаписывания keytab на
KDC.Теперь ваш сервер может связываться с KDC
(добавлен файл krb5.conf) и идентифицировать
себя (добавлен файл krb5.keytab). Теперь вы
готовы к включению некоторых сервисов
Kerberos. В этом примере мы включим
сервис telnet, поместив в
/etc/inetd.conf нижеприведенную строку и
перезапустив сервис &man.inetd.8; командой
/etc/rc.d/inetd restart:telnet stream tcp nowait root /usr/libexec/telnetd telnetd -a userОчень важно установить ключ -a (тип
аутентификации) в user. Обратитесь к странице справочника
&man.telnetd.8; за подробной информацией.Клиент Kerberos с HeimdalKerberos5настройка клиентаНастройка клиентского компьютера почти тривиально проста.
Как только настройка Kerberos закончена,
вам потребуется только файл настройки
Kerberos,
/etc/krb5.conf. Просто скопируйте его
безопасным способом на клиентский компьютер с
KDC.Протестируйте клиентский компьютер, попытавшись использовать
kinit, klist, и
kdestroy для получения, отображения и удаления
списка доступа. Соединитесь с Kerberos
севером используя клиент Kerberos, если
соединение не работает и получение доступа является проблемой,
это скорее всего проблема сервера, а не клиента или
KDC.При тестировании приложения вроде telnet,
попробуйте использовать программу перехвата пакетов (такую
как &man.tcpdump.1;), чтобы убедиться, что ваш пароль не передается
незашифрованным. Попробуйте использовать telnet
с параметром -x, чтобы зашифровать весь поток
данных (подобно ssh).Основные клиентские приложения
Kerberos (традиционно называющиеся
kinit, klist,
kdestroy, и
kpasswd) находятся в базовой установке &os;.
Обратите внимание, что в &os; версий до 5.0 они были переименованы
в k5init, k5list,
k5destroy, k5passwd, и
k5stash (хотя их обычно использовали лишь
однократно).Различные неосновные клиентские приложения
Kerberos также устанавливаются по
умолчанию. Здесь проявляется минимальность
базовой установки Heimdal: telnet это
единственное приложение, поддерживающее
Kerberos.Порт Heimdal добавляет некоторые отсутствующие клиентские
приложения: поддерживающие
Kerberos версии
ftp, rsh,
rcp, rlogin, и некоторые
другие реже используемые программы. Порт MIT
также содержит полный пакет клиентских приложений
Kerberos.Пользовательские файлы настройки: .k5login
и .k5usersKerberos5пользовательские файлы настройкиУчетные записи пользователя в
Kerberos (например
tillman@EXAMPLE.ORG) обычно связаны с
локальными учетными записями (например с локальной учетной записью6
tillman). Клиентские приложения, такие как
telnet, обычно не требуют указания имени
пользователя или учетной записи.Тем не менее, время от времени вам может потребоваться дать
доступ к локальной учетной записи кому-то, у кого нет
соответствующей учетной записи Kerberos.
Например, пользователю tillman@EXAMPLE.ORG
может потребоваться доступ к локальной учетной записи
webdevelopers. Другим учетным записям
также может потребоваться доступ к этой локальной учетной
записи.Файлы .k5login и
.k5users, помещенные в домашний каталог
пользователя, могут быть использованы подобно действенной
комбинации .hosts и
.rhosts для решения этой проблемы.
Например, файл .k5login
со следующим содержанием:tillman@example.org
jdoe@example.orgпомещен в домашний каталог локального пользователя
webdevelopers, то обе упомянутые учетные
записи получат доступ к этой учетной записи без необходимости
наличия общего пароля.Рекомендуется прочитать страницу справочника по этим командам.
Обратите внимание, что страница справочника о
ksu содержит информацию по
.k5users.Подсказки, советы и решение проблем с
KerberosKerberos5решение проблемПри использовании портов как Heimdal так и
MIT Kerberos
убедитесь, что в PATH версии
Kerberos клиентов указаны перед
их версиями в базовой системе.Все ли компьютеры в пределах данного realm
синхронизированы по времени? Если нет, аутентификация может
завершиться неудачно. описывает
как синхронизировать часы с использованием
NTP.MIT и Heimdal успешно взаимодействуют.
За исключением kadmin, протокол для которого
не стандартизован.Если вы изменяете hostname, потребуется также изменить
учетную запись host/ и обновить keytab.
Это также необходимо для специальных записей в keytab, таких
как www/ запись модуля Apache
www/mod_auth_kerb.
Все хосты под общим идентификатором должны разрешаться
DNS (прямое и обратное разрешение), или
как минимум через /etc/hosts. Записи
CNAME будут работать, но записи A и PTR должны быть корректны
и находиться на своем месте. Сообщение об ошибке не всегда
интуитивно понятно:
Kerberos5 refuses authentication because Read req
failed: Key table entry not found.Некоторые операционные системы, способные работать в качестве
клиентов KDC не устанавливают права
для ksu в setuid root.
Это означает, что ksu не работает, что хорошо
является хорошей идеей для безопасности, но неудобно. Это не
ошибка KDC.С MIT
Kerberos, если вы хотите продлить
действие доступа до значения большего, чем десять часов по
умолчанию, используйте команду
modify_principal в
kadmin для изменения maxlife доступа к самой
учетной записи и к учетной записи krbtgt.
Затем возможно использование kinit
с параметром -l для запроса доступа с большим
временем действия.Если вы запускаете перехватчик пакетов на
KDC для разрешения проблем, а затем
запускаете kinit с рабочей станции, то
увидите, что TGT посылается непосредственно
при запуске kinit — даже до того, как
вы введете пароль! Объяснение в том, что сервер
Kerberos свободно распространяет
TGT (Ticket Granting Ticket) на каждый
неавторизованный запрос; однако, каждый TGT
зашифрован ключом, полученным из пароля пользователя.
Следовательно, когда пользователь вводит свой пароль, он не
отправляется на KDC, а используется для
расшифровка TGT, который уже получен
kinit. Если в процессе расшифровки
получается правильный билет с правильным значением времени,
у пользователя есть действующее удостоверение.
Это удостоверение содержит ключ сессии для установления
безопасного соединения с сервером
Kerberos, как и действующий
TGT, зашифрованный ключом сервера
Kerberos. Второй уровень шифрования
недоступен пользователю, но позволяет серверу
Kerberos проверять правильность
каждого TGT.Если вы хотите установить большое время жизни доступа
(например, неделю), и используете
OpenSSH для соединения с компьютером,
где хранится билет, убедитесь, что параметр
Kerberos
установлен в
no в файле sshd_config,
или билеты будут уничтожены при выходе из сеанса.Запомните, что время жизни билетов хостов больше.
Если время жизни билета для учетной записи пользователя
составляет неделю, а время жизни учетной записи хоста, к
которому вы подсоединяетесь девять часов, учетная запись хоста
в кэше устареет и кэш билетов будет работать не так, как
ожидается.При настройке файла krb5.dict на
предотвращение использования определенных плохих паролей
(страница справочника для kadmind кратко
рассказывает об этом), запомните, что это применимо только
к учетным записям, для которых действует политика паролей.
Формат файла krb5.dict прост: одно слово
на строку. Может помочь создание символической ссылки на
/usr/share/dict/words.Отличия от порта MITОсновное различие между установками MIT и
Heimdal относится к программе kadmin,
которая имеет другой (но эквивалентный) набор команд и
использует другой протокол. Если ваш KDC
работает на MIT, вы не сможете использовать
kadmin для удаленного администрирования
KDC (и наоборот, по этой же причине).Опции командной строки клиентов также могут немного отличаться
для одинаковых задач. Рекомендуется следование инструкциям
на MIT Kerberos
веб сайте ().
Будьте внимательны при определении PATH:
порт MIT устанавливается по умолчанию в
/usr/local/, и если в PATH
вначале указаны системные каталоги, вместо приложений
MIT могут быть запущены системные
приложения.С портом MIT
security/krb5, предоставляемым
&os;, убедитесь что файл
/usr/local/share/doc/krb5/README.FreeBSD
установлен портом, если вы хотите понять почему вход через
telnetd и klogind
иногда происходит так странно. Наиболее важно, исправление
incorrect permissions on cache file требует
использования бинарного файла login.krb5
для аутентификации, чтобы права на переданное удостоверение
передавались правильно.Преодоление ограничений, обнаруженных в
KerberosKerberos5ограничения и недостаткиKerberos это все или ничегоКаждый сервис, работающий в сети, должен быть модифицирован
для работы с Kerberos (или другим
способом защищен от атак по сети) или удостоверения пользователей
могут быть украдены или использованы повторно. В качестве примера
может быть приведено использование
Kerberos версий
оболочек для удаленной работы (например через
rsh и telnet), при
наличии POP3 сервера, получающего пароли в
незашифрованном виде.Kerberos предназначен для
однопользовательских рабочих станцийВ многопользовательской среде
Kerberos менее безопасен.
Это потому, что он хранит билеты в каталоге
/tmp, которая доступна для чтения всем.
Если пользователь работает с несколькими другими пользователями
одновременно на одном компьютере (т.е. в многопользовательской
среде), возможна кража (копирование) билета другим
пользователем.Решить проблему можно с помощью параметра командной
строки -c или (предпочтительно) с помощью
переменной окружения KRB5CCNAME, но это делается
редко. Для преодоления ограничения достаточно сохранять билет
в домашнем каталоге пользователя и использовать простые
ограничения на доступ к файлам.От KDC зависит вся системаАрхитектура системы такова, что KDC должен
быть максимально защищен, поскольку главный пароль базы данных
содержится в нем. На KDC не должно быть
запущено никаких других сервисов и он должен быть защищен
физически. Опасность велика, поскольку
Kerberos хранит все пароли
зашифрованными одним ключом (главным ключом),
который хранится в файле на KDC.Хорошей новостью является то, что кража главного ключа
не станет такой проблемой, как может показаться. Главный ключ
используется только для шифрования базы данных
Kerberos и в качестве seed для
генератора случайных чисел. Поскольку доступ к
KDC защищен, атакующий мало что сможет сделать
с главным ключом.Кроме того, если KDC станет недоступен
(возможно по причине атак DoS или проблем в сети) сетевые сервисы
будет невозможно использовать, поскольку аутентификация не
может быть выполнена.
Уменьшить последствия можно при наличии нескольких
KDC (один главный и один или несколько
резервных) и с аккуратно реализованной резервной аутентификацией
(отлично подойдет PAM).Недостатки KerberosKerberos позволяет пользователям,
хостам и сервисам производить аутентификацию друг друга.
В нем нет механизма аутентификации KDC
для пользователей, хостов или сервисов. Это означает, что
поддельный kinit (например) может записывать
все имена пользователей и паролей. Помочь решить проблему может
security/tripwire или
другой инструмент проверки целостности файловой системы.Ресурсы и информация для дальнейшего изученияKerberos5внешние ресурсыKerberos FAQРазработка
системы аутентификации: диалог в четырех сценахRFC 1510,
Kerberos Network Authentication Service
(V5)Домашняя страница
MIT
KerberosДомашняя страница
Heimdal Kerberos
- Gary
- Palmer
- Предоставили
+ Joseph J.
+ Barbish
+ Предоставил
+
+
- Alex
- Nash
+ Brad
+ Davis
+ Преобразовал в SGML и обновил
- Межсетевые экраны
- firewall
+ Брандмауэры
+
+ брандмауэрбезопасность
- межсетевые экраны
-
-
- Интерес к межсетевым экранам (брандмауэр, firewall) со стороны людей,
- подключенных к интернет, все возрастает и появились даже приложения
- для локальной сети, предоставляющие повышенный уровень безопасности.
- В этом разделе мы надеемся изложить что такое межсетевые экраны, как
- их использовать, и как использовать возможности, предоставляемые
- ядром FreeBSD для их реализации.
-
-
- Люди часто думают, что наличие межсетевого экрана между
- внутренней сетью и Большим плохим интернетом решит все
- их проблемы безопасности. Это может помочь, но плохо настроенный
- межсетевой экран представляет более серьезную угрозу безопасности,
- чем его полное отсутствие. Межсетевой экран добавляет еще один
- уровень безопасности вашим системам, но не может остановить
- проникновение решительно настроенного взломщика в вашу сеть. Если
- вы снижаете внутреннюю безопасность системы, поскольку верите в
- надежность межсетевого экрана, это существенно упрощает работу
- взломщика.
-
-
+ брандмауэры
+
- Что такое межсетевой экран?
-
- Есть два четко различающихся типа межсетевых экранов, повседневно
- используемых в современном интернет. Первый тип правильнее называть
- маршрутизатор с фильтрацией пакетов. Этот тип
- межсетевого экрана работает на машине, подключенной к нескольким сетям
- и применяет к каждому пакету набор правил, определяющий переправлять
- ли этот пакет или блокировать. Второй тип, известный как
- прокси сервер, реализован в виде даемонов,
- выполняющих аутентификацию и пересылку пакетов, возможно на
- машине с несколькими сетевыми подключениями, где пересылка
- пакетов в ядре отключена.
-
- Иногда эти два типа межсетевых экранов используются вместе, так
- что только определенной машине (известной как защитный
- хост (bastion host)) позволено отправлять пакеты через
- фильтрующий маршрутизатор во внутреннюю сеть. Прокси сервисы работают
- на защитном хосте, что обычно более безопасно, чем обычные механизмы
- аутентификации.
-
- FreeBSD поставляется с встроенным в ядро фильтром пакетом
- (известным как IPFW), ему будет посвящена оставшаяся часть раздела.
- Прокси серверы могут быть собраны на FreeBSD из программного
- обеспечения сторонних разработчиков, но их слишком много и невозможно
- описать их в этом разделе.
-
-
- Маршрутизаторы с фильтрацией пакетов
-
- Маршрутизатор это машина, пересылающая пакеты между двумя или
- несколькими сетями. Маршрутизатор с фильтрацией пакетов
- запрограммирован на сравнение каждого пакета со списком правил
- перед тем как решить, пересылать его или нет. Большинство
- современного программного обеспечения маршрутизации имеет
- возможности фильтрации, и по умолчанию пересылаются все пакеты.
- Для включения фильтров, вам потребуется определить набор
- правил.
-
- Для определения того, должен ли быть пропущен пакет, межсетевой
- экран ищет в наборе правило, совпадающее с содержимым заголовков
- пакета. Как только совпадение найдено, выполняется действие,
- присвоенное данному правилу. Действие может заключаться в
- отбрасывании пакета, пересылке пакета, или даже в отправлении
- ICMP сообщения в адрес источника. Учитывается только первое
- совпадение, поскольку правила просматриваются в определенном
- порядке. Следовательно, список правил можно назвать
- цепочкой правил.
-
- Критерий отбора пакетов зависит от используемого программного
- обеспечения, но обычно вы можете определять правила, зависящие от
- IP адреса источника пакета, IP адреса назначения, номера порта
- источника пакета, номера порта назначения (для протоколов,
- поддерживающих порты), или даже от типа пакета (UDP, TCP, ICMP,
- и т.д.).
-
-
-
- Прокси серверы
-
- Прокси серверы это компьютеры, где обычные системные даемоны
- (telnetd,
- ftpd, и т.д.) заменены специальными
- серверами. Эти серверы называются прокси
- серверами, поскольку они обычно работают только с
- входящими соединениями. Это позволяет запускать (например)
- telnet прокси сервер на межсетевом
- экране, и делать возможным вход по telnet
- на межсетевой экран, прохождение механизма аутентификации,
- и получение доступа к внутренней сети (аналогично, прокси серверы
- могут быть использованы для выхода во внешнюю сеть).
-
- Прокси серверы обычно лучше защищены, чем другие серверы,
- и зачастую имеют более широкий набор механизмов аутентификации,
- включая системы одноразовых паролей, так что
- даже если кто-то узнает, какой пароль вы использовали, он не
- сможет использовать его для получения доступа к системе,
- поскольку срок действия пароля истекает немедленно после его
- первого использования. Поскольку пароль не дает доступа
- непосредственно к компьютеру, на котором находится прокси-сервер,
- становится гораздо сложнее установить в систему
- backdoor.
-
- Прокси серверы обычно имеют способ дополнительного ограничения
- доступа, так что только определенные хосты могут получить доступ
- к серверам. Большинство также позволяют администратору указывать,
- пользователей и компьютеры, к которым они могут обращаться.
- Опять же доступные возможности в основном зависят от используемого
- программного обеспечения.
-
-
-
-
- Что позволяет делать IPFW?
- ipfw
-
- Программное обеспечение IPFW, поставляемое с
- FreeBSD, это система фильтрации и учета пакетов, находящаяся в ядре
- и снабженная пользовательской утилитой настройки, &man.ipfw.8;.
- Вместе они позволяют определять и просматривать правила, используемые
- ядром при маршрутизации.
-
- IPFW состоит из двух связанных частей. Межсетевой экран
- осуществляет фильтрацию пакетов. Часть, занимающаяся учетом
- IP пакетов, отслеживает использование маршрутизатора на основе
- правил подобных тем, что используются в части межсетевого экрана.
- Это позволяет администратору определять, например, объем трафика,
- полученного маршрутизатором от определенного компьютера, или объем
- пересылаемого WWW трафика.
-
- Благодаря тому, как реализован IPFW, вы можете использовать
- его и на компьютерах, не являющихся маршрутизаторами для фильтрации
- входящих и исходящих соединений. Это особый случай более общего
- использования IPFW, и в этой ситуации используются те же команды
- и техника.
-
-
-
- Включение IPFW в FreeBSD
-
- ipfw
- включение
-
- Поскольку основная часть системы IPFW находится в ядре,
- вам потребуется добавить один или несколько параметров в файл
- настройки ядра, в зависимости от требуемых возможностей, и пересобрать
- ядро. Обратитесь к главе о пересборке ядра () за подробным описанием этой процедуры.
+ Введение
-
- Правилом IPFW по умолчанию является deny ip from any to
- any. Если вы не добавите других правил во время загрузки
- для разрешения доступа, то заблокируете доступ
- к серверу с включенным в ядро межсетевым экраном после перезагрузки.
- Мы предлагаем указать firewall_type=open в
- файле /etc/rc.conf при первоначальном
- добавлении межсетевого экрана, а затем, после тестирования
- его работоспособности, отредактировать правила в файле
- /etc/rc.firewall. Дополнительной
- предосторожностью может быть первоначальная настройка межсетевого
- экрана с локальной консоли, вместо входа через
- ssh. Кроме того, возможна сборка
- ядра с параметрами IPFIREWALL и
- IPFIREWALL_DEFAULT_TO_ACCEPT. В этом случае
- правило IPFW по умолчанию будет изменено на allow ip from
- any to any, что предотвратит возможную блокировку.
-
-
- Существует четыре параметра настройки ядра, относящихся к
- IPFW:
-
-
-
- options IPFIREWALL
+ Все программные брандмауэры (firewall, межсетевой экран)
+ предоставляют некоторый способ фильтрации входящего и исходящего
+ трафика, идущего через систему. Брандмауэр использует один
+ или более наборов правил для проверки сетевых
+ пакетов при их входе или выходе через сетевое соединение, он
+ или позволяет прохождение трафика или блокирует его. Правила
+ брандмауэра могут проверять одну или более характеристик пакетов,
+ включая но не ограничиваясь типом протокола, адресом хоста источника
+ или назначения и портом источника или назначения.
-
- Включает в ядро код для фильтрации пакетов.
-
-
-
-
- options IPFIREWALL_VERBOSE
-
-
- Включает протоколирование пакетов через &man.syslogd.8;.
- Без этого параметра, даже если вы укажете в правилах фильтрации
- протоколировать пакеты, это не сработает.
-
-
+ Брандмауэры серьезно повышают уровень безопасности сети,
+ приложений и сервисов. Они могут быть использованы для
+ выполнения одной или более нижеперечисленных задач:
-
- options IPFIREWALL_VERBOSE_LIMIT=10
-
-
- Ограничивает число пакетов, протоколируемых каждым правилом
- через &man.syslogd.8;. Вы можете использовать этот параметр
- если хотите протоколировать работу межсетевого экрана, но не
- хотите делать возможной DoS атаку путем переполнения
- syslog.
-
- Когда для одного из правил в цепочке достигается
- определенный параметром предел, протоколирование для этого
- правила выключается. Для включения протоколирования,
- вам потребуется сбросить соответствующий счетчик с помощью
- утилиты &man.ipfw.8;:
-
- &prompt.root; ipfw zero 4500
- где 4500 это номер правила, для которого вы хотите
- возобновить протоколирование.
-
-
-
-
- options IPFIREWALL_DEFAULT_TO_ACCEPT
+
+
+ Для защиты и изоляции приложений, сервисов и машин во
+ внутренней сети от нежелательного трафика, приходящего
+ из внешней сети интернет.
+
-
- Изменяет правило по умолчанию с deny на
- allow. Это предотвращает возможное блокирование,
- если ядро загружено с поддержкой IPFIREWALL,
- но межсетевой экран еще не настроен. Этот параметр также
- полезен, если вы используете &man.ipfw.8; в качестве средства
- от определенных проблем по мере их возникновения. Тем не менее,
- используйте параметр с осторожностью, поскольку он открывает
- межсетевой экран и изменяет его поведение.
-
-
-
+
+ Для ограничения или запрещения доступа хостов внутренней
+ сети к сервисам внешней сети интернет.
+
- Предыдущие версии FreeBSD содержали параметр
- IPFIREWALL_ACCT. Этот параметр устарел, поскольку
- код автоматически включает возможность учета.
-
+
+ Для поддержки преобразования сетевых адресов (network
+ address translation, NAT), что позволяет
+ использование во внутренней сети приватных
+ IP адресов (либо через один выделенный
+ IP адрес, либо через адрес из пула
+ автоматически присваиваемых публичных адресов).
+
+
- Настройка IPFW
-
- ipfw
- настройка
-
-
- Настройка программного обеспечения IPFW выполняется с помощью
- утилиты &man.ipfw.8;. Синтаксис этой команды выглядит очень сложным,
- но он становится относительно прост как только вы поймете его
- структуру.
-
- В настоящее время утилита использует четыре различных категории
- команд: добавление/удаление (addition/deletion), просмотр (listing),
- сброс (flushing) и очистка (clearing). Добавление/удаление
- используется для создания правил, определяющих как пакеты принимаются,
- отбрасываются и протоколируются. Просмотр используется для
- определения содержимого набора правил (называемого еще цепочкой) и
- счетчиков пакетов (учет). Сброс используется для удаления всех
- правил цепочки. Очистка используется для обнуления одного или
- нескольких счетчиков.
-
-
- Изменение правил IPFW
-
- Синтаксис этой формы команды такой:
-
- ipfw
- -N
- команда
- номер
- действие
- log
- протокол
- адреса
- параметры
-
-
- При использовании этой формы команды доступен один
- флаг:
-
-
-
- -N
-
-
- Разрешение адресов и имен сервисов при отображении.
-
-
-
-
- Задаваемая команда может быть сокращена
- до более короткой уникальной формы. Существующие
- команды:
-
-
-
- add
-
-
- Добавление правила к списку фильтрации/учета
-
-
-
-
- delete
-
-
- Удаление правила из списка фильтрации/учета
-
-
-
-
- Предыдущие версии IPFW использовали отдельные записи для
- фильтрации и учета пакетов. Современные версии учитывают
- пакеты для каждого правила.
-
- Если указано значение номер, оно
- используется для помещения правила на определенную позицию в
- цепочке. Иначе правило помещается в конец цепочки с номером
- на 100 больше, чем у предыдущего правила (сюда не включается
- правило по умолчанию с номером 65535).
-
- С параметром log соответствующие правила
- выводят информацию на системную консоль, если ядро собрано с
- опцией IPFIREWALL_VERBOSE.
-
- Существующие действия:
-
-
-
- reject
-
-
- Отбросить пакет и отправить в адрес источникаICMP пакет,
- сообщающий о недостижимости хоста или порта.
-
-
-
-
- allow
-
-
- Пропустить пакет как обычно. (синонимы:
- pass, permit, и
- accept)
-
-
-
-
- deny
-
-
- Отбросить пакет. Источнику не выдается ICMP сообщение
- (как если бы пакет вообще не достиг цели).
-
-
-
-
- count
-
-
- Обновить счетчик пакета, но не применять по отношению к
- нему правила allow/deny. Поиск продолжится со следующего
- правила в цепочке.
-
-
-
-
- Каждое действие может быть записано в
- виде более короткого уникального префикса.
-
- Могут быть определены следующие
- протоколы:
-
-
-
- all
-
-
- Соответствует всем IP пакетам
-
-
-
-
- icmp
-
-
- Соответствует ICMP пакетам
-
-
-
-
- tcp
-
-
- Соответствует TCP пакетам
-
-
-
- udp
-
-
- Соответствует UDP пакетам
-
-
-
-
- Поле адреса формируется так:
-
-
- источник
- адрес/маскапорт
- цель
- адрес/маскапорт
- via интерфейс
-
-
- Вы можете указать port только
- вместе с протоколами, поддерживающими
- порты (UDP и TCP).
-
- Параметр опционален и может содержать IP
- адрес или имя домена локального IP интерфейса, или имя интерфейса
- (например ed0), он настраивает правило
- на соответствие только тем пакетам, которые проходят через этот
- интерфейс. Номера интерфейсов могут быть заменены на опциональную
- маску. Например, ppp* будет соответствовать
- PPP интерфейсам ядра.
-
- Синтаксис, используемый для указания
- адреса/маски:
-
- адрес
-
- или
-
- адрес/маска-биты
+ Типы наборов правил брандмауэра
+
+ Составление набора правил брандмауэра может показаться
+ тривиальным, но большинство пользователей составляют его
+ неправильно. Наиболее частая ошибка заключается в создании
+ исключающего брандмауэра вместо
+ включающего.
+
+ Исключающий брандмауэр разрешает доступ ко всем сервисам,
+ за исключением тех, которым сопоставляется набор правил
+ брандмауэра.
+
+ Включающий брандмауэр делает все наоборот. Он разрешает
+ доступ лишь к сервисам, соответствующим правилам и блокирует
+ все остальные. Этим способом возможен контроль сервисов,
+ вызываемых из внешней сети, а также контроль сервисов
+ интернет, вызываемых из внутренней сети. Включающие брандмауэры
+ значительно, значительно более безопасны, чем
+ исключающие.
+
+
- или
+ Безопасность может быть дополнительно повышена, если
+ брандмауэр будет отслеживать циклы отправки/получения
+ всех пакетов, составляющих сессию, до ее завершения.
+ Такая возможность называется сохранением состояния,
+ она дает максимальный уровень защиты.
+
+ Набор правил брандмауэра, не реализующий возможности
+ сохранения состояния всех сервисов с авторизацией,
+ является небезопасным и открыт для многих широко распространенных
+ методов атаки.
+
+
+
+
+ Программные пакеты брандмауэров
+
+ В &os; встроено два программных брандмауэра. Это
+ IPFILTER (известный также как IPF) и IPFIREWALL
+ (известный также как IPFW). В IPFIREWALL встроена
+ поддержка ограничителя трафика DUMMYNET для контроля
+ использования пропускной способности. В IPFILTER
+ поддержка ограничителя трафика не встроена, но в тех
+ же целях может использоваться ALTQ.
+
+ И IPF и IPFW для контроля исходящих и входящих пакетов
+ используют наборы правил, хотя и разными способами с разным
+ синтаксисом правил.
+
+ Пример набора правил IPFW (находящийся в
+ /etc/rc.firewall), поставляемый в составе
+ базовой системы, является устаревшим, сложным, и не использует
+ правила с сохранением состояния на интерфейсах, выходящих
+ во внешнюю сеть интернет. В нем используются правила
+ без сохранения состояния, способные только открывать или
+ закрывать порты сервисов. Приводимый здесь пример набора
+ правил IPFW с сохранением состояния расширяет набор из файла
+ /etc/rc.firewall.
+
+ Правила с сохранением состояния лучше подходят для анализа
+ пакетов с целью защиты от переполнения в результате различных
+ атак, применяемых в в настоящее время.
+
+
+ Автор предпочитает IPFILTER, поскольку его
+ правила с сохранением состояния гораздо проще использовать
+ совместно с NAT; кроме того, в него встроен
+ ftp прокси, упрощающий настройку безопасного внешнего использования
+ FTP. Он также гораздо проще в освоении для пользователя, не имеющего
+ опыта настройки брандмауэров.
+
+ Поскольку все брандмауэры основаны на анализе значений выбранных
+ полей заголовка пакета, для создания правил брандмауэра необходимо
+ понимание принципов TCP/IP, того, что означают
+ различные поля заголовка пакета, и как эти поля используются в
+ обычной сессии. Хорошим примером является:
+ .
+
+
+
+ Packet Filter Firewall (брандмауэр OpenBSD)
+
+ В июле 2003 программный брандмауэр OpenBSD, известный как
+ PF, был портирован в &os; 5.3.
+ PF это полноценный брандмауэр с широким набором
+ возможностей, включающий ALTQ для управления
+ шириной канала подобно тому, как это реализовано в
+ IPFW. Проект OpenBSD поддерживает руководство
+ пользователя PF, которое не было внесено в этот раздел руководства
+ во избежание дублирования работы.
+
+ Для более старых версий &os; 5.X вы можете использовать
+ PF из коллекции портов &os;:
+ security/pf.
+
+ Дополнительную информацию можно получить с веб сайта PF для &os;:
+ .
+
+ Руководство пользователя OpenBSD PF находится здесь:
+ .
- Вместо IP адреса возможно указание существующего имени хоста.
- это
- десятичный номер, указывающий количество бит, которые должны быть
- установлены в маске адреса. Например,
- 192.216.222.1/24 создаст маску,
- соответствующую всем адресам подсети класса C (в
- данном случае, 192.216.222).
-A valid hostname may be specified in place of the IP address.
- это
- IP, который будет логически перемножен с заданным адресом.
- Ключевое слово any может использоваться для
- обозначения любого IP адреса.
-
- Номера портов указываются в следующем формате:
-
-
- порт,порт,порт…
-
-
- для указания одного порта или списка портов, или
-
-
- порт-порт
-
-
- для указания диапазона портов. Вы можете также комбинировать
- указание одного диапазона со списком портов, но диапазон всегда
- должен указываться первым.
-
- Доступные параметры:
-
-
-
- frag
-
-
- Срабатывает, если пакет не является первым пакетом
- дейтаграммы.
-
-
-
-
- in
-
-
- Соответствует входящим пакетам.
-
-
-
-
- out
-
-
- Соответствует исходящим пакетам.
-
-
-
-
- ipoptions spec
-
-
- Срабатывает, если заголовок IP содержит перечисленный
- через запятую список параметров, указанных в
- spec. Поддерживаемые параметры IP:
- ssrr (strict source route),
- lsrr (loose source route),
- rr (record packet route), и
- ts (time stamp). Действие отдельных
- параметров может быть изменено путем указания префикса
- !.
-
-
-
-
- established
-
-
- Срабатывает, если пакет является частью уже установленного
- TCP соединения (т.е. если установлены биты RST или ACK).
- Вы можете поднять производительность межсетевого экрана,
- поместив правило с established близко
- к началу цепочки.
-
-
-
-
- setup
-
-
- Соответствует, если пакет является попыткой установки
- TCP соединения (установлен бит SYN, а бит ACK не
- установлен).
-
-
-
-
- tcpflags флаги
-
-
- Срабатывает, если заголовок TCP содержит список
- перечисленных через запятую флагов.
- Поддерживаемые флаги:
- fin, syn,
- rst, psh,
- ack, и urg. Действие
- правил по отдельным флагам может быть изменено указанием
- префикса !.
-
-
-
-
- icmptypes типы
-
-
- Срабатывает, если тип пакета ICMP находится в списке
- типы. Список может быть указан
- в виде любой комбинации диапазонов и/или отдельных типов,
- разделенных запятыми. Обычно используемые типы ICMP:
- 0
- echo reply (ping reply), 3 destination
- unreachable, 5 redirect,
- 8 echo request (ping request), и
- 11 time exceeded (используется для
- обозначения истечения TTL, как с &man.traceroute.8;).
-
-
-
-
-
-
- Просмотр правил IPFW
-
- Синтаксис этой формы команды такой:
-
- ipfw
- -a
- -c
- -d
- -e
- -t
- -N
- -S
- list
-
-
- Для этой формы команды существует семь флагов:
-
-
-
- -a
-
-
- Показывать значения счетчиков. Этот параметр —
- единственный путь для просмотра значений счетчиков.
-
-
-
-
- -c
-
-
- Просмотр правил в компактной форме.
-
-
-
-
- -d
-
-
- Показывать динамические правила в дополнение к
- статическим.
-
-
-
-
- -e
-
-
- Если определен параметр , показывать
- также динамические правила с истекшим сроком действия.
-
-
-
-
- -t
-
-
- Отображать последнее время срабатывание для каждого
- правила в цепочке. Этот список несовместим с синтаксисом,
- принимаемым &man.ipfw.8;.
-
-
-
-
- -N
+
+ PF в &os; 5.X соответствует OpenBSD версии 3.5. Порт
+ из коллекции портов &os; соответствует OpenBSD версии
+ 3.4. Имейте это ввиду при просмотре руководства
+ пользователя.
+
-
- Попытаться разрешить заданные адреса и имена
- сервисов.
-
-
+
+ Включение PF
-
- -S
+ PF включен в базовую поставку &os; версии 5.3 и выше в качестве
+ отдельного загружаемого модуля. PF динамически подгружает модуль ядра
+ если включена переменная rc.conf pf_enable="YES".
+ Загружаемый модуль создан с включенным &man.pflog.4;.
+
-
- Отображать набор, к которому принадлежит каждое правило.
- Если этот флаг не указан, заблокированные правила не будут
- отображены.
-
-
-
-
+
+ Параметры ядра
-
- Сброс правил IPFW
-
- Синтаксис для сброса правил:
-
- ipfw
- flush
-
-
- Все правила в цепочке будут удалены, за исключением правила
- по умолчанию, устанавливаемого ядром (номер 65535). Будьте
- осторожны при сбросе правил; правило, отбрасывающее пакеты по
- по умолчанию отключит систему от сети, пока разрешающие правила
- не будут добавлены в цепочку.
-
+ Включение PF путем компиляции с ядром &os; не является обязательным
+ требованием, и описано здесь в качестве дополнительной информации.
+ При компиляции PF с ядром загружаемый модуль не используется.
-
- Очистка счетчиков пакетов IPFW
-
- Синтаксис для очистки одного или нескольких счетчиков
- пакетов:
-
- ipfw
- zero
- index
-
-
- При использовании без аргумента номер
- будут очищены все счетчики пакетов. Если
- index указан, операция очистки
- применяется только к указанному правилу цепочки.
-
-
+ Пример параметров конфигурации ядра для включения PF находится в
+ /usr/src/sys/conf/NOTES и показан здесь:
-
- Примеры команд для ipfw
+ device pf
+device pflog
+device pfsync
- Следующая команда запретит все пакеты с хоста evil.crackers.org на telnet порт хоста
- nice.people.org:
+ device pf указывает компилятору включить
+ Packet Filter в ядро.
- &prompt.root; ipfw add deny tcp from evil.crackers.org to nice.people.org 23
+ device pflog включает необязательное сетевое
+ псевдоустройство &man.pflog.4;, которое может использоваться для
+ протоколирования трафика через &man.bpf.4;. Даемон &man.pflogd.8;
+ может использоваться для сохранения протоколируемой информации
+ на диск.
- Следующий пример запрещает и протоколирует весь TCP трафик из
- сети crackers.org (класса C)
- к компьютеру nice.people.org
- (на любой порт).
+ device pfsync включает необязательное
+ сетевое псевдоустройство &man.pfsync.4;, используемое для
+ отслеживания изменений состояния. Поскольку оно
+ не входит в загружаемый модуль, для его использования необходимо
+ собрать собственное ядро.
- &prompt.root; ipfw add deny log tcp from evil.crackers.org/24 to nice.people.org
+ Эти настройки будут действовать только после сборки и установки
+ нового ядра.
+
- Если вы хотите запретить организацию X сессий в вашу сеть
- (часть сети класса C), следующая команда осуществит необходимую
- фильтрацию:
+
+ Доступные параметры rc.conf
- &prompt.root; ipfw add deny tcp from any to my.org/28 6000 setup
+ Для активации PF во время загрузки в
+ /etc/rc.conf должны быть включены следующие
+ переменные:
- Для просмотра записей учета:
+ pf_enable="YES" # Включить PF (загрузить модуль если необходимо)
+pf_rules="/etc/pf.conf" # определение правил для pf
+pf_flags="" # дополнительные флаги для запуска pfctl
+pflog_enable="YES" # запустить pflogd(8)
+pflog_logfile="/var/log/pflog" # где pflogd должен сохранять протокол
+pflog_flags="" # дополнительные флаги для запуска pflogd
- &prompt.root; ipfw -a list
+ Если за брандмауэром находится локальная сеть и необходимо передавать
+ пакеты для компьютеров этой сети, или использовать NAT, включите также
+ следующий параметр:
- или в краткой форме
+ gateway_enable="YES" # Включить сетевой шлюз
- &prompt.root; ipfw -a l
-
+
+
- Вы можете также просмотреть время последнего срабатывания правил
- с помощью команды:
+
+ * The IPFILTER (IPF) Firewall
- &prompt.root; ipfw -at l
+ Этот раздел не переведен.
- Создание межсетевого экрана с фильтрацией пакетов
-
-
- Следующие рекомендации означают только одно: рекомендации.
- Требования к каждому межсетевому экрану различаются, и мы не
- можем рассказать вам, как создать межсетевой экран, отвечающий
- вашим потребностям.
-
+ * IPFW
- При первоначальной настройке межсетевого экрана, до тестирования
- производительности и введения сервера в строй, настоятельно
- рекомендуется использовать версии команд с протоколированием и
- включить протоколирование в ядре. Это позволит вам быстро выявить
- проблемные области и исправить настройку без больших усилий.
- Даже после завершения первоначальной настройки рекомендуется
- использовать протоколирование для `deny', поскольку это позволяет
- отслеживать возможные атаки и изменять правила межсетевого экрана,
- если требования к нему изменятся.
-
-
- Если вы используете версию команды accept
- с протоколированием, будьте осторожны, поскольку она может
- создать большой объем протокольных данных.
- Будет произведено протоколирование каждого пакета, проходящего
- через межсетевой экран, поэтому большие объемы FTP/http и другого
- трафика существенно замедлят систему. Это также увеличит задержку
- таких пакетов, поскольку ядру требуется выполнить дополнительную
- работу перед тем, как пропустить пакет.
- syslogd также будет использовать гораздо
- больше времени процессора, поскольку он отправит все дополнительные
- данные на диск, и раздел /var/log может быть
- быстро заполнен.
-
-
- Вам потребуется включить межсетевой экран в
- /etc/rc.conf.local или
- /etc/rc.conf. Соответствующая страница
- справочника разъясняет что именно необходимо сделать и содержит
- примеры готовых настроек. Если вы не используете предустановленную
- настройку, команда ipfw list может поместить
- текущий набор правил в файл, откуда он может быть помещен в
- стартовые файлы системы. Если вы не используете
- /etc/rc.conf.local или
- /etc/rc.conf для включения межсетевого экрана,
- важно убедиться в том, что он включается после настройки
- интерфейсов.
-
- Далее необходимо определить, что именно
- делает ваш межсетевой экран! Это в основном зависит от того,
- насколько широкий доступ вы хотите открыть снаружи к вашей сети.
- Вот несколько общих правил:
-
-
-
- Заблокируйте доступ снаружи к портам TCP с номерами ниже 1024.
- Здесь расположена большая часть критичных для безопасности
- сервисов, таких как finger, SMTP (почта) и telnet.
-
-
-
- Заблокируйте весь входящий трафик UDP.
- Есть очень немного полезных сервисов, работающих через UDP,
- но они обычно представляют угрозу безопасности (например,
- Sun RPC и NFS протоколы). У этого способа есть и недостатки,
- поскольку протокол UDP не поддерживает соединения, и запрещение
- входящих пактов заблокирует также ответы на исходящий UDP трафик.
-
- Это может стать проблемой для тех, кто использует внешние серверы,
- работающие с UDP. Если вы хотите открыть доступ к этим сервисам,
- потребуется разрешить входящие пакеты с соответствующих портов.
- К примеру, для ntp вам может
- потребоваться разрешить пакеты, приходящие с порта 123.
-
-
-
- Заблокировать весь трафик снаружи к порту 6000. Порт 6000
- используется для доступа к серверам X11, и может быть угрозой
- безопасности (особенно если у пользователей есть привычка
- выполнять на своих рабочих станциях команду xhost
- +). X11 может использовать диапазон портов,
- начинающийся с 6000, верхний предел определяется количеством
- X дисплеев, которые могут быть запущены на машине. Верхний
- предел, определенный RFC 1700 (Assigned Numbers), равен
- 6063.
-
-
-
- Проверьте порты, используемые внутренними сервисами
- (например, SQL серверами и т.п.). Возможно хорошей идеей является
- блокирование и этих портов, поскольку они обычно не попадают в
- диапазон 1-1024, указанный выше.
-
-
-
- Еще один список для проверки настроек межсетевого экрана доступен
- на CERT по адресу
-
- Как сказано выше, все эти правила всего лишь
- руководство. Вы сами сможете решить, какие
- правила фильтрации будут использованы в межсетевом экране. Мы не
- можем нести НИКАКОЙ ответственности в случае взлома вашей сети,
- даже если вы следовали советам, представленным выше.
-
-
-
- Накладные расходы и оптимизация IPFW
-
- Многие пользователи хотят знать, как сильно IPFW нагружает
- систему. Ответ в основном зависит от набора правил и скорости
- процессора. При небольшом наборе правил для большинства приложений,
- работающих в Ethernet ответ незначительно.
- Для тех, кому нужен более точный ответ, и предназначен этот
- раздел.
-
- Последующие измерения были выполнены с 2.2.5-STABLE на
- 486-66. (Хотя IPFW немного изменился в последующих релизах
- FreeBSD, скорость осталась приблизительно той же.) IPFW был
- модифицирован для измерения времени, затраченного
- ip_fw_chk, с выводом на консоль результата
- после каждого 1000–го пакета.
-
- Были протестированы два набора из 1000 правил. Первый
- был составлен для демонстрации плохого набора правил путем повторения
- правила:
-
- &prompt.root; ipfw add deny tcp from any to any 55555
-
- Этот набор правил плох, поскольку большая часть правил IPFW
- не соответствует проверяемым пакетам (из-за номера порта).
- После 999–й итерации этого правила следует
- правило allow ip from any to any.
-
- Второй набор правил был разработан для быстрейшей проверки
- каждого правила:
-
- &prompt.root; ipfw add deny ip from 1.2.3.4 to 1.2.3.4
-
- Не совпадающий IP адрес источника в правиле выше приведет к
- очень быстрой проверке этих правил. Как и прежде, 1000–е
- правило allow ip from any to any.
-
- Затраты на проверку пакета в первом случае приблизительно
- 2.703 мс/пакет, или приблизительно 2.7 микросекунд на
- правило. Теоретический предел скорости проверки около
- 370 пакетов в секунду. Предполагая подключение через
- 10 Mbps Ethernet и размер пакета приблизительно 1500 байт,
- получаем только 55.5% использования пропускной способности.
-
- Во втором случае каждый пакет был проверен приблизительно за
- 1.172 мс, или приблизительно 1.2 микросекунд на правило.
- Теоретический предел скорости проверки около 853 пакетов в
- секунду, что делает возможным полное использование пропускной
- способности 10 Mbps Ethernet.
-
- Чрезмерное количество проверяемых правил и их вид не позволяет
- составить картину близкую к обычным условиям — эти правила
- были использованы только для получения информации о времени проверки.
- Вот несколько рекомендаций, которые необходимо учесть для создания
- эффективного набора правил:
-
-
-
- Поместите правило established как можно
- раньше для обработки большей части TCP трафика. Не помещайте
- перед ним правила allow tcp.
-
-
-
- Помещайте часто используемые правила ближе к началу набора
- чем редко используемые (конечно же, без изменения
- действия всего набора). Вы можете определить
- наиболее часто используемые правила путем проверки счетчиков
- пакетов командой ipfw -a l.
-
-
+ Этот раздел не переведен.TomRhodesНаписал: OpenSSLбезопасностьOpenSSLОдной из программ, требующих особого внимания пользователей,
является набор программ OpenSSL,
включенный в &os;. OpenSSL предоставляет
уровень шифрования поверх обычных уровней соединения; следовательно,
он может быть использован многими сетевыми приложениями и
сервисами.OpenSSL может использоваться для
шифрования соединений почтовых клиентов, транзакций через интернет,
например для кредитных карт, и многого другого. Многие порты,
такие как www/apache13-ssl и
mail/sylpheed-claws собираются
с OpenSSL.В большинстве случаев в коллекции портов собирается
порт security/openssl,
если только переменная WITH_OPENSSL_BASE
не установлена явно в yes.Версия OpenSSL, включаемая
в &os;, поддерживает сетевые протоколы безопасности
Secure Sockets Layer v2/v3 (SSLv2/SSLv3),
Transport Layer Security v1 (TLSv1) и может быть использована
в качестве основной криптографической библиотеки для
приложений.Хотя OpenSSL поддерживает алгоритм
IDEA, по умолчанию он отключен из-за патентных
ограничений Соединенных Штатов. Для его использования необходимо
ознакомиться с лицензией, и, если ограничения приемлемы,
установить в make.conf переменную
MAKE_IDEA.Возможно наиболее часто OpenSSL
используется для предоставления сертификатов программным
пакетам. Эти сертификаты подтверждают, что данные компании
или частного лица верны и не подделаны. Если рассматриваемый
сертификат не был проверен одним из нескольких Certificate
Authorities (CA), обычно выводится
предупреждение. Certificate Authority это компания, такая как
VeriSign, которая подписывает сертификаты для подтверждения
данных частных лиц или компаний. Эта процедура не бесплатна
и не является абсолютно необходимой для использования сертификатов;
однако может успокоить некоторых особо осторожных
пользователей.Генерирование сертификатовOpenSSLгенерирование сертификатовДля генерирования сертификатов доступна следующая
команда:&prompt.root; openssl req -new -nodes -out req.pem -keyout cert.pem
Generating a 1024 bit RSA private key
................++++++
.......................................++++++
writing new private key to 'cert.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:PA
Locality Name (eg, city) []:Pittsburgh
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
Organizational Unit Name (eg, section) []:Systems Administrator
Common Name (eg, YOUR name) []:localhost.example.org
Email Address []:trhodes@FreeBSD.org
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:SOME PASSWORD
An optional company name []:Another NameВвод после приглашения Common Name
содержит имя домена. Здесь вводится имя сервера для
верификации; помещение в это поле чего-либо кроме
этого имени приведет к созданию бесполезного сертификата.
Доступны и другие параметры, например срок действия,
альтернативные алгоритмы шифрования и т.д. Полный список
находится на странице справочного руководства
&man.openssl.1;.Файл cert.pem должен находиться в
каталоге, из которого была выполнена вышеупомянутая команда.
Этот сертификат может быть отправлен одному из многих
CA для подписи.Когда подпись CA не требуется, может
быть создан самоподписанный сертификат. Сначала создайте ключ
CA:&prompt.root; openssl gendsa -des3 -out \
myca.key 1024Используйте этот ключ при создании сертификата:&prompt.root; openssl req -new -x509 -days 365 -key \
myca.key -out new.crtВ каталоге должно появиться два новых файла: подпись сертификата,
myca.key и сам сертификат,
new.crt. Они должны быть помещены в каталог,
доступный для чтения только root,
- желательно внутри /etc.
+ желательно внутри /etc.
Права на каталог можно изменить chmod с параметрами
- 0600.
+ 0700.
Использование сертификатов, примерИтак, что могут сделать эти файлы? Хорошим применением
может стать шифрование соединений для
Sendmail MTA.
Это сделает ненужным использование простой текстовой
аутентификации для тех, кто отправляет почту через
локальный MTA.Это не лучшее из возможных использований, поскольку
некоторые MUA выдадут ошибку, если
сертификат не установлен локально. Обратитесь к
поставляемой с программой документации за информацией по
установке сертификата.Следующие строки должны быть помещены в локальный файл
.mc:dnl SSL Options
define(`confCACERT_PATH',`/etc/certs')dnl
define(`confCACERT',`/etc/certs/new.crt')dnl
define(`confSERVER_CERT',`/etc/certs/new.crt')dnl
define(`confSERVER_KEY',`/etc/certs/myca.key')dnl
define(`confTLS_SRV_OPTIONS', `V')dnl
- Где /etc/certs/
+ Где /etc/certs/
это каталог для локального хранения сертификата и
ключей. После настройки необходимо собрать локальный
файл .cf. Это легко сделать,
набрав makeinstall
- в каталоге /etc/mail.
+ в каталоге /etc/mail.
Затем выполните команду makerestart, которая должна запустить
даемон Sendmail.Если все пройдет нормально, в файле
/var/log/maillog не появятся сообщения
об ошибках и запустится процесс
Sendmail.Для проведения простого теста подключитесь к почтовому серверу
программой &man.telnet.1;:&prompt.root; telnet example.com 25
Trying 192.0.34.166...
Connected to example.com.
Escape character is '^]'.
220 example.com ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT)
ehlo example.com
250-example.com Hello example.com [192.0.34.166], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN
250-STARTTLS
250-DELIVERBY
250 HELP
quit
221 2.0.0 example.com closing connection
Connection closed by foreign host.Если в выводе появилась строка STARTTLS,
все работает правильно.NikClaytonnik@FreeBSD.orgНаписал VPN через IPsecСоздание VPN между двумя сетями, соединенными через интернет,
с использованием шлюзов FreeBSD.Hiten M.Pandyahmp@FreeBSD.orgНаписал Принципы работы IPsecЭтот раздел послужит вам руководством по настройке IPsec и его
использованию в среде FreeBSD и µsoft.windows;
2000/XP, соединяемых безопасным способом.
Для настройки IPsec необходимо ознакомиться с процессом
сборки ядра ().IPsec это протокол, расположенный поверх
слоя Internet Protocol (IP). Он позволяет двум или более хостам
связываться защищенным способом (отсюда и название протокола).
Сетевой стек FreeBSD IPsec основан на
реализации KAME,
поддерживающей оба семейства протоколов, IPv4 и IPv6.FreeBSD 5.X содержит аппаратно
поддерживаемый стек IPsec, известный как Fast
IPsec, заимствованный из OpenBSD. Для оптимизации
производительности IPsec он задействует криптографическое
оборудование (когда оно доступно) через подсистему &man.crypto.4;.
Это новая подсистема и она не поддерживает всех возможностей,
доступных в KAME версии IPsec. Для включения IPsec с аппаратной
поддержкой необходимо добавить в файл настройки ядра следующий
параметр:
options FAST_IPSEC # new IPsec (cannot define w/ IPSEC)
Обратите внимание, что на данный момент невозможно
использовать подсистему Fast IPsec вместе
с KAME реализацией IPsec. Обратитесь к странице справочника
&man.fast.ipsec.4; за дальнейшей информацией.IPsec состоит из двух субпротоколов:Encapsulated Security Payload
(ESP), защищающей данные IP пакета от вмешательства
третьей стороны путем шифрования содержимого с помощью
симметричных криптографических алгоритмов (таких как
Blowfish,3DES).Authentication Header (AH),
защищающий заголовок IP пакета от вмешательства третьей стороны
и подделки путем вычисления криптографической контрольной суммы
и хеширования полей заголовка IP пакета защищенной функцией
хеширования. К пакету добавляется дополнительный заголовок
с хешем, позволяющий аутентификацию информации пакета.ESP и AH могут быть
использованы вместе или по отдельности, в зависимости от
обстоятельств.IPsec может быть использован или для непосредственного шифрования
трафика между двумя хостами (транспортный
режим); или для построения виртуальных
туннелей между двумя подсетями, которые могут быть
использованы для защиты соединений между двумя корпоративными
сетями (туннельный режим). Последний обычно
называют виртуальной частной сетью
(Virtual Private Network, VPN). За детальной информацией о
подсистеме IPsec в FreeBSD обратитесь к странице справочника
&man.ipsec.4;.Для включения поддержки IPsec в ядре, добавьте следующие
параметры к файлу настройки ядра:
options IPSEC #IP security
options IPSEC_ESP #IP security (crypto; define w/ IPSEC)
Если желательна поддержка отладки IPsec, должна быть также
добавлена следующая строка:
options IPSEC_DEBUG #debug for IP security
ПроблемаНе существует стандарта VPN. Они могут быть реализованы
множеством различных технологий, каждая из которых имеет свои
сильные и слабые стороны. Этот раздел представляет
сценарий и стратегию реализации VPN для этого сценария.Сценарий: Две сети, подключенных к интернет, работающие как
однаИсходные условия таковы:Существует как минимум две сетиВнутри обеих сетей используется IPОбе сети соединены через интернет через шлюз,
работающий на FreeBSD.У шлюза каждой из сетей есть как минимум один публичный
IP адрес.Внутренние IP адреса двух сетей могут быть публичными или
приватными, не имеет значения. На шлюзе может работать
NAT, если это необходимо.Внутренние IP адреса двух сетей не должны
пересекаться. Хотя вероятно теоретически возможно
использование комбинации VPN технологии и NAT для настройки
такой конфигурации, эта конфигурация будет кошмарна.Если две сети, которые вы пытаетесь соединить, используют один
и тот же диапазон приватных адресов (например, обе используют
192.168.1.x), номера в одной из
сетей необходимо изменить.Топология сети может выглядеть примерно так:Сеть #1 [ Внутренние хосты ] Приватная сеть, 192.168.1.2-254
[ Win9x/NT/2K ]
[ UNIX ]
|
|
.---[fxp1]---. Приватный IP, 192.168.1.1
| FreeBSD |
`---[fxp0]---' Публичный IP, A.B.C.D
|
|
-=-=- Интернет -=-=-
|
|
.---[fxp0]---. Публичный IP, W.X.Y.Z
| FreeBSD |
`---[fxp1]---' Приватный IP, 192.168.2.1
|
|
Сеть #2 [ Внутренние хосты ]
[ Win9x/NT/2K ] Приватная сеть, 192.168.2.2-254
[ UNIX ]Здесь два публичных IP адреса. Для упоминания их в дальнейшем
будут использоваться буквы. Если вы увидите эти буквы, замените
их на свои публичные IP адреса. Также обратите внимание, что
у обеих шлюзов внутренний адрес заканчивается на .1 и диапазоны
приватных адресов двух сетей различны (192.168.1.x и 192.168.2.x соответственно). Все компьютеры
локальных сетей настроены на использование в качестве шлюза по
умолчанию компьютера с адресом, оканчивающимся на
.1.С сетевой точки зрения замысел в том, чтобы каждая сеть
видела компьютеры из другой сети так, как если бы они были
непосредственно подключены к тому же самому маршрутизатору —
хотя и немного медленному маршрутизатору, иногда теряющему
пакеты.Это означает, что (например) компьютер 192.168.1.20 может запуститьping 192.168.2.34и это будет прозрачно работать. Компьютеры с &windows;
должны видеть компьютеры в другой сети, просматривать сетевые
ресурсы, и так далее, точно так же, как и для компьютеров в
локальной сети.И все это безопасным способом. Это означает, что трафик
между сетями зашифрован.Создание VPN между этими двумя сетями это многошаговый
процесс. Этапы создания VPN таковы:Создание виртуального сетевого подключения
между двумя сетями через интернет. Тестирование подключения с
помощью таких инструментов как &man.ping.8;, чтобы убедиться, что
оно работает.Применение политики безопасности чтобы убедиться, что трафик
между двумя сетями прозрачно шифруется и расшифровывается если
необходимо. Тестирование с помощью таких инструментов как
&man.tcpdump.1;, чтобы убедиться, что трафик шифруется.
- Настройка дополнительных программ на шлюзах FreeBSD,
+ Настройка дополнительных программ на шлюзах &os;,
чтобы компьютеры &windows; из одной сети видели компьютеры
в другой через VPN.Шаг 1: Создание и тестирование виртуального
сетевого подключенияПредположим, что вы работаете на шлюзе сети #1 (с публичным
адресом A.B.C.D, приватным
адресом 192.168.1.1) и запускаете
ping 192.168.2.1, т.е. на приватный адрес
машины с IP адресом W.X.Y.Z.
Что должно произойти, чтобы это сработало?Шлюз должен знать, как достичь 192.168.2.1. Другими словами, у него
должен быть маршрут к 192.168.2.1.Приватные IP адреса, такие как диапазон 192.168.x не адресуются в
интернет. Каждый пакет, отправляемый на
192.168.2.1 должен быть
завернут в другой пакет. Исходным адресом пакета
должен быть A.B.C.D,
а адресом назначения W.X.Y.Z.
Этот процесс называется
инкапсуляцией.Как только этот пакет достигнет W.X.Y.Z, необходимо будет
разинкапсулировать его и доставить к 192.168.2.1.Как вы можете увидеть, это требует туннеля
между двумя сетями. Два конца туннеля
это IP адреса A.B.C.D и
W.X.Y.Z. Туннель используется для
передачи трафика с приватными IP адресами через интернет.В FreeBSD этот туннель создается с помощью устройства generic
interface, или gif. Как вы можете
догадаться, интерфейс gif на каждом хосте
должен быть настроен с четырьмя IP адресами; два для публичных
IP адресов и два для приватных IP адресов.В ядро обеих компьютеров FreeBSD должна быть встроена
поддержка устройства gif. Вы можете сделать это, добавив
строку:pseudo-device gifк файлу настройки ядра на обеих компьютерах, с последующей
компиляцией, установкой и перезагрузкой.Настройка туннеля это двухшаговый процесс. Во-первых,
необходимо задать сведения о внешнем (или публичном) IP адресе
с помощью &man.gifconfig.8;. Затем о приватном IP адресе
с помощью &man.ifconfig.8;.В &os; 5.X функциональность, предоставляемая утилитой
&man.gifconfig.8;, была внесена в &man.ifconfig.8;.На шлюзе сети #1 для настройки туннеля вам потребуется запустить
следующие две команды.gifconfig gif0 A.B.C.D W.X.Y.Z
ifconfig gif0 inet 192.168.1.1 192.168.2.1 netmask 0xffffffff
На другом шлюзе подобные команды, но с IP адресами в обратном
порядке.gifconfig gif0 W.X.Y.Z A.B.C.D
ifconfig gif0 inet 192.168.2.1 192.168.1.1 netmask 0xffffffff
Затем вы можете запустить:gifconfig gif0для просмотра настройки. Например, на шлюзе сети #1
вы увидите:&prompt.root; gifconfig gif0
gif0: flags=8011<UP,POINTTOPOINT,MULTICAST> mtu 1280
inet 192.168.1.1 --> 192.168.2.1 netmask 0xffffffff
physical address inet A.B.C.D --> W.X.Y.Z
Как вы можете видеть, был создан туннель между физическими
адресами A.B.C.D и
W.X.Y.Z, для тунеллирования разрешен
трафик между 192.168.1.1 и 192.168.2.1.Это также добавляет запись к таблице маршрутизации на обеих
машинах, вы можете проверить запись командой netstat
-rn. Вот вывод этой команды на шлюзе сети #1.&prompt.root; netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
...
192.168.2.1 192.168.1.1 UH 0 0 gif0
...
Как показывает значение поля Flags, это маршрут
к хосту, что означает, что каждый шлюз знает, как достичь другого
шлюза, но не знает как достичь остальной части соответствующей сети.
Эта проблема будет быстро решена.
- Вероятно, на обеих машинах запущен межсетевой экран. VPN
+ Вероятно, на обеих машинах запущен брандмауэр. VPN
должен обходить его. Вы можете разрешить весь трафик между
двумя сетями, или включить правила, защищающие каждый конец
соединения от другого.
- Это сильно упрощает тестирование настройки межсетевого экрана,
+ Это сильно упрощает тестирование настройки брандмауэра,
если вы разрешаете весь трафик через VPN. Вы всегда можете
Вы всегда можете усилить защиту позже. Если вы используете
на шлюзах &man.ipfw.8;, команда вроде этойipfw add 1 allow ip from any to any via gif0разрешит весь трафик между двумя концами VPN без влияния на
- другие правила межсетевого экрана. Очевидно, вам потребуется
+ другие правила брандмауэра. Очевидно, вам потребуется
запустить эту команду на обеих шлюзах.Этого достаточно для включения ping с одного шлюза на другой.
На 192.168.1.1, вы сможете
запуститьping 192.168.2.1и получить ответ, и аналогично на другом шлюзе.Однако, машины в другой сети пока недоступны. Это из-за
маршрутизации — хотя шлюзы знают, как связаться друг с
другом, они не знают, как связаться с сетью за другим шлюзом.Для решения этой проблемы вы должны добавить статический маршрут
на каждом шлюзе. Команда на первом шлюзе будет выглядеть так:route add 192.168.2.0 192.168.2.1 netmask 0xffffff00
Она говорит Для достижения хостов в сети
192.168.2.0, отправляйте пакеты
хосту 192.168.2.1. Вам
потребуется запустить похожую команду на другом шлюзе, но с
адресами 192.168.1.x.IP трафик с хостов в одной сети теперь может достичь хосты в
другой сети.Теперь создано две трети VPN между двумя сетями, поскольку
это виртуальная (virtual)сеть (network).
Она еще не приватная (private). Вы можете протестировать ее
с помощью &man.ping.8; и &man.tcpdump.1;. Войдите на шлюз и
запуститеtcpdump dst host 192.168.2.1В другой сессии на этом же хосте запуститеping 192.168.2.1Вы увидите примерно такие строки:
16:10:24.018080 192.168.1.1 > 192.168.2.1: icmp: echo request
16:10:24.018109 192.168.1.1 > 192.168.2.1: icmp: echo reply
16:10:25.018814 192.168.1.1 > 192.168.2.1: icmp: echo request
16:10:25.018847 192.168.1.1 > 192.168.2.1: icmp: echo reply
16:10:26.028896 192.168.1.1 > 192.168.2.1: icmp: echo request
16:10:26.029112 192.168.1.1 > 192.168.2.1: icmp: echo reply
Как вы видите, ICMP сообщения пересылаются вперед и назад
незашифрованными. Если вы использовали с &man.tcpdump.1; параметр
для получения большего объема данных пакета,
то увидите больше информации.Конечно же это неприемлемо. В следующем разделе мы обсудим
защиту соединения между двумя сетями, так что весь трафик будет
автоматически шифроваться.Резюме:Настройте оба ядра с pseudo-device
gif.Отредактируйте /etc/rc.conf на шлюзе
#1 и добавьте следующие строки (подставляя IP адреса где
необходимо).gifconfig_gif0="A.B.C.D W.X.Y.Z"
ifconfig_gif0="inet 192.168.1.1 192.168.2.1 netmask 0xffffffff"
static_routes="vpn"
route_vpn="192.168.2.0 192.168.2.1 netmask 0xffffff00"
- Отредактируйте скрипт межсетевого экрана
+ Отредактируйте скрипт брандмауэра
(/etc/rc.firewall, или подобный) на обеих
хостах и добавьтеipfw add 1 allow ip from any to any via gif0Выполните соответствующие изменения в
/etc/rc.conf на шлюзе #2,
меняя порядок IP адресов.Шаг 2: Защита соединенияДля защиты соединения мы будем использовать IPsec. IPsec
предоставляет хостам механизм определения ключа для шифрования
и для последующего использования этого ключа для шифрования
данных между двумя хостами.Здесь будут рассмотрены два аспекта настройки.У хостов должен быть способ согласования используемого
алгоритма шифрования. Как только хосты договорятся об этом,
можно говорить об установленном между ними
безопасном соединении.Должен быть механизм определения, какой трафик необходимо
шифровать. Конечно, вам не требуется шифровать весь исходящий
трафик — достаточно шифровать только трафик, идущий
через VPN. Правила, определяющие то, какой трафик необходимо
шифровать, называются политикой безопасности.Безопасное соединение и политика безопасности поддерживаются
ядром, и могут быть изменены программами пользователя. Однако
перед тем, как вы сможете сделать это, необходимо настроить
поддержку протоколов IPsec и Encapsulated Security Payload (ESP) в
ядре. Это делается добавлением в настройку ядра параметров:options IPSEC
options IPSEC_ESP
с последующим перекомпилированием, переустановкой и
перезагрузкой. Как и прежде вам потребуется сделать это с ядрами на
обеих шлюзах.При настройке параметров безопасности (security associations)
у вас есть два варианта. Вы можете настроить их вручную для обеих
хостов, задав алгоритм шифрования, ключи для шифрования и так далее,
или использовать даемоны, реализующие Internet Key Exchange protocol
(IKE), который сделает это за вас.Рекомендуется последнее. Помимо прочего, этот способ более
прост.Редактирование и отображение политики безопасности выполняется
с помощью &man.setkey.8;. По аналогии, setkey
используется для настройки таблиц политики безопасности ядра так же,
как &man.route.8; используется для настройки таблиц маршрутизации
ядра. setkey также может отображать текущие
параметры безопасности, и продолжая аналогию дальше, это
соответствует netstat -r.Существует множество даемонов для управления параметрами
безопасности в FreeBSD. Здесь будет описано использование одного из
них, racoon. racoon находится в категории security/ коллекции портов
FreeBSD и устанавливается обычным способом.racoon должен работать на обеих шлюзах. На каждом из хостов
он настраивается с IP адресом другого конца VPN, и секретным
ключом (по вашему выбору, должен быть одним и тем же на обеих
шлюзах).Эти два даемона подключаются друг к другу, подтверждают, что они
именно те, за кого себя выдают (используя секретный ключ, заданный
вами). Затем даемоны генерируют новый секретный ключ и используют
его для шифрования трафика через VPN. Они периодически изменяют
этот ключ, так что даже если атакующий сломает один из ключей
(что теоретически почти невозможно) это не даст ему слишком много
— он сломал ключ, который два даемона уже сменили на
другой.Настройки racoon сохраняются в
${PREFIX}/etc/racoon. Этот файл не требует
слишком больших изменений. Другим компонентом настройки
racoon, который потребуется изменить, является предварительный
ключ.В настройке по умолчанию racoon ищет его в файле
${PREFIX}/etc/racoon/psk.txt. Необходимо
отметить, что предварительный ключ не
используется для шифрования трафика через VPN соединение
это просто маркер, позволяющий управляющим ключами даемонам
доверять друг другу.psk.txt содержит строку для каждого
удаленного сервера, с которым происходит соединение. В этом примере
два сервера, каждый файл psk.txt будет
содержать одну строку (каждый конец VPN общается только с другим
концом.На шлюзе #1 эта строка будет выглядеть примерно так:W.X.Y.Z secretТо есть публичный IP адрес удаленной
стороны, пробел и текстовая строка, секретная фраза.
На шлюзе #2 строка будет выглядеть примерно так:A.B.C.D secretТо есть публичный IP адрес удаленной стороны и та же
секретная фраза. Перед запуском racoon режим доступа к файлу
psk.txt должен быть установлен в
0600 (т.е. запись и чтение только для
root).Вы должны запустить racoon на обеих шлюзах. Вам также
потребуется добавить правила для включения IKE трафика,
передающегося по UDP через порт ISAKMP (Internet Security Association
Key Management Protocol). Опять же, они должны быть
расположены насколько возможно ближе к началу набора правил.ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp
ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp
Как только racoon будет запущен, вы можете попробовать
выполнить ping с одного шлюза на другой. Соединение все еще не
зашифровано, но racoon установит параметры безопасности между
двумя хостами — это может занять время и вы можете заметить
небольшую задержку перед началом ответа команды ping.Как только параметры безопасности установлены, вы можете
просмотреть их используя &man.setkey.8;. Запуститеsetkey -Dна любом из хостов для просмотра информации о параметрах
безопасности.Это одна сторона проблемы. Другая сторона это настройка
политики безопасности.Для создания разумной политики безопасности давайте вспомним,
что уже было настроено. Это рассмотрение относится к обеим
концам соединения.Каждый отправляемый IP пакет имеет заголовок, содержащий информацию
о пакете. Заголовок включает IP адреса источника и назначения.
Как мы уже знаем, приватные IP адреса, такие как 192.168.x.y, не могут появиться в
интернет. Они должны быть сначала включены внутрь другого
пакета. В этом пакете приватные IP адреса источника и назначения
заменяются публичными IP адресами.То есть исходящий пакет, который выглядит примерно так:
.----------------------------.
| Src: 192.168.1.1 |
| Dst: 192.168.2.1 |
| <другие данные заголовка> |
+----------------------------+
| <данные пакета> |
`----------------------------'будет инкапсулирован в другой пакет, выглядящий примерно
так:
.--------------------------------.
| Src: A.B.C.D |
| Dst: W.X.Y.Z |
| <другие данные заголовка> |
+--------------------------------+
| .----------------------------. |
| | Src: 192.168.1.1 | |
| | Dst: 192.168.2.1 | |
| | <другие данные заголовка> | |
| +----------------------------+ |
| | <данные пакета> | |
| `----------------------------' |
`--------------------------------'Этой инкапсуляцией занимается устройство
gif. Как вы можете видеть, теперь
у пакета есть реальный IP адрес, исходный пакет был включен
в этот пакет в виде данных, которые передаются через
интернет.Конечно, мы хотим зашифровать весь трафик между VPN.
Вы можете сформулировать это на словах так:Если пакет отправляется с A.B.C.D, и предназначен для W.X.Y.Z, расшифровать его, используя
необходимые параметры безопасности.Если пакет отправляется с W.X.Y.Z, и предназначен для A.B.C.D, расшифровать его, используя
необходимые параметры безопасности.Это похоже на желаемое, но не совсем то. Если вы сделаете
это, весь трафик от и к W.X.Y.Z,
даже если он не является частью VPN, будет зашифрован. Правильная
политика такова:Если пакет отправляется с A.B.C.D, в нем инкапсулирован другой пакет
и адрес назначения W.X.Y.Z,
зашифровать его, используя необходимые параметры
безопасности.Если пакет отправляется с W.X.Y.Z, в нем инкапсулирован другой пакет
и адрес назначения A.B.C.D,
зашифровать его, используя необходимые параметры
безопасности.Тонкое, но необходимое различие.Политика безопасности также устанавливается с использованием
&man.setkey.8;. В &man.setkey.8; предусмотрен язык определения
политики &man.setkey.8;. Вы можете или ввести инструкции
по настройке со стандартного ввода, или использовать параметр
для задания файла, содержащего эти
инструкции.Настройка на шлюзе #1 (где есть публичный IP адрес
A.B.C.D) для включения шифрования
всего предназначенного W.X.Y.Z
трафика:
spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;
Поместите эти команды в файл (например,
/etc/ipsec.conf) и запустите&prompt.root; setkey -f /etc/ipsec.conf указывает &man.setkey.8; добавить
правило к базе данных политики безопасности. Остальная часть
строки указывает какие пакеты будут соответствовать политике.
A.B.C.D/32 и W.X.Y.Z/32 это IP адреса и сетевые маски,
определяющие сети или хосты, к которым будет применяться данная
политика. В данном случае мы хотим применить их к трафику между
этими двумя хостами. Параметр сообщает
ядру, что эта политика должна применяться только к пакетам,
инкапсулирующим другие пакеты. Параметр
сообщает, что эта политика применяется к исходящим пакетам, и
— то, что пакеты будут
зашифрованы.Оставшаяся часть строки определяет, как эти пакеты будут
зашифрованы. Будет использоваться протокол ,
а параметр показывает, что пакет в дальнейшем
будет инкапсулирован в IPsec пакет. Повторное использование
A.B.C.D и W.X.Y.Z предназначено для выбора
используемых параметров безопасности, и наконец параметр
разрешает шифрование пакетов, попадающих
под это правило.Это правило соответствует только исходящим пакетам. Вам
потребуется похожее правило, соответствующее входящим пакетам.spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require;Обратите внимание, что вместо используется
и IP адреса переставлены.Другому шлюзу (с публичным IP адресом
W.X.Y.Z) потребуются похожие
правила.spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require;
spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;
- Наконец, вам потребуется добавить правила к межсетевому экрану
+ Наконец, вам потребуется добавить правила к брандмауэру
для включения прохождения пакетов ESP и IPENCAP в обе стороны.
На обеих хостах потребуется добавить следующие правила:ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z
ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D
ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z
ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.D
Поскольку правила симметричны, можно использовать их без
изменения на обеих хостах
Исходящие пакеты теперь будут выглядеть примерно так:
.------------------------------. --------------------------.
| Src: A.B.C.D | |
| Dst: W.X.Y.Z | |
| <other header info> | | Encrypted
+------------------------------+ | packet.
| .--------------------------. | -------------. | contents
| | Src: A.B.C.D | | | | are
| | Dst: W.X.Y.Z | | | | completely
| | <other header info> | | | |- secure
| +--------------------------+ | | Encap'd | from third
| | .----------------------. | | -. | packet | party
| | | Src: 192.168.1.1 | | | | Original |- with real | snooping
| | | Dst: 192.168.2.1 | | | | packet, | IP addr |
| | | <other header info> | | | |- private | |
| | +----------------------+ | | | IP addr | |
| | | <packet data> | | | | | |
| | `----------------------' | | -' | |
| `--------------------------' | -------------' |
`------------------------------' --------------------------'
Когда эти пакеты будут получены на удаленном конце VPN
соединения, они будут расшифрованы (используя параметры
безопасности, о которых договорился racoon). Затем они будут
переданы интерфейсу gif, который
развернет второй слой, оставив пакет с внутренними
адресами, который сможет попасть во внутреннюю сеть.Вы можете проверить безопасность тем же &man.ping.8;, который
использовался ранее. Сначала войдите на шлюз A.B.C.D и запустите:tcpdump dst host 192.168.2.1В другой сессии на том же хосте запуститеping 192.168.2.1В этот момент вы должны увидеть примерно это:XXX tcpdump outputТеперь, как видите, &man.tcpdump.1; показывает ESP пакеты. Если
вы попытаетесь просмотреть их с параметром ,
то вероятно увидите нечто непонятное, поскольку применяется
шифрование.Поздравляем. Вы только что настроили VPN между двумя удаленными
сетями.РезюмеНастройте оба ядра с:options IPSEC
options IPSEC_ESP
Установите security/racoon. Отредактируйте
${PREFIX}/etc/racoon/psk.txt на обеих
шлюзах, добавив запись для каждого IP адреса удаленного хоста
и секретный ключ, который будет известен им обеим. Убедитесь,
что режим доступа к файлу 0600.Добавьте к
/etc/rc.conf на каждом хосте следующие
строки:ipsec_enable="YES"
ipsec_file="/etc/ipsec.conf"
Создайте /etc/ipsec.conf на каждом
хосте с необходимыми строками spdadd. На шлюзе #1 он будет
таким:
spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec
esp/tunnel/A.B.C.D-W.X.Y.Z/require;
spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec
esp/tunnel/W.X.Y.Z-A.B.C.D/require;
А на шлюзе #2 таким:
spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec
esp/tunnel/W.X.Y.Z-A.B.C.D/require;
spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec
esp/tunnel/A.B.C.D-W.X.Y.Z/require;
- Добавьте правила к межсетевым экранам обеих хостов для
+ Добавьте правила к брандмауэрам обеих хостов для
включения IKE, ESP и IPENCAP трафика:
ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp
ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp
ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z
ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D
ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z
ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.D
Двух приведенных шагов должно быть достаточно для настройки
и включения VPN. Машины в каждой сети смогут обращаться друг к
другу по IP адресам, и весь трафик через соединение будет
автоматически надежно зашифрован.ChernLeeПредоставил OpenSSHOpenSSHбезопасностьOpenSSHOpenSSH это набор сетевых инструментов,
используемых для защищенного доступа к удаленным компьютерам.
Он может быть использован в качестве непосредственной замены
rlogin, rsh,
rcp и telnet.
Кроме того, любые другие TCP/IP соединения могут быть безопасно
тунеллированы/перенаправлены через SSH.
OpenSSH шифрует весь трафик, эффективно
предотвращая кражу данных, перехват соединения и другие сетевые
атаки.OpenSSH поддерживается проектом
OpenBSD, он основан на SSH v1.2.12 со всеми последними исправлениями
и обновлениями, совместим с протоколами SSH версий 1 и 2.
OpenSSH включен в базовую систему
начиная с FreeBSD 4.0.Преимущества использования OpenSSHОбычно при использовании &man.telnet.1; или &man.rlogin.1;
данные пересылаются по сети в незашифрованной форме. Перехватчик
пакетов в любой точке сети между клиентом и сервером может
похитить информацию о пользователе/пароле или данные, передаваемые
через соединение. Для предотвращения этого
OpenSSH предлагает различные методы
шифрования.Включение sshdOpenSSHвключениеУбедитесь, что добавили в файл rc.conf
следующую строку:sshd_enable="YES"При следующей загрузке системы запущен &man.sshd.8;, даемон для
OpenSSH. Вы можете также запустить
sshd непосредственно, набрав в
командной строке sshd.SSH клиентOpenSSHклиентУтилита &man.ssh.1; работает подобно &man.rlogin.1;.&prompt.root; ssh user@example.com
Host key not found from the list of known hosts.
Are you sure you want to continue connecting (yes/no)? yes
Host 'example.com' added to the list of known hosts.
user@example.com's password: *******Вход продолжится так же, как если бы сессия была инициирована
с использованием rlogin или
telnet. SSH использует систему опознавательных
ключей для проверки подлинности сервера при подключении клиента.
Пользователю предлагается yes только при первом
подключении. Дальнейшие попытки входа предваряются проверкой
сохраненного ключа сервера. SSH клиент сообщит вам, если сохраненный
ключ будет отличаться от только что полученного. Ключи серверов
сохраняются в ~/.ssh/known_hosts, или в
~/.ssh/known_hosts2 для SSH v2.По умолчанию, сервер OpenSSH настроен
для приема соединений SSH v1 и SSH v2. Клиент может выбирать между
этими двумя протоколами. Версия 2 безопаснее своего
предшественника.Команде &man.ssh.1; можно указать использование определенной
версии протокола, запустив ее с параметром
или для версии 1 или 2 соответственно.Безопасное копированиеOpenSSHбезопасное копированиеscpКоманда &man.scp.1; работает подобно &man.rcp.1;; она копирует
файл с удаленного компьютера, но делает это безопасным
способом.&prompt.root; scp user@example.com:/COPYRIGHT COPYRIGHT
user@example.com's password: *******
COPYRIGHT 100% |*****************************| 4735
00:00
&prompt.root;Поскольку в предыдущем примере ключ сервера уже был сохранен,
в этом примере он проверяется при использовании &man.scp.1;.Параметры, передаваемые &man.scp.1;, похожи на параметры
&man.cp.1;, с файлом или файлами в качестве первого аргумента и
приемником копирования во втором. Поскольку файлы файлы передаются
по сети через SSH, один или более аргументов принимают форму
.НастройкаOpenSSHнастройкаСистемные файлы настройки для даемона и клиента
OpenSSH расположены в каталоге
/etc/ssh.Файл ssh_config используется для настройки
клиента, а sshd_config для даемона.Кроме того, параметры
(по умолчанию /usr/sbin/sshd), и
rc.conf
дают дополнительные возможности настройки.ssh-keygenВместо использования паролей, с помощью &man.ssh-keygen.1;
пользователи могут аутентифицироваться ключами RSA:&prompt.user; ssh-keygen -t rsa1
Initializing random number generator...
Generating p: .++ (distance 66)
Generating q: ..............................++ (distance 498)
Computing the keys...
Key generation complete.
Enter file in which to save the key (/home/user/.ssh/identity):
Enter passphrase:
Enter the same passphrase again:
Your identification has been saved in /home/user/.ssh/identity.
...&man.ssh-keygen.1; создаст пару публичного и приватного
ключей, используемых для аутентификации. Приватный ключ сохраняется
в ~/.ssh/identity, а публичный в
~/.ssh/identity.pub. Для включения
аутентификации по ключам публичный ключ должен
быть помещен в ~/.ssh/authorized_keys
на удаленном компьютере.Это позволяет соединяться с удаленным компьютером с помощью
RSA аутентификации вместо паролей.Параметр приведет к созданию RSA
ключей, используемых SSH протоколом версии 1. Если вы хотите
использовать RSA ключи с SSH протоколом версии 2, используйте
команду ssh-keygen -t rsa.Если при генерации ключей был использован пароль, каждый раз
для при использовании приватного ключа он будет запрашиваться
у пользователя.DSA ключ для SSH протокола версии 2 может быть создан в тех же
целях командой ssh-keygen -t dsa. Эта команда
создаст публичный/приватный ключи DSA для использования только
с SSH протоколом версии 2. Публичный ключ сохраняется в
~/.ssh/id_dsa.pub, а приватный ключ в
~/.ssh/id_dsa.Публичный ключ DSA также должен быть помещен в каталог
~/.ssh/authorized_keys на удаленном
компьютере.Утилиты &man.ssh-agent.1; и &man.ssh-add.1; используются
для управления множеством защищенных паролем приватных
ключей.Параметры и имена файлов могут различаться для разных
версий OpenSSH, установленных в системе,
для решения проблем обратитесь к странице справочника
&man.ssh-keygen.1;.SSH тунеллированиеOpenSSHтунеллированиеOpenSSH поддерживает возможность
создания туннеля для пропуска соединения по другому протоколу
через защищенную сессию.Следующая команда указывает &man.ssh.1; создать туннель для
telnet:&prompt.user; ssh -2 -N -f -L 5023:localhost:23 user@foo.example.com
&prompt.user;Команда ssh используется со следующими
параметрами:Указывает ssh использовать версию
2 протокола (не используйте этот параметр, если работаете
со старыми SSH серверами).Означает использование в не-командном режиме, только для
тунеллирования. Если этот параметр опущен,
ssh запустит обычную сессию.Указывает ssh запускаться в фоновом
режиме.Означает локальный туннель в стиле
localport:remotehost:remoteport.Удаленный сервер SSH.Туннель SSH создается путем создания прослушивающего сокета
на определенном порту localhost. Затем все
принятые на локальном хосту/порту соединения переправляются на
через SSH на определенный удаленный хост и порт.В этом примере, порт 5023 на
localhost перенаправляется на порт
23 на localhost
удаленного компьютера. Поскольку 23
это порт telnet, будет создано защищенное
соединение telnet через туннель
SSH.Этот метод можно использовать для любого числа небезопасных
протоколов, таких как SMTP, POP3, FTP, и так далее.Использование SSH для создания защищенного туннеля на
SMTP&prompt.user; ssh -2 -N -f -L 5025:localhost:25 user@mailserver.example.com
user@mailserver.example.com's password: *****
&prompt.user; telnet localhost 5025
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mailserver.example.com ESMTPЭтот метод можно использовать вместе с &man.ssh-keygen.1;
и дополнительными пользовательскими учетными записями для
создания более удобного автоматического SSH тунеллирования.
Ключи могут быть использованы вместо паролей, и туннели
могут запускаться от отдельных пользователей.Практические примеры SSH тунеллированияЗащищенный доступ к серверу POP3На работе находится SSH сервер, принимающий соединения
снаружи. В этой же офисной сети находится почтовый сервер,
поддерживающий протокол POP3. Сеть или сетевое соединение
между вашим домом и офисом могут быть или не быть полностью
доверяемыми. По этой причине вам потребуется проверять
почту через защищенное соединение. Решение состоит в создании
SSH соединения к офисному серверу SSH и тунеллирование
через него к почтовому серверу.&prompt.user; ssh -2 -N -f -L 2110:mail.example.com:110 user@ssh-server.example.com
user@ssh-server.example.com's password: ******Когда туннель включен и работает, вы можете настроить
почтовый клиент для отправки запросов POP3 на
localhost, порт 2110. Соединение будет
безопасно переправлено через туннель на
mail.example.com.Прохождение через Драконовский БрандмауэрНекоторые сетевые администраторы устанавливают
- на межсетевых экранах (брандмауэрах) драконовские правила,
+ на брандмауэрах драконовские правила,
фильтруя не только входящие соединения, но и исходящие.
Вам может быть разрешен доступ к удаленным компьютерам только
по портам 22 и 80, для SSH и просмотра сайтов.Вам может потребоваться доступ к другому (возможно, не
относящемуся к работе) сервису, такому как Ogg Vorbis
для прослушивания музыки. Если этот сервер Ogg Vorbis
выдает поток не с портов 22 или 80, вы не сможете получить
к нему доступ.Решение состоит в создании SSH соединения с компьютером
- вне межсетевого экрана и использование его для тунеллирования
+ вне брандмауэра и использование его для тунеллирования
сервера Ogg Vorbis.&prompt.user; ssh -2 -N -f -L 8888:music.example.com:8000 user@unfirewalled-system.example.org
user@unfirewalled-system.example.org's password: *******Клиентскую программу теперь можно настроить на
localhost порт 8888, который будет перенаправлен
на music.example.com порт 8000, успешно
- обойдя межсетевой экран.
+ обойдя брандмауэр.
Для дальнейшего чтенияOpenSSH&man.ssh.1; &man.scp.1; &man.ssh-keygen.1;
&man.ssh-agent.1; &man.ssh-add.1;&man.sshd.8; &man.sftp-server.8;TomRhodesПредоставил ACLСписки контроля доступа файловой системы (ACL)В дополнение к другим расширениям файловой системы, таким как
снимки (snapshots), FreeBSD 5.0 и более поздние версии системы
предлагают защиту с помощью списков контроля доступа файловой системы
(File System Access Control Lists, ACLs).Списки контроля доступа расширяют стандартную модель прав &unix;
высоко совместимым (&posix;.1e) способом. Эта возможность позволяет
администратору получить преимущество от использования более
интеллектуальной модели безопасности.Для включения поддержки ACL в файловой
системе UFS, следующая строка:options UFS_ACLдолжна быть добавлена в файл настройки ядра. Если параметр не
добавлен, при попытке монтирования систем, поддерживающих
ACL, появится предупреждающее сообщение.
Этот параметр включен в ядро GENERIC.
ACL основывается на дополнительных атрибутах,
встроенных в файловую систему. Дополнительные атрибуты
поддерживаются по умолчанию следующим поколением файловых систем
&unix;, UFS2.Для включения дополнительных атрибутов в
UFS1 требуется больше усилий по сравнению с
UFS2. Производительность дополнительных
атрибутов в UFS2 также существенно выше.
По этим причинам для работы с списками контроля доступа
предпочтительно использование UFS2ACL включаются во время монтирования флагом
, который добавляется к
/etc/fstab. Этот флаг также можно сделать
постоянным с помощью &man.tunefs.8;, изменив флаг
ACL в заголовке файловой системы. Вообще говоря,
использование флага в суперблоке предпочтительно по нескольким
причинам:Постоянный ACL флаг не может быть изменен
путем перемонтирования системы (&man.mount.8; ),
а только через &man.umount.8; и &man.mount.8;. Это означает,
что ACL нельзя включить на корневой файловой
системе после загрузки. Это также означает, что вы не можете
изменить флаг на используемой файловой системе.Установка флага в суперблоке приводит к постоянному монтированию
файловой системы с включенным ACL, даже если
нет записи в fstab или при смене порядка
устройств. Это предотвращает случайное монтирование файловой
системы без ACL, которое может повлечь за
собой проблемы с безопасностью.Мы можем изменить поведение ACL для
включения флага без полного перемонтирования, но считаем, что
желательно исключить случайное монтирование без
ACL, поскольку вы можете попасть в неприятную
ситуацию, если включите ACL, затем выключите
их, затем опять включите без сброса расширенных атрибутов.
Обычно, как только вы включили ACL в файловой
системе, они не должны быть выключены, поскольку получающаяся
защита файлов может быть не совместима с той, что применяется
пользователями системы, и повторное включение ACL
может подключить предыдущие списки контроля доступа к файлам,
права на которые изменены, что приведет к непредсказуемому
поведению.Файловые системы с включенными ACLs показывают
знак + при просмотре прав на файлы.
Например:drwx------ 2 robert robert 512 Dec 27 11:54 private
drwxrwx---+ 2 robert robert 512 Dec 23 10:57 directory1
drwxrwx---+ 2 robert robert 512 Dec 22 10:20 directory2
drwxrwx---+ 2 robert robert 512 Dec 27 11:57 directory3
drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_htmlЗдесь мы видим, что каталоги directory1,
directory2, и directory3
используют преимущества ACL. Каталог
public_html их не использует.Использование ACLACL файловой системы можно просмотреть
с помощью утилиты &man.getfacl.1;. Например, для просмотра
настроек ACL файла
test, может использоваться команда:&prompt.user; getfacl test
#file:test
#owner:1001
#group:1001
user::rw-
group::r--
other::r--Для изменения ACL этого файла,
вызовите утилиту &man.setfacl.1;. Выполните:&prompt.user; setfacl -k testПараметр удалит все установленные
на данный момент ACL из файла или файловой
системы. Более предпочтительный метод это использование
параметра , который оставит необходимые
для работы ACL поля.&prompt.user; setfacl -m u:trhodes:rwx,group:web:r--,o::--- testВ вышеприведенной команде параметр
использован для изменения записей ACL
по умолчанию. Поскольку предустановленных записей не было (они были
удалены предыдущей командой), эта команда восстановит параметры
по умолчанию и задаст приведенные параметры. Имейте ввиду,
при добавлении пользователя или группы, которых нет в системе,
на stdout будет выведена ошибка
Invalid argument.TomRhodesПредоставил Сообщения безопасности FreeBSDСообщения безопасности &os;Как многие и высококачественные операционные системы, &os;
публикует Сообщения безопасности (Security
Advisories). Эти сообщения обычно отправляются по почте
в списки рассылки, посвященные безопасности и публикуются
в списке проблем только после выхода исправлений к соответствующим
релизам. В этом разделе разъясняется, что такое сообщения безопасности,
как их читать и какие меры принимать для исправления системы.Как выглядит сообщение?Сообщение безопасности &os; выглядит подобно сообщению ниже,
взятому из списка рассылки &a.security-notifications.name;.=============================================================================
&os;-SA-XX:XX.UTIL Security Advisory
The &os; Project
Topic: denial of service due to some problem
Category: core
Module: sys
Announced: 2003-09-23
Credits: Person@EMAIL-ADDRESS
Affects: All releases of &os;
&os; 4-STABLE prior to the correction date
Corrected: 2003-09-23 16:42:59 UTC (RELENG_4, 4.9-PRERELEASE)
2003-09-23 20:08:42 UTC (RELENG_5_1, 5.1-RELEASE-p6)
2003-09-23 20:07:06 UTC (RELENG_5_0, 5.0-RELEASE-p15)
2003-09-23 16:44:58 UTC (RELENG_4_8, 4.8-RELEASE-p8)
2003-09-23 16:47:34 UTC (RELENG_4_7, 4.7-RELEASE-p18)
2003-09-23 16:49:46 UTC (RELENG_4_6, 4.6-RELEASE-p21)
2003-09-23 16:51:24 UTC (RELENG_4_5, 4.5-RELEASE-p33)
2003-09-23 16:52:45 UTC (RELENG_4_4, 4.4-RELEASE-p43)
2003-09-23 16:54:39 UTC (RELENG_4_3, 4.3-RELEASE-p39)
&os; only: NO
For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the
following sections, please visit
http://www.FreeBSD.org/security/.
I. Background
II. Problem Description
III. Impact
IV. Workaround
V. Solution
VI. Correction details
VII. ReferencesПоле Topic показывает в чем именно
заключается проблема. Это обычно введение в сообщение
безопасности, упоминающее утилиту, в которой возникла
ошибка.Поле Category относится к затронутой части
системы и может быть выбрана из core,
contrib, или ports.
Категория core означает, что
уязвимость затрагивает основной компонент операционной системы
&os;. Категория contrib означает, что
уязвимость затрагивает программы, предоставленные проекту
&os;, например sendmail. Наконец,
категория ports означает, что уязвимость
затрагивает программное обеспечение, доступное из коллекции
портов.Поле Module указывает на местоположение
компонента, например sys. В этом примере
мы видим, что затронут модуль sys,
следовательно, эта уязвимость относится к компоненту,
используемому в ядре.Поле Announced отражает дату публикации
сообщения безопасности, или его анонсирования. Это означает,
что команда обеспечения безопасности убедилась, что проблема
существует и что патч помещен в репозиторий исходных текстов
&os;.Поле Credits упоминает частное лицо или
организацию, обнаружившую уязвимость и сообщившую о ней.Поле Affects дает информацию о релизах
&os;, к которым относится данная уязвимость. Для базовой
системы, просмотр вывода команды ident
для файлов, затронутых уязвимостью, поможет определить
ревизию. Номер версии портов приведен после имени порта
в каталоге /var/db/pkg. Если система
не синхронизируется с CVS репозиторием
&os; и не пересобирается ежедневно, высок шанс, что
она затронута уязвимостью.Поле Corrected показывает дату, время,
смещение во времени и релиз, в котором исправлена ошибка.Поле &os; only показывает, существует
ли эта уязвимость только в &os;, или затрагивает и другие
системы.Поле Background дает информацию именно
о той утилите, для которой выпущено сообщение. Как правило
информация о том, зачем утилита присутствует в &os;, для
чего она используется, и немного информации о том, как
появилась эта утилита.Поле Problem Description дает более
глубокие разъяснения возникшей проблемы. Оно может включать
информацию об ошибочном коде, или даже о том, как утилита
может быть использована для создания бреши в системе
безопасности.Поле Impact описывает тип воздействия,
который проблема может оказать на систему. Это может быть
все, что угодно, от атаки на отказ в обслуживании до
получения пользователями дополнительных привилегий, или
даже получения атакующим прав суперпользователя.Поле Workaround предлагает тем,
системным администраторам, которые не могут обновить систему,
обходной путь решения проблемы. Он может пригодиться при
недостатке времени, отсутствии подключения к сети или по
массе других причин. В любом случае, к безопасности нельзя
относиться несерьезно, и необходимо либо применить указанный
обходной путь, либо исправить систему.Поле Solution предлагает инструкции по
исправлению затронутой системы. Это пошаговое руководство,
протестированный метод восстановления безопасности системы.Поле Correction Details показывает
ветвь CVS (имя релиза с точками, замененными
на символы подчеркивания). Здесь также показан номер ревизии
каждого файла из каждой ветви.Поле References обычно упоминает
другие источники информации. Это могут быть веб страницы,
книги, списки рассылки и группы новостей.
diff --git a/ru_RU.KOI8-R/books/handbook/serialcomms/chapter.sgml b/ru_RU.KOI8-R/books/handbook/serialcomms/chapter.sgml
index cc9b938872..e7c6a48812 100644
--- a/ru_RU.KOI8-R/books/handbook/serialcomms/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/serialcomms/chapter.sgml
@@ -1,2744 +1,2744 @@
ДенисПеплинПеревод на русский язык: Последовательные соединенияКраткое описаниепоследовательные соединенияВ &unix; всегда была поддержка последовательных соединений.
Фактически, самые первые &unix; машины использовали последовательные
линии для пользовательского ввода/вывода. Многое изменилось с тех
пор, когда среднестатистический терминал состоял из
10-символов-в-секунду последовательного принтера и клавиатуры.
Эта глава рассказывает о некоторых способах, которыми FreeBSD
использует последовательные соединения.Прочитав эту главу, вы узнаете:Как подсоединить терминалы к системе
FreeBSD.Как использовать модем для дозвона на
удаленные хосты.Как разрешить удаленным пользователям
входить в вашу систему с помощью модема.Как загрузить систему с последовательной
консоли.Перед прочтением этой главы вам потребуется:Узнать как настраивать и устанавливать новое ядро ().Понять, что такое права доступа и процессы &unix; ().Кроме этого вам потребуется техническое руководство на
последовательное оборудование (модем или мультипортовую карту),
которую вы хотите использовать с FreeBSD.ВведениеТерминологияbits-per-secondбит-в-секундуbpsБит в секунду (Bits per Second) — скорость
передачи данныхDTEDTEТерминальное оборудование (Data Terminal Equipment)
— например, ваш компьютерDCEDCEОборудование связи (Data Communications Equipment)
— ваш модемRS-232кабели RS-232CСтандарт EIA для аппаратных последовательных
соединенийПри упоминании скорости передачи данных, в этой главе
не используется термин бод (baud).
Бод означает количество электрических импульсов, которые могут
быть переданы за период времени, а bps это
корректный термин для использования
(он хотя бы не создает столько проблем как предыдущий).Кабели и портыДля подсоединения модема или терминала к системе FreeBSD
потребуется последовательный порт и подходящий кабель
для последовательного устройства. Если вы уже знаете о
аппаратном обеспечении и требуемых кабелях, можете
пропустить этот раздел.КабелиЕсть несколько различных видов последовательных кабелей. Два
наиболее часто используемых в нашей ситуации типа это нуль-модемный
и стандартный (прямой) RS-232 кабель. Документация
на оборудование должна описывать тип требуемого кабеля.Нуль-модемные кабелинуль-модемный кабельНуль модемный кабель пропускает некоторые сигналы, такие как
signal ground, напрямую, а другие
заворачивает. Например, контакт
send data на одном конце соединяется с контактом
receive data на другом.Если вы изготавливаете собственный кабели, то можете сделать
собственный кабель для использования с терминалами. Эта таблица
показывает названия сигналов RS-232C и номера контактов на
разъеме DB-25.
-
+ СигналКонтактКонтактСигналSG7соединен с7SGTD2соединен с3RDRD3соединен с2TDRTS4соединен с5CTSCTS5соединен с4RTSDTR20соединен с6DSRDCD86DSRDSR6соединен с20DTRСоедините Data Set Ready (DSR) и
Data Carrier Detect (DCD) внутри корпуса
коннектора, а затем подключите к Data Terminal
Ready (DTR) на другой стороне.Стандартные кабели RS-232Cкабели RS-232CСтандартный последовательный кабель пропускает все RS-232C
сигналы напрямую. Так, send data на одном конце
кабеля соединяется с контактом send data на другом
конце. Этот тип кабеля предназначен для подсоединения модема,
а также подходит для некоторых терминалов.ПортыПоследовательные порты это устройства, через которые данные
передаются между компьютером с FreeBSD и терминалом. Этот
раздел описывает типы существующих портов и их адресацию в
FreeBSD.Типы портовСуществует несколько типов последовательных портов. Перед
изготовлением кабеля, вам потребуется убедиться, что он
подходит к портам терминала и системы FreeBSD.Большинство терминалов используют порты DB25. Персональные
компьютеры, включая PC под управлением FreeBSD, используют порты
DB25 или DB9. Если у вас есть мультипортовая последовательная
карта для PC, там могут быть RJ-12 или RJ-45 порты.Обратитесь к сопровождающей документации на оборудование
за информацией об используемых портах. Можно также определить
тип используемых портов по их внешнему виду.Имена портовВ FreeBSD доступ к каждому последовательному порту может быть
получен через файл в каталоге /dev.
Есть два различных типа файлов:Порты входящих соединений (dial-in) называются
/dev/ttydN,
где N это номер порта начиная
с нуля. Обычно, порты входящих соединений используются для
терминалов. Для корректной работы этим портам требуется,
чтобы последовательный кабель передавал сигнал data carrier
detect (DCD).Порты исходящих соединений (call-out) называются
/dev/cuaaN.
Они обычно используются не для терминалов, а только для
модемов. Вы можете использовать эти порты если
последовательный кабель или терминал не поддерживает сигнал
DCD.Если вы соединили терминал с первым последовательным портом
(COM1 в &ms-dos;), используйте
/dev/ttyd0 для доступа к терминалу. Если
терминал соединен со вторым последовательным портом (известным
также как COM2), используйте
/dev/ttyd1, и так далее.Настройка ядраFreeBSD c настройками по умолчанию поддерживает
последовательные порты. В мире &ms-dos; они известны как
COM1,
COM2,
COM3, и
COM4. На данный момент в FreeBSD
есть поддержка как простых мультипортовых
карт с последовательными интерфейсами, таких как
BocaBoard 1008 и 2016, так и более умных
мультипортовых карт, например карт Digiboard и
Stallion Technologies. Тем не менее, ядро по умолчанию
определяет только стандартные COM порты.Чтобы увидеть, как ядро определяет последовательные
порты, просмотрите сообщения, выводимые во время загрузки ядра,
или используйте команду /sbin/dmesg для
вывода сообщений ядра еще раз. В частности, обратите внимание
на сообщения, начинающиеся с символов
sio.Для просмотра только тех сообщений, которые содержат
слово sio, используйте команду:&prompt.root; /sbin/dmesg | grep 'sio'Например, в системе с четырьмя последовательными портами,
появятся такие специфичные для последовательных портов
сообщения:sio0 at 0x3f8-0x3ff irq 4 on isa
sio0: type 16550A
sio1 at 0x2f8-0x2ff irq 3 on isa
sio1: type 16550A
sio2 at 0x3e8-0x3ef irq 5 on isa
sio2: type 16550A
sio3 at 0x2e8-0x2ef irq 9 on isa
sio3: type 16550AЕсли ядро не распознает все последовательные порты,
вам возможно потребуется настроить ядро FreeBSD.
За детальной информацией по настройке ядра обращайтесь
к главе .Строки соответствующих устройств в файле конфигурации
ядра FreeBSD 4.X будут выглядеть примерно так:device sio0 at isa? port IO_COM1 irq 4
device sio1 at isa? port IO_COM2 irq 3
device sio2 at isa? port IO_COM3 irq 5
device sio3 at isa? port IO_COM4 irq 9и примерно так для FreeBSD 5.X:device sioВы можете закомментировать или полностью удалить эти
строки для отсутствующих устройств в FreeBSD 4.X;
в FreeBSD 5.X вам потребуется отредактировать файл
/boot/device.hints для настройки
последовательных портов. Обратитесь к странице справочника
&man.sio.4; за дополнительной информацией о настройке
последовательных портов и мультипортовых карт. Будьте
осторожны при использовании настроек, которые работали
в предыдущих версиях FreeBSD, поскольку флаги устройств
и синтаксис изменились в новых версиях.port IO_COM1 это синоним для
port 0x3f8, IO_COM2 для
0x2f8, IO_COM3 для
0x3e8, и IO_COM4 для
0x2e8. Это наиболее часто используемые
для соответствующих последовательных портов адреса.
Наиболее часто используемые прерывания 4, 3, 5, и 9.
Имейте ввиду, что обычные последовательные порты не
могут совместно использовать прерывания на ISA PC
(на мультипортовых картах есть электроника, позволяющая всем
чипам 16550A на плате совместно использовать одно или два
IRQ).Специальные файлы устройствК большинству устройств ядра можно получить доступ через
специальные файлы устройств, расположенные в
каталоге /dev. К устройствам
sio можно получить доступ через
/dev/ttydN
(устройства входящих вызовов, dial-in)
и /dev/cuaaN
(устройства исходящих вызовов, call-out).
FreeBSD предоставляет также устройства инициализации
(/dev/ttyidN и
/dev/cuaiaN),
устройства блокировки
(/dev/ttyldN и
/dev/cualaN).
Первые используются для инициализации параметров порта при
каждом его открытии (таких как crtscts
для модемов, использующих сигналы RTS/CTS
для управления потоком). Устройства блокировки используются
для установки флага блокировки на порт и предотвращения
изменения определенных параметров пользователями или
программами; обратитесь к страницам справочника &man.termios.4;,
&man.sio.4; и &man.stty.1; соответственно за информацией о
параметрах терминала, блокировании и инициализации устройств и
настройке терминала.Создание специальных файлов устройствFreeBSD 5.0 включает файловую систему
&man.devfs.5;, которая автоматически создает файлы
устройств по мере необходимости. Если вы работаете
с версией FreeBSD, поддерживающей devfs
просто пропустите этот раздел.В каталоге /dev находится shell скрипт,
называющийся MAKEDEV, который управляет
специальными файлами устройств. Чтобы использовать
MAKEDEV для создания специальных файлов
устройств исходящих соединений для порта
COM1 (порт 0), зайдите
(cd) в каталог /dev и
выполните команду MAKEDEV ttyd0.
Точно так же, для создания специальных файлов устройств
исходящих соединений для порта COM2
(порт 1), используйте MAKEDEV ttyd1.MAKEDEV создаст не только специальный файл
устройства
/dev/ttydN
но также
/dev/cuaaN,
/dev/cuaiaN,
/dev/cualaN,
/dev/ttyldN,
и
/dev/ttyidN.
После создания специальных файлов устройств, обязательно
проверьте права на файлы (особенно на файлы
/dev/cua*), чтобы убедиться, что только те
пользователи, которым дан доступ на эти файлы, могут читать и писать
в них — возможно, вы не хотите, чтобы обычные пользователи
использовали модемы для звонков. Права по умолчанию на
/dev/cua* должны подойти:crw-rw---- 1 uucp dialer 28, 129 Feb 15 14:38 /dev/cuaa1
crw-rw---- 1 uucp dialer 28, 161 Feb 15 14:38 /dev/cuaia1
crw-rw---- 1 uucp dialer 28, 193 Feb 15 14:38 /dev/cuala1Эти права позволяют пользователю uucp и
пользователям из группы dialer использовать
устройства исходящих вызовов.Настройка последовательных портовttydcuaaУстройство ttydN
(или
cuaaN) это обычное
устройство, которое потребуется открыть для приложений. Когда процесс
открывает устройство применяются настройки ввода/вывода терминала по
умолчанию. Вы можете посмотреть эти настройки с помощью команды&prompt.root; stty -a -f /dev/ttyd1Если вы измените настройки устройства, они будут действовать до его
закрытия. После повторного открытия, оно вернется к настройкам по
умолчанию. Для изменения настроек по умолчанию, вы можете открыть и
изменить установки начального состояния устройства.
Например, для включения по умолчанию режима ,
8-битного соединения и контроля передачи для
ttyd5, выполните:&prompt.root; stty -f /dev/ttyid5 clocal cs8 ixon ixoffrc filesrc.serialИнициализация последовательных устройств контролируется
файлом /etc/rc.serial. Этот файл
определяет настройки последовательных устройств по
умолчанию.Для предотвращения изменения программами отдельных установок,
настройте состояние блокировки устройства.
Например, для установки значения скорости
ttyd5 в 57600 bps, выполните:&prompt.root; stty -f /dev/ttyld5 57600Теперь приложение, открывающее ttyd5 и
пытающееся изменить скорость порта, получит скорость
57600 bps.MAKEDEVИ конечно, сделайте запись начальных значений и состояния
блокировки устройств доступной только учетной записи
root.SeanKellyПредоставил ТерминалытерминалыТерминалы предоставляют удобный и дешевый способ доступа к
системе FreeBSD, когда вы не сидите за консолью компьютера и
не подключены к сети. Этот раздел описывает использование
терминалов в FreeBSD.Пользователи и типы терминаловВ первых системах &unix; не было консолей. Вместо этого,
пользователи входили и запускали программы через терминалы, которые
были подключены к последовательным портам компьютеров. Это очень
похоже на использование модема и программного обеспечения терминала
для дозвона до удаленной системы и выполнения только-текстовой
работы.Консоли современных PC поддерживают высококачественную графику,
но возможность входа по последовательному порту на сегодняшний
день все еще доступна почти в каждой &unix; подобной операционной
системе; FreeBSD не исключение. Используя терминал, подключенный к
неиспользуемому последовательному порту, вы можете войти и запустить
текстовую программу, которую обычно запускаете в текстовой консоли
или в окне xterm системы X Window.Для корпоративных пользователей, вы можете подсоединить множество
терминалов к системе FreeBSD и поставить их на столы пользователей.
Для домашнего пользователя, устаревший IBM PC или &macintosh; может
быть подключен в качестве терминала к более мощному компьютеру
под управлением FreeBSD. Вы можете превратить однопользовательский
компьютер в мощную многопользовательскую систему.В FreeBSD три вида терминалов:Простые (dumb) терминалыPC, работающие в качестве терминаловX терминалыВ оставшейся части раздела описывается каждый вид.Простые терминалыПростые терминалы это специализированное оборудование,
позволяющее соединять компьютеры через последовательные
линии. Они называются простыми, поскольку
их вычислительных возможностей хватает только для
отображения, отправки и получения текста. Вы не сможете
запустить на них никаких программ. Компьютер, к которому
подсоединяется терминал, предоставляет все возможности
для запуска текстовых редакторов, компиляторов, почтовых
программ, игр и так далее.Есть сотни видов простых терминалов, изготовленных
различными производителями, включая DEC VT-100 и
Wyse WY-75. Почти любой терминал может работать с
FreeBSD. Некоторые high-end терминалы даже могут отображать
графику, но только отдельные программные пакеты могут
получить преимущество от этих расширенных возможностей.Простые терминалы популярны в рабочей среде, где не требуется
доступ к графическим приложениям, например тем, которые
предоставляет система X Window.PC, работающие в качестве терминаловЕсли простые терминалы могут
только отображать, отправлять и получать текст, возможностей
абсолютно любого персонального компьютера хватит для работы
в роли простого терминала. Все, что вам потребуется, это
подходящий кабель и какая-нибудь программа эмулятора
терминала.Это популярная домашняя конфигурация. Например, когда ваша
вторая половина занята работой на системной консоли FreeBSD,
вы можете одновременно выполнять только-текстовую работу
с менее мощного персонального компьютера, подключенного к
системе FreeBSD.X терминалыX терминалы это наиболее сложный тип существующих терминалов.
Вместо подключения к последовательному порту, они обычно
подключаются к сети, например Ethernet. Вместо работы только с
текстовыми приложениями, они могут отображать любое X
приложение.Мы представляем X терминалы только ради полноты описания.
Тем не менее, эта глава не охватывает
установку, настройку или использование X терминалов.НастройкаЭтот раздел описывает, что нужно сделать для настройки системы
FreeBSD и включения входа в систему через терминал.
Предполагается, что вы уже подключили терминал и настроили ядро
для включения поддержки последовательного порта, к которому он
подключен.Обратитесь к главе за информацией о
процессе init, отвечающем за контроль над
всеми процессами и за инициализацию системы во время загрузки.
Одна из задач, выполняемых init —
чтение файла /etc/ttys и запуск процесса
getty на доступных терминалах. Процесс
getty отвечает за чтение имени пользователя
и запуск программы login.Таким образом, для настройки терминалов в системе FreeBSD
необходимо выполнить следующие действия под
root:Добавить строку к /etc/ttys для файла
из каталога /dev, представляющего
последовательный порт, если этой строки еще нет.Настроить запуск команды /usr/libexec/getty
на этом порту и указать соответствующий тип
getty в файле
/etc/gettytab.Указать тип терминала по умолчанию.Переключить порт в состояние on
(включен)Указать, должен ли порт быть
secure (безопасным)Заставить init перечитать файл
/etc/ttys.Опционально, вы можете настроить свой тип
getty для использования на шаге 2,
добавив описание в файл /etc/gettytab.
За описанием обратитесь к страницам справочника
&man.gettytab.5; и &man.getty.8;.Добавление строки в /etc/ttysВ файле /etc/ttys находится список всех
портов системы FreeBSD, на которые возможен вход. Например, там
находится первая виртуальная консоль ttyv0.
Вы можете войти на консоль с помощью этой записи.
Файл содержит записи и для других виртуальных консолей,
последовательных портов, и псевдо-терминалов. Название файла
последовательного порта из каталога /dev
приводится без префикса /dev (например,
устройство /dev/ttyv0 будет записано
как ttyv0).Установка FreeBSD по умолчанию включает файл
/etc/ttys с поддержкой первых четырех
последовательных портов: от ttyd0 до
ttyd3. Если вы подключаете терминал
к одному из этих портов, добавлять записи терминалов не
потребуется.Добавление записей терминалов в
/etc/ttysПредположим, вы хотите подключить два терминала к
системе: Wyse-50 и старый 286 IBM PC с эмулятором
терминала VT-100. Мы подключаем Wyse к второму
последовательному порту и 286 к шестому последовательному
порту (порт на мультипортовой карте). Соответствующие
строки в /etc/ttys будут выглядеть
так:ttyd1 "/usr/libexec/getty std.38400" wy50 on insecure
ttyd5 "/usr/libexec/getty std.19200" vt100 on insecure
Первое поле, как правило, указывает имя специального
файла терминала, в соответствии с его именем в
/dev.Второе поле — это команда, исполняемая для этого
терминала, обычно &man.getty.8;. getty
инициализирует и открывает линию, устанавливает ее
скорость, приглашает пользователя к вводу
имени пользователя, а затем выполняет программу
&man.login.1;.Программа getty принимает один
(опциональный) параметр в командной строке, тип
getty. Тип
getty определяет характеристики
терминальной линии, такие как значение bps и четность.
Программа getty считывает эти характеристики
из файла /etc/gettytab.Файл /etc/gettytab содержит
множество записей для терминалов, как для старых так и для
новых. Почти во всех случаях запись, начинающаяся с
текста std, предназначена для работы
с аппаратными терминалами. Эти записи игнорируют четность.
Запись std есть для каждого значения
bps от 110 до 115200. Конечно, вы можете добавить
собственные записи в этот файл. Страница справочника
&man.gettytab.5; содержит дополнительную информацию.При установке типа getty
в файле /etc/ttys убедитесь в наличии
соответствующей записи терминала.Например, Wyse-50 не использует четность и соединяется на
38400 bps. 286 PC не использует четность и
соединяется на 19200 bps.Третье поле определяет тип терминала, обычно
подключаемого к этой линии tty. Для портов входящих
соединений обычно используется значение
unknown или dialup,
поскольку пользователь может подключить практически
любой тип терминала или программу. Для аппаратных
терминалов тип не меняется, поэтому вы можете поместить
в это поле определенный тип терминала из базы данных
&man.termcap.5;.Например, Wyse-50 использует реальный тип терминала,
а 286 PC, работающий с Procomm,
настроен на эмуляцию VT-100.Четвертое поле определяет должен ли порт быть включен.
Размещение здесь on укажет процессу
init запустить программу, указанную
во втором поле, getty. Если вы
поместите off в это поле, команда
getty не будет запущена и вход
на этот порт станет невозможен.Последнее поле используется, чтобы указать, является
ли порт безопасным. Пометка порта безопасным означает,
что вы доверяете ему достаточно для того, чтобы разрешить
учетной записи root (или любой
учетной записи с UID 0) входить с этого порта. Небезопасные
порты не разрешат вход root.
На небезопасном порту пользователи должны войти с
через непривилегированную учетную запись, а затем
использовать &man.su.1; или подобный механизм для
получения привилегий суперпользователя.Настоятельно рекомендуется использовать
insecure даже для терминалов, находящихся за
закрытыми дверями. Довольно легко использовать
su после входа, если вам потребуются
привилегии суперпользователя.Заставьте init перечитать
/etc/ttysПосле выполнения необходимых изменений в файле
/etc/ttys, вам потребуется отправить сигнал
SIGHUP (hangup) процессу init, чтобы заставить
его перечитать его файл настройки. Например:&prompt.root; kill -HUP 1init это всегда первый из запущенных в
в системе процессов, поэтому его PID всегда 1.Если все установлено правильно, все кабели на месте и
терминалы включены, процесс getty должен
быть запущен на каждом терминале и вы увидите приглашение
ко входу на каждом терминале.Решение проблем с соединениемДаже при самом внимательном отношении к деталям, при настройке
терминала все же могут возникнуть проблемы. В этом разделе
приведен список симптомов и предлагается несколько решений.Не появляется приглашение ко входуУбедитесь, что терминал подключен и его питание включено.
Убедитесь, что эмулятор терминала запущен на соответствующем
порту.Убедитесь, что кабель хорошо подключен и к терминалу и к
компьютеру с FreeBSD. Убедитесь, что правильно выбран тип
кабеля.Убедитесь, что терминал и FreeBSD имеют одинаковые установки
значения bps и четности. Если у вас видео терминал, убедитесь,
что контраст и яркость включены. Если это принт-терминал,
убедитесь, что бумага и чернила в порядке.Убедитесь, что процесс getty запущен
и обслуживает терминал. Например, для получения списка запущенных
процессов getty с помощью ps,
выполните:&prompt.root; ps -axww|grep gettyВы должны увидеть строку для соответствующего терминала.
Например, если getty запущена на втором
последовательном порту ttyd1 и использует
запись std.38400 из файла
/etc/gettytab, отобразится следующее:22189 d1 Is+ 0:00.03 /usr/libexec/getty std.38400 ttyd1Если процесс getty не запущен, убедитесь,
что вы включили порт в /etc/ttys. Не забудьте
также запустить kill -HUP 1 после
изменения файла ttys.Если процесс getty запущен, но на терминале
по-прежнему не отображается приглашение ко входу, или если
приглашение отображается, но войти невозможно, терминал
или кабель, возможно, не поддерживают квитирование связи.
Попробуйте изменить поле в /etc/ttys
с std.38400 на 3wire.38400.
Запись 3wire похожа на
std, но игнорирует квитирование связи.
Вам может потребоваться уменьшить скорость соединения или
включить программный контроль передачи при использовании
3wire для предотвращения переполнений
буфера.Вместо приглашения ко входу на экране появляется
мусорУбедитесь, что терминал и FreeBSD имеют одинаковые установки
значения bps и четности. Проверьте процесс
getty, чтобы убедиться, что используется
подходящий тип getty. Если это не так,
отредактируйте /etc/ttys и запустите
kill -HUP 1.Символы появляются дважды, пароль отображается при
вводеПереключите терминал (или программу эмулятора терминала)
с half duplex или local echo на
full duplex.GuyHelmerПредоставил SeanKellyДополнил Входящие соединения по модемувходящие соединенияНастройка системы FreeBSD для поддержки входящих соединений
очень похожа на подсоединение терминалов за исключением того,
что вы работаете с модемами вместо терминалов.Внешние и внутренние модемыВнешние модемы более удобны для дозвона, поскольку легко могут
быть настроены с помощью параметров, сохраняемых в энергонезависимой
памяти. На них обычно есть индикаторы, отображающие состояние
основных RS-232 сигналов. Мигающие индикаторы впечатляют,
но кроме того они также очень полезны для индикации правильной
работы модема.Внутренние модемы обычно не снабжаются энергонезависимой
памятью, поэтому их настройка может ограничиваться установкой
DIP переключателей. Если на внутреннем модеме есть индикаторы,
их обычно сложно увидеть при закрытой крышке корпуса.Модемы и кабелимодемЕсли вы используете внешний модем, несомненно потребуется
подходящий кабель. Стандартный RS-232C кабель должен подойти, если
подключены все обычные сигналы:Transmitted Data (TD)Received Data (RD)Request to Send (RTS)Clear to Send (CTS)Data Set Ready (DSR)Data Terminal Ready (DTR)Carrier Detect (CD)Signal Ground (SG)FreeBSD требуются сигналы RTS и
CTS для контроля передачи на скоростях выше
2400 bps, сигнал CD для определения, был ли
ответ на сигнал или произошло отключение линии, и сигнал
DTR для сброса модема после завершения
сессии. Некоторые кабели не поддерживают все необходимые
сигналы, поэтому, если вы столкнулись с проблемами, например,
если сессия не завершается после отсоединения линии, причиной
возможно являются проблемы с кабелем.Как и другие &unix; подобные операционные системы, FreeBSD
использует аппаратные сигналы для определения того, был ли
ответ на звонок или линия была отключена и требуется
завершить работу модема и сбросить его в начальное состояние.
FreeBSD избегает отправлять команды модему или просматривать
отчеты о статусе от модема. Если вы знакомы с настройкой
BBS, это может показаться неудобным.Рекомендации по последовательным интерфейсамFreeBSD поддерживает интерфейсы, основанные на NS8250, NS16450,
NS16550, и NS16550A EIA RS-232C (CCITT V.24). Устройства 8250 и
16450 снабжены односимвольным буфером. Устройство 16550 снабжено
16-ти символьным буфером, который повышает производительность
системы. (Ошибки в 16550 делают невозможным использование
16-символьного буфера, поэтому используйте 16550A если возможно).
Поскольку устройства с односимвольным буфером предъявляют большие
требования к операционной системе, чем с 16-ти символьным буфером,
предпочтительны устройства на 16550A. Если в системе много
активных последовательных портов или нагрузка велика,
устройства на 16550A лучше подходят для поддержки соединений с
малым количеством ошибок.Краткий обзорgettyКак и с терминалами, init запускает процесс
getty на каждом настроенном для входящих
звонков последовательном порту. Например, если модем подключен
к /dev/ttyd0, команда ps ax
может вывести следующее: 4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyd0Когда пользователь дозванивается на подключенный модем, модем
выдает сигнал CD (Carrier Detect).
Ядро определяет, что несущая обнаружена и завершает открытие порта
командой getty. getty
отправляет приглашение login: на указанной скорости.
getty ожидает в ответ набор символов, и, как
правило, получает неправильный набор (обычно это происходит
из-за того, что скорость соединения модема отличается от скорости
getty). getty пробует
подобрать скорость линии до тех пор, пока не получит правильный
набор символов./usr/bin/loginПосле того, как будет введено имя пользователя,
getty выполняет
/usr/bin/login, которая завершает вход,
запрашивая пароль пользователя и запуская оболочку.Файлы настройкиЕсть три файла настройки системы в каталоге
/etc, которые возможно потребуется
отредактировать для включения удаленного доступа по модему в FreeBSD.
Первый, /etc/gettytab, содержит информацию по
настройке даемона /usr/libexec/getty.
Второй, /etc/ttys, содержит информацию,
указывающую /sbin/init на каких устройствах
tty должны быть запущены процессы
getty. Наконец, вы можете поместить команды
инициализации портов в скрипт /etc/rc.serial.В &unix; есть две школы настройки модемов для входящих соединений.
Одна предпочитает настраивать модемы и системы так, что не
важно на какой скорости подсоединяется удаленный пользователь.
Локальный интерфейс RS-232 компьютер-модем работает на жестко
заданной скорости. Преимущество этой настройки в том, что
удаленный пользователь всегда сразу видит приглашение ко входу.
Обратная сторона в том, что система не знает, какова на самом
деле скорость передачи данных, поэтому полноэкранные программы,
такие как Emacs, не настраивают свои методы отображения на экране
для работы с медленными соединениями.Другая школа настраивает интерфейс RS-232 для работы с различной
скоростью в зависимости от скорости подсоединения удаленного
пользователя. Например, соединение модемов по протоколу V.32bis
(14.4 Кбит/с) установит скорость порта RS-232 равной
19.2 Кбит/с, а соединение на скорости 2400 бит/с
установит скорость RS-232 равной 2400 бит/с. Поскольку
getty не понимает сообщений модема о
скорости соединения, getty выдает
приглашение login: на установленной по умолчанию
скорости и считывает символы, полученные в ответе. Если пользователь
видит мусор вместо приглашения ко входу, это означает,
что нужно нажимать Enter до тех пор, пока не
появится приглашение ко входу. Если скорости не совпадают,
getty получает все, что вводит пользователь, в
виде мусора, пробует переключиться на другую скорость
и выдает приглашение login: опять. Эта процедура
может продолжаться до отвращения, но обычно требуется одно или два
нажатия клавиши перед появлением нормально выглядящего приглашения.
Очевидно, эта последовательность входа не так хороша, как метод
с фиксированной скоростью, но при низкой скорости соединения
работать с полноэкранными программами станет проще.В этом разделе делается попытка дать сбалансированную информацию
для настройки, но предпочтение будет отдано установке скорости
соединения с модемом в соответствие скорости подключения./etc/gettytab/etc/gettytab/etc/gettytab это файл в стиле
&man.termcap.5;, содержащей информацию по настройке &man.getty.8;.
Пожалуйста, обратитесь к странице справочника &man.gettytab.5;
за полной информацией о формате файла и за списком
возможностей getty.Настройка фиксированной скоростиЕсли вы зафиксировали скорость соединения модема на
определенной скорости, редактировать файл
/etc/gettytab скорее всего не
потребуется.Настройка изменяемой скоростиВам потребуется сделать запись в
/etc/gettytab для предоставления
getty информации о скоростях, которые
предполагается использовать для модема. Если у вас
2400 бит/с модем, возможно, подойдет существующая
запись D2400.#
# Fast dialup terminals, 2400/1200/300 rotary (can start either way)
#
D2400|d2400|Fast-Dial-2400:\
:nx=D1200:tc=2400-baud:
3|D1200|Fast-Dial-1200:\
:nx=D300:tc=1200-baud:
5|D300|Fast-Dial-300:\
:nx=D2400:tc=300-baud:Если у вас более скоростной модем, вам возможно потребуется
добавить запись в /etc/gettytab; вот запись,
которую вы можете использовать для 14.4 Кбит/с модема с
максимальной скоростью интерфейса 19.2 Кбит/с:#
# Additions for a V.32bis Modem
#
um|V300|High Speed Modem at 300,8-bit:\
:nx=V19200:tc=std.300:
un|V1200|High Speed Modem at 1200,8-bit:\
:nx=V300:tc=std.1200:
uo|V2400|High Speed Modem at 2400,8-bit:\
:nx=V1200:tc=std.2400:
up|V9600|High Speed Modem at 9600,8-bit:\
:nx=V2400:tc=std.9600:
uq|V19200|High Speed Modem at 19200,8-bit:\
:nx=V9600:tc=std.19200:Эта настройка включает 8-битные соединения без программного
контроля четности.В примере выше скорость порта будет переключаться в цикле
начиная с 19.2 Кбит/с (для соединения по V.32bis), затем
9600 бит/с (для V.32), 2400 бит/с, 1200 бит/с,
300 бит/с, и обратно на 19.2 Кбит/с.
Переключение скоростей в цикле реализовано с помощью
nx= (next table).
Каждая из линий использует tc= (table
continuation) для указания стандартных
(std) настроек на каждой скорости.Если у вас 28.8 Кбит/с модем и/или вы хотите получить
преимущество от сжатия на скорости 14.4 Кбит/с, потребуются
скорости выше, чем 19.2 Кбит/с. Вот пример записи из
gettytab для начала соединения на скорости
57.6 Кбит/с:#
# Additions for a V.32bis or V.34 Modem
# Starting at 57.6 Kbps
#
vm|VH300|Very High Speed Modem at 300,8-bit:\
:nx=VH57600:tc=std.300:
vn|VH1200|Very High Speed Modem at 1200,8-bit:\
:nx=VH300:tc=std.1200:
vo|VH2400|Very High Speed Modem at 2400,8-bit:\
:nx=VH1200:tc=std.2400:
vp|VH9600|Very High Speed Modem at 9600,8-bit:\
:nx=VH2400:tc=std.9600:
vq|VH57600|Very High Speed Modem at 57600,8-bit:\
:nx=VH9600:tc=std.57600:Если у вас медленный CPU или сильно загруженная система
без последовательных портов на базе 16550A, на скорости
57.6 Кбит/с могут возникнуть ошибки
siosilo./etc/ttys/etc/ttysНастройка файла /etc/ttys
была описана в .
Настройка модемов похожа, но потребуется передавать
getty различные аргументы и
указывать различные типы терминалов. Общий формат
для фиксированной и переменной скорости такой:ttyd0 "/usr/libexec/getty xxx" dialup onПервый пункт в строке выше это специальный файл устройства для
этой записи — ttyd0 означает,
что getty будет запущена на
/dev/ttyd0. Второй пункт,
"/usr/libexec/getty
xxx"
(xxx будет замещено на запись из
gettytab для начальной скорости), это процесс,
который будет запущен на данном устройстве. Третий пункт,
dialup, это тип терминала по умолчанию.
Четвертый параметр, on, указывает
init, что линия включена. Может быть пятый
параметр, secure, но он должен использоваться
только для терминалов, которые физически безопасны (таких как
системная консоль).Тип терминала по умолчанию (dialup в примере
выше) может зависеть от личных предпочтений.
dialup это традиционный тип терминала по
умолчанию на линиях для дозвона, который позволяет пользователям,
зная что тип терминала dialup, автоматически
настраивать свой тип терминала. Однако, автор находит более
легким указание vt102 в качестве типа терминала
по умолчанию, поскольку пользователи работают на своих
удаленных системах с эмулятором терминала VT102.После внесения изменений в /etc/ttys,
вы можете отправить процессу init сигнал
HUP перечитать файл. Используйте команду
&prompt.root; kill -HUP 1
для отправки сигнала. Если вы настраиваете систему в первый раз,
то возможно захотите подождать, пока модем(ы) правильно
настроятся и соединятся перед отправкой сигнала
init.Настройка фиксированной скоростиДля настройки соединения с фиксированной скоростью, в файле
ttys должна быть запись с фиксированной
скоростью для getty. Для модема, скорость порта
которого фиксирована на значении 19.2 Кбит/с, строка в
ttys может выглядеть так:ttyd0 "/usr/libexec/getty std.19200" dialup onЕсли скорость модема фиксирована на другом значении,
подставьте соответствующее значение в
std.speed
вместо std.19200. Убедитесь, что вы
используете тип, описанный в
/etc/gettytab.Настройка переменной скоростиВ настройке с переменной скоростью, запись в
ttys должна обращаться к соответствующей
auto-baud (sic) записи в
/etc/gettytab. Например, если вы добавите
предложенную выше запись для подключения модема с переменной
скоростью, которая начинается с 19.2 Кбит/с (запись в
gettytab начинается с
V19200), запись в
ttys может выглядеть так:ttyd0 "/usr/libexec/getty V19200" dialup on/etc/rc.serialфайлы rcrc.serialДля высокоскоростных модемов, таких как V.32, V.32bis и V.34,
требуется использование аппаратного контроля передачи
(RTS/CTS). Вы можете добавить команды
stty к файлу /etc/rc.serial
для установки флага аппаратного контроля передачи в ядре
FreeBSD для модемных портов.
Например, для установки флага termioscrtscts на последовательном порту номер 1
(COM2) при инициализации устройств
для входящей и исходящей связи, в
/etc/rc.serialдолжны быть добавлены
следующие строки:# Serial port initial configuration
stty -f /dev/ttyid1 crtscts
stty -f /dev/cuaia1 crtsctsНастройка модемаЕсли параметры вашего модема могут быть сохранены в
энергонезависимой памяти, потребуется использовать
терминальную программу (например, Telix под &ms-dos; или
tip под FreeBSD) для установки
параметров. Подсоединитесь к модему, используя ту же скорость
соединения, которую использует getty в
качестве начальной скорости, и настройте модем для
соответствия следующим требованиям:CD включен после соединенияDTR включен во время работы; сброс DTR
отключает линию и переводит модем в начальное состояниеCTS контроль переданных данныхКонтроль потока XON/XOFF отключенRTS контроль принятых данныхТихий режим (без кодов возврата)Эхо команд отключеноПрочтите документацию на модем для определения какие команды
и/или DIP переключатели требуются чтобы установить эти
настройки.Например, для установки вышеуказанных параметров на внешнем
14,400 модеме &usrobotics; &sportster;, требуется отправить
модему следующие команды:ATZ
AT&C1&D2&H1&I0&R2&WВы, возможно, захотите настроить и другие параметры модема,
такие как использование сжатия V.42bis и/или MNP5.Внешний &usrobotics; &sportster; 14,400 модем также снабжен
некоторыми DIP переключателями, которые требуется установить;
для других модемов эти настройки могут быть использованы в
качестве примера:Переключатель 1: вверх — нормальный DTRПереключатель 2: N/A (визуальные коды возврата/числовые коды
возврата)Переключатель 3: вверх — подавление кодов возвратаПереключатель 4: вниз — без эхо, offline командыПереключатель 5: вверх — авто ответПереключатель 6: вверх — нормальный контроль
несущейПереключатель 7: вверх — загрузить установки по
умолчанию из NVRAMПереключатель 8: N/A (Smart/Dumb режимы)Коды возврата должны быть отключены/подавлены для устранения
проблем, которые могут возникнуть, если getty
ошибочно выдаст приглашение login: модему в
командном режиме и модем вернет (echo) эту команду или код
возврата. Эта последовательность может привести к дополнительному
и бессмысленному обмену командами между getty
и модемом.Настройка фиксированной скоростиДля настройки фиксированной скорости вам потребуется настроить
модем с поддержкой постоянной скорости обмена данными
модем-компьютер независимо от скорости соединения. На внешнем
модеме &usrobotics; &sportster; 14,400 эти команды зафиксируют
скорость передачи модем-компьютер на скорости, которая установлена
при выполнении команды:ATZ
AT&B1&WНастройка переменной скоростиДля настройки переменной скорости вам потребуется настроить модем
с поддержкой изменения скорости передачи данных через последовательный
порт в соответствии через скоростью соединения. Следующие команды
зафиксируют скорость передачи данных с коррекцией ошибок внешнего
модема &usrobotics; &sportster; 14,400 на значении, которое
установлено при выполнении команды, но сделают возможным изменение
скорости последовательного порта для соединений без коррекции
ошибок:ATZ
AT&B2&WПроверка настроек модемаБольшинство высокоскоростных модемов предоставляют команды для
просмотра текущих параметров модема в виде, отчасти приспособленном
для чтения. Для внешних модемов &usrobotics; &sportster; 14,400
команда ATI5 отображает установки, сохраненные в
энергонезависимой памяти. Для просмотра действующих параметров
модема (с учетом положения DIP переключателей), используйте
команду ATZ, а затем ATI4.Если ваш модем другого производителя, проверьте руководство
к модему для аккуратной проверки параметров настройки модема.Решение проблемВот несколько шагов, которые нужно выполнить для проверки
настроек.Проверьте систему FreeBSDПодсоедините модем к системе FreeBSD, загрузите систему, и,
если на модеме есть индикаторы, посмотрите, загорелся ли
индикатор DTR при появлении приглашения
login: на системной консоли — если он
загорелся, это означает, что FreeBSD запустила процесс
getty на соответствующем коммуникационном
порту и модем ожидает входящего звонка.Если индикатор DTR не загорелся, войдите
на консоль системы FreeBSD и выполните команду ps
ax, чтобы увидеть, пытается ли FreeBSD запустить процесс
getty на соответствующем порту. Вы должны
увидеть строки вроде этих среди показанных процессов: 114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd0
115 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd1Если вы видите что-то другое, вроде этого: 114 d0 I 0:00.10 /usr/libexec/getty V19200 ttyd0и модем все еще не принимает звонок, это означает, что
getty завершила открытие коммуникационного
порта. Это может означать проблему с кабелем или неправильную
настройку модема, поскольку getty не должна
открывать коммуникационный порт, пока модем не установит
CD (обнаружение несущей).Если вы не видите процессов getty, ожидающих
открытия соответствующего порта
ttydN,
внимательно проверьте записи в /etc/ttys
и попробуйте найти ошибки, если они есть. Проверьте также лог файл
/var/log/messages, нет ли там сообщений от
init или getty, имеющих
отношение к проблеме. Если сообщения есть, проверьте еще раз
файлы настройки /etc/ttys и
/etc/gettytab, как и соответствующие
специальные файлы устройств /dev/ttydN, чтобы
обнаружить ошибки, отсутствующие записи или отсутствующие
специальные файлы устройств.Попробуйте позвонить на модемПопробуйте дозвониться до системы; убедитесь, что используете
8 бит без четности и 1 стоп бит на удаленной системе. Если
вы не получите приглашение сразу, или получите случайные
данные, попробуйте нажимать Enter примерно
раз в секунду. Если вы все еще не видите приглашения
login: после нескольких попыток, попробуйте
отправить команду BREAK. Если вы используете
для дозвона высокоскоростной модем, попробуйте позвонить еще раз
после фиксирования скорости интерфейса дозванивающегося модема
(например, с помощью команды AT&B1 для
модема &usrobotics; &sportster;).Если вы все еще не можете получить приглашение
login:, проверьте
/etc/gettytab еще раз и убедитесь,
чтоИмя параметра getty, указанного в
/etc/ttys, совпадает с именем параметра в
/etc/gettytabКаждая запись nx= соответствует
имени другой записи в gettytabКаждая запись tc= соответствует
имени другой записи в gettytabЕсли система FreeBSD не отвечает на звонок, убедитесь, что
модем настроен для ответа на звонок при включении
DTR. Если модем настроен правильно, проверьте,
что DTR включается, взглянув на индикаторы
модема (если они есть).Если вы проверили все несколько раз и все еще не добились
результата, сделайте перерыв и вернитесь к настройкам позже.
Если опять ничего не получилось, возможно вам потребуется
отправить письмо в &a.questions;, описав модем
и возникшую проблему, участники рассылки попробуют помочь
вам.Исходящие соединения по модемуисходящие соединенияТекст, приведенный ниже, это советы, позволяющие настроить ваш
хост для доступа к другому компьютеру через модем. Они подходят
для установления терминальной сессии с удаленным хостом.Это подходит для входа на BBS.Этот вид соединения может очень выручить, если требуется
получить файл из интернет и есть проблемы с PPP. Если вам
требуется зайти куда-то по FTP, а PPP не работает, используйте
терминальную сессию для получения файла по FTP. Затем используйте
zmodem для сброса его на свой компьютер.Мой модем Stock Hayes не поддерживается, что я могу сделать?На самом деле, страница руководства для tip
устарела. Встроенная поддержка generic Hayes уже есть. Используйте
at=hayes в файле
/etc/remote.Драйвер Hayes не умеет работать с некоторыми расширенными
возможностями более новых модемов — сообщения вроде
BUSY, NO DIALTONE, или
CONNECT 115200. Вы должны отключить
эти сообщения при использовании tip (с
помощью ATX0&W).Таймаут дозвона для tip составляет 60 секунд.
Ваш модем должен использовать меньшее значение, или tip
решит, что возникли проблемы со связью. Попробуйте
ATS7=45&W.Оригинальная tip не полностью поддерживает
модемы Hayes. Решить это проблему можно отредактировав файл
tipconf.h в каталоге
/usr/src/usr.bin/tip/tip. Конечно, для этого
вам потребуются исходные тексты.Замените строку #define HAYES 0 на
#define HAYES 1. Затем выполните
make и make install. После
этого все должно работать отлично.Как нужно выполнять команды AT?/etc/remoteСделайте то, что называется прямой записью в
файле /etc/remote. Например, если модем
подключен к первому последовательному порту,
/dev/cuaa0, добавьте следующую строку:cuaa0:dv=/dev/cuaa0:br#19200:pa=noneИспользуйте для br наибольшее значение bps, поддерживаемое
модемом. Для подключения к модему выполните
tip cuaa0.Если в системе нет устройства /dev/cuaa0,
выполните:&prompt.root; cd /dev
&prompt.root; sh MAKEDEV cuaa0Или используйте cu под
root так:&prompt.root; cu -lline -sspeedline это последовательный порт
(например /dev/cuaa0), а
speed это скорость
(например 57600). После ввода команд AT
наберите ~. для выхода.Знак @ не работает для pn!Знак @ в телефонном номере указывает
tip взять телефонный номер из
/etc/phones. Но знак @
это также специальный символ в таких файлах как
/etc/remote. Экранируйте его с помощью
обратной косой черты:pn=\@Как я могу позвонить по телефонному номеру из командной
строки?Поместите так называемую generic запись в файл
/etc/remote. Например:tip115200|Dial any phone number at 115200 bps:\
:dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
tip57600|Dial any phone number at 57600 bps:\
:dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:Затем вы можете сделать следующее:&prompt.root; tip -115200 5551234Если вы предпочитаете cu команде
tip, используйте generic запись для
cu:cu115200|Use cu to dial any number at 115200bps:\
:dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:и выполните:&prompt.root; cu 5551234 -s 115200Должен ли я вводить значение bps каждый раз?Создайте запись tip1200 или
cu1200, но используйте то значение bps, которое
записано в поле br. tip считает, что хорошее
значение по умолчанию это 1200 bps, поэтому обращается к
записи tip1200. Тем не менее, значение bps
будет другим.Я получаю доступ ко множеству хостов через терминальный
серверВместо ожидания соединения и ввода каждый раз
CONNECT <host>, используйте возможность
tipcm. Вот пример записи в
/etc/remote:pain|pain.deep13.com|Forrester's machine:\
:cm=CONNECT pain\n:tc=deep13:
muffin|muffin.deep13.com|Frank's machine:\
:cm=CONNECT muffin\n:tc=deep13:
deep13:Gizmonics Institute terminal server:\
:dv=/dev/cuaa2:br#38400:at=hayes:du:pa=none:pn=5551234:Она позволит вам вводить tip pain или
tip muffin для соединения с хостами pain или
muffin, и tip deep13 для доступа к терминальному
серверу.Может ли tip соединяться более через одну линию для каждого
сайта?Эта проблема часто возникает в университете, где несколько
модемных линий и несколько тысяч студентов, пытающихся их
использовать.Создайте запись для университета в
/etc/remote и используйте @
для pn:big-university:\
:pn=\@:tc=dialout
dialout:\
:dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:Затем, создайте список телефонов для университета в
/etc/phones:big-university 5551111
big-university 5551112
big-university 5551113
big-university 5551114tip попробует связаться с каждым в указанном
порядке, затем прекратит попытки. Если вы хотите продолжать
соединяться, запустите tip в цикле.Почему я должен дважды нажать
CtrlP
для отправки
CtrlP
один раз?CtrlP
это управляющий символ по умолчанию, используемый
для указания tip того, что далее идут символьные
данные. Вы можете сделать любой другой символ управляющим с помощью
экранирования ~s, которое означает
установить переменную.Введите
~sforce=single-char,
завершив ввод новой строкой. single-char
это любой одиночный символ. Если вы не введете
single-char, управляющим символом станет
nul, который можно получить, введя
Ctrl2
или
CtrlSpace.
Хорошее значение для single-char это
ShiftCtrl6, которое используется только на некоторых терминальных
серверах.Вы можете использовать в качестве управляющего символа все, что
захотите, поместив его в файл
$HOME/.tiprc:force=<single-char>Почему все, что я ввожу, вдруг стало отображаться в верхнем
регистре??Вы нажали
CtrlA, повышающий символtip,
который был специально введен для тех, у кого не работает клавиша
caps-lock. Используйте ~s как в примере выше
для установки переменной raisechar в подходящее
значение. Фактически, вы можете установить ее в то же значение, что
и управляющий символ, если не собираетесь использовать ни один из
них.Вот пример .tiprc, отлично подходящий для пользователей
Emacs, которым часто требуется вводить
Ctrl2
и
CtrlA:force=^^
raisechar=^^Символ ^^ это
ShiftCtrl6.Могу ли я передавать файлы с помощью tip?Если вы соединяетесь с другой системой &unix;, возможны передача
и прием файлов с помощью команды ~p (put) и
~t (take). Эти команды запускают
cat и echo в удаленной системе
для приема и передачи файлов. Синтаксис следующий:~plocal-fileremote-file~tremote-filelocal-fileКоррекции ошибок нет, поэтому возможно лучше использовать другой
протокол, например zmodem.Как мне запустить zmodem с tip?Для получения файла запустите отправляющую программу на удаленной
стороне. Затем, наберите ~C rz для начала
локального приема файла.Для отправки файлов запустите принимающую программу на удаленной
стороне. Затем, наберите
~C sz файлы для
отправки их на удаленную систему.KazutakaYOKOTAПредоставил BillPaulОригинальный документ написал Настройка последовательной консолипоследовательная консольВведениеFreeBSD может загружаться при использовании в качестве консоли
текстового терминала на последовательном порту. Такая конфигурация
может быть полезна в двух случаях: для системных администраторов,
устанавливающих FreeBSD на компьютеры без подключенных клавиатуры
или монитора, и для разработчиков, производящих отладку ядра или
драйверов устройств.Как описано в , процесс загрузки FreeBSD
состоит из трех стадий. Первые две стадии реализованы в блоке
загрузки, находящемся в начале слайса FreeBSD на загрузочном
диске. На третей стадии загрузочный блок запускает загрузчик
(/boot/loader).Для настройки последовательной консоли вам потребуется настроить
блок загрузки, загрузчик и ядро.Настройка последовательной консоли, краткая версияВ этом разделе предполагается, что вы используете настройки
по умолчанию, знаете как подключиться к последовательным портам
и просто хотите увидеть краткий обзор настройки последовательной
консоли. Если эти шаги вызывают у вас затруднения, обратитесь
к более подробному разъяснению всех этих параметров и расширенных
настроек в .Подключитесь к последовательному порту. Последовательная
консоль будет на COM1.Выполните echo -h > /boot.config для
включения последовательной консоли для загрузчика и ядра.Отредактируйте /etc/ttys и измените
off на on для записи
ttyd0. Это включит приглашение на вход
на последовательной консоли так же, как обычно настраиваются
видео консоли.Команда shutdown -r now перезагрузит
систему с включенной последовательной консолью.Настройка последовательной консолиПодготовьте кабель.нуль-модемный кабельВам потребуется нуль-модемный или стандартный
последовательный кабель и нуль-модемный адаптер. Обратитесь к
, где рассматриваются
последовательные кабели.Отключите клавиатуру.Большинство систем PC тестируют клавиатуру во время включения
(POST) и выдают ошибку если клавиатура не обнаружена. Некоторые
системы при отсутствии клавиатуры выдают звуковой сигнал и не
загружаются пока клавиатура не будет подключена.Если компьютер сообщает об ошибке, но все же загружается,
вам не потребуется делать что-то еще. (Некоторые компьютеры
с Phoenix BIOS просто сообщают Keyboard
failed и продолжают загрузку).Если компьютер не загружается без клавиатуры, вам потребуется
настроить BIOS так, чтобы отсутствие клавиатуры игнорировалось
(если это возможно). Обратитесь к руководству по материнской
плате за деталями о том, как это сделать.Установка параметра клавиатуры Not installed
в настройках BIOS не означает, что вы не
сможете использовать клавиатуру. Все, что делает этот
параметр — указывает BIOS не тестировать клавиатуру во
время загрузки, поэтому ее отсутствие не вызывает ошибки.
Вы можете оставить клавиатуру подключенной, даже если с флагом
Not installed и она все еще будет
работать.Если в к системе подключена &ps2; мышь, отключите ее, как
и клавиатуру. Мышь &ps2; использует часть оборудования
совместно с клавиатурой, поэтому если оставить ее подключенной,
тестирование клавиатуры может ошибочно выдать наличие
последней. Например, система Gateway 2000 Pentium 90 MHz
ведет себя именно так. К тому же, это не проблема, поскольку
мышь без клавиатуры как правило не нужна.Подключите текстовый терминал к COM1
(sio0).Если у вас нет текстового терминала, используйте старый PC/XT
с модемной программой, или последовательный порт на другом
компьютере &unix;. Если порта COM1
(sio0) нет, подключите его. На данный
момент нет способа использовать другой порт вместо
COM1 без перекомпиляции загрузочных
блоков. Если вы уже используете COM1
для подключения другого устройства, временно удалите это
устройство установите новый загрузочный блок и ядро как только
FreeBSD заработает. (Предполагается, что
COM1 будет доступен на
файловом/вычислительном/терминальном сервере в любом случае;
если вам действительно требуется COM1
для чего-то другого (и вы не можете переключить это на
COM2 (sio1)),
возможно не стоит беспокоиться об этом сейчас.)Убедитесь, что в файле настройки ядра установлены
соответствующие флаги для COM1
(sio0).Подходящие флаги такие:0x10Включает поддержку консоли для этого устройства. Если
установлен этот флаг, другие игнорируются. На данный
момент поддержка консоли может быть включена не более
чем на одном устройстве; предпочтительно на первом (в
соответствии с порядком в конфигурационном файле) с
установкой этого флага. Эта опция сама по себе не сделает
последовательный порт консолью. Установите следующий
флаг или используйте опцию ,
описанную ниже, вместе с этим флагом.0x20Включает поддержку консоли на устройстве (если нет
другой консоли с более высоким приоритетом), независимо
от наличия описываемой ниже опции .
Этот флаг заменил опцию COMCONSOLE
в FreeBSD версий 2.X. Флаг
0x20 должен использоваться вместе
с флагом .0x40Резервирует это устройство (совместно с флагом
0x10) и делает устройство недоступным
для обычной работы. Вы не должны использовать
этот флаг для устройства последовательного порта,
которое будет использоваться в качестве последовательной
консоли. Используйте этот флаг только если устройство
предназначено для удаленной отладки ядра. Обратитесь
к Руководству
для разработчиков за дополнительной информацией
по удаленной отладке.В FreeBSD 4.0 или выше семантика флага
0x40 немного другая и для удаленной
отладки используется другой флаг.Пример:device sio0 at isa? port IO_COM1 flags 0x10 irq 4Обратитесь к странице справочника &man.sio.4; за подробностями.Если флаги не были установлены, вам потребуется запустить
UserConfig (на другой консоли) или пересобрать ядро.Создайте boot.config в корневом каталоге
раздела a на загрузочном диске.Этот файл сообщит загрузочному блоку способ загрузки системы.
Для активации последовательной консоли вам потребуется одна или
несколько следующих опций — несколько опций могут быть
указаны на одной строке:Переключает внутреннюю и последовательную консоль. Вы
можете использовать ее для переключения устройств консоли.
Например, при загрузке с внутренней (видео) консоли, вы
можете использовать для запуска
загрузчика и ядра с использованием последовательного порта
в качестве устройства консоли. При загрузке с
последовательной консоли, вы можете использовать опцию
для указания загрузчику и ядру
использовать в качестве консоли видео дисплей.Переключает одно- и двухконсольную конфигурации. В
одноконсольной конфигурации консоль может быть либо
внутренней (видео дисплей), либо последовательным портом,
в зависимости от состояния опции .
В двухконсольной конфигурации и видео дисплей и
последовательный порт станут консолями одновременно,
независимо от состояния опции .
Имейте ввиду, что конфигурация с двумя консолями работает
только во время работы загрузочного блока. Как только
управление переходит к загрузчику, остается только одна
консоль, указанная опцией .Указывает загрузочному блоку протестировать клавиатуру.
Если клавиатура не найдена, автоматически устанавливаются
параметры и
.По причине ограничений на размер в существующей
версии загрузочного блока, опция
может протестировать только расширенные клавиатуры.
Клавиатуры с менее чем 101 клавишами (и без клавиш F11
и F12) могут быть не обнаружены. Клавиатуры некоторых
лэптопов могут быть не найдены из-за этого ограничения.
Если это случилось, вы не сможете использовать опцию
. К сожалению, не существует
обходного пути решения этой проблемы.Используйте или опцию для автоматического
выбора консоли, или опцию для активации
последовательной консоли.Вы можете включить также другие опции, описанные в
&man.boot.8;.Опции, за исключением , будут переданы
загрузчику (/boot/loader). Загрузчик
определит будет ли консолью внутреннее видео устройство или
последовательный порт, проверив только состояние опции
. Это означает, что если вы включите в
/boot.config опцию , но
не , то сможете использовать консоль только
во время работы загрузочного блока; загрузчик будет использовать
внутреннее видео устройство в качестве консоли.Загрузите компьютер.Когда вы включите компьютер FreeBSD, загрузочный блок выведет
содержимое /boot.config на консоль.
Например:/boot.config: -P
Keyboard: noВторая строка появится только если вы поместите
в /boot.config и
отражает наличие/отсутствие клавиатуры. Эти сообщения
выводятся либо на последовательную, либо на внутреннюю
консоль, или на обе, в зависимости от параметров в
/boot.config.
-
+ ОпцииСообщения выводятся нанетвнутренняя консольпоследовательная консольпоследовательная и внутренняя консолипоследовательная и внутренняя консоли, клавиатура присутствуетвнутренняя консоль, клавиатура отсутствуетпоследовательная консольПосле вывода вышеприведенных сообщений, происходит небольшая
пауза перед тем, как запускается загрузчик и на консоли
появляются следующие сообщения. В нормальной ситуации вам не
потребуется прерывать загрузку в этот момент, но это можно
сделать, чтобы убедиться, что все настроено правильно.Нажмите на консоли любую клавишу кроме
Enter для прерывания процесса загрузки.
Загрузочный блок выдаст приглашение к дальнейшим действиям.
Оно выглядит примерно так:>> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/boot/loader
boot:Убедитесь, что сообщение выше появилось на последовательной,
внутренней консоли или на обеих, в зависимости от опций в
/boot.config. Если сообщение появилось там,
где должно было появиться, нажмите Enter для
продолжения процесса загрузки.Если вам нужна последовательная консоль, но на терминале не
видно приглашения, это означает проблемы с настройками. Введите
и нажмите Enter/Return (если это возможно) для
указания загрузочному блоку (а также загрузчику и ядру) выбрать
последовательный порт в качестве консоли. Когда система
загрузится, проверьте настройки еще раз и определите, что было
сделано неправильно.После запуска загрузчика и перехода в третью стадию процесса
загрузки вы все еще можете переключиться между внутренней консолью
и последовательной консолью путем установки соответствующих
переменных окружения в загрузчике. Обращайтесь к разделу
.ИтогиЗдесь приведены краткие итоги по различным настройкам,
рассмотренным в этом разделе и выбираемым в соответствии с
ними консолям.Вариант 1: вы устанавливаете для
sio0 флаги 0x10device sio0 at isa? port IO_COM1 flags 0x10 irq 4
-
+ Параметры в /boot.configКонсоль для загрузочного блокаКонсоль для загрузчикаКонсоль для ядранетвнутренняявнутренняявнутренняяпоследовательнаяпоследовательнаяпоследовательнаяпоследовательная и внутренняявнутренняявнутренняяпоследовательная и внутренняяпоследовательнаяпоследовательная, клавиатура присутствуетвнутренняявнутренняявнутренняя, клавиатура отсутствуетпоследовательная и внутренняяпоследовательнаяпоследовательнаяВариант 2: вы устанавливаете для
sio0 флаги 0x30device sio0 at isa? port IO_COM1 flags 0x30 irq 4
-
+ Параметры в /boot.configКонсоль для загрузочного блокаКонсоль для загрузчикаКонсоль для ядранетвнутренняявнутренняяпоследовательнаяпоследовательнаяпоследовательнаяпоследовательнаяпоследовательная и внутренняявнутренняяпоследовательнаяпоследовательная и внутренняяпоследовательнаяпоследовательная, клавиатура присутствуетвнутренняявнутренняяпоследовательная, клавиатура отсутствуетпоследовательная и внутренняяпоследовательнаяпоследовательнаяПриемы работы с последовательной консольюУстановка более высокой скорости портаПо умолчанию, последовательный порт настроен так: 9600 бит/с,
8 бит, без четности, 1 стоп бит. Если вам необходимо изменить
скорость, потребуется перекомпиляция как минимум загрузочных
блоков. Добавьте следующую строку к
/etc/make.conf и скомпилируйте новый
загрузочный блок:BOOT_COMCONSOLE_SPEED=19200Обратитесь к за
подробными инструкциями по сборке и установке новых загрузочных
блоков.Если последовательная консоль настраивается не путем установки
параметра , или последовательная консоль,
используемая ядром, отличается от той, что используется загрузочным
блоком, потребуется добавить следующие опции к файлу настройки ядра
и собрать новое ядро:options CONSPEED=19200Использование для консоли другого последовательного порта
вместо sio0Использование другого последовательного порта вместо
sio0 для консоли потребует кое-какой
перекомпиляции. Если вы по каким-либо причинам хотите использовать
другой последовательный порт, перекомпилируйте загрузочный блок,
загрузчик и ядро согласно приведенной ниже инструкции.Получите исходные тексты ядра (глава
)Отредактируйте /etc/make.conf и
установите BOOT_COMCONSOLE_PORT в
соответствии с адресом порта, который вы хотите использовать
(0x3F8, 0x2F8, 0x3E8 или 0x2E8). Могут быть использованы
только устройства от sio0 до
sio3 (от COM1
до COM4); мультипортовые
последовательные карты не будут работать. Установка
прерываний не требуется.Создайте файл настройки ядра и добавьте соответствующие
флаги для порта, который планируется использовать. Например,
если вы хотите использовать для консоли
sio1
(COM2):device sio1 at isa? port IO_COM2 flags 0x10 irq 3илиdevice sio1 at isa? port IO_COM2 flags 0x30 irq 3Флаги для других последовательных устройств не
устанавливайте.Соберите и установите загрузочный блок и
загрузчик:&prompt.root; cd /sys/boot
&prompt.root; make clean
&prompt.root; make
&prompt.root; make installСоберите и установите ядро.Запишите загрузочный блок на загрузочный диск с помощью
&man.disklabel.8; и загрузитесь с новым ядром.Вход в отладчик DDB с последовательной линииЕсли вы хотите войти в отладчик ядра с последовательной консоли
(полезно для удаленной диагностики, но опасно если вы введете
неправильный BREAK на последовательном порту!), потребуется
собрать ядро со следующими параметрами:options BREAK_TO_DEBUGGER
options DDBПолучение приглашения на последовательной консолиХотя это не обязательно, вам может потребоваться приглашение
login по последовательной линии, в дополнение
к уже доступным загрузочным сообщениям и отладочной сессии ядра.
Здесь описано как сделать это.Откройте файл /etc/ttys с помощью
редактора и найдите строки:ttyd0 "/usr/libexec/getty std.9600" unknown off secure
ttyd1 "/usr/libexec/getty std.9600" unknown off secure
ttyd2 "/usr/libexec/getty std.9600" unknown off secure
ttyd3 "/usr/libexec/getty std.9600" unknown off secureСтроки от ttyd0 до ttyd3
соответствуют портам от COM1 до
COM4. Измените off на
on для требуемого порта. Если вы изменили
скорость последовательного порта, может потребоваться изменить
std.9600 для соответствия текущим настройкам,
например std.19200.Возможно, вы захотите заменить тип терминала
unknown на тип реально используемого
терминала.После редактирования файла потребуется выполнить
kill -HUP 1 для включения новых настроек.Изменение консоли из загрузчикаПредыдущий раздел описывает настройку последовательной консоли
изменением параметров загрузочного блока. Этот раздел показывает,
как указать консоль, вводя команды и переменные окружения для
загрузчика. Поскольку загрузчик загружается после загрузочного
блока, на третьей стадии загрузочного процесса, настройки
загрузчика превалируют над настройками загрузочного блока.Настройка последовательной консолиВы можете прямо указать загрузчику и ядру использовать
последовательную консоль, записав одну строку в
/boot/loader.rc:set console=comconsoleЭто сработает независимо от настроек загрузочного блока,
рассмотренных в предыдущем разделе.Поместите эту строку в самое начало
/boot/loader.rc, чтобы увидеть на
последовательной консоли все загрузочные сообщения.Вы можете также указать внутреннюю консоль:set console=vidconsoleЕсли вы не установите переменную загрузчика
console, загрузчик, а затем и ядро будут
использовать ту консоль, которая установлена параметром
для загрузочного блока.В версиях 3.2 или выше, вы можете указать консоль в
/boot/loader.conf.local или
/boot/loader.conf вместо
/boot/loader.rc. С этим методом
/boot/loader.rc должен выглядеть примерно
так:include /boot/loader.4th
startЗатем, создайте /boot/loader.conf.local и
поместите туда следующую строку.console=comconsoleилиconsole=vidconsoleОбращайтесь к &man.loader.conf.5; за дополнительной
информацией.На данный момент у загрузчика нет параметра, эквивалентного
параметру загрузочного блока и нет способа
автоматического выбора внутренней и последовательной консоли
в зависимости от наличия клавиатуры.Использование для консоли отличного от
sio0 последовательного портаВам потребуется перекомпилировать загрузчик для использования
отличного от sio0 последовательного порта
в качестве консоли. Следуйте процедуре, описанной в разделе
.ПредостереженияИдея в том, чтобы настроить выделенный сервер, который не требует
графического оборудования или подсоединенной клавиатуры. К сожалению,
хотя многие системы способны загрузиться без клавиатуры, есть совсем
немного систем, способных загрузиться без графического адаптера.
Компьютеры с AMI BIOS могут быть настроены для загрузки без
графического адаптера простой установкой параметра настройки CMOS
graphics adapter в значение Not
installed.Однако, многие компьютеры не поддерживают этот параметр и не
смогут загрузиться без графического оборудования. Для этих
компьютеров вам потребуется оставить подключенной любую
графическую карту (даже если это просто старая моно карта),
хотя монитор и не подключен.
diff --git a/ru_RU.KOI8-R/books/handbook/users/chapter.sgml b/ru_RU.KOI8-R/books/handbook/users/chapter.sgml
index f8768821fa..e3ca07ca9e 100644
--- a/ru_RU.KOI8-R/books/handbook/users/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/users/chapter.sgml
@@ -1,1163 +1,1163 @@
NeilBlakey-MilnerПредоставил ДенисПеплинПеревод на русский язык: Пользователи и основы управления учетными записямиКраткий обзорFreeBSD позволяет одновременную работу множества пользователей
на одном компьютере. Разумеется, только один пользователь может сидеть
за клавиатурой и перед экраном в один момент времени
Конечно, пока не используется множество терминалов, но мы
оставим эту тему для ., но любое количество пользователей может выполнять работу
через сеть. Для использования системы у каждого пользователя должна
быть учетная запись.После прочтения этой главы вы будете знать:Различия между разнообразными учетными записями в системе
FreeBSD.Как добавлять учетные записи пользователей.Как удалять учетные записи пользователей.Как изменять данные учетных записей пользователей, такие
как полное имя пользователя, или предпочитаемую оболочку.Как устанавливать ограничения на использование ресурсов,
например на использование памяти и времени CPU для учетных записей
или групп учетных записей.Как использовать группы для упрощения управлением учетными
записями.Перед прочтением этой главы вам потребуется:Понимание основ &unix; и FreeBSD ().ВведениеВесь доступ к системе осуществляется через учетные записи,
и все процессы запускаются пользователями, так что управление
пользователями и учетными записями в системах FreeBSD имеет
всеобъемлющее значение.С каждой учетной записью в системе FreeBSD связана определенная
идентификационная информация.Имя пользователяИмя пользователя в том виде, в каком оно вводится в
приглашение login:. Имена пользователей
должны быть уникальны в пределах одного компьютера; не может
быть двух пользователей с одинаковым именем пользователя.
Существует множество правил для создания правильных имен
пользователей, документированных в &man.passwd.5;; вы как
правило будете использовать имена пользователей, состоящие
из восьми или меньшего количества символов, все символы в
нижнем регистре.ПарольС каждой учетной записью связан пароль. Пароль может быть
пустым, в этом случае для доступа к системе не нужен пароль.
Обычно это очень плохая идея; у каждой учетной записи должен быть
пароль.ID пользователя (User ID, UID)The UID это номер, традиционно от 0 до
65535Возможно использование UID/GID вплоть до
4294967295, но эти ID могут вызвать серьезные проблемы с
программами, делающими предположения о значениях
ID., используемый для однозначной идентификации
пользователя в системе. Сама система FreeBSD для идентификации
пользователей использует UID — любая команда FreeBSD,
позволяющая вам указывать имя пользователя, первым делом
преобразует его к UID. Это означает, что вы можете создать
несколько учетных записей с различными именами пользователей,
но с одним UID. FreeBSD будет воспринимать эти учетные записи как
одного пользователя. Маловероятно, что вам когда-либо это
понадобится.ID группы (Group ID, GID)GID это номер, традиционно от 0 до
65535, используемый
для однозначной идентификации главной группы, к которой
принадлежит пользователь. Группы это механизм для контроля
доступа к ресурсам на основе GID пользователя вместо его UID.
Это может значительно уменьшить размер некоторых файлов настройки.
Кроме того, пользователь может быть включен более чем в одну
группу.Класс логинаКлассы логинов это расширение к механизму групп,
позволяющее системе более гибко управлять различными
пользователями.Время изменения пароляПо умолчанию FreeBSD не принуждает пользователей периодически
менять пароли. Вы можете включить эту функцию для определенных
пользователей, заставив некоторых или всех пользователей менять
пароли по прошествии определенного времени.Время истечения действия учетной записиПо умолчанию в FreeBSD время действия учетных записей не
ограничено. Если вы создаете учетные записи, продолжительность
жизни которых ограничена, например в учетные записи для
студентов в школе, вы можете определить время истечения
действия учетной записи. После наступления этого времени
учетная запись не может использоваться для входа в систему,
хотя каталоги и файлы этой учетной записи останутся
нетронутыми.Полное имя пользователяИмя пользователя является уникальным идентификатором
учетной записи в FreeBSD, но недостаточно для сопоставления
с реальным именем пользователя. Эта информация может быть
добавлена в учетную запись.Домашний каталогДомашний каталог это полный путь к каталогу в системе, в
котором пользователь начнет работать после входа в систему.
По общепринятому соглашению все домашние каталоги пользователей
помещаются в
/home/username
или
/usr/home/username.
Пользователи хранят личные файлы в домашнем каталоге и в любых
подкаталогах, создаваемых внутри домашнего каталога.Оболочка пользователяОболочка необходима пользователям как средство взаимодействия
с системой по умолчанию. Существует множество различных видов
оболочек, опытные пользователи работают с собственными
настройками, которые могут быть отражены в установках их учетных
записей.Существует три основных типа учетных записей: суперпользователь, системные пользователи, и учетные записи пользователей.
Учетная запись суперпользователя, обычно называемая
root, используется для управления системой
без ограничения привилегий. Системные пользователи запускают
сервисы. Наконец, учетные записи пользователей необходимы обычным
людям для входа в систему, чтения почты, и так далее.Учетная запись суперпользователяучетные записисуперпользователь (root)Учетная запись суперпользователя, обычно называемая
root, существует в системе изначально
для целей системного администрирования, и не должна использоваться
для повседневных задач, таких как получение и отправка почты,
общее исследование системы или программирование.Причина в том, что суперпользователь, в отличие от обычных
пользователей, может работать без ограничений и неправильное
использование учетной записи суперпользователя может привести к
полному уничтожению системы. Учетные записи пользователей не
способны уничтожит систему вследствие ошибки, поэтому обычно
лучше использовать учетные записи обычных пользователей везде,
где это возможно, пока вам не потребуются дополнительные
привилегии для какой-то определенной задачи.Вы всегда должны дважды и трижды проверять команды, выполняемые
под учетной записью суперпользователя, поскольку даже один лишний
пробел или отсутствующий символ может привести к безвозвратной
потере данных.Таким образом, первое, что вам необходимо сделать после прочтения
этой главы, это создать непривилегированную учетную запись пользователя
для повседневного использования (если вы еще этого не сделали).
Это необходимо сделать независимо от того, работаете ли вы на
многопользовательском или однопользовательском компьютере.
Позже в этой главе мы обсудим как создать дополнительные учетные записи,
и как менять уровень привилегий между нормальным пользователем и
суперпользователем.Системные учетные записиучетные записисистемныеСистемные пользователи предназначены для запуска сервисов, таких
как DNS, почта, веб серверы и так далее. Это необходимо по соображениям
безопасности; если все сервисы работают от суперпользователя, они
могут действовать без ограничений.учетные записиdaemonучетные записиoperatorПримеры системных пользователей это daemon,
operator, bind (для
Domain Name Service, DNS), и news. Зачастую
системные администраторы создают httpd
для запуска устанавливаемых веб серверов.учетные записиnobodynobody это классический непривилегированный
системный пользователь. Тем не менее, необходимо помнить, что чем
больше сервисов используют nobody, тем больше
файлов и процессов ассоциировано с этим пользователем, и следовательно
тем больше прав появляется у этого пользователя.Учетные записи пользователейучетные записипользователейУчетные записи пользователей в основном означают доступ в систему
для обычных людей, и эти учетные записи отделяют пользователя и
его рабочую среду, предотвращая повреждение пользователем системы
или данных других пользователей, и позволяя пользователям
настраивать свою рабочую среду без влияния на других
пользователей.Каждая персона, получающая доступ к вашей системе, должна получить
уникальную учетную запись пользователя. Это позволит вам выяснить
кто что делает, предотвращая сбивание одним пользователем настроек
других пользователей, чтение чужой почты и так далее.Каждый пользователь может настраивать свою собственную рабочую
среду для приспособления системы под свои нужды с помощью альтернативных
оболочек, редакторов, привязки клавиш и настроек языка.Изменение учетных записейучетные записиизменениеВ среде &unix; существуют различные команды для работы с учетными
записями пользователей. Наиболее часто используемые команды приведены
в таблице, ниже находятся более детальные примеры их
использования.
-
+ КомандаКраткое описание&man.adduser.8;Рекомендуемое приложение командной строки для добавления
новых пользователей.&man.rmuser.8;Рекомендуемое приложение командной строки для удаления
пользователей.&man.chpass.1;Гибкий инструмент для изменения информации в базе данных
пользователей.&man.passwd.1;Простой инструмент командной строки для изменения паролей
пользователей.&man.pw.8;Мощный и гибкий инструмент для изменения любой информации,
связанной с учетными записями пользователей.adduserучетные записидобавлениеadduser/usr/share/skelкаталог шаблоновskeleton directory&man.adduser.8; это простая программа для добавления новых
пользователей. Она создает записи в системных файлах
passwd и group.
Она также создает домашний каталог для нового пользователя,
копируя файлы настройки по умолчанию (dotfiles, файлы
имя который начинается с символа .) из
/usr/share/skel и опционально может отправлять
новому пользователю приветственное сообщение.В &os; 5.0, скрипт &man.adduser.8; был переписан с языка
Perl на язык shell, работающий в качестве оболочки к
&man.pw.8;, так что использование этого скрипта в &os; 4.X
немного отличается использования в &os; 5.X.Для создания файла настройки используйте
adduser -s -config_create.
С параметром &man.adduser.8;
не будет выводить информацию. Позже для изменения настроек
по умолчанию мы используем параметр .
Далее, мы настроим параметры &man.adduser.8; по умолчанию и
создадим нашу первую учетную запись пользователя, поскольку
повседневное использование root
неприемлемо.Настройка adduser и добавление
пользователя в &os; 4.X&prompt.root; adduser -v
Use option ``-silent'' if you don't want to see all warnings and questions.
Check /etc/shells
Check /etc/master.passwd
Check /etc/group
Enter your default shell: csh date no sh tcsh zsh [sh]: zsh
Your default shell is: zsh -> /usr/local/bin/zsh
Enter your default HOME partition: [/home]:
Copy dotfiles from: /usr/share/skel no [/usr/share/skel]:
Send message from file: /etc/adduser.message no
[/etc/adduser.message]: no
Do not send message
Use passwords (y/n) [y]: y
Write your changes to /etc/adduser.conf? (y/n) [n]: y
Ok, let's go.
Don't worry about mistakes. I will give you the chance later to correct any input.
Enter username [a-z0-9_-]: jru
Enter full name []: J. Random User
Enter shell csh date no sh tcsh zsh [zsh]:
Enter home directory (full path) [/home/jru]:
Uid [1001]:
Enter login class: default []:
Login group jru [jru]:
Login group is ``jru''. Invite jru into other groups: guest no
[no]: wheel
Enter password []:
Enter password again []:
Name: jru
Password: ****
Fullname: J. Random User
Uid: 1001
Gid: 1001 (jru)
Class:
Groups: jru wheel
HOME: /home/jru
Shell: /usr/local/bin/zsh
OK? (y/n) [y]: y
Added user ``jru''
Copy files from /usr/share/skel to /home/jru
Add another user? (y/n) [y]: n
Goodbye!
&prompt.root;В результате мы изменили оболочку по умолчанию на
zsh (дополнительная оболочка, находящаяся
в коллекции портов), и отключили отправку добавляемым пользователям
письма с приветствием. Затем мы сохранили настройки, создали
учетную запись для jru, и убедились, что
jru находится в группе
wheel (теперь этот пользователь может получить
привилегии root с помощью команды
&man.su.1;.)Пароль, который вы вводите, не отображается,
звездочки при вводе пароля также не отображаются.
- убедитесь, что не ввели пароль неправильно дважды
+ Убедитесь, что вы не ошиблись при вооде пароля.
Теперь просто используйте &man.adduser.8; без аргументов,
и вам не потребуется изменять настройки по умолчанию. Если
программа будет запрашивать изменение настроек по умолчанию,
попробуйте параметр .Добавление пользователя в &os; 5.X&prompt.root; adduser
Username: jru
Full name: J. Random User
Uid (Leave empty for default):
Login group [jru]:
Login group is jru. Invite jru into other groups? []: wheel
Login class [default]:
Shell (sh csh tcsh zsh nologin) [sh]: zsh
Home directory [/home/jru]:
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username : jru
Password : ****
Full Name : J. Random User
Uid : 1001
Class :
Groups : jru wheel
Home : /home/jru
Shell : /usr/local/bin/zsh
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (jru) to the user database.
Add another user? (yes/no): no
Goodbye!
&prompt.root;rmuserrmuserучетные записиудалениеДля полного удаления пользователя из системы вы можете
использовать &man.rmuser.8;. Эта программа выполняет следующие
действия:Удаление записи пользователя из &man.crontab.1; (если
она присутствует).Удаляет задачи &man.at.1;, принадлежащие
пользователю.Уничтожает все процессы, принадлежащие пользователю.Удаляет пользователя из локального файла паролей.Удаляет домашний каталог пользователя (если он принадлежит
пользователю).Удаляет принадлежащую пользователю входящую почту из
/var/mail.Удаляет все файлы, принадлежащие пользователю, из каталогов
с временными файлами, например /tmp.Наконец, удаляет имя пользователя из всех групп, которым оно
принадлежит, в /etc/group.
Если после этого удаления группа остается пустой и
имя группы совпадает с именем пользователя, она удаляется;
Это необходимо для удаления пользовательских уникальных
групп, создаваемых &man.adduser.8;.&man.rmuser.8; не может использоваться для удаления учетной
записи суперпользователя, поскольку это почти всегда означает
разрушение системы.По умолчанию используется интерактивный режим, программа
пытается убедиться, что вы уверены в своих действиях.Интерактивное удаление учетной записи с помощью
rmuser&prompt.root; rmuser jru
Matching password entry:
jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh
Is this the entry you wish to remove? y
Remove user's home directory (/home/jru)? y
Updating password file, updating databases, done.
Updating group file: trusted (removing group jru -- personal group is empty) done.
Removing user's incoming mail file /var/mail/jru: done.
Removing files belonging to jru from /tmp: done.
Removing files belonging to jru from /var/tmp: done.
Removing files belonging to jru from /var/tmp/vi.recover: done.
&prompt.root;chpasschpass&man.chpass.1; изменяет информацию в базе данных пользователей:
пароли, оболочки, персональную информацию.Только системные администраторы с правами суперпользователя
могут изменять информацию и пароли других пользователей с помощью
&man.chpass.1;.При запуске без параметров (кроме опционального имени
пользователя), &man.chpass.1; вызывает редактор, содержащий
информацию о пользователе. Когда пользователь выходит из редактора,
база данных пользователей обновляется этой информацией.В &os; 5.X, после выхода из редактора будет запрошен
пароль (если вы не суперпользователь.Интерактивная работа с chpass
суперпользователя#Changing user database information for jru.
Login: jru
Password: *
Uid [#]: 1001
Gid [# or name]: 1001
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /home/jru
Shell: /usr/local/bin/zsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:Обычные пользователи могут изменять лишь небольшую часть этой
информации, и только для своей учетной записи.Интерактивная работа с chpass обычного
пользователя#Changing user database information for jru.
Shell: /usr/local/bin/zsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:&man.chfn.1; и &man.chsh.1; это всего лишь ссылки на
&man.chpass.1;, как и &man.ypchpass.1;, &man.ypchfn.1; и
&man.ypchsh.1;. NIS поддерживается автоматически, так что
указание yp перед командой не обязательно.
Если это непонятно, не беспокойтесь, NIS будет рассмотрен в
.passwdpasswdучетные записиизменение пароля&man.passwd.1; это обычный способ изменения собственного пароля
пользователя, или пароля другого пользователя
суперпользователем.Для предотвращения случайного или неавторизованного изменения,
перед установкой нового пароля необходимо ввести старый.Изменение пароля&prompt.user; passwd
Changing local password for jru.
Old password:
New password:
Retype new password:
passwd: updating the database...
passwd: doneИзменение пароля другого пользователя
суперпользователем&prompt.root; passwd jru
Changing local password for jru.
New password:
Retype new password:
passwd: updating the database...
passwd: doneКак и с &man.chpass.1;, &man.yppasswd.1; это всего лишь
ссылка на &man.passwd.1;, так что NIS работает с обеими
командами.pwpw&man.pw.8; это утилита командной строки для создания, удаления,
модифицирования и отображения пользователей и групп. Она
функционирует как внешний интерфейс к системным файлам пользователей
и групп. У &man.pw.8; очень мощный набор параметров командной строки,
что делает это программу подходящей для использования в shell
скриптах, но новым пользователям она может показаться более сложной,
чем другие представленные здесь команды.Ограничение пользователейограничение пользователейучетные записиограничениеЕсли у вас есть пользователи, может появиться мысль о возможности
ограничения нагрузки на систему. FreeBSD предоставляет
администратору несколько способов ограничения объема
занимаемых пользователями системных ресурсов. Существует два вида
ограничений: дисковые квоты и другие ограничения ресурсов.квотыограничение пользователейквотыдисковые квотыДисковые квоты ограничивают объем пространства, занимаемого
пользователями, это способ быстрой проверки объема без вычисления
его каждый раз. Квоты обсуждаются в .Другие ограничения ресурсов включают способы ограничения
использования CPU, памяти и других ресурсов, которые могут потребляться
пользователем. Ограничения накладываются с помощью классов учетных
записей и обсуждаются в этом разделе./etc/login.confКлассы учетных записей определяются в
/etc/login.conf. Описание полной семантики
выходит за пределы обсуждаемого здесь материала, она детально
описана в странице справочника &man.login.conf.5;. Достаточно
сказать, что каждому пользователю присвоен класс
(default по умолчанию), и каждому классу присвоен
набор характеристик. Характеристика определяется в виде пары
имя=значение,
где имя это определенный идентификатор,
а значение это произвольная строка,
обрабатываемая в зависимости от имени. Настройка классов и
характеристик довольно проста и также описана в
&man.login.conf.5;.Система не читает настройки в
/etc/login.conf непосредственно, она обращается
к файлу базы данных /etc/login.conf.db.
Для создания /etc/login.conf.db из
/etc/login.conf, выполните следующую
команду:&prompt.root; cap_mkdb /etc/login.confОграничения на ресурсы отличаются от обычных характеристик:
во-первых, для каждого ограничения существует мягкое
(текущее) и жесткое ограничение. Мягкое ограничение
может настраиваться пользователем или приложением, но не может
превышать жесткое ограничение. Последнее может быть уменьшено
пользователем, но никогда не увеличено. Во-вторых, большинство
ограничений ресурсов применяются к процессам определенного пользователя,
а не к пользователю вообще. Обратите внимание, что эти различия
реализуются специфической обработкой лимитов, а не реализацией
структуры характеристик учетных записей (т.е. это не
настоящий специальный случай характеристик).Ниже приведен список наиболее часто используемых ограничений
на ресурсы (остальные, вместе с другими характеристиками
можно найти в &man.login.conf.5;).coredumpsizecoredumpsizeограничение пользователейcoredumpsizeОграничение на размер файла core, генерируемого программой,
по очевидным причинам подчиняющееся другим ограничениям
на используемое дисковое пространство (например,
filesize, или дисковые квоты).
Тем не менее, оно часто используется как менее строгий
метод контролирования потребления дискового пространства:
поскольку пользователь не создает файлы core самостоятельно,
и зачастую не удаляет их, установка этого параметра может
предохранить его от выхода за пределы дисковых квот, если
большая программа (например, emacs)
создаст core файл.cputimecputimeограничение пользователейcputimeЭто максимальное количество времени CPU, потребляемого
пользователем. Превысившие это время процессы будут уничтожены
ядром.
Это ограничение потребляемого
времени CPU, а не процентов использования
CPU, которые отображаются в некоторых полях &man.top.1;
и &man.ps.1;. Ограничения на них на время написания этого
материала невозможны и такие ограничения практически
бесполезны: компилятор — вполне законное приложение
— иногда может легко использовать почти 100%
CPU.filesizefilesizeограничение пользователейfilesizeЭто максимальный размер файла, который может обрабатываться
пользователем. В отличие от дисковых
квот, это ограничение применяется к отдельным файлам,
а не ко всему набору принадлежащих пользователю файлов.maxprocmaxprocограничение пользователейmaxprocЭто максимальное число процессов, которые могут быть
запущены пользователем. В это число включаются и консольные
и фоновые процессы. По очевидным причинам, они не могут быть
больше, чем системное ограничение, указываемое через
переменную &man.sysctl.8; kern.maxproc.
Имейте ввиду, что установка слишком жестких ограничений может
стать помехой работе пользователя: зачастую полезно входить
в систему с нескольких консолей или использовать каналы.
Некоторые задачи, такие как компиляция большой программы,
также порождают множество процессов (например, &man.make.1;,
&man.cc.1; и другие препроцессоры).memorylockedmemorylockedограничение пользователейmemorylockedЭто максимальный объем памяти, блокировка которого
может быть запрошена процессом (см. например
&man.mlock.2;). Некоторые критически важные для системы
программы, такие как &man.amd.8;, блокируют память так,
что при выгрузке они не создают системе дополнительных
проблем.memoryusememoryuseограничение пользователейmemoryuseЭто максимальный объем памяти, которая может быть занята
процессами. Он включает основную и основную память и
использование подкачки. Это ограничение не снимает все вопросы,
связанные с использованием памяти, но для начала это подходящее
ограничение.openfilesopenfilesограничение пользователейopenfilesЭто максимальное количество файлов, которые могут быть
открыты процессами. В FreeBSD, файлы также используются для
представления сокетов и каналов IPC; не устанавливайте слишком
маленькое значение. Ограничение этого параметра, устанавливаемое
для всей системы, определяется переменной &man.sysctl.8;
kern.maxfiles.sbsizesbsizeограничение пользователейsbsizeЭто ограничение потребляемого пользователем объема сетевой
памяти, т.е. mbufs. Оно было введено как ответ на старые
DoS атаки, при которых создавалось множество сокетов,
но обычно может быть использовано и для ограничения
сетевых соединений.stacksizestacksizeограничение пользователейstacksizeЭто максимальный размер, до которого может вырасти стек
процесса. Сам по себе этот параметр не может ограничить
размер используемой программой памяти, следовательно,
его необходимо использовать вместе с другими ограничениями.Существуют несколько других аспектов, которые необходимо учитывать
при установке ограничений ресурсов. Ниже приведены некоторые общие
подсказки, советы и различные комментарии.Процессам, загружаемым при старте системы скриптами
/etc/rc присваивается класс
daemon.Хотя /etc/login.conf, поставляемый с
системой, это хороший источник подходящих значений для большинства
ограничений, только вы, администратор, можете знать подходящие
значения для вашей системы. Установка слишком слабых ограничений
может повлечь злоупотребления системой, а установка слишком
сильных ограничений может стать помехой производительности.Пользователи X Window System (X11) возможно должны получить
больше ресурсов, чем другие пользователи. X11 сама по себе
потребляет много ресурсов, а также провоцирует пользователей
на одновременный запуск большего количества программ.Помните, что многие ограничения применяются к отдельным
процессам, а не к пользователю вообще. Например, установка
openfiles в 50 означает, что каждый
процесс, запущенный пользователем, может открывать до 50
файлов. Таким образом, общее количество файлов, которые могут
быть открыты пользователем, вычисляется как
openfiles, помноженное на
maxproc. Это также применимо к потребляемой
памяти.За дальнейшей информацией по ограничениям на ресурсы, классам
учетных записей и характеристикам, обращайтесь к соответствующим
страницам справочника.Персонализация пользователейЛокализация это окружение, настраиваемое системным администратором
или пользователем для работы с различными языками, наборами
символов, стандартами даты и времени, и так далее. Это обсуждается
в главе локализация.Группыгруппы/etc/groupsучетные записигруппыГруппа это просто список пользователей. Группа идентифицируется
по имени и GID (Group ID, идентификатор группы). В FreeBSD
(и большинстве других &unix;-подобных системах) ядро для определения
прав процесса использует два фактора: его ID пользователя и
список групп, которым он принадлежит. Когда вы слышите что-то о
group ID пользователя или процесса, это обычно означает
только первую группу из списка.Имена групп связываются с ID групп в файле
/etc/group. Это текстовый файл с четырьмя
разделенными двоеточием полями. Первое поле это имя группы,
второе это зашифрованный пароль, третье это ID группы, а четвертое
это разделенный запятыми список членов группы. Этот файл может
быть безопасно отредактирован вручную (предполагается, конечно,
что вы не сделаете синтаксических ошибок!). За более полным описанием
синтаксиса обратитесь к странице справочника &man.group.5;.Если вы не хотите редактировать /etc/group
вручную, используйте команду &man.pw.8; для добавления и
редактирования групп. Например, для добавления группы,
называемой teamtwo, и проверки ее существования
вы можете использовать:Добавление группы с использованием &man.pw.8;&prompt.root; pw groupadd teamtwo
&prompt.root; pw groupshow teamtwo
teamtwo:*:1100:Число 1100 это ID группы
teamtwo. На данный момент в,
teamtwo нет членов, и поэтому она практически
бесполезна. Давайте изменим эту ситуацию, добавив
jru в группу teamtwo.Добавление пользователя в группу с использованием
&man.pw.8;&prompt.root; pw groupmod teamtwo -M jru
&prompt.root; pw groupshow teamtwo
teamtwo:*:1100:jruАргумент к параметру это разделенный
запятыми список пользователей, являющихся членами группы. Из предыдущих
разделов мы знаем, что файл паролей также указывает группу для
каждого пользователя. Пользователь автоматически добавляется системой
к списку групп; пользователь не будет показан как член группы при
использовании &man.pw.8; , но эта
информация будет показана при использовании &man.id.1; или похожего
инструмента. Другими словами, с этим параметром программа &man.pw.8;
работает только с файлом /etc/group; она никогда
не будет пытаться получить дополнительную информацию из файла
/etc/passwd.Использование &man.id.1; для определения принадлежности к
группам&prompt.user; id jru
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)Как вы можете видеть, jru является членом
групп jru и
teamtwo.За дальнейшей информацией о &man.pw.8;, обратитесь к ее странице
справочника, а за дополнительной информацией о формате файла
/etc/group к странице справочника
&man.group.5;.
diff --git a/ru_RU.KOI8-R/books/handbook/x11/chapter.sgml b/ru_RU.KOI8-R/books/handbook/x11/chapter.sgml
index a7e838586c..4a81e8a0e1 100644
--- a/ru_RU.KOI8-R/books/handbook/x11/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/x11/chapter.sgml
@@ -1,1894 +1,1894 @@
KenTomОбновил для сервера X.Org's X11 MarcFonvieilleАндрейЗахватовПеревод на русский язык: X Window SystemОбзорFreeBSD использует X11 для того, чтобы дать пользователям мощный
графический интерфейс. X11 является открытой реализацией
X Window System, включая &xorg; и
&xfree86;. В версиях &os; до и включая
&os; 4.10-RELEASE и &os; 5.2.1-RELEASE сервером X11
по умолчанию был &xfree86;, выпускаемый
The &xfree86; Project, Inc. Начиная с &os; 5.3-RELEASE,
официальной версией X11 по умолчанию стал
&xorg;, разработанный
X.Org Foundation.Эта глава посвящена установке и настройке
X11 в системе FreeBSD, с акцентом на
&xorg;.За дополнительной информацией по видео оборудованию, поддерживаемому
X11, обратитесь к веб сайтам
&xorg; или
&xfree86;.После чтения этой главы вы будете знать:Как установить и настроить X11.Различные компоненты X Window System и их
взаимодействие.Как установить и использовать различные оконные менеджеры.Как использовать шрифты &truetype; в X11.Как настроить вашу систему на графический интерфейс входа
(XDM).Перед чтением этой главы вы должны:Знать, как устанавливать дополнительное программное обеспечение
сторонних разработчиков ().В этой главе описана установка и настройка серверов X11 и
&xorg; и
&xfree86;. По большей части
файлы настройки, команды и синтаксис идентичны.
Там, где есть различия, приводится синтаксис и
&xorg; и
&xfree86;.Основы XПервое знакомство с X может оказаться чем-то вроде шока для тех, кто
работал с другими графическими системами, такими, как µsoft.windows;
или &macos;.Хотя нет необходимости вникать во все детали различных компонентов X и
их взаимодействия, некоторые базовые знания делают возможным
использование сильных сторон X.Почему именно X?X не является первой оконной системой для &unix;, но она является
самой популярной из них. До работы над X команда ее разработчиков трудилась
над другой оконной системой. Та система называлась W
(от Window). X была просто следующей
буквой в романском алфавите.X можно называть X, X Window System,
X11 и множеством других терминов. Факт использования названия
X Windows для X11 может задеть интересы некоторых
людей; дополнительную информацию по этому поводу можно найти на
странице справочной системы &man.X.7;.Модель клиент/сервер в XX изначально разрабатывалась, чтобы быть системой, ориентированной
на работу в сети с использованием модели
клиент-сервер.В модели работы X X-сервер работает на компьютере с
клавиатурой, монитором и мышью. Ответственность сервера включает управление
дисплеем, обработку ввода с клавиатуры и мыши и так далее. Каждое
X-приложение (например, XTerm или
&netscape;) является
клиентом. Клиент посылает сообщения серверу, такие,
как Пожалуйста, нарисуй окно со следующими координатами,
а сервер посылает в ответ сообщения типа Пользователь только что
щёлкнул мышью на кнопке OK.В случае
использования дома или в офисе, сервер и клиенты X как правило будут работать на
том же самом компьютере. Однако реально возможно запускать X-сервер
на менее мощном настольном компьютере, а приложения X (клиенты) на,
скажем, мощной и дорогой машине, обслуживающей целый офис. В этом
сценарии X-клиент и сервер общаются через сеть.Некоторых это вводит в заблуждение, потому что терминология X
в точности обратна тому, что они ожидают. Они полагают, что
X-сервер будет большой мощной машиной, стоящей на полу,
а X-клиентом является машина, стоящая на их
столах.Важно помнить, что X-сервером является машина с монитором и
клавиатурой, а X-клиенты являются программами, выводящими окна.В протоколе нет ничего, что заставляет машины клиента и сервера
работать под управлением одной и той же операционной системы, или
даже быть одним и тем же типом компьютера. Определённо возможно
запускать X-сервер в µsoft.windows; или &macos; от Apple, и есть
множество свободно распространяемых и коммерческих приложений, которые
это реализуют.Начиная с &os; 5.3-RELEASE, X-сервер, поставляемый с FreeBSD, называется
&xorg;, и он распространяется свободно
под лицензией, очень похожей на условия распространения FreeBSD.
Имеются и коммерческие X-серверы для FreeBSD.Оконный менеджерФилософия построения X очень похожа на философию построения &unix;,
инструменты, не политика. Это значит, что X не пытаются
диктовать то, как должна быть выполнена работа. Вместо этого
пользователю предоставляются инструменты, а за пользователем остается
принятие решения о том, как использовать эти инструменты.Этот подход расширен в X тем, что не задается, как окна должны
выглядеть на экране, как их двигать мышью, какие комбинации клавиш
должны использоваться для переключения между окнами (то есть
AltTab, в случае использования µsoft.windows;), как должны
выглядеть заголовки окон, должны ли в них быть кнопки для закрытия, и
прочее.Вместо этого X делегирует ответственность за это приложению,
которое называется Window Manager (Менеджер Окон). Есть
десятки оконных менеджеров для X: AfterStep,
Blackbox, ctwm,
Enlightenment,
fvwm, Sawfish,
twm,
WindowMaker и другие. Каждый из этих
оконных менеджеров предоставляет различные внешние виды и удобства;
некоторые из них поддерживают виртуальные рабочие столы;
некоторые из них позволяют изменять назначения комбинаций
клавиш, используемых для управления рабочим столом; в некоторых есть
кнопка Start или нечто подобное; некоторые поддерживают
темы, позволяя изменять внешний вид, поменяв тему.
Эти оконные менеджеры, а также множество
других, находятся в категории x11-wm коллекции
Портов.Кроме того, оболочки KDE и
GNOME обе имеют собственные оконные
менеджеры, которые интегрированы с оболочкой.Каждый оконный менеджер также имеет собственный механизм настройки;
некоторые предполагают наличие вручную созданного конфигурационного
файла; некоторые предоставляют графические инструменты для выполнения
большинства работ по настройке; по крайней мере один
(Sawfish) имеет конфигурационный файл,
написанный на диалекте языка Lisp.Политика фокусированияДругой особенностью, за которую отвечает оконный менеджер,
является политика фокусирования мыши. Каждая оконная
система должна иметь некоторый способ выбора окна для активации
получения нажатий клавиш, а также визуальную индикацию того, какое
окно активно.Широкоизвестная политика фокусировки называется
click-to-focus. Эта модель используется в
µsoft.windows;, когда окно становится активным после получения
щелчка мыши.X не поддерживает никакой конкретной политики фокусирования.
Вместо этого менеджер окон управляет тем, какое окно владеет фокусом
в каждый конкретный момент времени. Различные оконные менеджеры
поддерживают разные методы фокусирования. Все они поддерживают метод
щелчка для фокусирования, и большинство из них поддерживают некоторые
другие методы.Самыми популярными политики фокусирования являются:focus-follows-mouse (фокус следует за мышью)Фокусом владеет то окно, что находится под
указателем мыши. Это не обязательно будет окно, которое
находится поверх всех остальных. Фокус меняется при
указании на другое окно, при этом также нет нужды щёлкать на
нём.sloppy-focus (нечеткий фокус)С политикой focus-follows-mouse если мышь помещается
поверх корневого окна (или заднего фона), то никакое окно
фокус не получает, а нажатия клавиш просто пропадают.
При использовании политики нечёткого фокуса он меняется
только когда курсор попадает на новое окно, но не когда
уходит с текущего окна.щелчок для выбора фокусаАктивное окно выбирается щелчком мыши. Затем окно
может быть поднято и появиться поверх всех
других окон. Все нажатия клавиш теперь будут направляться
в это окно, даже если курсор переместится к другому.Многие оконный менеджер поддерживают и другие политики, а также
вариации перечисленных. Обязательно обращайтесь к документации по
оконному менеджеру.ВиджетыПодход X, заключающийся в предоставлении инструментов, а не
политики, распространяется и на виджеты, которые располагаются на
экране в каждом приложении.Виджет (widget) является термином для всего в
пользовательском интерфейсе, на чём можно
щёлкать или каким-то образом управлять; кнопки, зависимые (radio
buttons) и независимые (check boxes) кнопки, иконки, списки и так
далее. В µsoft.windows; это называется элементами
управления (controls).µsoft.windows; и &macos; от Apple обе имеют очень жёсткую
политику относительно виджетов. Предполагается, что разрабатываемые
приложения обязательно должны иметь похожий внешний вид. Что касается
X, то было решено, что не нужно требовать обязательного использования
какого-то определённого графического стиля или набора виджетов.В результате не стоит ожидать от X-приложений
похожести во внешнем виде. Существует несколько популярных наборов
виджетов и их разновидностей, включая оригинальный набор виджетов
Athena от MIT, &motif; (по
образу которого был разработан набор виджетов в µsoft.windows;,
все эти скошенные углы и три разновидности серого цвета),
OpenLook и другие.В большинстве появляющихся в настоящее время приложений для X будет
использоваться современно выглядящий набор виджетов, либо Qt,
используемый в KDE, либо
GTK+, используемый проектом
GNOME. В этом отношении наблюдается
унификация внешнего вида рабочего стола в &unix;, что определённо
облегчает жизнь начинающему пользователю.Установка X11На &os; могут быть установлены &xorg;
или &xfree86;. Начиная с
&os; 5.3-RELEASE, &xorg; является
для &os; версией X11 по умолчанию. &xorg;
это сервер X11 дистрибутива X11R6.7, выпущенный X.Org
Foundation. X11R6.7 основан на коде
&xfree86 4.4RC2 и X11R6.6.
X.Org Foundation выпустил X11R6.7 в апреле 2004 года.Для сборки и установки &xorg; из
коллекции портов, выполните:&prompt.root; cd /usr/ports/x11/xorg
&prompt.root; make install cleanПеред сборкой полной версии &xorg;
удостоверьтесь в наличии хотя бы 4 GB свободного места.Для сборки и установки &xfree86;
из коллекции портов:&prompt.root; cd /usr/ports/x11/XFree86-4
&prompt.root; make install cleanКроме того, X11 может быть установлен непосредственно из
пакетов. Бинарные пакеты, устанавливаемые &man.pkg.add.1;,
доступны и для X11. Когда &man.pkg.add.1; используется для удаленной
загрузки пакетов, номер версии пакета необходимо удалить.
&man.pkg.add.1; автоматически установит последнюю версию
приложения.Таким образом, для загрузки и установки пакета
&xorg;, просто наберите:&prompt.root; pkg_add -r xorgПакет &xfree86; 4.X может быть
установлен командой:&prompt.root; pkg-add -r XFree86В примерах выше будет установлен полный дистрибутив
X11, включая серверы, клиенты, шрифты
и так далее. Также доступны и отдельные пакеты и порты для
различных частей X11.В оставшейся части главы будет рассказано о том, как сконфигурировать
X11 и настроить рабочее окружение.Замена &xfree86; на
&xorg;Как и с любым портом, вам необходимо проверить файл
/usr/ports/UPDATING на наличие изменений.
Инструкции по переходу с &xfree86;
на &xorg; включены в этот
файл.Используйте CVSup для обновления
дерева портов перед любой переустановкой. Для замены
X11 вам также потребуется установить sysutils/portupgrade.В файл /etc/make.conf необходимо
добавить переменную X_WINDOW_SYSTEM=xorg.
Это необходимо, чтобы система знала, какой X11 используется.
Старая переменная XFREE86_VERSION не используется,
она заменена переменной X_WINDOW_SYSTEM.Затем используйте следующие команды:&prompt.root; pkg_delete -f /var/db/pkg/imake-4* /var/db/pkg/XFree86-*
&prompt.root; cd /usr/ports/x11/xorg
&prompt.root; make install clean
&prompt.root; pkgdb -FКоманда &man.pkgdb.1; является частью программы
portupgrade, она обновит
различные зависимости пакетов.Перед сборкой полной версии &xorg;
удостоверьтесь в наличии хотя бы 4 GB свободного места.ChristopherShumwayТекст предоставил Конфигурация X11&xfree86; 4.X&xfree86;&xorg;X11Перед тем, как начатьПеред настройкой X11
необходима следующая информация о конфигурируемой системе:Характеристики монитораНабор микросхем, используемый в видеоадаптереОбъём видеопамятичастота горизонтальной разверткичастота вертикальной разверткиХарактеристики монитора используются в
X11 для определения рабочего
разрешения и частоты. Эти характеристики обычно могут быть получены из
документации, которая прилагается к монитору или с сайта производителя.
Тут нужны два диапазона значений, для частоты горизонтальной развёртки
и для частоты вертикальной синхронизации.Набор микросхем графического адаптера определяет, модуль какого
драйвера использует X11 для работы с
графическим оборудованием.
Для большинства типов микросхем это может быть определено
автоматически, но все же его полезно знать на тот случай, когда
автоматическое определение не работает правильно.Объём видеопамяти графического адаптера определяет разрешение и
глубину цвета, с которым может работать система. Это важно, чтобы
пользователь знал ограничения системы.Конфигурирование X11Процесс настройки X11 является
многошаговым. Первый шаг заключается в построении начального
конфигурационного файла. Работая с правами суперпользователя,
просто запустите:&prompt.root; Xorg -configureДля &xfree86; запустите:&prompt.root; XFree86 -configureПри этом в каталоге /root будет создан скелет
конфигурационного файла X11 под именем
xorg.conf.new (там, куда после &man.su.1; или
непосредственного входа будет указывать переменная
$HOME). Для &xfree86;,
этот файл называется XF86Config.new. Программа
X11 сделает попытку распознать графическое оборудование системы и
запишет конфигурационный файл, загружающий правильные драйверы для
обнаруженного оборудования в системе.Следующим шагом является тестирование существующей конфигурации для
проверки того, что &xorg; может работать
с графическим оборудованием в настраиваемой системе. Для этого
выполните:&prompt.root; Xorg -config xorg.conf.newПользователям &xfree86; необходимо
выполнить:&prompt.root; XFree86 -xf86config XF86Config.newЕсли появилась чёрно-белая сетка и курсор мыши в виде
X, то настройка была выполнена успешно. Для завершения тестирования
просто нажмите одновременно
CtrlAltBackspace.Если мышь не работает, его необходимо настроить.
Обратитесь к в главе об установке
&os;.Тонкая настройка X11Теперь выполните тонкую настройку в файле
xorg.conf.new по своему вкусу (или
XF86Config.new, если вы работаете с
&xfree86;).
Откройте файл в текстовом редакторе, таком, как &man.emacs.1; или
&man.ee.1;. Сначала задайте частоты для
монитора. Они обычно обозначаются как частоты горизонтальной и
вертикальной синхронизации. Эти значения добавляются в файл
XF86Config.new в
раздел "Monitor":Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 30-107
VertRefresh 48-120
EndSectionКлючевых слов HorizSync и
VertRefresh может и не оказаться в
файле конфигурации. Если их нет, то они должны быть добавлены, с
указанием корректных значений горизонтальной частоты синхронизации
после ключевого слова HorizSync и вертикальной
частоты синхронизации после ключевого слова
VertRefresh. В примере выше были введены частоты
монитора настраиваемой системы.X позволяет использовать возможности технологии DPMS (Energy Star)
с поддерживающими её мониторами. Программа &man.xset.1; управляет
временными задержками и может явно задавать режимы ожидания, останова
и выключения. Если вы хотите включить использование возможностей
DPMS вашего монитора, вы должны добавить следующую строку в раздел,
описывающий монитор:Option "DPMS"xorg.confXF86ConfigПока файл конфигурации xorg.conf.new
(или XF86Config.new) открыт
в редакторе, выберите желаемые разрешение и глубину цвета, которые
будут использоваться по умолчанию. Они задаются в секции
"Screen":Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768"
EndSubSection
EndSectionКлючевое слово DefaultDepth описывает
глубину цвета, с которой будет работа по умолчанию. Это значение
может быть переопределено при помощи параметра командной строки
для &man.Xorg.1; (или &man.XFree86.1;).
Ключевое слово
Modes описывает разрешение, с которым нужно
работать при данной глубине цвета. Заметьте, что поддерживаются
только те стандартные режимы VESA, что определены графическим
оборудованием настраиваемой системы. В примере выше глубина цвета по
умолчанию равна двадцати четырём битам на пиксел. При такой глубине
цвета принимается разрешение в 1024 на 768 точек.Наконец, запишите конфигурационный файл и
протестируйте его при помощи тестового режима, описанного выше.При решении проблем могут помочь лог файлы X11, в которых
находится информация по каждому устройству, к которому
подключен сервер X11. Лог файлам
&xorg; названия даются в формате
/var/log/Xorg.0.log (лог файлам
&xfree86; названия даются в формате
XFree86.0.log). Имена лог файлам
могут даваться от Xorg.0.log до
Xorg.8.log и так далее.Если все в порядке, то конфигурационный файл нужно установить в
общедоступное место, где его сможет найти &man.Xorg.1; (или
&man.XFree86.1;).
Обычно это /etc/X11/xorg.conf или
/usr/X11R6/etc/X11/xorg.conf
(для &xfree86; это
/etc/X11/XF86Config или
/usr/X11R6/etc/X11/XF86Config).&prompt.root; cp xorg.conf.new /etc/X11/xorg.confДля &xfree86;:&prompt.root; cp XF86Config.new /etc/X11/XF86ConfigТеперь процесс настройки X11 завершен. Для запуска
&xfree86; 4.X посредством &man.startx.1;
установите порт x11/wrapper.
В &xorg; уже включен код wrapper, и
установка его из порта не требуется. X11 можно также запустить через
&man.xdm.1;.Имеется также графический инструмент для настройки,
&man.xorgcfg.1; (&man.xf86cfg.1; для
&xfree86;), который включён в
дистрибутив X11. Он позволяет выполнить
настройку в интерактивном режиме посредством выбора соответствующих
драйверов и настроек. Эта программа может быть запущена в консоли
командой xf86cfg -textmode. Для получения более
полной информации обратитесь к странице справочной системы
&man.xorgcfg.1; или &man.xf86cfg.1;.Кроме того, существует программа настройки &man.xorgconfig.1;
(&man.xf86config.1; для &xfree86;),
это консольная утилита, которая менее дружественна к пользователю,
но может работать в ситуациях, в которых другие утилиты не
работают.Тонкие вопросы настройкиКонфигурирование при работе с графическими чипсетами &intel;
i810графический чипсет Intel i810Конфигурирование при работе с интегрированными наборами микросхем
&intel; i810 требует наличия agpgart,
программного интерфейса AGP, посредством которого
X11 будет управлять адаптером.
Драйвер &man.agp.4; присутствует в ядре GENERIC
с момента выпуска 4.8-RELEASE и 5.0-RELEASE. Для предшествующих
релизов вам нужно добавлять такую строку:device agpв конфигурационный файл вашего ядра и перестраивать новое ядро.
Однако вместо этого вы можете подгружать модуль ядра
agp.ko автоматически во время загрузки системы
при помощи &man.loader.8;. Для этого просто добавьте следующую
строку в файл /boot/loader.conf:agp_load="YES"Затем, в случае использования FreeBSD 4.X или более ранних
её версий, для программного интерфейса должен быть создан файл
устройств. Для создания файла устройств для AGP запустите
&man.MAKEDEV.8; в каталоге /dev:&prompt.root; cd /dev
&prompt.root; sh MAKEDEV agpgartВо FreeBSD 5.X и более поздних версиях будет
использоваться &man.devfs.5; для выделения файлов устройств в
прозрачном режиме, поэтому шаг с &man.MAKEDEV.8; не нужен.Это позволит конфигурировать графическое оборудование точно так
же, как и любой другой графический адаптер. Заметьте, что для
систем, у которых драйвер &man.agp.4; в ядро не вкомпилирован,
попытка погрузить модуль с помощью &man.kldload.8; окончится
неудачно. Этот драйвер должен оказаться в ядре во время загрузки,
либо вкомпилированным, либо подгруженным посредством
/boot/loader.conf.Если вы используете &xfree86; 4.1.0
(или более позднюю версию), и выдаются сообщения о неразрешённых
ссылках типа fbPictureInit, попробуйте добавить
такую строчку после Driver "i810" в
конфигурационном файле X11:Option "NoDDC"MurrayStokelyТекст предоставил Использование шрифтов в X11Шрифты Type1Шрифты, используемые по умолчанию и распространяемые вместе с
X11, вряд ли можно назвать идеально
подходящими для применения в обычных издательских приложениях. Большие
презентационные шрифты выглядят рвано и непрофессионально, а мелкие
шрифты в &netscape; вообще невозможно
разобрать. Однако есть некоторое количество свободно распространяемых
высококачественных шрифтов Type1 (&postscript;), которые можно без
изменений использовать с X11. К примеру, в наборе шрифтов URW
(x11-fonts/urwfonts) имеются
высококачественные версии стандартных шрифтов type1 (Times Roman, Helvetica, Palatino и другие). В набор Freefonts
(x11-fonts/freefonts) включено ещё
больше шрифтов, однако большинство из них предназначено для
использования в программном обеспечении для работы с графикой,
например, Gimp, и они не вполне пригодны
для использования в качестве
экранных шрифтов. Кроме того, X11 с
минимальными усилиями может быть настроена на использование шрифтов
&truetype;. Более детальная информация находится на странице
справочной системы &man.X.7; и в разделе о
шрифтах &truetype; ниже.Для установки вышеупомянутых коллекций шрифтов Type1 из коллекции
портов выполните следующие команды:&prompt.root; cd /usr/ports/x11-fonts/urwfonts
&prompt.root; make install cleanТо же самое нужно будет сделать для коллекции freefont и других.
Чтобы X-сервер обнаруживал
этих шрифты, добавьте соответствующую строку в
файл настройки X сервера /etc/X11/
(xorg.conf для
&xorg; и
XF86Config для
&xfree86;),
которая должна выглядеть так:FontPath "/usr/X11R6/lib/X11/fonts/URW/"Либо из командной строки при работе с X выполните:&prompt.user; xset fp+ /usr/X11R6/lib/X11/fonts/URW
&prompt.user; xset fp rehashЭто сработает, но будет потеряно, когда сеанс работы с X будет
закрыт, если эта команда не будет добавлена в начальный файл
(~/.xinitrc в случае обычного сеанса через
startx
или ~/.xsession при входе через графический
менеджер типа XDM). Третий способ
заключается в использовании нового файла
/usr/X11R6/etc/fonts/local.conf: посмотрите
раздел об антиалиасинге.Шрифты &truetype;Шрифты TrueTypeшрифтыTrueTypeКак в &xfree86; 4.X, так и в
&xorg; имеется встроенная
поддержка шрифтов &truetype;. Имеются два модуля, которые могут
обеспечить эту функциональность. В нашем примере используется модуль
freetype, потому что он в большей степени похож на другие механизмы
для работы с шрифтами. Для включения модуля freetype достаточно в
раздел "Module" файла
/etc/X11/xorg.conf или
/etc/X11/XF86Config добавить следующую
строчку.Load "freetype"В случае &xfree86; 3.3.X требуется
отдельный сервер шрифтов &truetype;. Для этого обычно
используется Xfstt. Для установки
Xfstt просто установите порт
x11-servers/Xfstt.Теперь создайте каталог для шрифтов &truetype;
(к примеру, /usr/X11R6/lib/X11/fonts/TrueType) и
скопируйте все шрифты &truetype; в этот каталог. Имейте в виду,
что напрямую использовать шрифты &truetype; с &macintosh; нельзя;
для использования с X11 они должны
быть в формате &unix;/&ms-dos;/&windows;. После того, как файлы будут
скопированы в этот каталог, воспользуйтесь утилитой
ttmkfdir для создания файла
fonts.dir, который укажет подсистеме вывода
шрифтов X на местоположение этих новых файлов.
ttmkfdir имеется в Коллекции Портов FreeBSD
как x11-fonts/ttmkfdir.&prompt.root; cd /usr/X11R6/lib/X11/fonts/TrueType
&prompt.root; ttmkfdir > fonts.dirПосле этого добавьте каталог со шрифтами &truetype;
к маршруту поиска шрифтов. Это делается точно также, как описано выше
для шрифтов Type1, то есть
выполните&prompt.user; xset fp+ /usr/X11R6/lib/X11/fonts/TrueType
&prompt.user; xset fp rehashили добавьте строку в файл
xorg.conf (или
XF86Config).Это всё. Теперь &netscape;,
Gimp,
&staroffice; и все остальные X-приложения
должны увидеть установленные шрифты &truetype;. Очень маленькие (как
текст веб-страницы на дисплее с высоким разрешением) и очень большие (в
&staroffice;) шрифты будут теперь выглядеть
гораздо лучше.Joe MarcusClarkeОбновление выполнил Антиалиасинг шрифтовшрифты с антиалиасингомшрифтыантиалиасингАнлиалиасинг присутствует в X11 начиная с
&xfree86;,
версии 4.0.2. Однако настройка шрифтов была довольно
громоздка вплоть до появления &xfree86;
4.3.0. Начиная с версии &xfree86; 4.3.0,
все шрифты, расположенные в каталогах
/usr/X11R6/lib/X11/fonts/ и
~/.fonts/, автоматически становятся доступными для
применения антиалиасинга в приложениях, использующих Xft. Не все
приложения могут использовать Xft, но во многих его поддержка
присутствует. Примерами приложений, использующих Xft, является Qt
версий 2.3 и более поздних (это инструментальный пакет для оболочки
KDE), GTK+ версий 2.0 и более поздних (это
инструментальный пакет для оболочки GNOME),
а также Mozilla версий 1.2 и более
поздних.Для управления тем, к каким шрифтам применять антиалиасинг, а также
для настройки параметров антиалиасинга, создайте (или отредактируйте,
если он уже существует) файл
/usr/X11R6/etc/fonts/local.conf. Некоторые мощные
возможности системы шрифтов Xft могут быть настроены при помощи этого
файла; в этом разделе описаны лишь некоторые простые возможности. Для
выяснения всех деталей, пожалуйста, обратитесь к
&man.fonts-conf.5;.XMLЭтот файл должен быть сформирован в формате XML. Обратите особое
внимание на регистр символов, и удостоверьтесь, что все тэги корректно
закрыты. Файл начинается обычным заголовком XML, за которым следуют
задание DOCTYPE, а потом
тэг <fontconfig>:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
Как и говорилось ранее, все шрифты из каталога
/usr/X11R6/lib/X11/fonts/, а также
~/.fonts/ уже доступны для приложений,
использующих Xft. Если вы хотите добавить каталог, отличный от этих
двух, добавьте строчку, подобную следующей, в файл
/usr/X11R6/etc/fonts/local.conf:<dir>/path/to/my/fonts</dir>После добавления новых шрифтов, и особенно новых каталогов со
шрифтами, вы должны выполнить следующую команду для перестроения
кэшей шрифтов:&prompt.root; fc-cache -fАнтиалиасинг делает границы несколько размытыми, что делает очень
мелкий текст более читабельным и удаляет лесенки из
текста большого размера, но может вызвать нечёткость при применении к
тексту обычного размера. Для исключения размеров шрифтов, меньших 14, из
антиалиасинга, добавьте такие строки: <match target="font">
<test name="size" compare="less">
<double>14</double>
</test>
<edit name="antialias" mode="assign">
<bool>false</bool>
</edit>
</match>
<match target="font">
<test name="pixelsize" compare="less" qual="any">
<double>14</double>
</test>
<edit mode="assign" name="antialias">
<bool>false</bool>
</edit>
</match>шрифтымежсимвольное расстояниеДля некоторых моноширинных шрифтов антиалиасинг может также
оказаться неприменимым при определении межсимвольного интервала. В
частности, эта проблема возникает с KDE.
Одним из возможных решений для этого
является жесткое задание межсимвольного интервала в 100. Добавьте
следующие строки: <match target="pattern" name="family">
<test qual="any" name="family">
<string>fixed</string>
</test>
<edit name="family" mode="assign">
<string>mono</string>
</edit>
</match>
<match target="pattern" name="family">
<test qual="any" name="family">
<string>console</string>
</test>
<edit name="family" mode="assign">
<string>mono</string>
</edit>
</match>(это создаст алиасы для других общеупотребительных имён для
шрифтов фиксированного размера как "mono"), а затем
добавьте: <match target="pattern" name="family">
<test qual="any" name="family">
<string>mono</string>
</test>
<edit name="spacing" mode="assign">
<int>100</int>
</edit>
</match> С некоторыми шрифтами, такими, как Helvetica, могут получиться
проблемы при антиалиасинге. Обычно это проявляется в виде шрифта,
который наполовину вертикально обрезан. Хуже того, это может
привести к сбоям таких приложений, как
Mozilla. Во избежание этого следует
добавить следующее в файл local.conf: <match target="pattern" name="family">
<test qual="any" name="family">
<string>Helvetica</string>
</test>
<edit name="family" mode="assign">
<string>sans-serif</string>
</edit>
</match> После того, как вы закончите редактирование
local.conf, удостоверьтесь, что вы завершили файл
тэгом </fontconfig>. Если этого не сделать,
то ваши изменения будут проигнорированы.Набор шрифтов по умолчанию, поставляемый с
X11, не очень желателен, если
включается антиалиасинг. Гораздо лучший набор шрифтов, используемых
по умолчанию, можно найти в порте
x11-fonts/bitstream-vera. Этот
порт установит файл
/usr/X11R6/etc/fonts/local.conf, если такого ещё
не существует. Если файл существует, то порт создаст файл
/usr/X11R6/etc/fonts/local.conf-vera. Перенесите
содержимое этого файла в
/usr/X11R6/etc/fonts/local.conf, и шрифты
Bitstream автоматически заменят используемые по умолчанию в
X11 шрифты Serif, Sans Serif и
Monospaced.Наконец, пользователи могут добавлять собственные наборы
посредством персональных файлов .fonts.conf.
Для этого каждый пользователь должен просто создать файл
~/.fonts.conf. Этот файл также должен быть в
формате XML.LCD-дисплейШрифтыLCD-дисплейИ последнее замечание: при использовании дисплея LCD может
понадобиться включение разбиения точек. При этом компоненты красного,
зелёного и голубого цветов (разделяемые по горизонтали),
рассматриваются как отдельные точки для улучшения разрешения экрана
по горизонтали; результат может оказаться потрясающим. Для включения
этого механизма добавьте такую строчку где-нибудь в файл
local.conf:
<match target="font">
<test qual="all" name="rgba">
<const>unknown</const>
</test>
<edit name="rgba" mode="assign">
<const>rgb</const>
</edit>
</match>
В зависимости от типа дисплея, rgb может
потребоваться заменить на bgr,
vrgb или vbgr: пробуйте и
смотрите, что работает лучше.Mozillaвеб-браузерыMozillaMozillaАнтиалиасинг должен быть включен при следующем запуске X-сервера.
Однако программы должны знать, как использовать его преимущества.
В настоящее время инструментальный пакет Qt умеет ими пользоваться,
так что вся оболочка KDE может
использовать шрифты с антиалиасингом (обратитесь к о KDE для
выяснения всех подробностей). GTK+ и GNOME
также можно заставить использовать антиалиасинг посредством капплета
Font (обратитесь к для выяснения всех подробностей).
По умолчанию Mozilla версий 1.2 и выше
будет автоматически использовать антиалиасинг. Для отмены этого
перестройте Mozilla с флагом
-DWITHOUT_XFT.SethKingsleyТекст предоставил Менеджеры Экранов (Display Managers) XВступлениеX Display ManagerМенеджер Экранов X (XDM) это
необязательный компонент
Системы Окон X, который используется для управления login сессиями.
Это полезно в ряде ситуаций, например минимальные
X Терминалы,
декстопы, большие сетевые сервера Экранов. Так как Система Окон X
не зависит от сетей и протоколов, то существует множество различных
конфигураций для X клиентов и серверов запущенных на различных
компьютерах подключенных к сети. XDM
предоставляет графический
интерфейс для выбора сервера к которому Вы желаете подключится и
введения информации авторизующей пользователя, например комбинацию
логина и пароля.Представляйте себе, что XDM
предоставляет такие же
возможности для пользователей, как и программа &man.getty.8;
(смотрите для подробной информации).
И это именно так, XDM производит вход в
систему для подключенного
пользователя и запускает управляющую сессию для пользователя (обычно
это менеджер окон X). После этого XDM
ожидает завершения
приложения, означающее завершение пользователем работы и
отключает управляющую сессию. После этого
XDM может снова вывести
приглашение к входу в систему и ожидать входа другого пользователя.
Использование XDMПрограммой даемона XDM является
/usr/X11R6/bin/xdm. Эта программа может быть
запущена от пользователя root в любой момент, и
она начнёт управлять дисплеем X на локальной машине.
Если XDM нужно запускать
в фоновом режиме каждый раз при запуске компьютера, то наиболее
правильный способ это добавить новую запись в
/etc/ttys. Для более подробной информации о
формате и использовании этого файла смотрите секцию . Это строка, которую необходимо добавить
в файл /etc/ttys для того чтобы запустить
даемон XDM на виртуальном терминале:ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secureПо умолчанию эта запись отключена; для её включения
нужно заменить пятое поле с off на
on и перезапустить &man.init.8;, используя метод,
описанный в . Первое поле это название
терминала, которым будет управлять программа, ttyv8.
Это означает, что XDM будет запущен на 9ом
виртуальном терминале.Конфигурирование XDMКонфигурационные файлы XDM находятся в
каталоге
/usr/X11R6/lib/X11/xdm. В нём размещаются
насколько файлов, которые используются для изменения
поведения и внешнего вида XDM.
Обычно это следующие файлы:
-
+ ФайлОписаниеXaccessПравила авторизации клиентов.XresourcesЗначения ресурсов X по умолчанию.XserversСписок локальных и удаленных экранов.XsessionСценарий сессии по умолчанию.Xsetup_*Скрипт для запуска приложений до появления приглашения
к входу в систему.xdm-configГлобальный конфигурационный файл для всех экранов
запущенных на локальной машинеxdm-errorsОшибки сгенерированные серверной программой.xdm-pidID процесса запущенного XDM.В этом каталоге также находятся несколько командных сценариев
и программ используемых для настройки рабочего стола (desktop),
когда запускается XDM. Назначение
каждого из этих файлов будет вкратце описано. Точный синтаксис и
информацию по их использованию описаны в &man.xdm.1;.В конфигурации по умолчанию это просто прямоугольное окно
приглашения ко входу в систему с именем компьютера большим шрифтом
написанным сверху и строками ввода Login: и
Password: внизу. Это хорошая отправная точка
для изменения внешнего вида экранов
XDM.XaccessПротокол, по которому происходит подключение дисплеев,
управляемых XDM, называется X Display
Manager Connection
Protocol (XDMCP). Этот файл представляет собой
набор правил для управления XDMCP соединениями с
удалёнными машинами. По умолчанию он позволяет подключаться
любым клиентам, но это не имеет значения, пока
стандартный файл xdm-config не содержит
указаний по обслуживанию удалённых соединений.XresourcesЭто файл содержащий установки по умолчанию для
приложений запущенных в экране выбора серверов и экране
приглашения к входу в систему. Именно здесь может быть
изменён вид программы входа в систему. Формат этого файла
идентичен файлу app-defaults описанному
в документации к X11.XserversЭто список удаленных экранов, которые XDM должен предоставить
как варианты для входа в систему.XsessionЭтот файл представляет себя командный сценарий по умолчанию
для пользователей вошедших в систему с использованием
XDM.
Обычно каждый пользователь имеет собственный сценарий входа в файле
~/.xsession, который используется
вместо этого сценария.Xsetup_*Они запускаются автоматически перед тем, как показывается экран
выбора сервера или экран входа в систему. Для каждого экрана
(display) есть свой сценарий с именем Xsetup_,
за которым следует локальный номер экрана (например,
Xsetup_0).
Обычно эти сценарии запускают одну или две программы в
фоновом режиме, например xconsole.xdm-configЗдесь содержатся настройки в формате app-defaults,
которые применимы ко всем экранам данного компьютера.xdm-errorsЗдесь находится выдача X серверов, которые
XDM пытается запустить. Если экран,
который XDM пытается
открыть отключается по некоторым причинам, то это хорошее
место для поиска сообщений об ошибках. Эти сообщения также
записываются в пользовательский файл
~/.xsession-errors для каждого сеанса.Использование сетевого сервера дисплеевДля того, чтобы позволить другим клиентам подключаться к серверу
дисплеев, отредактируйте правила
контроля доступа и включите обслуживание сетевых соединений.
По умолчанию они выключены, что является хорошим решением
с точки зрения обеспечения безопасности. Для того, чтобы
позволить XDM принимать сетевые соединения,
в первую очередь
закомментируйте строку в файле xdm-config:! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with xdm
DisplayManager.requestPort: 0и потом перезапустите XDM. Помните,
что комментарии в файлах app-defaults начинаются с символа
!, а не как обычно, #. Может
потребоваться более жёсткий контроль доступа. Взгляните на примеры из
Xaccess и почитайте Справочник о
&man.xdm.1;.Замены для XDMСуществует несколько программ, заменяющих
XDM. Одна из них,
kdm (поставляемая вместе с
KDE), описана далее в этой главе. В
kdm имеется много визуальных и
косметических улучшений, а также функциональность, позволяющая
пользователям выбирать собственные оконные менеджеры во время
входа в систему.ValentinoVaschettoТекст предоставил Графические оболочкиВ этом разделе описываются различные графические оболочки, доступные
в X для FreeBSD. Термин графическая оболочка может
использоваться для чего угодно, от простого менеджера окон до
полнофункционального набора приложений для рабочего стола типа
KDE или
GNOME.GNOMEО GNOMEGNOMEGNOME является дружественной к
пользователю графической
оболочкой, позволяющей пользователям легко использовать и настраивать
свои компьютеры. В GNOME имеется панель
(для запуска приложений и
отображения их состояния), рабочий стол (где могут быть размещены
данные и приложения), набор стандартных инструментов и приложений для
рабочего стола, а также набор соглашений, облегчающих совместную
работу и согласованность приложений. Пользователи других
операционных систем или оболочек при использовании такой мощной
графической оболочки, какую обеспечивает
GNOME, должны чувствовать
себя в родной среде. Дополнительную информацию относительно
GNOME во FreeBSD можно найти на сайте
FreeBSD GNOME
Project.Установка GNOMEЛегче всего установить GNOME через
меню Desktop Configuration в ходе процесса установки
FreeBSD, как описано в
Главы 2. Её также легко установить из пакета или Коллекции
Портов:Для установки пакета GNOME из сети,
просто наберите:&prompt.root; pkg_add -r gnome2Для построения GNOME из
исходных текстов используйте дерево портов:&prompt.root; cd /usr/ports/x11/gnome2
&prompt.root; make install cleanПосле установки GNOME нужно указать
X-серверу на запуск GNOME вместо
стандартного оконного менеджера. Если файл
.xinitrc уже откорректирован, то просто
замените строку, в которой запускается используемый менеджер окон,
на ту, что вызовет
/usr/X11R6/bin/gnome-session.
Если в конфигурационном файле нет ничего особенного, то будет
достаточно просто набрать:&prompt.user; echo "/usr/X11R6/bin/gnome-session" > ~/.xinitrcТеперь наберите startx, и будет запущена
графическая оболочка GNOME.Если используется менеджер дисплеев типа
XDM, то это не сработает. Вместо этого
создайте выполнимый файл .xsession с той
же самой командой в нём. Для этого отредактируйте файл,
заменив существующую команду запуска оконного
менеджера на
/usr/X11R6/bin/gnome-session:&prompt.user; echo "#!/bin/sh" > ~/.xsession
&prompt.user; echo "/usr/X11R6/bin/gnome-session" >> ~/.xsession
&prompt.user; chmod +x ~/.xsessionЕщё одним вариантом является настройка менеджера дисплеев таким
образом, чтобы он позволял выбирать оконный менеджер во время входа в
систему; в разделе о KDE2 в
подробностях описывается, как сделать это для
kdm, менеджера дисплеев из
KDE.Шрифты с антиалиасингом и GNOMEGNOMEантиалиасинг шрифтовX11 поддерживает антиалиасинг посредством своего расширения
RENDER. GTK+ 2.0 и более поздние версии (это
инструментальный пакет, используемый
GNOME) могут использовать такую
функциональность. настройка антиалиасинга описана в
. Таким образом, при наличии современного
GNOME. Просто перейдите в
ApplicationsDesktop PreferencesFont
и выберите либо
Best shapes,
Best contrast, либо
Subpixel smoothing (LCDs). Для приложений
GTK+, которые не являются частью оболочки
GNOME, задайте в качестве значения
переменной окружения GDK_USE_XFT1 перед запуском программы.KDEKDEО KDEKDE является простой в использовании
современной графической оболочкой. Вот лишь некоторое из того, что
даёт пользователю KDE:Прекрасный современный рабочий столРабочий стол, полностью прозрачный для работы в сетиИнтегрированная система помощи, обеспечивающая удобный и
согласованный доступ к системе помощи по использованию рабочего
стола KDE и его приложенийЕдинообразный внешний вид и управление во всех приложениях
KDEСтандартизированные меню и панели инструментов, комбинации
клавиш, цветовые схемы и так далее.Интернационализация: в KDE
поддерживается более 40 языковЦентрализованное единообразное конфигурирование рабочего
стола в диалоговом режимеБольшое количество полезных приложений для
KDEДля KDE существует пакет офисных
приложений, который выполнен по технологии KParts из
KDE, состоящий из программы для работы с
электронными таблицами, презентационной программы, органайзера,
клиента для чтения телеконференций и других программ. С
KDE также поставляется веб-браузер под
названием Konqueror, который
является серьезным соперником другим браузерам для &unix;-систем.
Дополнительную информацию о KDE можно
найти на веб-сайте
KDE. Для получения информации и информационных ресурсов,
специфичных для KDE во FreeBSD, обратитесь
к сайту команды FreeBSD-KDE
team.Установка KDEКак и в случае с GNOME или любой
другой графической оболочкой, легче всего установить
KDE через меню Desktop
Configuration во время установки FreeBSD, как это описано в
Главы 2. Повторимся ещё
раз, что программное обеспечение можно легко установить из пакета
или из Коллекции Портов:Для установки пакета KDE из сети,
просто наберите:&prompt.root; pkg_add -r kde&man.pkg.add.1; автоматически загрузит самую последнюю версию
приложения.Для построения KDE из исходных
текстов воспользуйтесь деревом портов:&prompt.root; cd /usr/ports/x11/kde3
&prompt.root; make install cleanПосле установки KDE нужно
указать X-серверу на запуск этого приложения вместо оконного
менеджера, используемого по умолчанию. Это достигается
редактированием файла .xinitrc:&prompt.user; echo "exec startkde" > ~/.xinitrcТеперь при вызове X Window System по команде
startx в качестве оболочки будет использоваться
KDE.При использовании менеджера дисплеев типа
XDM настройка несколько отличается.
Вместо этого нужно отредактировать файл
.xsession. Указания для
kdm описаны далее в этой главе.Более подробно о KDEТеперь, когда KDE установлена в
системе, можно узнать много нового из её справочных страниц или просто
указанием и щелканием по различным меню. Пользователи &windows; или
&mac; будут чувствовать себя как дома.Лучшим справочником по KDE является
онлайновая документация. KDE
поставляется с собственным веб-браузером, который называется
Konqueror,
десятками полезных приложений и подробной документацией. В оставшейся
части этого раздела обсуждаются технические вопросы, трудные для
понимания при случайном исследовании.Менеджер дисплеев KDEKDEменеджер дисплеевАдминистратору многопользовательской системы может
потребоваться графический экран входа в систему для
приглашения пользователей. Вы можете использовать XDM, как это описано
ранее. Однако в KDE имеется
альтернативный менеджер kdm, который был
разработан для того, чтобы выглядеть более привлекательно и иметь
большее количество настраиваемых опций для входа в систему. В
частности, пользователи могут легко выбирать (посредством меню),
какую оболочку (KDE,
GNOME или что-то ещё) запускать после
входа в систему.Чтобы начать, запустите панель управления
KDE, kcontrol, из-под
пользователя root. Вообще говоря, считается
небезопасным работать в X пользователем
root. Вместо этого запустите менеджер окон
как обычный пользователь, откройте окно терминала (такого, как
xterm или konsole) из
KDE, станьте пользователем
root по команде su (для
этого нужно быть членом группы wheel из
/etc/group), а затем наберите
kcontrol.Щёлкните на иконке слева с надписью
System, затем на Login
manager. Справа имеется много
различных параметров настройки, которые более детально описаны в
руководстве по KDE. Щёлкните на
sessions справа. Щёлкните на кнопку
New type для того, чтобы добавить
различные оконные менеджеры и графические оболочки. Это просто
названия, так что они могут именоваться
KDE или GNOME,
а не startkde или
gnome-session.)
Включите название failsafe.Поэкспериментируйте также и с другими меню, они в
основном носят косметический характер и самоописательны. Когда
закончите, щёлкните на Apply внизу и завершите
работу панели управления.Чтобы kdm понимал, что значат эти
названия (KDE,
GNOME и так далее), отредактируйте файлы,
которые использует XDM.
В KDE 2.2 это изменилось: в
kdm теперь используются собственные
конфигурационные файлы. Пожалуйста, обратитесь к документации
по KDE 2.2 для получения подробной
информации.В окне терминала, работая как пользователь
root, отредактируйте файл
/usr/X11R6/lib/X11/xdm/Xsession. В середине
есть раздел, выглядящий вот так:case $# in
1)
case $1 in
failsafe)
exec xterm -geometry 80x24-0-0
;;
esac
esacНужно добавить к этому разделу несколько строк. Полагая, что
ранее использовались названия KDE и
GNOME, сделаем следующее:case $# in
1)
case $1 in
kde)
exec /usr/local/bin/startkde
;;
GNOME)
exec /usr/X11R6/bin/gnome-session
;;
failsafe)
exec xterm -geometry 80x24-0-0
;;
esac
esacЧтобы выбор KDE в качестве оболочки
на момент входа в систему был принят, нужно добавить такую строку в
/usr/X11R6/lib/X11/xdm/Xsetup_0:/usr/local/bin/kdmdesktopТеперь проверьте, что
kdm перечислена в файле
/etc/ttys для запуска при следующей загрузке.
Для этого просто следуйте инструкциям из предыдущего раздела
о XDM, заменив отсылки к программе
/usr/X11R6/bin/xdm на
/usr/local/bin/kdm.Шрифты с антиалиасингомKDEантиалиасинг шрифтовX11 поддерживает антиалиасинг через своё расширение
RENDER, а начиная с версии 2.3, Qt (инструментарий,
используемый в KDE) поддерживает это
расширение. Настройка этого описана в по
антиалиасингу с шрифтами X11. Таким образом, при работе с
современным программным обеспечением в оболочке
KDE возможно использование
антиалиасинга. Просто перейдите в меню KDE, затем к
PreferencesLook and FeelFonts
и поставьте галочку рядом с
Use Anti-Aliasing for Fonts and Icons. Для
работы с приложением Qt, которое не является частью
KDE, перед его запуском нужно
устанавливать переменную окружения QT_XFT в
значение true.XFceО XFceXFce является графической оболочкой,
построенной на основе инструментального пакета GTK+, используемого в
GNOME, но гораздо легче и предназначен
для тех, кому нужен простой, эффективно работающий рабочий стол,
который легко использовать и настраивать. Визуально он выглядит
очень похоже на CDE, который есть в
коммерческих &unix;-системах. Вот некоторые из достоинств
XFce:Простой, лёгкий в обращении рабочий столПолностью настраиваемый при помощи мыши, с
интерфейсом drag and drop и так далееГлавная панель похожа на CDE, с
меню, апплетами и возможностями по быстрому запуску
приложенийИнтегрированный оконный менеджер, менеджер файлов,
управление звуком, модуль совместимости с
GNOME и прочееВозможность использования тем (так как использует
GTK+)Быстрый, легкий и эффективный: идеален для
устаревших/слабых машин или для машин с ограниченной
памятьюДополнительную информацию о XFce
можно найти на сайте
XFce.Установка XFceДля XFce имеется (на момент написания
этого текста) бинарный пакет. Для его установки просто
наберите:&prompt.root; pkg_add -r xfce4Либо в случае построения из исходных текстов используйте
Коллекцию Портов: &prompt.root; cd /usr/ports/x11-wm/xfce4
&prompt.root; make install cleanТеперь укажите X-серверу на запуск
XFce при следующем
запуске X. Просто наберите вот что:&prompt.user; echo "/usr/X11R6/bin/startxfce4" > ~/.xinitrcПри следующем запуске X в качестве рабочего стола
будет использоваться XFce.
Как это сказано выше, если используется
менеджер дисплеев, такой, как XDM, создайте
файл .xsession так, как это
описано в разделе о GNOME, но
с командой /usr/X11R6/bin/startxfce4, либо
настройте менеджер дисплеев так, чтобы он разрешил выбор рабочего
стола во время входа в систему, как это описано в разделе о kdm.