diff --git a/ru_RU.KOI8-R/books/handbook/cutting-edge/chapter.sgml b/ru_RU.KOI8-R/books/handbook/cutting-edge/chapter.sgml
index b1e41571be..590452965d 100644
--- a/ru_RU.KOI8-R/books/handbook/cutting-edge/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/cutting-edge/chapter.sgml
@@ -1,1970 +1,1989 @@
JimMockРеструктурирование, реорганизацию и частичное обновление
выполнил JordanHubbardОригинальный текст написал Poul-HenningKampJohnPolstraNikClaytonАндрейЗахватовПеревод на русский язык: На переднем крае разработокКраткий обзорМежду релизами над &os; ведется постоянная работа. Для тех,
кто хочет быть на переднем крае, есть несколько простых методов для
поддержания своей системы в соответствии с последними разработками.
Будьте осторожны — передний край не для всех! Эта глава поможет
вам решить, хотите ли вы отслеживать систему в процессе работы над ней
или останетесь верным одному из выпущенных релизов.После чтения этой главы вы будете знать:Разницу между двумя ветвями разработки: &os.stable; и
&os.current;.Как поддерживать вашу систему в актуальном состоянии при помощи
CVSup, CVS или
CTM.Как перестраивать и переустанавливать базовую систему полностью
- при помощи make world.
+ при помощи make buildworld (и других).
Перед чтением этой главы вы должны:Полностью настроить своё подключение к сети ().Знать, как устанавливать дополнительное программное обеспечение
других разработчиков ().&os.current; против &os.stable;-CURRENT-STABLEВо FreeBSD имеется две ветки разработки: &os.current; и &os.stable;.
Этот раздел описывает каждую из них и объясняет, как синхронизировать
вашу систему с любой из веток. Сначала будет обсуждаться ветка
&os.current;, затем &os.stable;.Как следовать текущим разработкам во &os;Пока вы читаете этот текст, помните, что &os.current; является
передовым краем работ над &os;. Предполагается, что
пользователи &os.current; технически более грамотны и могут решать
проблемы с системой самостоятельно. Если вы являетесь во &os;
новичком, вам лучше сначала дважды подумать, прежде чем
её устанавливать.Что такое &os.current;?snapshot&os.current; является последними рабочими версиями исходных
текстов &os;. Сюда включаются неоконченные работы, экспериментальные
изменения и промежуточные механизмы, которые могут присутствовать, а
могут и отсутствовать в следующем официальном релизе программного
обеспечения. Хотя многие из разработчиков &os; выполняют компиляцию
из исходных текстов &os.current; ежедневно, случаются периоды, когда
исходные тексты заведомо не могут быть откомпилированы. Такие
проблемы обычно решаются так быстро, как это возможно, но всё-таки
момент, когда вы загрузили исходные тексты &os.current;, может
повлиять на то, содержат они мину замедленного действия или очень
нужную функциональность!Кому нужна &os.current;?&os.current; предназначается трём основным заинтересованным
группам:
- Члены команды разработчиков &os;, активно работающие над
+ Участники проекта &os;, активно работающие над
некоторой частью дерева исходных текстов и для кого работа в
current является абсолютной
необходимостью.
- Члены команды разработчиков &os;, которые являются
+ Участники проект &os;, которые являются
активными тестерами. Они тратят свое время на
исправление проблем для того, чтобы &os.current; оставалась,
насколько это возможно, нормально работающей системой. Есть
также люди, которые вносят важные предложения по изменениям и
общему направлению развития &os; и присылают свои патчи,
реализующие эти изменения.Те, кто просто хотят быть в курсе всех изменений или
используют текущие исходные тексты для ознакомительных целей (к
примеру, для чтения, но не для
использования). Такие люди также иногда высказывают замечания
или предоставляют код.Чем &os.current; не является?Быстрым способом получить предварительную версию, в
случае, если вы услышали, что здесь появилась некая крутая
возможность, и вы хотите быть первым в вашем микрорайоне, у
кого она есть. Здесь быть первым из тех, кто имеет это
программное обеспечение означает также быть первым из тех, кто
столкнулся с ошибками в нём.Быстрым способом получения исправлений. Любая версия
&os.current; является в равной мере как источником исправлений
существующих ошибок, так и источником появления новых.Официально поддерживаемой каким бы то ни было
способом. Мы прилагаем все усилия, чтобы помочь тем, кто
изначально принадлежит одной из трех признанных
групп пользователей &os.current;, но у нас просто нет
времени на техническую поддержку. Это не потому, что
мы гадкие и злые люди, которые ни за что не будут помогать другим
(если бы это было так, мы бы не создали &os;). Мы просто не в
силах отвечать на сотни сообщений в день и
работать над FreeBSD! Если бы стоял выбор между тем, отвечать ли
на множество вопросов об экспериментально коде или продолжать
работу над совершенствованием &os;, большинство разработчиков
проголосовало бы за последнее.Использование &os.current;-CURRENTиспользованиеПодпишитесь на списки рассылки &a.current.name; и
&a.cvsall.name;. Это не просто хорошая идея, это
необходимость. Если вы не являетесь
участником списка рассылки &a.current.name;,
то вы не увидите замечаний,
высказываемых о текущем состоянии системы и в итоге можете
столкнуться со множеством проблем, которые уже были найдены и
решены другими. Ещё хуже, если вы пропустите важные сообщения,
касающиеся жизнеспособности вашей системы.Список рассылки &a.cvsall.name; позволит вам для каждого
изменения увидеть соответствующую запись в журнале коммитов,
а они порой содержат относящуюся к делу
информацию о возможных побочных эффектах.Чтобы подключиться к этим и другим доступным спискам
рассылки, перейдите по ссылке &a.mailman.lists.link; и щёлкните
на списке, к которому вы хотите подключиться. Инструкции по
дальнейшим действиям размещены там же.Загрузите исходные тексты с зеркального сайта &os;. Вы можете
сделать это одним из следующих двух способов:cvsupcron-CURRENT
Синхронизация при помощи CVSupПри помощи программы cvsup
с sup-файлом
standard-supfile, который можно найти в
каталоге /usr/share/examples/cvsup. Это
наиболее
рекомендуемый метод, так как он позволяет вам загрузить набор
исходных текстов один раз полностью, а затем сгружать только
произошедшие изменения. Многие запускают
cvsup при помощи программы
cron и получают самые свежие исходные
тексты автоматически. Измените примерный файл
supfile выше и отконфигурируйте cvsup для вашего окружения.-CURRENTСинхронизация при помощи CTMПри помощи CTM. Если у вас очень
плохое подключение (дорогое или предоставляющее доступ только
к электронной почте), то CTM
можно рассматривать как вариант. Однако в нем много
"подводных камней", и его использование может
привести к появлению неправильных файлов. Это привело к
тому, что этот способ используется редко, что, в свою
очередь, увеличивает шанс появления периодов его
неработы. Мы рекомендуем использовать CVSup всем, чья скорость
подключения равна 9600 bps и выше.Если вам нужны исходные тексты для компиляции и запуска, а
не просто для ознакомления, то сгружайте исходные тексты
ветки &os.current; полностью, а не отдельные
ее части. Причиной является то, что многие части исходных
текстов зависят от других обновлений где-то еще, и попытка
компиляции лишь некоторой части программ в этом случае
гарантированно вызовет проблемы.-CURRENTкомпиляцияПеред тем, как компилировать &os.current;, внимательно
прочтите файл Makefile в каталоге
/usr/src. В процессе обновления вы
по крайней мере раз должны пройти через установку нового ядра и перестроение всех
компонентов системы. Чтение списка рассылки &a.current.name; и
/usr/src/UPDATING позволит вам быть в курсе
всех процедур, которые иногда бывают необходимы в процессе
работы над следующим релизом.Будьте активным подписчиком! Если вы работаете с
&os.current;, мы хотим знать, что вы думаете о ней, особенно
если у вас есть соображения по ее улучшению или исправлению
ошибок. Пожелания, к которым прилагается код, всегда
принимаются с большим энтузиазмом!Работа с веткой stable во &os;Что такое &os.stable;?-STABLE&os.stable; является нашей веткой разработки, из которой делаются
основные релизы. Изменения в этой ветке происходят с разной
скоростью, и при этом предполагается, что сначала они были выполнены
для &os.current; в целях тестирования. Однако эта ветка
остаётся веткой для разработки, а это значит,
что в любой момент времени исходные тексты &os.stable; могут
оказаться неприменимы для некоторой задачи. Это просто ещё одна
ветка при разработке, а не ресурс для конечных пользователей.Кому нужна &os.stable;?Если вы заинтересованы в отслеживании процесса разработки FreeBSD
или хотите принять в нём участие, особенно в той мере, насколько это
касается выпуска следующего релиза FreeBSD с точкой, то
вам необходимо отслеживать &os.stable;.Хотя правда то, что исправления, касающиеся безопасности, также
делаются и в ветке &os.stable;, вам не нужно
для этого отслеживать &os.stable;. Каждый бюллетень по безопасности
FreeBSD описывает, как решить проблему для тех релизов, которых он
касается
Это не совсем так. Мы не можем поддерживать старые релизы
FreeBSD бесконечно долго, хотя мы поддерживаем их многие годы.
Полное описание текущей политики безопасности относительно
старых релизов FreeBSD можно найти по адресу
+ url="&url.base;/ru/security/">
http://www.FreeBSD.org/ru/security/.
, а отслеживание ветки разработки в полном объёме только ради
исправлений пробелов в безопасности приводит к появлению большого
количества дополнительных ненужных изменений.Хотя мы прилагаем все усилия, чтобы ветка &os.stable; всегда
компилировалась и работала, этого нельзя гарантировать. Кроме того,
несмотря на то, что перед включением в &os.stable;, код
разрабатывается в &os.current;, гораздо большее количество людей
работают с &os.stable;, чем с &os.current;. Поэтому неудивительно,
что в &os.stable; иногда
обнаруживаются ошибки и всплывают непредвиденные ситуации, которые не
проявляли себя в &os.current;.По этим причинам мы не рекомендуем слепо
отслеживать &os.stable;, и, что особенно важно, вы не должны
обновлять какие-либо сервера, находящиеся в активной эксплуатации, до
&os.stable; без предварительного тщательного тестирования кода в
вашей среде разработки.Если у вас нет возможности сделать это, то мы рекомендуем
работать с самой последним релизом &os; и использовать механизм
обновления бинарных файлов для перехода от релиза к релизу.Использование &os.stable;-STABLEиспользованиеПодпишитесь на список рассылки &a.stable.name;. Это позволит
вам узнавать о зависимостях процесса компиляции,
которые могут появиться в ветке &os.stable; или
любых других проблемах, требующих особого внимания. В этом
списке рассылки разработчики также делают объявления о
спорных исправлениях или добавлениях,
давая пользователям возможность высказать свое мнение о
возможных тонких моментах.Список рассылки &a.cvsall.name; позволит вам для каждого
изменения увидеть соответствующую запись в журнале коммитов,
а они порой содержат относящуюся к делу
информацию о возможных побочных эффектах.Чтобы подключиться к этим и другим доступным спискам
рассылки, перейдите по ссылке &a.mailman.lists.link; и щёлкните
на списке, к которому вы хотите подключиться. Инструкции по
дальнейшим действиям размещены там же.Если вы устанавливаете новую систему и хотите, чтобы она
работала максимально стабильно, то можете просто загрузить
самый свежий снэпшот ветки по адресу и установить его, как любой другой релиз. Либо вы
можете установить самый последний релиз &os.stable;, загрузив его
с зеркалирующих сайтов, а затем
следовать инструкциям ниже по обновлению исходных текстов вашей
системы до самой последней версии &os.stable;.Если вы уже работаете с предыдущим релизом &os; и хотите
обновить его из исходных текстов, то вы можете легко это
сделать с зеркального сайта &os;.
Это можно сделать одним из двух способов:cvsupcron-STABLE
Синхронизация при помощи CVSupПри помощи программы cvsup
с sup-файлом
stable-supfile из каталога
/usr/share/examples/cvsup.
Это наиболее рекомендуемый
метод, так как он позволяет вам загрузить набор исходных
текстов один раз полностью, а затем сгружать только
произошедшие изменения. Многие запускают
cvsup при помощи программы
cron и получают самые свежие исходные
тексты автоматически. Измените примерный файл
supfile выше и отконфигурируйте cvsup для вашего окружения.-STABLEсинхронизация при помощи CTMПри помощи CTM. Если у вас нет
быстрого и недорогого подключения к Интернет, то это как раз
тот метод, которым вы должны воспользоваться.Итак, если вам нужен быстрый доступ к
исходным текстам и нагрузка на каналы связи для вас не
проблема, то используйте cvsup
или ftp. В противном случае воспользуйтесь
CTM.-STABLEкомпиляцияПеред тем, как компилировать &os.stable;, внимательно
прочтите файл Makefile в каталоге
/usr/src. В процессе обновления вы
по крайней мере раз должны пройти через установку нового ядра и перестроение всех
компонентов системы. Чтение списка рассылки &a.stable.name; и
/usr/src/UPDATING
позволит вам быть в курсе всех процедур,
которые иногда бывают необходимы при переходе к следующему
релизу.Синхронизация ваших исходных текстовИмеются различные способы использования Интернет (или почтового)
подключения для того, чтобы иметь самые последние версии исходных
текстов любого проекта &os;, в зависимости от
того, чем вы интересуетесь. Основной сервис, который мы предлагаем,
это Анонимный CVS, CVSup и CTM.Хотя имеется возможностью обновлять только часть дерева исходных
текстов, процедурой, которую мы настоятельно советуем, является обновление всего
дерева и перекомпиляция пользовательских программ (то есть тех,
которые работают в пространстве имен пользователя, например те, что
находятся в каталогах /bin и
/sbin) и ядра. Обновление только части дерева
исходных текстов, только текстов ядра или только текстов
пользовательских программ часто приводит к возникновению проблем. Эти
проблемы могут варьироваться от ошибок компиляции до аварийных
остановов системы или порчи данных.анонимный CVSАнонимный CVS и
CVSup используют модель
pull обновления исходных текстов. В случае
CVSup пользователь (или скрипт программы
cron) вызывают cvsup, а она
работает с каким-либо сервером cvsupd, чтобы
выполнить обновление ваших
файлов. Обновления, которые вы получаете, актуальны с точностью до
минуты, и вы получаете их тогда и только тогда, когда сами захотите.
Вы можете с легкостью ограничить обновления конкретными файлами
или каталогами, которые представляют для вас интерес. Обновления
создаются на лету сервером согласно тому, что у вас есть и что вы
хотите иметь. Анонимный CVS гораздо проще,
чем CVSup в том смысле, что он представляет
собой всего лишь расширение
CVS, позволяющее загрузить изменения
непосредственно с удаленного хранилища CVS.
CVSup может делать это гораздо более
эффективно, однако анонимным CVS легче
пользоваться.CTMCTM, с другой стороны, не сравнивает
последовательно исходные тексты, имеющиеся у вас, с теми, что
находятся в главном архиве и вообще ни коим образом не касается наших
серверов. Вместо этого несколько раз в день на главной машине CTM
запускается скрипт, находящий изменения в файлах с момента
своего предыдущего запуска; все замеченные изменения сжимаются,
помечаются последовательным номером и кодируются для передачи по
электронной почте (в форме печатаемых символов ASCII).
После получения эти дельта-файлы CTM могут быть
переданы утилите &man.ctm.rmail.1;, которая осуществит автоматическое
декодирование, проверку и применение изменений к пользовательской
копии исходных текстов. Этот процесс гораздо более эффективен, чем
CVSup, и требует меньше ресурсов нашего
сервера, так как он сделан по модели push, а не
pull.Несомненно, есть и минусы. Если вы случайно уничтожили
часть вашего архива, то CVSup обнаружит
и загрузит поврежденную часть. CTM этого
делать не будет, и если вы уничтожили какую-то часть вашего дерева
исходных текстов (и у вас нет архивной копии), то вам нужно будет
начать с самого начала (с последнего базового
дельта-файла), перестроив всё с помощью
CTM, или, используя анонимный
CVS, просто удалить повреждённую часть и
пересинхронизироваться.
- Использование make world
+ Пересборка world
- make world
+ Пересборка worldПосле того, как вы синхронизировали ваше локальное дерево
исходных текстов с некоторой версией &os;
(&os.stable;, &os.current; и так далее),
то можете использовать эти исходные тексты для перестроения
системы.Создайте резервную копиюНевозможно переоценить важность создания резервной
копии вашей системы до того, как вы будете
это делать. Хотя перестроение системы (пока вы следуете этим
инструкциям) является простой задачей, вы всегда можете допустить
ошибку, или ошибка может оказаться в исходных текстах, что может
привести к тому, что система перестанет загружаться.Обязательно сделайте резервную копию. И держите под рукой
- аварийную (fixit) дискету. Может быть, вам никогда не приходилось ими
+ аварийную (fixit) дискету или загрузочный компакт диск. Может быть,
+ вам никогда не приходилось ими
пользоваться, но, постучав по дереву, всегда лучше подготовиться, чем
потом сожалеть.Подпишитесь на соответствующий список рассылкисписок рассылкиВетки &os.stable; и &os.current; кода по природе своей являются
изменяющимися. В разработке &os; участвуют
люди, и время от времени случаются ошибки.Иногда эти ошибки достаточно безобидны и приводят к выводу
нового диагностического сообщения. Бывает, что изменение оказывается
катастрофическим, и система не может загрузиться или разрушаются
файловые системы (или что-нибудь ещё хуже).Если возникают подобные проблемы, в соответствующем списке
рассылки публикуется сообщение heads up, в котором
описывается природа проблемы и затрагиваемые системы. Когда проблема
решается, публикуется сообщение all clear.Если вы пытаетесь отслеживать &os.stable; или &os.current; и не
читаете &a.stable; или &a.current; соответственно, то
вы напрашиваетесь на неприятности.
+
+ Не используйте make world
+
+ Множество старой документации рекомендует использование
+ make world. При этом пропускаются многие
+ важные шаги, и использование этой команды возможно лишь в том
+ случае, если вы точно знаете, что делаете. Почти во всех
+ обстоятельствах make world это неправильный
+ способ, вместо него необходимо использовать описанную здесь
+ процедуру.
+
+
Канонический способ обновления вашей системыДля обновления вашей системы вы должны воспользоваться следующей
процедурой:&prompt.root; make buildworld
&prompt.root; make buildkernel
&prompt.root; make installkernel
&prompt.root; rebootВы должны загрузиться в однопользовательский режим (например, по
команде boot -s из приглашения загрузчика). Затем
выполните:&prompt.root; mergemaster -p
&prompt.root; make installworld
&prompt.root; mergemaster
&prompt.root; rebootВы должны загрузиться в однопользовательский режим (например, по
команде boot -s из приглашения загрузчика). Затем
выполните:&prompt.root; mergemaster -p
&prompt.root; make installworld
&prompt.root; mergemaster
&prompt.root; rebootПрочтите более полное описаниеОписанная выше последовательность является только краткой
выжимкой для того, чтобы помочь вам начать. Вы должны всё же
прочесть последующие разделы для полного понимания каждого шага,
особенно если собираетесь использовать собственную конфигурацию
ядра.Прочтите /usr/src/UPDATINGПеред тем, как делать что-либо, прочтите
/usr/src/UPDATING (или соответствующий файл
в вашей копии исходных текстов). В этом файле
содержится важная информация о проблемах, с которыми вы можете
столкнуться, или указан порядок, в котором вы должны запускать
определенные команды. Если в файле UPDATING
написано нечто, противоречащее тому, что вы здесь читаете, то
нужно следовать указаниям в UPDATING.Чтение UPDATING не заменит подписки на
соответствующий список рассылки, как это и описано выше. Эти два
условия являются дополняющими, а не взаимоисключающими друг
друга.Проверьте содержимое /etc/make.confmake.confПросмотрите файлы /usr/share/examples/etc/make.conf
(/etc/defaults/make.conf в &os; 4.X) и
/etc/make.conf. Первый содержит некоторые
предопределенные по умолчанию значения – большинство из них
закомментировано. Чтобы воспользоваться ими при перестроении системы
из исходных текстов, добавьте их в файл
/etc/make.conf. Имейте в виду, что все,
добавляемое вами в /etc/make.conf, используется
также каждый раз при запуске команды make, так что
полезно задать здесь значения, подходящие вашей системе.Вероятно стоит скопировать строки
CFLAGS и NOPROFILE,
расположенные в
/usr/share/examples/etc/make.conf (или
/etc/defaults/make.conf в &os; 4.X), в файл
/etc/make.conf и раскомментировать их.Посмотрите на другие определения (COPTFLAGS,
NOPORTDOCS и так далее) и решите, нужны ли они
вам.Обновите файлы в каталоге /etcКаталог /etc содержит значительную часть
информации о конфигурации вашей системы, а также скрипты, работающие
в начале работы системы. Некоторые из этих скриптов меняются от
версии к версии &os;.Некоторые конфигурационные файлы также используются в ежедневной
работе системы. В частности, файл
/etc/group.
- Случалось, что установочная часть make world
+ Случалось, что установочная часть make installworld
ожидала существования определённых имен пользователей или групп. При
обновлении существует вероятность, что эти пользователи или группы не
- существуют. Это вызывает проблемы при обновлении.
+ существуют. Это вызывает проблемы при обновлении. В некоторых
+ случаях make buildworld проверяет наличие этих
+ пользователей или групп.Свежим примером этого является добавление пользователя
smmsp. Пользователи столкнулись с прерыванием
процесса установки, когда &man.mtree.8; пыталась
создать /var/spool/clientmqueue.Выходом является просмотр файла
/usr/src/etc/group и сравнение списка групп в
нем с вашим собственным. Если в новом файле есть группы,
отсутствующие в вашем, то скопируйте их. Таким же образом вы должны
переименовывать все группы в /etc/group, которые
имеют тот же самый GID, но другое название в
/usr/src/etc/group.Начиная с 4.6-RELEASE, вы можете запустить &man.mergemaster.8; в
режиме, предваряющем построение системы, задаваемым опцией
. Она будет сравнивать только те файлы, которые
необходимы для успешного выполнения целей
buildworld или
installworld. Если ваша старая версия
утилиты mergemaster не поддерживает опцию
, воспользуйтесь новой версией из дерева исходных
текстов при первом запуске:&prompt.root; cd /usr/src/usr.sbin/mergemaster
&prompt.root; ./mergemaster.sh -pЕсли вы параноик, можете поискать файлы, владельцем которых
является та группа, которую вы переименовываете или удаляете:&prompt.root; find / -group GID -printвыдаст список всех файлов, владельцем которых является группа
GID (задаваемая именем или
численным значением ID).Перейдите в однопользовательский режимоднопользовательский режимВам может понадобиться откомпилировать систему в
однопользовательском режиме. Кроме обычного выигрыша в
скорости процесса, переустановка системы затрагивает много важных
системных файлов, все стандартные выполнимые файлы системы,
библиотеки, include-файлы и так далее. Изменение их на работающей
системе (в частности, в которой активно работают пользователи) может
привести к неприятностям.многопользовательский режимДругим способом является компиляция системы в многопользовательском
режиме с последующим переходом в однопользовательский режим для
выполнения установки. Если вы хотите поступить именно так, просто
следуйте инструкциям до момента окончания построения. Вы можете
отложить переход в однопользовательский режим до завершения целей
installkernel или
installworld.Как администратор, вы можете выполнить:&prompt.root; shutdown nowна работающей системе, что переведет ее в однопользовательский
режим.Либо вы можете выполнить перезагрузку и в приглашении загрузчика
задать флаг . После этого система загрузится в
однопользовательском режиме. В приглашении командного процессора вы
должны запустить:&prompt.root; fsck -p
&prompt.root; mount -u /
&prompt.root; mount -a -t ufs
&prompt.root; swapon -aЭти команды выполняют проверку файловых систем, повторно монтируют
/ в режиме чтения/записи, монтируют все
остальные файловые системы UFS, перечисленные в файле
/etc/fstab и включат подкачку.Если часы в вашей CMOS настроены на местное время, а не на GMT
(это имеет место, если команда &man.date.1; выдаёт
неправильные время и зону), то вам может понадобиться запустить
следующую команду:&prompt.root; adjkerntz -iЭто обеспечит корректную настройку местного часового пояса
— без этого впоследствии вы можете столкнуться с некоторыми
проблемами.Удалите /usr/objПри перестроении частей системы они помещаются в каталоги,
которые (по умолчанию) находятся в /usr/obj.
Структура повторяет структуру /usr/src.
- Вы можете ускорить выполнение процесса make world
+ Вы можете ускорить выполнение процесса make buildworld
и, возможно, избавить себя от некоторой головной боли, связанной с
зависимостями, удалив этот каталог.На некоторых файлах из /usr/obj могут быть
установлены специальные флаги (обратитесь к &man.chflags.1; за
дополнительной информацией), которые сначала должны быть
сняты.
&prompt.root; cd /usr/obj
&prompt.root; chflags -R noschg *
&prompt.root; rm -rf *Перекомпилируйте исходные текстыСохраните выводНеплохо сохранить вывод, получаемый при работе программы
&man.make.1;, в файл. Если что-то вдруг пойдет не так, вы будете
иметь копию сообщения об ошибке и полную картину того, где она
произошла. Хотя это может и не помочь в определении причин
происходящего, это может помочь другим, если вы опишите вашу
проблему в одном из списков рассылки &os;.Проще всего это сделать при помощи команды &man.script.1; с
параметром, в котором указано имя файла, в который нужно сохранить
вывод. Вы должны сделать это непосредственно перед тем, как
перестроить систему, а по окончании процесса набрать
exit.
&prompt.root; script /var/tmp/mw.out
Script started, output file is /var/tmp/mw.out
&prompt.root; make world… compile, compile, compile …
&prompt.root; exit
Script done, …
Если вы делаете это, не сохраняйте
вывод в /tmp. Этот каталог может быть
очищен при следующей перезагрузке. Лучше сохранить его в
/var/tmp (как в предыдущем примере) или в
домашнем каталоге пользователя root.Компиляция базовых компонентов системыВы должны находиться в каталоге
/usr/src:&prompt.root; cd /usr/src(если, конечно, ваш исходный код не находится в другом месте, в
случае чего вам нужно перейти в соответствующий каталог).makeДля полного перестроения системы используется
команда &man.make.1;. Эта команда читает инструкции из файла
Makefile, описывающего, как должны быть
перестроены программы, которые составляют систему &os;, в каком
порядке они должны быть построены и так далее.Общий формат командной строки, которую вы будет набирать,
таков:&prompt.root; make -x -DVARIABLEtargetВ этом примере
является параметром, который вы передаете в &man.make.1;.
Обратитесь к справочной странице программы &man.make.1;, которая
содержит список возможных параметров.
передает переменную в Makefile. Поведение
Makefile определяется этими переменными. Это
те же самые переменные, которые задаются в
/etc/make.conf, и это — еще один способ
их задания.&prompt.root; make -DNOPROFILE=true targetявляется другим способом указания того, что библиотеки для
профилирования строить не нужно, и соответствует строкеNOPROFILE= true # Обход построения библиотек для профилированияв файле /etc/make.conf.target указывает программе
&man.make.1; на то, что вы хотите сделать. Каждый файл
Makefile определяет некоторое количество
различных целей, и ваш выбор цели определяет то, что
будет делаться.Некоторые цели, перечисленные в файле
Makefile, не предназначены для вызова. Просто
они используются в процессе построения для разбиения его на этапы.В большинстве случаев вам не нужно передавать никаких
параметров в &man.make.1;, так что ваша команда будет выглядеть
примерно так:
&prompt.root; make targetНачиная с версии &os; 2.2.5 (на самом деле впервые это было
сделано в ветке &os.current;, а затем адаптировано в &os.stable;
где-то между 2.2.2 и 2.2.5) цель world была
разделена на две: buildworld и
- installworld.
+ installworld. Начиная с версии
+ &os; 5.3, world изменена так, что она
+ более не работает, поскольку для большинства пользователей ее
+ выполнение представляет опасность.
Как указывают на это названия,
buildworld строит полностью новое дерево
в каталоге /usr/obj, а
installworld устанавливает это дерево на
используемой машине.Это весьма полезно по двум причинам. Во-первых, это позволяет
вам безопасно строить систему, зная, что компоненты вашей рабочей
системы затронуты не будут. Построение
самодостаточно. По этой причине вы можете спокойно
запустить buildworld на машине, работающей в
многопользовательском режиме без опаски получить какие-либо проблемы.
Но всё же рекомендуется запускать цель
installworld в однопользовательском
режиме.Во-вторых, это позволяет вам использовать монтирование по NFS для
обновления многих машин в сети. Если у вас есть три машины,
A, B и C, которые
вы хотите обновить, запустите make buildworld и
make installworld на машине A.
Хосты B и C должны будут
затем смонтировать по NFS каталоги /usr/src
и /usr/obj с машины A, и вы
сможете запустить make installworld для установки
результатов построения на машинах B и
C.Хотя цель world всё ещё имеется в
наличии, вам настоятельно рекомендуется не пользоваться ею.Выполните&prompt.root; make buildworldВ настоящее время имеется возможность задавать команде
make параметр , который
приводит к запуску нескольких одновременно работающих процессов.
Наиболее полезно использовать это на многопроцессорных машинах.
Однако, так как процесс компиляции больше всего требователен к
подсистеме ввода/вывода, а не к производительности процессора, это
можно использовать и на машинах с одним процессором.На типичной машине с одним CPU вы должны запускать:
&prompt.root; make -j4 buildworld&man.make.1; будет иметь до 4 одновременно работающих
процессов. Эмпирические замеры, опубликованные как-то в списке рассылки,
показывают, что в среднем это дает наибольшее увеличение
производительности.Если у вас многопроцессорная машина и вы используете ядро с
настройками для SMP, попробуйте использовать значения между 6 и
10 и посмотрите, как это отразится на скорости работы.Имейте в виду, что это все еще экспериментальная возможность, и
изменения в дереве исходных текстов иногда могут быть не
совместимы с параллельной сборкой. Если
система не может быть построена с использованием этого параметра,
попробуйте еще раз без него перед тем, как сообщать о
проблемах.Время на построение
- make world
+ Пересборка worldзатраченное времяНа время компиляции влияет множество факторов, но на данный
момент &pentium; III частотой 500 МГц и 128 МБ ОЗУ
справляется с построением дерева &os.stable; примерно за 2 часа
без дополнительных хитростей и убыстряющих процесс уловок. Дерево
&os.current; строится несколько дольше.Откомпилируйте и установите новое ядроядрокомпиляцияЧтобы получить полную отдачу от вашей новой системы, вы должны
перекомпилировать ядро. Это практически необходимость, так как
отдельные структуры в памяти могут меняться, и программы типа
&man.ps.1; и &man.top.1; не будут работать, пока версии ядра и
исходных текстов системы не будут совпадать.Самым простым и надежным способом сделать это является компиляция и
установка ядра на основе GENERIC. Хотя в
GENERIC могут оказаться не все необходимые для
работы вашей системы устройства, в нем имеется все необходимое
для перезагрузки вашей системы обратно в однопользовательский режим.
Это является хорошей проверкой на правильность работы новой системы.
После загрузки с ядром GENERIC и проверки
работоспособности системы вы можете построить новое ядро на основе
вашего обычного конфигурационного файла ядра.В современных версиях FreeBSD важно выполнить buildworld перед сборкой
нового ядра.Если вы хотите построить собственное ядро и уже подготовили файл
конфигурации, просто используйте
KERNCONF=MYKERNEL
следующим образом:&prompt.root; cd /usr/src
&prompt.root; make buildkernel KERNCONF=MYKERNEL
&prompt.root; make installkernel KERNCONF=MYKERNELДля FreeBSD 4.2 и более старых версиях вы должны заменять
KERNCONF= на KERNEL=.
4.2-STABLE, сгруженная до 2 февраля 2001 года, не распознаёт
KERNCONF=.Заметьте, что, если вы установили
kern.securelevel в значение, превышающее 1,
и установили флаг noschg или
подобный на бинарный файл ядра, то вы будете вынуждены перейти в
однопользовательский режим для того, чтобы воспользоваться
installkernel. В противном случае вы
должны выполнять эти команды без проблем. Обратитесь к справочным
страницам об &man.init.8; для получения подробной информации о
kern.securelevel и &man.chflags.1; для получения
информации о различных флагах файлов.Если вы производите обновление до версии &os; ниже 4.0, то нужно
использовать старую процедуру построения ядра. Однако
рекомендуется использовать новую версию программы &man.config.8; со
следующей командной строкой.
&prompt.root; /usr/obj/usr/src/usr.sbin/config/configKERNELNAMEПерезагрузитесь в однопользовательский режимоднопользовательский режимДля проверки работоспособности ядра вы должны перезагрузить систему
и перейти в однопользовательский режим. Сделайте это, следуя указаниям
в .Установите новые версии системных программЕсли вы компилировали достаточно свежую версию &os;, в которой
имеется команда make buildworld, то для установки
новых версий программ вы должны теперь выполнить команду
installworld.Запустите&prompt.root; cd /usr/src
&prompt.root; make installworldЕсли при выполнении команды make buildworld вы
задавали значения каких-либо переменных, то при выполнении
make installworld вы должны задать те же самые
переменные. Это не всегда так для остальных параметров; например,
при выполнении installworld никогда не
должен использоваться параметр .Например, если вы выполняли команду:&prompt.root; make -DNOPROFILE buildworldто результат её выполнения должен устанавливаться командой&prompt.root; make -DNOPROFILE installworldВ противном случае будет делаться попытка установить библиотеки
для профилирования, которые не компилировались на этапе выполнения
команды make buildworld.Обновите файлы, не обновленные по команде
- make world
+ make installworldПри перестроении системы не будут обновляться некоторые каталоги
(в частности, /etc, /var и
/usr) с конфигурационными
файлами.Самым простым способом обновить такие файлы является запуск
утилиты &man.mergemaster.8;, хотя можно сделать это и вручную, если вам
так больше нравится. Вне зависимости от выбранного вами способа
обязательно сделайте резервную копию каталога /etc
на случай, если произойдёт что-то непредвиденное.TomRhodesТекст предоставил mergemastermergemasterУтилита &man.mergemaster.8; является скриптом для оболочки Боурна,
которая поможет вам в определении разницы между вашими
конфигурационными файлами в каталоге /etc и
конфигурационными файлами из дерева исходных текстов
/usr/src/etc. Это является рекомендуемым
способом синхронизации системных конфигурационных файлов с теми, что
размещены в дереве исходных текстов.mergemaster была интегрирована в базовый
комплект системы FreeBSD между выпусками 3.3-RELEASE и 3.4-RELEASE,
что означает её наличие во всех системах -STABLE и -CURRENT, начиная с
3.3.Для начала просто наберите mergemaster в
приглашении командной строки и посмотрите, что происходит.
mergemaster построит временное окружение для
пользователя root, начиная от /, а затем
заполнит его различными системными конфигурационными файлами. Эти
файлы затем будут сравниваться с теми, что установлены в вашей
системе. В этот момент файлы, которые имеют отличия, будут выданы в
формате &man.diff.1;, где знак будет означать
добавленные или изменённые строки, а знак будет
означать строки, которые были либо полностью удалены, либо заменены
на новые. Обратитесь к страницам справочной системы по команде
&man.diff.1; для получения более полной информации о синтаксисе
команды &man.diff.1; и формате выдачи отличий в файлах.Затем &man.mergemaster.8; выдаст вам каждый файл, в котором есть
изменения, и в этот момент у вас есть возможность либо удалить новый
файл (который будем считать временным), установить временный файл в
его неизменённом виде, объединить временный файл с установленным на
данный момент, либо просмотреть выдачу &man.diff.1; ещё раз.Выбор удаления временного файла укажет &man.mergemaster.8; на то,
что мы хотим оставить наш текущий файл без изменений и удалить его
новую версию. Делать это не рекомендуется, если только
у вас нет причин вносить изменения в текущий файл. Вы можете
получить помощь в любое время, набрав ? в
приглашении &man.mergemaster.8;. Если пользователь выбирает пропуск
файла, запрос появится снова после того, как будут обработаны все
остальные файлы.Выбор установки немодифицированного временного файла приведёт к
замене текущего файла новым. Для большинства немодифицированных
файлов это является подходящим вариантом.Выбор варианта с объединением файла приведёт к вызову текстового
редактора, содержащего текст обоих файлов. Теперь вы можете
объединить их, просматривая оба файла на экране, и выбирая те части
из обоих, что подходят для окончательного варианта. Когда файлы
сравниваются на экране, то нажатие l выбирает
содержимое слева, а нажатие r выбирает содержимое
справа. В окончательном варианте будет файл, состоящий из обеих
частей, который и будет установлен. Этот вариант используется для
файлов, настройки в которых изменялись пользователем.Выбор повторного просмотра &man.diff.1;-разниц выдаст вам разницы
между файлами, как это делала утилита &man.mergemaster.8; до того,
как запросила вас о выборе.После того, как утилита &man.mergemaster.8; закончит работу с
системными файлами, она выдаст запрос относительно других параметров.
&man.mergemaster.8; может запросить вас относительно перестроения
файла паролей и/или запуска &man.MAKEDEV.8; при использовании FreeBSD
версий, меньших чем 5.0, и завершит запросом на удаление оставшихся
временных файлов.Обновление в ручном режимеОднако если вы хотите произвести обновление вручную, то вы не
можете просто скопировать файлы из /usr/src/etc в
/etc и получить работающую систему. Некоторые
из этих файлов сначала нужно установить. Это нужно
потому, что каталог /usr/src/etcне является копией того, что должен содержать
ваш каталог /etc. Кроме того, есть файлы,
которые должны присутствовать в /etc, но которых
нет в /usr/src/etc.Если вы используете &man.mergemaster.8; (как это рекомендуется),
то вы можете перейти сразу к следующему
разделу.Вручную проще всего сделать это, установив файлы в новый каталог,
а затем пройтись по ним, отмечая разницу.Сделайте резервную копию вашего каталога
/etcХотя, в теории, никаких автоматических действий с этим
каталогом не производится,
всегда лучше чувствовать себя уверенным. Так что скопируйте
имеющийся каталог /etc в какое-нибудь
безопасное место. Запустите что-то вроде:&prompt.root; cp -Rp /etc /etc.old задает выполнение рекурсивного копирования,
а сохраняет даты, владельца файлов и тому
подобное.Вам нужно создать шаблонную структуру каталогов для установки
нового содержимого /etc и других файлов.
Подходящим местом является /var/tmp/root, и в нём
потребуется разместить некоторое количество подкаталогов.&prompt.root; mkdir /var/tmp/root
&prompt.root; cd /usr/src/etc
&prompt.root; make DESTDIR=/var/tmp/root distrib-dirs distributionЭти команды приведут к созданию нужной структуры каталогов и
установке файлов. Множество каталогов, созданных в
/var/tmp/root, будут пустыми и должны быть удалены.
Проще всего сделать это так:&prompt.root; cd /var/tmp/root
&prompt.root; find -d . -type d | xargs rmdir 2>/dev/nullЭти команды удалят все пустые каталоги. (Стандартный поток
диагностических сообщений перенаправляется в
/dev/null для исключения предупреждений о
непустых каталогах.)Теперь /var/tmp/root содержит все файлы,
которые должны быть помещены в соответствующие места в
/. Теперь пройдитесь по каждому их этих файлов
и определите, чем они отличаются от имеющихся у вас файлов.Заметьте, что некоторые из файлов, которые были установлены в
каталог /var/tmp/root, имеют первым символом
.. На момент написания единственными такими файлами
являлись файлы начальных скриптов командных процессоров в
/var/tmp/root/ и
/var/tmp/root/root/, хотя могут быть и другие
(зависит от того, когда вы это читаете). Обязательно пользуйтесь
командой ls -a, чтобы выявить их.Проще всего сделать это путём сравнения двух файлов при помощи
команды &man.diff.1;:&prompt.root; diff /etc/shells /var/tmp/root/etc/shellsЭта команда покажет разницу между вашим файлом
/etc/shells и новым файлом
/var/tmp/root/etc/shells. Используйте это для
определения того, переносить ли сделанные вами изменения или
скопировать поверх вашего старого файла.Называйте новый корневой каталог
(/var/tmp/root) по дате, чтобы вы смогли легко
выявить разницу между версиямиЧастое перестроение системы означает также и частое обновление
/etc, которое может быть несколько
обременительным.Вы можете ускорить этот процесс, сохраняя копию последнего
набора измененных файлов, которые вы перенесли в
/etc. Следующая процедура подаст вам одну
идею о том, как это сделать.Выполните перестроение системы обычным образом. Когда вы
вам потребуется обновить /etc и другие
каталоги, дайте целевому каталогу имя на основе текущей даты.
Если вы делаете это 14 февраля 1998 года, то вы можете сделать
следующее:&prompt.root; mkdir /var/tmp/root-19980214
&prompt.root; cd /usr/src/etc
&prompt.root; make DESTDIR=/var/tmp/root-19980214 \
distrib-dirs distributionПеренесите изменение из этого каталога, как это описано
выше.Не удаляйте каталог
/var/tmp/root-19980214 после окончания
этого процесса.Когда вы загрузите самую последнюю версию исходного кода и
перестроите систему, выполните шаг 1. Это даст вам новый
каталог, который может называться
/var/tmp/root-19980221 (если вы ждете
неделю между обновлениями).Теперь вы можете видеть изменения, которые были сделаны
за прошедшую неделю, выполнив при помощи команды &man.diff.1;
рекурсивное сравнение двух каталогов:&prompt.root; cd /var/tmp
&prompt.root; diff -r root-19980214 root-19980221Как правило, здесь содержится гораздо меньше отличий, чем
между каталогами
/var/tmp/root-19980221/etc и
/etc. Так как отличий меньше, то и легче
перенести эти изменения в ваш каталог
/etc.Теперь вы можете удалить более старый из двух каталогов
/var/tmp/root-*:&prompt.root; rm -rf /var/tmp/root-19980214Повторяйте этот процесс всякий раз, когда вам нужно
перенести изменения в каталог /etc.Для автоматической генерации имён каталогов можно
использовать команду &man.date.1;:&prompt.root; mkdir /var/tmp/root-`date "+%Y%m%d"`Обновите /devDEVFSЕсли вы работаете с FreeBSD 5.0 или более поздними версиями,
то можете спокойно пропустить этот раздел. В этих версиях
&man.devfs.5; используется для выделения файлов устройств в режиме,
прозрачном для пользователя.Если вы используете DEVFS, то этого можно не делать.В большинстве случаев утилита &man.mergemaster.8; обнаружит, что
необходимо обновить файлы устройств, и предложит сделать это
автоматически. Эти указания описывают, как обновить файлы устройств
вручную.Для безопасности этот процесс делается в несколько шагов.Скопируйте /var/tmp/root/dev/MAKEDEV в
/dev:&prompt.root; cp /var/tmp/root/dev/MAKEDEV /devMAKEDEVЕсли вы использовали &man.mergemaster.8; для обновления
/etc, то ваш скрипт
MAKEDEV уже должен быть обновлен, так что
его не нужно проверять (утилитой &man.diff.1;) и копировать
вручную в случае необходимости.Теперь выведите текущее содержимое вашего каталога
/dev. Этот список должен содержать права,
владельцев, старшее и младшее числа каждого файла, но не должен
содержать информацию о времени. Проще всего это сделать,
отрезав при помощи &man.awk.1; часть информации:&prompt.root; cd /dev
&prompt.root; ls -l | awk '{print $1, $2, $3, $4, $5, $6, $NF}' > /var/tmp/dev.outПовторно создайте все файлы устройств:&prompt.root; sh MAKEDEV allСоздайте ещё один список содержимого каталога, на этот раз в
/var/tmp/dev2.out. Теперь просмотрите оба эти
файла и поищите файлы устройств, которые вы забыли создать. Таких
быть не должно, но лишний раз удостовериться не помешает.&prompt.root; diff /var/tmp/dev.out /var/tmp/dev2.outСкорее всего, вы заметите разногласия в именовании дисковых
слайсов, что решается такими командами, как:&prompt.root; sh MAKEDEV sd0s1для повторного создания устройств слайсов. Точное название
зависит от вашей системы и может отличаться от приведённого.Обновите /standЭтот шаг описан только для полноты. Он может быть
безболезненно опущен. Если вы работаете с FreeBSD 5.2 или
более поздней версией, то для пользователей каталог
/rescue автоматически обновляется до текущего
состояния, а статически компилируемые выполнимые файлы во время
выполнения команды make installworld, поэтому
каталог /stand обновлять не нужно.В целях полноты обновления вам может потребоваться обновить также
файлы в каталоге /stand. Эти файлы представляют
собой жёсткие ссылки на выполнимый файл
/stand/sysinstall. Этот файл должен быть
статически скомпонован, чтобы его работа не зависела от других
файловых систем (в частности, от наличия смонтированной файловой
системы /usr).&prompt.root; cd /usr/src/release/sysinstall
&prompt.root; make all installПерезагрузкаТеперь вы сделали всё. После того, как вы проверили, что всё
на месте, можете перегрузить систему. Простая команда
&man.shutdown.8; должна это сделать:&prompt.root; shutdown -r nowЗавершениеТеперь у вас имеется успешно обновлённая система &os;.
Поздравляем!Если что-то работает неправильно, можно с лёгкостью перестроить
конкретную часть системы. Например, если вы случайно удалили файл
/etc/magic в процессе обновления или переноса
/etc, то команда &man.file.1; перестанет работать.
В таком случае это можно исправить вот так:&prompt.root; cd /usr/src/usr.bin/file
&prompt.root; make all installВопросы?Нужно ли полностью перестраивать систему при каждом
изменении?Простого ответа на этот вопрос нет, так как это зависит от
характера изменения. Например, если вы только что выполнили
CVSup, и оказалось, что с момента
последнего его запуска были изменены следующие файлы:src/games/cribbage/instr.csrc/games/sail/pl_main.csrc/release/sysinstall/config.csrc/release/sysinstall/media.csrc/share/mk/bsd.port.mkто перестраивать всю систему незачем. Вы можете просто
перейти в соответствующий подкаталог и выдать команду
make all install, этого будет достаточно.
Однако, если меняется что-то важное, например,
src/lib/libc/stdlib, то вы должны
перестроить всю систему или по крайней мере те ее части, которые
скомпонованы статически.В конце концов, выбор за вами. Может быть вам нравится
перестраивать систему, скажем, каждый вечер, а изменения
скачивать ночью. Или вы можете захотеть перестраивать только
те вещи, которые менялись, но быть уверенным, что отслежены все
изменения.И, конечно же, всё это зависит от того, как часто вы хотите
делать обновление, и отслеживаете ли вы &os.stable; или
&os.current;.Компиляция прерывается с большим количеством ошибок по
сигналу 11 (или с другим номером сигнала). Что
случилось?сигнал 11Как правило, это говорит о проблемах с оборудованием.
(Пере)построение системы является эффективным стресс-тестом для
вашего оборудования и частенько выявляет проблемы с памятью.
Обычно это проявляется в виде неожиданных сбоев компилятора
или получения странных программных сигналов.Явным указателем на это является то, что при перезапуске
процедуры построения она прекращается в различные моменты
времени.В этом случае вы мало что можете сделать, разве что
попробовать заменить комплектующие вашей машины для определения
сбоящей компоненты.Могу ли я удалить каталог /usr/obj
после окончания?Если отвечать коротко, то да.Каталог /usr/obj содержит все
объектные файлы, которые создаются во время фазы компиляции.
- Обычно одним из первых шагов в процессе make world
+ Обычно одним из первых шагов в процессе make buildworld
является удаление этого каталога. В этом случае сохранение
/usr/obj после окончания имеет мало смысла;
вдобавок, он будет занимать большой объём дискового
пространства (на данный момент около 340 МБ).Однако если вы точно знаете, что делаете, то можете заставить
- процедуру make world пропустить этот шаг. Это
+ процедуру make buildworld пропустить этот шаг. Это
позволит последующие построения выполняться гораздо быстрее, так
как большинство исходных текстов не нужно будет
перекомпилировать. Оборотной стороной медали этого подхода
является вероятность появления некоторых проблем с зависимостями,
что может привести к прерыванию построения по странным причинам.
Это частенько вызывает шум в списках рассылки &os;, когда
кто-либо жалуется на прерывание процесса построения, не обращая
внимания на то, что он пытается срезать углы на
повороте.Могут ли быть продолжены прерванные процессы
построения?Это зависит от того, насколько далеко зашел процесс
построения перед тем, как вы обнаружили проблему.В общем случае (и это несложное и
- быстрое правило) процесс make world строит
+ быстрое правило) процесс make buildworld строит
новые копии необходимых инструментальных средств (таких, как
&man.gcc.1; и &man.make.1;) и системные библиотеки. Затем эти
средства и библиотеки устанавливаются. Новые инструментальные
средства и библиотеки затем используются для перестроения
самих себя, и повторно устанавливаются. Система в целом
(теперь включая обычные пользовательские программы, такие,
как &man.ls.1; или &man.grep.1;) теперь перестраивается с
новыми системными файлами.Если вы на последнем шаге, и вы знаете это (потому что
просматривали вывод, который сохраняете), то вы можете
(достаточно безболезненно) выполнить команду:… исправление проблемы …
&prompt.root; cd /usr/src
&prompt.root; make -DNOCLEAN allПри этом результат предыдущего запуска
- make world откатываться не будет.
+ make buildworld откатываться не будет.
Если вы видите сообщение:--------------------------------------------------------------
Building everything..
--------------------------------------------------------------
- в выводе команды make world, то делать так
+ в выводе команды make buildworld, то делать так
достаточно безопасно.Если этого сообщения не было, или вы в этом не уверены, то
всегда лучше обезопасить себя, и начать построение с самого
начала.Как ускорить процесс построения системы?Работайте в однопользовательском режиме.Разместите каталоги /usr/src и
/usr/obj в отдельных файловых
системах, располагающихся на разных дисках. Если это
возможно, то разместите эти диски на разных дисковых
контроллерах.Ещё лучше разместить эти файловые системы на нескольких
дисках при помощи устройства &man.ccd.4; (драйвер
объединённых дисков).Выключите генерацию профилирующего кода (установив
NOPROFILE=true в файле
/etc/make.conf). Вам это скорее
всего никогда не понадобится.Также в /etc/make.conf установите
значение CFLAGS во что-то типа . Оптимизация выполняется
гораздо медленнее, а разница между и
обычно несущественна.
позволяет компилятору использовать для
связи вместо временных файлов программные каналы, что
уменьшает обращение к диску (за счет оперативной
памяти).Передайте утилите &man.make.1; параметр
для запуска
параллельно нескольких процессов. Обычно это помогает вне
зависимости от того, сколько процессоров установлено в вашей
машине.Файловая система, на которой располагается каталог
/usr/src, может быть смонтирована (или
перемонтирована) с опцией . При этом
запись на диск информации о времени последнего доступа к
файлам будет отключена. Скорее всего, вам эта информация и
не нужна.&prompt.root; mount -u -o noatime /usr/srcВ примере предполагается, что
/usr/src располагается на
собственной файловой системе. Если это не так (то
есть он является частью, скажем,
/usr), то вам нужно использовать
точку монтирования той файловой системы, а не
/usr/src.Файловая система, на которой располагается
/usr/obj, может быть смонтирована (или
перемонтирована) с параметром . Это
приведёт к тому, что операции записи на диск будут
выполняться асинхронно. Другими словами, запись будет
завершаться немедленно, но данные записываться на диск
несколькими секундами позже. Это позволит объединять
операции записи и приведёт к значительному приросту
производительности.Имейте в виду, что эта опция делает вашу файловую
систему менее устойчивой. С этой опцией имеется больше
шансов, что при перезагрузке машины после неожиданного
сбоя при пропадании напряжения файловая система окажется
в невосстановимом состоянии.Если каталог /usr/obj — это все,
что есть в этой файловой системе, то это не проблема.
Если на той же самой файловой системе имеются какие-то
важные данные, то проверьте давность ваших резервных
копий перед включением этой опции.&prompt.root; mount -u -o async /usr/objКак и раньше, если каталог
/usr/obj располагается не на
собственной файловой системе, то в примере замените его
на имя соответствующей точки монтирования.Что мне делать, если что-то пошло не так?Скрупулезно проверьте, чтобы в вашем окружении не было
мешающих остатков от предыдущих построений. Это достаточно
просто.&prompt.root; chflags -R noschg /usr/obj/usr
&prompt.root; rm -rf /usr/obj/usr
&prompt.root; cd /usr/src
&prompt.root; make cleandir
&prompt.root; make cleandirДа, команду make cleandir действительно
нужно выполнять дважды.После этого повторите весь процесс снова, начиная с
make buildworld.Если у вас все еще есть проблемы, пришлите текст ошибки и
выдачу команды uname -a на адрес списка рассылки
&a.questions.name;. Будьте готовы ответить на другие вопросы о
конфигурации вашей системы!MikeMeyerТекст предоставил Отслеживание исходных текстов для нескольких машинNFSinstalling multiple machinesЕсли у вас множество машин, для которых вы хотите отслеживать одно
и то же дерево исходных текстов, то загрузка кода и перестроение системы
полностью выглядит как ненужная трата ресурсов: дискового пространства,
пропускной способности сети и процессорного времени. Так оно и есть, и
решением является выделение одной машины, которая выполняет основной
объём работы, в то время как остальные используют результаты работы
посредством NFS. В этом разделе описывается именно этот метод.ПодготовкаПервым делом определите набор машин, на которых выполняется один
и тот же набор бинарных программ, и мы будем называть его
набором для построения. Каждая машина может иметь
собственное уникальное ядро, но они будут работать с одними и теми же
программами пользователя. Из этого набора выберите машину, которая
будет являться машиной для построения. Она станет
машиной, на которой будут строиться ядро и всё окружение. В идеальном
- случае с достаточно незагруженным CPU для выполнения команды
- make world. Вам также потребуется выбрать машину,
+ случае с достаточно незагруженным CPU для выполнения команд
+ make buildworld и make
+ buildkernel. Вам также потребуется выбрать машину,
которая будет тестовой для проверки обновлений
программного обеспечения прежде, чем оно будет запущено в промышленную
эксплуатацию. Это должна быть машина, которая
может быть в нерабочем состоянии достаточно долго. Это может быть
машина для построения, но не обязательно.Все машины в этом наборе для построения должны монтировать каталоги
/usr/obj и
/usr/src с одной и той же машины и в одну и ту же
точку монтирования. В идеальном случае они располагаются на разных
дисках машины построения, но они могут также монтироваться по NFS на
этой машине. Если у вас имеется несколько наборов для построения, то
каталог /usr/src должен быть на машине построения,
а по NFS он должен быть смонтирован на остальных.Наконец, удостоверьтесь в том, что файл
/etc/make.conf на всех машинах набора для
построения соответствует машине построения. Это означает, что машина
построения должна строить все части основного системного набора,
которые будут устанавливаться на каждой машине из набора для
построения. Кроме того, у каждой машины построения должно быть задано
имя ядра посредством переменной KERNCONF в файле
/etc/make.conf, а машина построения должна
перечислить их все в переменной KERNCONF, причём
первым должно быть имя её собственного ядра. Машина построения должна
хранить конфигурационные файлы ядра каждой машины в каталоге
/usr/src/sys/arch/conf,
если на ней будут строиться соответствующие ядра..Основные системные компонентыТеперь, когда всё это сделано, вы готовы к построению. Постройте
ядро и всё окружение так, как это описано в на машине построения, но ничего не
устанавливайте. После того, как процесс построения завершится,
перейдите к тестовой машине и установите только что построенное ядро.
Если эта машина монтирует каталоги /usr/src и
/usr/obj посредством NFS, то при перезагрузке в
однопользовательский режим вам потребуется задействовать сеть и
смонтировать их. Самым простым способом сделать это является переход
во многопользовательский режим и запуск команды shutdown
now для перехода в однопользовательский режим. После этого
вы можете установить новое ядро и всё окружение, а затем выполнить
команду mergemaster обычным образом. После
выполнения этих действий перезагрузитесь для возвращения к обычному
режиму работы во многопользовательском режиме с этой машиной.После того, как вы убедитесь в нормальной работе всего на тестовой
машине, проведите ту же самую процедуру для установки нового
программного обеспечения на каждой из оставшихся машин из набора для
построения.ПортыТе же самые идеи могут использоваться и для дерева портов. Первым
критическим шагом является монтирование /usr/ports
с одной и той же машины на всех компьютерах в наборе для построения.
Затем вы можете корректно настроить /etc/make.conf
для использования общего каталога с дистрибутивными файлами. Вы должны
задать переменную DISTDIR так, чтобы она указывала
на общедоступный каталог, доступный тому пользователю, который
отображается в пользователя root для ваших точек
монтирования NFS. Каждая машина
должна задавать WRKDIRPREFIX так, чтобы она
указывала на локальный каталог построения. Наконец, если вы
собираетесь строить и распространять пакеты, то должны задать
переменную PACKAGES так, чтобы она указывала на
каталог, соответствующий DISTDIR.
diff --git a/ru_RU.KOI8-R/books/handbook/eresources/chapter.sgml b/ru_RU.KOI8-R/books/handbook/eresources/chapter.sgml
index 83fc634889..bcd102f421 100644
--- a/ru_RU.KOI8-R/books/handbook/eresources/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/eresources/chapter.sgml
@@ -1,1656 +1,1667 @@
ДенисПеплинПеревод на русский язык: Ресурсы в интернетВысокая скорость прогресса 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.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.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.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.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/introduction/chapter.sgml b/ru_RU.KOI8-R/books/handbook/introduction/chapter.sgml
index 48392ce6be..d77b600f3d 100644
--- a/ru_RU.KOI8-R/books/handbook/introduction/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/introduction/chapter.sgml
@@ -1,969 +1,969 @@
JimMockИсправил, реорганизовал и частично
переписал АлексейЗелькинПеревод на русский язык: ДенисПеплинВведениеКраткий обзорМы благодарим вас за интерес к FreeBSD! Следующая глава
расскажет о некоторых аспектах проекта FreeBSD, таких как история,
цели, модель разработки, и прочее.Из этой главы вы узнаете:Какое отношение имеет FreeBSD к другим операционным
системам.Историю проекта FreeBSD.Цели проекта FreeBSD.Основы модели разработки FreeBSD с открытыми исходными
текстами.И конечно, откуда появилось имя FreeBSD.Добро пожаловать во FreeBSD!4.4BSD-LiteFreeBSD это основанная на 4.4BSD-Lite операционная система для
компьютеров Intel (x86 и &itanium;), AMD64,
Alpha и Sun &ultrasparc;. Ведется
работа по портированию и на другие архитектуры. Вы можете также
прочесть о истории FreeBSD,
или о текущем релизе. Если вы
заинтересованы в помощи проекту (кодом, аппаратным обеспечением,
деньгами), прочтите статью Помощь
+ url="&url.articles.contributing;/index.html">Помощь
FreeBSD.Что может FreeBSD?FreeBSD имеет заслуживающие внимания особенности. Некоторые из
них:приоритетная многозадачностьПриоритетная многозадачность с
динамическим регулированием приоритетов плавно и правильно
приспособится и справедливо распределит ресурсы компьютера между
приложениями и пользователями, даже при тяжелейших нагрузках.
многопользовательская доступностьМногопользовательская доступность которая
позволяет множеству людей использовать FreeBSD совместно для ряда
задач. Это значит, например, что системная периферия, такая как
принтеры и ленточные устройства, правильно распределена между
пользователями в системе или сети, и что лимиты каждого ресурса
могут быть установлены пользователям или группам пользователей,
защищая критические системные ресурсы от перегрузок.TCP/IP стекМощный TCP/IP стек с поддержкой
промышленных стандартов, таких как SLIP, PPP, NFS, DHCP и NIS.
Это говорит о том, что FreeBSD может легко функционировать
с другими системами предприятия, предоставляя жизненно важные
функции, такие как NFS (удалённый доступ к файлам) и услуги
электронной почты или представить вашу организацию в Internet с сервисами
WWW, FTP, маршрутизации и брандмауэра (сетевая безопасность).
защита памятиЗащита памяти гарантирует, что
приложения (или пользователи) не смогут чинить препятствия
друг другу. Фатальная ошибка в выполнении одного приложения
не скажется на работоспособности всей системы.FreeBSD 32-х битная операционная система
(64 бита на Alpha, &itanium;, AMD64, и
&ultrasparc;) и была создана
именно такой.X Window SystemXFree86Промышленный стандарт X Window System
(X11R6) предоставляет графический интерфейс пользователя (GUI) для
большинства VGA карт и мониторов и поставляется с полными исходными
текстами.двоичная совместимостьLinuxдвоичная совместимостьSCOдвоичная совместимостьSVR4двоичная совместимостьBSD/OSдвоичная совместимостьNetBSDДвоичная совместимость с большинством
программ, созданных для Linux, SCO, SVR4, BSDI и NetBSD.Тысячи готовых к использованию
приложений доступны из FreeBSD коллекций
портов и пакетов.
Зачем искать что-то в сети, когда вы можете найти
всё прямо здесь?Тысячи других
легко-адаптируемых приложений доступны в
Internet. FreeBSD в исходных текстах совместима с большинством
популярных коммерческих &unix; систем и, таким образом, большинство
приложений требуют несколько достаточно мелких (если требуют),
изменений для сборки.виртуальная памятьВиртуальная память с поддержкой
сброса неиспользуемых страниц по требованию и
объединенные VM/буферный кэш спроектированы
так, чтобы максимально эффективно удовлетворить приложения с
огромными аппетитами к памяти и, в то же время, сохранить
интерактивность остальных пользователей.симметричная многопроцессорность (SMP)Поддержка симметричной многопроцессорности (SMP) для машин с
несколькими процессорами.компиляторыCкомпиляторыC++компиляторыFORTRANПолный комплект инструментов для разработчика:
C, C++,
Fortran и Perl.
Множество дополнительных языков для прочих исследований
и разработки также доступны из коллекций портов и пакетов.исходный текстИсходные тексты всей системы
означают, что вы имеете великолепную возможность контролировать
ваше окружение. Зачем выбирать закрытые решения и уповать на милость
производителя, когда вы можете иметь по-настоящему открытую
систему?Обширная online
документация.И многое-многое другое!4.4BSD-LiteComputer Systems Research Group (CSRG)U.C. BerkeleyFreeBSD основана на 4.4BSD-Lite от Computer
Systems Research Group (CSRG) Калифорнийского Университета, Беркли,
и имеет в себе характерные черты модели развития BSD-систем.
В дополнении к прекрасной работе предоставленной
CSRG, Проект FreeBSD тратит многие тысячи часов для
тонкой настройки системы для максимальной производительности и надёжности
в условиях максимально приближенным к боевым.
Когда большинство коммерческих гигантов только пытаются достичь такого
уровня возможностей, производительности и надежности операционных
систем для PC, FreeBSD может предложить все это прямо
сейчас!Применение FreeBSD в действительности ограничено только вашими
фантазиями. От разработки программного обеспечения до автоматизации
производства, от контроля за качеством товара до
коррекции азимутов удалённых спутниковых антенн; эти задачи можно
решить с помощью коммерческих &unix; систем, но скорее всего они
решаемы и с помощью FreeBSD! FreeBSD столь же многогранно
полезна, как и буквально тысячи высококачественных приложений разработанных
исследовательскими центрами и университетами во всём мире, доступные
за минимальную цену или даже бесплатно. Коммерческие приложения также доступны
и появляются ежедневно в больших количествах.Исходя из того, что исходные тексты FreeBSD всегда доступны,
система может быть оптимизирована в почти невероятной степени
для специальных приложений или проектов, а это, в большинстве
своём, невозможно при использовании операционных систем от большинства
коммерческих производителей. Вот несколько примеров того, как люди
используют FreeBSD:Internet сервисы: мощнейший TCP/IP
стек делает FreeBSD идеальной платформой для большинства
Internet приложений таких как:FTP серверыFTP серверыweb серверыWorld Wide Web серверы (как стандартные, так и безопасные
[SSL])фильтрация пакетовIP маскарадингСерверы фильтрации пакетов и шлюзы NAT
(IP маскарадинг)электронная почтаСерверы электронной почтыUSENETСерверы новостей USENET и BBSи многое другое...Вы можете начать своё знакомство с FreeBSD, используя недорогую
машину класса 386 PC, а впоследствии увеличить её мощь до сервера масштаба
предприятия с четырьмя процессорами Xeon и RAID контроллером.Образование: Вы студент и ваше
образование связано с компьютерами или другими инженерными
расчётами? Нет лучшего пути начать изучение операционных
систем, архитектуры компьютера и работы в сети, чем покорить
вершины FreeBSD. Количество доступных CAD, математических
и графических пакетов также делают её чрезвычайно полезной
для выполнения другой не менее важной
работы.Исследования: С исходными текстами,
которые доступны для всей системы, FreeBSD это превосходная платформа
как для исследования операционных систем, так и исследования
других областей компьютерных наук. Свободная природа FreeBSD
предоставляет возможность удалённым группам сотрудничать, обмениваться
идеями и совместными разработками, не беспокоясь
о наличии специальных лицензий или ограничений,
которые могут обсуждаться в открытых форумах.маршрутизаторDNS серверРабота в сети: Нужен новый маршрутизатор?
Сервер имён (DNS)? Брандмауэр, защищающий от проникновения
извне в вашу сеть? FreeBSD может превратить давно списанный и
пылящийся в углу 386й или 486й PC в мощный маршрутизатор
с возможностью фильтрации пакетов.X Window SystemXFree86X Window SystemAccelerated-XРабочая станция X Window: FreeBSD прекрасный
выбор, если вам нужен недорогой X-терминал. Можно использовать
свободно распространяемый &xfree86; сервер или один из
коммерческих серверов, поставляемых Xi Graphics. В отличии от
X терминала, на FreeBSD можно запускать множество приложений
локально, если требуется, таким образом перенеся часть нагрузки
с центрального сервера. FreeBSD может быть загружена на бездисковой
станции, что делает рабочую станцию более дешёвой и
простой в администрировании.GNU набор для разработкиРазработка программного обеспечения: Базовая
поставка FreeBSD распространяется с полным набором инструментов для
разработки, включая знаменитые компилятор GNU C/C++ и
отладчик.FreeBSD доступна как в исходных текстах, так и в бинарном виде
на CDROM, DVD и через анонимный доступ к FTP. Смотрите
для уточнений.Кто использует FreeBSD?ПользователиКрупные сайты, работающие под FreeBSDFreeBSD используется в качестве платформы на некоторых крупнейших
сайтах в интернет, включая:Yahoo!Yahoo!ApacheApacheBlue Mountain ArtsBlue Mountain
ArtsPair NetworksPair
NetworksSony JapanSony
JapanNetcraftNetcraftWeathernewsWeathernewsSupervaluSupervaluTELEHOUSE AmericaTELEHOUSE
AmericaSophos Anti-VirusSophos
Anti-VirusJMA WiredJMA Wiredи на многих других.О Проекте FreeBSDВ следующей части рассказывается о том, что из себя представляет проект,
включая краткую историю, цели проекта и модель разработки
проекта.JordanHubbardПредоставил Краткая история FreeBSD386BSD PatchkitHubbard, JordanWilliams, NateGrimes, RodПроект FreeBSDисторияПроект FreeBSD возник в первой половине 1993 года,
частично как результат развития Неофициального комплекта
исправлений к 386BSD (patchkit) , последними 3-мя координаторами
этого проекта: Nate Williams, Rod Grimes и мною.386BSDНашей главной задачей было привести промежуточный
снэпшот 386BSD в порядок, исправив множество проблем, которые
механизм patchkit не мог решить. Некоторое из вас возможно помнят
раннее название этого проекта: 386BSD 0.5 или
386BSD Interim.Jolitz, Bill386BSD была операционной системой Била Джоилца, который
на тот момент находился строго говоря, в состоянии полного
пренебрежения к ней. Так как patchkit разрастался, его
поддержание становилось более неудобным день от дня, мы
пришли к единодушному соглашению что что-то нужно делать
и решили помочь Биллу путем предоставления промежуточных
очистных снэпшотов. Эти планы были грубо
оборваны, когда Билл внезапно решил прекратить поддержку
проекта без всяких ясных комментариев, что должно быть
сделано.Greenman, DavidWalnut Creek CDROMНам потребовалось немного времени, чтобы прийти к решению
продолжать следовать той же цели, даже без поддержки Билла,
и мы приняли имя FreeBSD приобретенное Дэвидом
Гринмэном. Наши начальные цели были определены после консультаций
с пользователями существовавшей системы, и как только стало
понятно, что проект на пути к тому, чтобы стать реальностью, я
связался с Walnut Creek CDROM с идеями о путях последующего
улучшения каналов распространения FreeBSD для множества
пользователей без доступа к Internet. Walnut Creek CDROM не только
поддержал идею распространения FreeBSD на CD, но также пошел
далеко вперед и предоставил проекту компьютер для работы
и быстрый доступ к Internet. Без почти беспрецедентной веры
Walnut Creek CDROM в этот в то время полностью неизвестный проект,
вряд ли FreeBSD зашел бы так далеко и так быстро, как сегодня.4.3BSD-LiteNet/2U.C. Berkeley386BSDFree Software FoundationПервым дистрибутивом, распространяемым как на CDROM, так и в сети,
стал FreeBSD 1.0, выпущенный в декабре 1993 года. Эта версия была
выполнена на основе ленты 4.3BSD-Lite (Net/2)
из Калифорнийского Университета в Беркли, с многочисленными
добавлениями из проекта 386BSD и Фонда Свободного Программного
Обеспечения. Это был довольно внушительный успех для
первого предложения, и мы закрепили его с выходом FreeBSD
1.1 RELEASE в мае 1994 года.NovellU.C. BerkeleyNet/2AT&TВ это же время, на горизонте сгустились тучи в связи с назревающим
скандалом между Novell и Калифорнийским Университетом, Беркли.
Это был вяло-текущий судебный процесс о легальности версии
Net/2 из Беркли. Обстоятельства тяжбы с Калифорнийским Университетом
заключались в том, что большие куски Net/2 были загромождены
кодом, права на который принадлежат Novell, которая в свою очередь,
получила их (права на код) ранее от AT&T. Чтоб вернуть
благословение Novell, Беркли выпустил версию
4.4BSD-Lite, которая
была объявлена полностью свободной и
всем пользователям Net/2 было рекомендовано переключится на ее
использование. Это также касалось FreeBSD, и проекту было дано
время до конца Июля 1994 года для прекращения распространения его
продукта базирующегося на Net/2. На этих условиях проекту было
разрешено выпустить последний релиз до окончания срока, это
был FreeBSD 1.1.5.1.Тогда FreeBSD приступил к сложной задаче буквально
полному изобретению себя из абсолютно новой и довольно
неполной системы 4.4BSD-Lite. Lite был
в прямом смысле light (легким) потому, что CSRG Berkeley удалил
большие куски кода, необходимого для создания реально
загружающейся системы (по причине различных лицензионных
требований), и фактически порт 4.4BSD для платформы Intel
был очень неполным. Проекту потребовалось время почти до
ноября 1994 года для того, чтобы выполнить этот переход и
на этом этапе FreeBSD 2.0 была опубликована в сети и
на CDROM (в конце декабря). Несмотря на множество острых
углов в этой версии, она пользовалась значительным успехом
и была продолжена более устойчивой и простой в установке
FreeBSD 2.0.5, выпущенной в июне 1995 года.Мы выпустили FreeBSD 2.1.5 в августе 1996, и она стала достаточно
популярной среди большого количества ISP и коммерческих
производителей, чтобы выпустить еще один релиз из ветви 2.1-STABLE. Это была
FreeBSD 2.1.7.1, вышедшая в феврале 1997 и завершившая главную
ветвь разработки 2.1-STABLE. Сейчас в режиме поддержки, в эту ветвь
(RELENG_2_1_0) вносятся только расширения безопасности и другие
критически важные исправления.FreeBSD 2.2 была ответвлена от основной линии разработки
(-CURRENT) в ноябре 1996 как ветвь RELENG_2_2,
а первая полная версия (2.2.1) появилась в апреле 1997.
Последующие версии ветви 2.2 появлялись летом и в конце 97 года,
а последняя версия (2.2.8) вышла в ноябре 1998.
Первая официальная версия 3.0 была подготовлена к выходу в
октябре 1998, завершив развитие ветви 2.2 Третье ветвление произошло 20 января 1999 года, появились
ветви 4.0-CURRENT и 3.X-STABLE. Из ветви 3.X-STABLE были получены: 3.1 -
15 февраля 1999, 3.2 - 15 мая 1999, 3.3 - 16 сентября 1999,
3.4 - 20 декабря 1999, 3.5 - 24 июня 2000, за которым последовал
через несколько дней немного обновленный 3.5.1, который содержал
несколько исправлений в области безопасности Kerberos. Это был последний
релиз из ветви 3.X.Последнее на данный момент ветвление было выполнено 13 марта 2000
года, в результате чего появилась ветвь 4.X-STABLE, в настоящее время
считающейся текущей -stable ветвью. Из этой ветви
было выпущено несколько релизов: 4.0-RELEASE был представлен
в марте 2000 года, самый свежий &rel2.current;-RELEASE был выпущен
&rel2.current.date;. Из ветви 4.X-stable (RELENG_4) будут выпущены
и следующие релизы.Долгожданный 5.0-RELEASE был анонсирован 19 января 2003 года.
Он стал кульминацией приблизительно трех лет работы, с этого
релиза начался курс FreeBSD на расширенную поддержку
мультипроцессорности и потоков в приложениях, была также представлена
поддержка платформ &ultrasparc; и ia64. За этим
релизом последовал релиз 5.1 в июне 2003 года. Помимо множества
новых возможностей, релизы 5.X принесли также существенные улучшения
внутренней архитектуры системы. Однако, вместе с этими
преимуществами, в систему пришло огромное количество нового и
мало протестированного кода. По этой причине, релизы 5.X
считаются Новыми технологическими, а 4.X релизы
Продуктивными. Со временем 5.X будут объявлены
стабильными, и начнется работа над новой ветвью, 6.0-CURRENT.На данный момент, долговременные разработки и проекты продолжаются в ветке
5.X-CURRENT, и по ходу разработки будут доступны снэпшот-релизы
5.X на CDROM (и, конечно же, в сети), постоянно выкладываемые на
сервер снэпшотов как промежуточные результаты.JordanHubbardПредоставил Цели Проекта FreeBSDПроект FreeBSDцелиЦелью Проекта FreeBSD является предоставление программного
обеспечения, которое может быть использовано для любых целей
и без дополнительных ограничений. Многие из нас вносят значительный
вклад в код (и проект) и совершенно не требуют за это
какой-либо финансовой компенсации сейчас и в последствии, хотя мы
определенно не собираемся отказываться от нее. Мы верим, что первая
и основная наша миссия это предоставление кода для всех,
кому он необходим, и для любых целей, поэтому этот код становится
все более и более распространен и предоставляет самые широкие
возможности. Это, я верю, является одной из основных целей Свободного
Программного Обеспечения и мы с энтузиазмом
поддерживаем ее.GNU General Public License (GPL)GNU Lesser General Public License (LGPL)BSD CopyrightТот код в нашем дереве исходных текстов, который попадает
под Общую Публичную Лицензию GNU (GPL) или Общую Публичную
Лицензию Библиотек GNU (LGPL), предоставляется с дополнительными
условиями, хотя они обеспечивают только возможность доступа
а не его ограничение. По причине дополнительных
сложностей, которые могут появится при коммерческом использовании GPL
продуктов, мы предпочитаем ПО, предоставленное под более свободной
лицензией BSD, когда это возможно.SatoshiAsamiПредоставил Модель Разработки FreeBSDПроект FreeBSDмодель разработкиРазработка FreeBSD это очень открытый и гибкий процесс —
FreeBSD, буквально выражаясь, создан из кода, предоставленного
сотнями людей со всего мира, в чем вы можете убедится взглянув
на список этих
+ url="&url.articles.contributors;/article.html">список этих
людей. Мы постоянно
ищем новых разработчиков и новые идеи, и тот, кто заинтересован
в более тесном взаимодействии и хочет принять участие в проекте,
должен просто связаться с нами в рассылке &a.hackers.name;. Для тех кто
желает использовать FreeBSD в различных областях для работы,
доступен &a.announce;.Если участвуете в процессе разработки FreeBSD независимо или
тесно сотрудничая с нами, полезно знать следующее:CVS РепозиторийCVSрепозиторийConcurrent Versions SystemCVSГлавное дерево исходных текстов FreeBSD поддерживается
с помощью
CVS
(Concurrent Versions System), свободно доступной системой
контроля исходных текстов, которая поставляется вместе
с FreeBSD. Основной
CVS
репозиторий располагается на компьютере, находящемся
в городе Санта Клара, Калифорния (США), откуда и распространяется
на множество зеркал по всему миру. Дерево CVS, содержащее ветви
-CURRENT и -STABLE,
может быть легко скопировано на ваш локальный компьютер.
Обратитесь к разделу Синхронизация
дерева исходных текстов за информацией об этом
процессе.Список коммиттеровкоммиттерыКоммиттеры
это люди, которые имеют доступ на запись
к главному дереву CVS, и имеют право вносить изменения
в главное дерево исходных текстов FreeBSD (термин
коммиттер появился от названия
команды &man.cvs.1; commit, которая
используется для внесения изменений в CVS репозиторий).
Лучший способ для предоставления ваших изменений на
рассмотрение коммиттеров - это использование команды
&man.send-pr.1;. Если что-то произошло с системой, вы можете
достучаться до них посылкой письма по адресу
&a.committers.name;.CORE группа FreeBSD core teamCORE группа FreeBSD
могла бы быть эквивалентом Совета Директоров, если бы
Проект FreeBSD был компанией. Главная задача CORE группы —
убедиться, что проект в целом в хорошем состоянии
и движется в правильном направлении. Приглашение
постоянных и ответственных разработчиков присоединится к группе
коммиттеров одна из функций CORE группы, также как приглашение
новых членов в CORE группу по мере того, как другие уходят.
Нынешний состав группы был выбран из рядов коммиттеров
- путем общего голосования в июне 2002 года.
+ путем общего голосования в июле 2004 года.
Выборы проходят каждые 2 года.
Некоторые члены CORE группы имеют особые
области ответственности, это
означает, что они являются ответственными за работу
отдельной большой части системы.
За полным списком разработчиков FreeBSD и областей их
ответственности обращайтесь к Списку
+ url="&url.articles.contributors;/article.html">Списку
участников.Большинство членов CORE группы являются волонтерами
и не получают никакой финансовой выгоды от участии в проекте,
поэтому вы не должны рассматривать их работу как
гарантированную поддержку. Аналогия с
советом директоров не очень точна и вероятно гораздо
правильнее будет сказать, что это люди, которые посвятили себя
FreeBSD, пожертвовав личной жизнью!Внешняя помощьучастникиПоследней, но однозначно не менее значимой, наибольшей
группой разработчиков являются пользователи, которые
предоставляют комментарии и исправления ошибок нам на почти
постоянной основе. Основной путь участвовать в
не централизованной разработке это подписка на &a.hackers;,
где обсуждаются подобные вещи. Обратитесь к за дальнейшей информацией о различных
списках рассылки FreeBSD.Список
+ url="&url.articles.contributors;/article.html">Список
контрибьюторов FreeBSD
очень длинный и постоянно растет, поэтому
почему бы вам не присоединится к нему предоставив что-нибудь
FreeBSD сегодня?Предоставление кода не единственный способ помочь
проекту; для более-менее полного списка вещей, которые
необходимо сделать пожалуйста обратитесь к веб сайту проекта
FreeBSD.Вообще говоря, наша модель разработки организована как нечеткий
набор концентрированных колец. Централизованная модель разработана
для удобства пользователей FreeBSD, которые
получают простую систему контроля за одной
центральной базой кода, и позволяет не оставить за бортом проекта
потенциальных помощников! Мы желаем предоставить стабильную
операционную систему с большим количеством когерентных
прикладных программ, которые
пользователи смогут легко установить и использовать — наша модель
работает очень хорошо для этой задачи.Мы все приглашаем тех, кто хотел бы присоединится к нам как
разработчик FreeBSD, выделить немного времени и привнести свой взнос
в постоянный успех FreeBSD!Текущая Версия FreeBSDNetBSDOpenBSD386BSDFree Software FoundationU.C. BerkeleyComputer Systems Research Group (CSRG)FreeBSD - это свободно доступный, основанный на 4.4BSD-Lite
релиз с полными исходными текстами для компьютерных систем, основанных на Intel
&i386;, &i486;, &pentium;,
&pentium; Pro,
&celeron;,
&pentium; II,
&pentium; III,
&pentium; 4 (или совместимыми),
&xeon;, DEC Alpha и
Sun &ultrasparc;.
В основном он основан на
программном обеспечении от группы CSRG, U.C. Berkley, с некоторым
дополнениями из NetBSD, OpenBSD, 386BSD и Free Software
Foundation.Со времен FreeBSD версии 2.0 в конце 94, производительность,
возможности, и стабильность FreeBSD выросла многократно. Самое
большое изменение это полное обновление системы виртуальной памяти
с объединенным VM/файловым буферизованным кэшем, который не только
увеличивает производительность, но и уменьшает количество
используемой памяти, делая 5 MB конфигурацию более доступным
минимумом. Другие улучшения включают в себя полную поддержку NIS
(клиент и сервер), поддержка транзакций TCP, поддержка
"звонка-по-запросу" в PPP, встроенная поддержка DHCP, улучшенная
подсистема SCSI, поддержка ISDN, ATM, FDDI, Fast и Gigabit Ethernet
(1000 Mbit) адаптеров, улучшенная поддержка последних версий
контролеров Adaptec и многие тысячи исправленных ошибок.В дополнение к базовой системе, FreeBSD предоставляет
коллекцию портированого ПО, включающую в себя тысячи популярных
программ. На время подготовки этого документа она включала в себя
более &os.numports; портов! В коллекцию входят множество программ от
http (WWW) серверов, до игр, языков программирования, текстовых
редакторов и всего прочего. Полная коллекция портов
требует приблизительно &ports.size; дискового пространства, потому что
порт представляет собой изменения оригинальных
исходных текстов. Это сильно упрощает нам процесс обновления
портов, и очень сильно уменьшает количество занимаемого
дискового места по сравнению со старой (1.0) коллекцией портов.
Для того, чтобы скомпилировать и установить программу,
необходимо всего лишь войти в каталог порта
программы, набрать make install и дать
системе сделать все остальное. Исходные тексты для каждого порта,
который вы устанавливаете, загружаются автоматически с CDROM или
локального FTP сервера, поэтому вам нужно только дисковое
пространство для сборки тех портов, которые вам необходимы. Почти каждый
порт также предоставляется как пред-компилированный
пакет, который может быть установлен с помощью
простой команды (pkg_add) теми, кто предпочитает не компилировать порты
из исходных текстов. Дополнительная информация о пакетах и портах
находится здесь: .Множество дополнительных документов, которые вы можете найти
очень полезными в процессе установки и использования FreeBSD,
находятся в каталоге /usr/share/doc
на любой машине, работающей под управлением современной версии FreeBSD. Вы
можете просматривать локально установленные документы с помощью
любого браузера, поддерживающего HTML, используя следующие ссылки:Руководство FreeBSD/usr/share/doc/ru_RU.KOI8-R/books/handbook/index.htmlFreeBSD FAQ (Часто задаваемые вопросы)/usr/share/doc/ru_RU.KOI8-R/books/faq/index.htmlВы также можете просмотреть основные (и наиболее часто обновляемые)
копии на http://www.FreeBSD.org/ru/.
diff --git a/ru_RU.KOI8-R/books/handbook/l10n/chapter.sgml b/ru_RU.KOI8-R/books/handbook/l10n/chapter.sgml
index 226bac409f..b0b5105e29 100644
--- a/ru_RU.KOI8-R/books/handbook/l10n/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/l10n/chapter.sgml
@@ -1,1008 +1,977 @@
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/ja-kon2-* or
- japanese/Mule_Wnn
+ japanese/kon2-16dot или
+ japanese/mule-freewnnКорейский
- korean/ko-han
+ korean/hanНастройка X11Хотя X11 не является частью проекта FreeBSD, мы включили сюда
некоторую информацию для пользователей FreeBSD. За детальной
информацией обращайтесь к Веб
сайту &xfree86; или к сайту того сервера X11, который вы
используете.В ~/.Xresources, вы можете внести
дополнительные I18N настройки приложений (настройки шрифтов,
меню и т.п.).Отображение шрифтовX11 True Type font serverУстановите сервер X11 &truetype; Common
(x11-servers/XttXF86srv-common)
и &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 есть I18N/L10N учебник для
+ У проекта FreeBSD-Taiwan есть Chinese HOWTO для
FreeBSD по адресу
- ,
+ ,
в котором используются многие порты на китайском.
- Редактором учебника zh-L10N-tut является Clive Lin
- Clive@CirX.org. Вы можете получить с помощью cvsup
- с freebsd.sinica.edu.tw следующие
- коллекции:
-
-
-
-
-
- Коллекция
- Описание
-
-
-
-
-
- outta-port tag=.
- Beta-quality коллекция портов на китайском
-
-
-
- zh-L10N-tut tag=.
- Локализация учебника FreeBSD на BIG-5 традиционном
- китайском
-
-
-
- zh-doc tag=.
- Перевод документации FreeBSD на BIG-5 традиционный
- китайский
-
-
-
-
-
- Chuan-Hsing Shen s874070@mail.yzu.edu.tw создал
- Chinese
- FreeBSD Collection (CFC) используя FreeBSD-Taiwan
+ На данный момент редактором 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/mail/chapter.sgml b/ru_RU.KOI8-R/books/handbook/mail/chapter.sgml
index ee6a228f47..88b2d65405 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/network-servers/chapter.sgml b/ru_RU.KOI8-R/books/handbook/network-servers/chapter.sgml
index 5ccd8f675f..fb6b6bde1b 100644
--- a/ru_RU.KOI8-R/books/handbook/network-servers/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/network-servers/chapter.sgml
@@ -1,4989 +1,4988 @@
MurrayStokelyРеорганизовал АндрейЗахватовПеревод на русский язык: Сетевые серверыКраткий обзорЭта глава посвящена некоторым наиболее часто используемым сетевым
службам систем &unix;. Мы опишем, как установить, настроить,
протестировать и поддерживать многие различные типы сетевых сервисов.
Для облегчения вашей работы в главу включены
примеры конфигурационных файлов.После чтения этой главы вы будете знать:Как управлять даемоном inetd.Как настроить сетевую файловую систему.Как настроить сетевой сервер информации для совместного
использования учётных записей пользователей.Как настроить автоматическое конфигурирование сетевых параметров
при помощи DHCP.Как настроить сервер имён.Как настроить Apache HTTP
сервер.Как настроить файловый и принт сервер для &windows;
клиентов с использованием Samba.Как синхронизировать дату и время, а также настроить сервер
времени с протоколом NTP.Перед чтением этой главы вы должны:Понимать основы работы скриптов
/etc/rc.Свободно владеть основными сетевыми терминами.Знать как устанавливать дополнительные программы сторонних
разработчиков ().ChernLeeТекст предоставил Супер-серверinetdОбзор&man.inetd.8; называют также супер-сервером
Интернет, потому что он управляет соединениями к нескольким
даемонам. Программы, которые предоставляют сетевые услуги, называют
даемонами. inetd выступает в качестве
управляющего сервера для других даемонов. Когда
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 и устройства ZIP, могут использоваться другими машинами в
+ 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 будет некорректен:/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.org.
+ url="http://www.dhcp.org/">.
Установка и настройка сервера DHCPЧему посвящён этот разделЭтот раздел даёт информацию о том, как настроить систему
FreeBSD для работы в качестве сервера DHCP на основе реализации
пакета DHCP от ISC (Internet Software Consortium).Серверная часть пакета не поставляется как часть FreeBSD, так
что вам потребуется установить порт net/isc-dhcp3-server для получения
+ role="package">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
- (www.isc.org).
+ На данный момент пакет 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 SpecificationMurrayStokelyПредоставил 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.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; cat /etc/passwd | grep -v "^#" | 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 notrust 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/ppp-and-slip/chapter.sgml b/ru_RU.KOI8-R/books/handbook/ppp-and-slip/chapter.sgml
index d30b933d37..e75e20ff4f 100644
--- a/ru_RU.KOI8-R/books/handbook/ppp-and-slip/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/ppp-and-slip/chapter.sgml
@@ -1,3252 +1,3258 @@
JimMockРеструктурировал, реорганизовал и обновил ДенисПеплинПеревод на русский язык: PPP и SLIPКраткий обзорPPPSLIPВ FreeBSD существует множество способов соединения одного компьютера
с другим. Для установления соединения с отдельной сетью или интернет
через обычный модем, или для открытия доступа к собственному компьютеру
необходимо использование PPP или SLIP. В этой главе детально описана
настройка таких модемных сервисов.После прочтения этой главы вы будете знать:Как настроить PPP уровня пользователя (user PPP).Как настроить PPP уровня ядра (kernel PPP).Как настроить PPPoE (PPP over
Ethernet).Как настроить PPPoA (PPP over
ATM).Как настроить SLIP клиента и сервер.PPPuser PPPPPPkernel PPPPPPover EthernetПеред прочтением этой главы вам потребуется:Ознакомиться с основными сетевыми технологиями.Понимать основы и назначение модемного соединения и PPP
и/или SLIP.Вы возможно захотите узнать, в чем главное различие между PPP
уровня пользователя и ядра. Ответ прост: PPP уровня пользователя
обрабатывает входящие и исходящие данные в пространстве пользователя,
а не в ядре. В терминах копирования данных между ядром и пространством
пользователя это дорогостоящий путь, который однако позволяет значительно
расширить возможности реализации PPP. PPP уровня пользователя
для связи с внешним миром использует устройство
tun, а PPP уровня ядра — устройство
ppp.В дальнейшем в этой главе PPP уровня пользователя будет
обозначаться просто как ppp, пока не
потребуется различать его и любое другое программное обеспечение
PPP, такое как pppd. Если не указано
иначе, все команды, приведенные в этой главе, должны выполняться
под root.TomRhodesОбновил и расширил BrianSomersПервоначально предоставил NikClaytonДополнительную информацию предоставили DirkFrömbergPeterChildsPPP уровня пользователяНастройка PPP уровня пользователяПредположенияВ этом документе предполагается, что у вас есть следующее:ISPPPPУчетная запись у провайдера интернет (Internet Service
Provider, ISP), к которому вы подсоединяетесь, используя
PPP.Модем или другое подключенное к системе и правильно
настроенное устройство, позволяющее подключиться к
провайдеру.Номер модемного пула провайдера.PAPCHAPUNIXлогинпарольИмя пользователя (логин) и пароль (обычная &unix; пара
логин/пароль, или PAP/CHAP пара логин/пароль).сервер именIP адреса одного или нескольких серверов имен. Обычно
провайдер дает для этих целей два IP адреса. Если нет
ни одного, вы можете использовать команду enable
dns в ppp.conf и
ppp настроит список серверов имен.
Эта возможность зависит от наличия поддержки согласования
DNS в реализации PPP провайдера.Следующая информация может поставляться провайдером, но не
является совершенно необходимой:IP адрес шлюза провайдера. Шлюз это компьютер, к которому
вы подключитесь и который будет настроен в качестве
маршрута по умолчанию (default
route). Если у вас нет этой информации, она
может быть получена от PPP сервера после подключения.Программой ppp этот IP адрес
обозначается как HISADDR.Сетевая маска, которую вы должны использовать.
Если провайдер не предоставил ее значение, вы можете
использовать 255.255.255.255.статический IP адресЕсли провайдер предоставил статический IP и имя хоста,
используйте их. Иначе позвольте удаленной стороне
назначить свободный IP адрес.Если у вас нет всей необходимой информации, свяжитесь с
провайдером.В этом разделе строки файлов настройки из многих примеров
пронумерованы. Эти номера приведены только для обсуждения
настроек, они не должны помещаться в действующую настройку.
Правильные отступы с табуляцией и пробелами также важны.Создание файлов устройств PPPPPPсоздание файлов устройствВ обычной ситуации, большинству пользователей нужно только
одно устройство tun
- (/dev/tun0). Ссылки на
+ (/dev/tun0). Ссылки на
tun0 ниже могут быть заменены на
tunN,
где N это любой номер устройства,
соответствующий вашей системе.Для систем FreeBSD без &man.devfs.5; (FreeBSD 4.X более
ранние), необходимо проверить устройство
tun0 (это не требуется, если включена
&man.devfs.5;, поскольку файлы устройств будут создаваться
автоматически).Простейший способ убедиться, что устройство
tun0 настроено правильно, это пересоздать
устройство. Для пересоздания устройства выполните следующее:&prompt.root; cd /dev
- &prompt.root; sh MAKEDEV tun0
+&prompt.root; sh MAKEDEV tun0Если вам необходимы 16 туннельных устройств, потребуется их
создать. Это можно сделать, выполнив следующие команды:&prompt.root; cd /dev
- &prompt.root; sh MAKEDEV tun15
+&prompt.root; sh MAKEDEV tun15Автоматическая настройка PPPPPPнастройкаИ ppp и pppd
(реализация PPP уровня ядра) используют файлы настройки,
расположенные в каталоге /etc/ppp.
Примеры для ppp уровня пользователя можно найти в
/usr/share/examples/ppp/.Настройка ppp требует редактирования
нескольких файлов, в зависимости от ваших потребностей. То,
что вы поместите в эти файлы, зависит в некоторой степени
от того, предоставит ли провайдер статический IP адрес
(т.е. вы получите один определенный IP адрес и будете использовать
его постоянно) или динамический (т.е. ваш IP адрес будет изменяться
при каждом подключении к провайдеру).PPP и статические IP адресаPPPсо статическими IP адресамиВам потребуется отредактировать файл настройки
/etc/ppp/ppp.conf. Он похож на приведенный
ниже пример.Строки, оканчивающиеся на :,
вводятся без отступа в начале строки, остальные строки
должны быть введены с отступом, как показано в примере.1 default:
2 set log Phase Chat LCP IPCP CCP tun command
3 ident user-ppp VERSION (built COMPILATIONDATE)
4 set device /dev/cuaa0
5 set speed 115200
6 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
7 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
8 set timeout 180
9 enable dns
10
11 provider:
12 set phone "(123) 456 7890"
13 set authname foo
14 set authkey bar
15 set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp"
16 set timeout 300
17 set ifaddr x.x.x.xy.y.y.y 255.255.255.255 0.0.0.0
18 add default HISADDRСтрока 1:Начинает настройку по умолчанию (default). Команды
этой настройки выполняются автоматически при запуске
ppp.Строка 2:Включает параметры протоколирования. Когда настройка
работает удовлетворительно, эта строка должна быть
сокращена до следующей формы
set log phase tun
для предотвращения появления слишком больших лог
файлов.Строка 3:Указывает PPP как идентифицировать себя на удаленной
стороне. PPP идентифицирует себя на удаленной стороне если
возникают проблемы согласования и установки соединения,
предоставляя информацию, по которой администратор на
удаленной стороне может воспользоваться для решения
таких проблем.Строка 4:Указывает устройство, к которому подключен модем.
COM1 это
- /dev/cuaa0, а
+ /dev/cuaa0, а
COM2 это
- /dev/cuaa1.
+ /dev/cuaa1.
Строка 5:Устанавливает желаемую скорость подключения к модему.
Если 115200 не работает (хотя должна работать для
любого относительно нового модема) попробуйте
38400.Строки 6 и 7:PPPPPP уровня пользователяСтрока дозвона. PPP уровня пользователя применяет
expect-send синтаксис, похожий на синтаксис &man.chat.8;.
Обратитесь к странице справочника за информацией о
возможностях этого языка.Обратите внимание, что эта команда продолжается на
следующей строке для улучшения читаемости. Любая команда
в ppp.conf может быть продолжена
на следующей строке, если последний символ предыдущей
строки \.Строка 8:Устанавливает предельное время ожидания для соединения.
Значение 180 секунд используется по умолчанию, так что
строка с этим значением чисто косметическая.Строка 9:Указывает PPP запросить у удаленной стороны
сервера имен. Если вы работаете с локальным сервером имен,
эта строка должна быть закомментирована или удалена.Строка 10:Пустая строка для улучшения читаемости. Пустые строки
игнорируются PPP.Строка 11:Определяет настройки для провайдера, называемого
provider. Это имя может быть изменено
на имя вашего провайдера, чтобы в дальнейшем вы могли
использовать для
начала соединения.Строка 12:Определяет телефонный номер для этого провайдера.
Несколько телефонных номеров могут быть указаны с
помощью двоеточия (:) или
символа канала (|) в качестве
разделителя. Различия между двумя разделителями описаны
в &man.ppp.8;. Главным образом они заключаются в том, что
если вы хотите перебирать номера, используйте двоеточие.
Если вы хотите дозваниваться по первому номеру в первую
очередь, и использовать другие номера только если
дозвон по первому завершится неудачно, используйте символ
канала. Всегда заключайте список номеров в кавычки, как
показано в примере.Вы должны включить телефонный номер в кавычки
(") если в нем используются пробелы.
Отсутствие кавычек может вызвать простую, но трудно
обнаруживаемую ошибку.Строки 13 и 14:Задают имя пользователя и пароль. При использовании
приглашения login в стиле &unix;, эти значения
используются командой set login
через переменные \U и \P. При соединении с использованием
PAP или CHAP, эти значения используются во время
аутентификации.Строка 15:PAPCHAPЕсли вы используете PAP или CHAP, приглашение
на вход не появится, и эта строка должна быть
закомментирована или удалена. Обратитесь к
странице аутентификация
PAP и CHAP за дальнейшей информацией.Строка для входа записана в том же chat-подобном
синтаксисе, что и строка для дозвона. В этом примере
строка работает для сервиса, сессия входа которого выглядит
примерно так:J. Random Provider
login: foo
password: bar
protocol: pppВам потребуется изменить эту строку для использования
с другим сервисом. При первом составлении скрипта
убедитесь, что вы включили chat
протоколирование, чтобы убедиться, что
соединение происходит как ожидалось.Строка 16:время ожиданияУстановка максимального времени ожидания по умолчанию
для соединения. В данном случае соединение будет разорвано
автоматически после 300 секунд неактивности. Если вы не
хотите, чтобы соединение разрывалось, установите эту
переменную в нуль, или используйте параметр командной
строки.Строка 17:ISPУстанавливает адрес интерфейса. Строка
x.x.x.x должна быть
заменена на IP адрес, который выделил вам провайдер.
Строка y.y.y.y должна быть
заменена на IP адрес шлюза провайдера (компьютер, к
которому вы подключаетесь). Если провайдер не сообщил
адрес шлюза, используйте 10.0.0.2/0.
Если вам требуется использовать вычисленные
адреса, убедитесь, что создана запись в
/etc/ppp/ppp.linkup в соответствии
с инструкциями для PPP
и динамических IP адресов. Если эта строка
опущена, ppp не может быть запущен в
режиме .Строка 18:Добавляет маршрут по умолчанию к шлюзу провайдера.
Специальное слово HISADDR заменяется
адресом шлюза, указанном в строке 17. Важно, чтобы
эта строка появилась после строки 17, до нее
переменная HISADDR еще не
инициализирована.Если вы не будете запускать ppp с параметром
, эта строка должна быть перемещена
в файл ppp.linkup.Нет необходимости добавлять запись в
ppp.linkup, если у вас статический IP
адрес и ppp работает в режиме ,
поскольку таблица маршрутизации настроена правильно еще
до подключения. Однако, вы возможно захотите создать запись
для запуска программ после соединения. Эта ситуация описана
далее в примере по sendmail.Примерные файлы настройки находятся в каталоге
/usr/share/examples/ppp/.PPP и динамические IP адресаPPPс динамическими IP адресамиIPCPЕсли провайдер не выделил статический IP адрес,
ppp может быть настроен для определения
локального и удаленного адреса. Это делается путем
вычисления IP адреса и настройки его программой
ppp с использованием IP
Configuration Protocol (IPCP) после установления соединения.
Файл настройки ppp.conf тот же, что и
в примере PPP и статические
IP адреса, со следующим изменением:17 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255Как и раньше, не включайте номер строки, он используется
только для ссылки на строку в этом примере. Требуется отступ хотя
бы в один пробел.Строка 17:Номер после символа / это число
бит в адресе, которые будут запрошены ppp. Вы можете
использовать более подходящие вам IP адреса, но пример
выше всегда будет работать.Если вы не используете режим ,
потребуется создать запись в
/etc/ppp/ppp.linkup.
Этот файл используется после установки соединения. На этот момент
ppp уже настроит адреса интерфейсов и
станет возможным добавление записей в таблицу
маршрутизации:1 provider:
2 add default HISADDRСтрока 1:При установке соединения, ppp
ищет запись в ppp.linkup
по следующим правилам: сначала в соответствии с
меткой, используемой в ppp.conf.
Если это не сработает, ведется поиск записи для
IP адреса шлюза. Это метка в IP записывается в
виде IP адреса. Если запись все еще не найдена,
используется запись MYADDR.Строка 2:Эта строка сообщает ppp добавить
маршрут по умолчанию, указывающий на
HISADDR. HISADDR
будет заменен на IP адрес шлюза, определенного
IPCP.Детальный пример находится в записи
pmdemand файлов
/usr/share/examples/ppp/ppp.conf.sample
и
/usr/share/examples/ppp/ppp.linkup.sample.Прием входящих звонковPPPприем
входящих соединенийПри настройке ppp для приема
входящих звонков на компьютере, подключенном к локальной сети,
вам необходимо решить, перенаправлять ли пакеты в локальную сеть.
Если вы будете делать это, выделите удаленной стороне IP адрес
из диапазона адресов локальной сети, и используйте команду
enable proxy в файле
/etc/ppp/ppp.conf. Вам потребуется также
убедиться, что в файле /etc/rc.conf
присутствует строка:gateway_enable="YES"Какой getty?Раздел Настройка FreeBSD для
входящих соединений дает хорошее описание включения
входящих соединений с использованием &man.getty.8;.Альтернатива getty это mgetty,
более интеллектуальная версия getty,
разработанная специально для приема входящих звонков..Преимущество использование mgetty в
том, что она активно общается с модемами,
то есть если порт будет выключен в
/etc/ttys, модем не будет отвечать на
звонок.Последние версии mgetty (от
0.99beta и выше) поддерживают также автоматическое определение
потоков PPP, позволяя клиентам безскриптовое подключение
к серверу.Обратитесь к разделу Mgetty и
AutoPPP за дальнейшей информацией по
mgetty.Права PPPПрограмма ppp обычно запускается с
правами пользователя root.
Если вы хотите разрешить запуск ppp
в режиме сервера с правами обычного пользователя
путем запуска ppp как описано ниже,
этого пользователя необходимо добавить в группу
network в файле
/etc/group.Вам также потребуется дать ему доступ к одному или более
разделов конфигурации, используя команду
allow:allow users fred maryЕсли эта команда используется в разделе
default, она дает пользователю полный
доступ.Оболочки PPP для пользователей с динамическими IPоболочки PPPСоздайте файл, называющийся
/etc/ppp/ppp-shell и содержащий
следующее:#!/bin/sh
IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'`
CALLEDAS="$IDENT"
TTY=`tty`
if [ x$IDENT = xdialup ]; then
IDENT=`basename $TTY`
fi
echo "PPP for $CALLEDAS on $TTY"
echo "Starting PPP for $IDENT"
exec /usr/sbin/ppp -direct $IDENTЭтот скрипт должен быть исполняемым. Теперь создайте
на этот скрипт символическую ссылку с именем
ppp-dialup с помощью следующей
команды:&prompt.root; ln -s ppp-shell /etc/ppp/ppp-dialupИспользуйте этот скрипт в качестве
оболочки для удаленных пользователей.
Ниже приведен пример записи в /etc/password
для удаленных пользователей PPP с именем пользователя
pchilds (не забывайте использовать
vipw для редактирования файла паролей).pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialupСоздайте каталог /home/ppp,
который доступен для чтения и содержит следующие файлы
нулевой длины:-r--r--r-- 1 root wheel 0 May 27 02:23 .hushlogin
-r--r--r-- 1 root wheel 0 May 27 02:22 .rhostsЭто предотвратит отображение
/etc/motd.Оболочки PPP для пользователей со статическими IPоболочки PPPСоздайте файл ppp-shell как в примере
выше, и для каждой учетной записи со статически назначаемым
IP создайте символическую ссылку на
ppp-shell.Например, если у вас три пользователя удаленного доступа,
fred, sam и
mary, которые подключаются к вашей
сети класса C, выполните следующее:&prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred
&prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam
&prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-maryОболочка каждого из этих пользователей удаленного доступа
должна быть символической ссылкой, созданной выше
(например, оболочка пользователя mary
должна быть /etc/ppp/ppp-mary).Настройка ppp.conf для пользователей
с динамическими IPФайл /etc/ppp/ppp.conf должен
содержать примерно такие строки:default:
set debug phase lcp chat
set timeout 0
ttyd0:
set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255
enable proxy
ttyd1:
set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255
enable proxyНеобходимо соблюдать отступы.Раздел default: загружается для
каждого соединения. Для каждой строки, включенной в
/etc/ttys, создайте запись,
подобную ttyd0: выше. Каждая строка
должна содержать уникальные IP адреса из вашего пула
IP адресов, выделенных пользователям с динамическими
IP.Настройка ppp.conf для пользователей
со статическими IPПомимо содержимого, описанного в примере файла
/usr/share/examples/ppp/ppp.conf
выше, вам потребуется добавить раздел для каждого из
пользователей со статическими IP. Мы продолжим использовать
имена fred, sam
и mary в качестве примера.fred:
set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255
sam:
set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255
mary:
set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255Если требуется, файл /etc/ppp/ppp.linkup
должен также содержать информацию о маршрутизации для
каждого пользователя со статическим IP. В строке ниже
через клиентское соединение добавляется маршрут к сети класса
C203.14.101.0.fred:
add 203.14.101.0 netmask 255.255.255.0 HISADDR
sam:
add 203.14.102.0 netmask 255.255.255.0 HISADDR
mary:
add 203.14.103.0 netmask 255.255.255.0 HISADDRmgetty и AutoPPPmgettyAutoPPPLCPНастройка и компиляция mgetty с
параметром AUTO_PPP позволяет
mgetty определять LCP фазу
PPP соединений и автоматически порождать оболочку ppp.
Однако, поскольку стандартный метод логин/пароль не
используется, необходима аутентификация пользователей
через PAP или CHAP.В этом разделе предполагается, что пользователь
успешно настроил, скомпилировал и установил версию
mgetty с параметром
AUTO_PPP (v0.99beta или
более поздняя).Убедитесь, что в файле
/usr/local/etc/mgetty+sendfax/login.config
имеется следующая строка:/AutoPPP/ - - /etc/ppp/ppp-pap-dialupЭто укажет mgetty запускать скрипт
ppp-pap-dialup для обнаруженных
соединений PPP.Создайте файл
/etc/ppp/ppp-pap-dialup, содержащий
следующее (этот файл должен быть выполняемым):#!/bin/sh
exec /usr/sbin/ppp -direct pap$IDENTДля каждой линии, включенной в
/etc/ttys, создайте соответствующую запись
в /etc/ppp/ppp.conf. Она будет отлично
сочетаться с тем, что было создано выше.pap:
enable pap
set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40
enable proxyДля каждого пользователя, входящего по этому
методу, в файле /etc/ppp/ppp.secret
должна присутствовать запись с логином/паролем,
или, в качестве альтернативы, для аутентификации пользователей
по PAP через /etc/password, необходимо
использовать следующий параметр.enable passwdauthЕсли вы хотите присвоить некоторым пользователям статический
IP, задайте его в качестве третьего аргумента в
/etc/ppp/ppp.secret. Обратитесь к
к /usr/share/examples/ppp/ppp.secret.sample
за примерами.MS расширенияDNSNetBIOSPPPРасширения MicrosoftВозможна настройка PPP для выдачи адресов DNS и
NetBIOS по запросу.Для включения этих расширений с PPP версии 1.x, необходимо
добавить к соответствующему разделу
/etc/ppp/ppp.confследующие строки.enable msext
set ns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5Для PPP версии 2 и выше:accept dns
set dns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5Клиентам будут выдаваться адреса первичного и вторичного
серверов имен, и адрес хоста NetBIOS.Если в версии 2 и выше строка set dns
будет опущена, PPP использует значения из
/etc/resolv.conf.Аутентификация PAP и CHAPPAPCHAPНекоторые провайдеры настраивают систему так, что
аутентификация производится с использованием либо PAP либо
CHAP. В этом случае, приглашение login:
при соединении не выдается и соединение PPP
начинается сразу.PAP менее безопасен, чем CHAP, но безопасность в данном
случае не страдает, поскольку хотя пароли и передаются открытым
текстом, они передаются только по модемной линии. У кракеров
не так много возможностей для кражи паролей.В примерах выше PPP
и статические IP адреса или PPP и динамические IP адреса
должны быть сделаны следующие изменения:13 set authname MyUserName
14 set authkey MyPassword
15 set loginСтрока 13:Эта строка указывает имя пользователя PAP/CHAP. Вам
потребуется заменить MyUserName
на правильное значение.Строка 14:passwordЭта строка указывает пароль PAP/CHAP. Вам потребуется
заменить MyPassword на
правильное значение. Вы можете также добавить
дополнительную строку, такую как:16 accept PAPили16 accept CHAPдля явного указания протокола, но и PAP и CHAP
поддерживаются по умолчанию.Строка 15:Ваш провайдер обычно не потребует входа на сервер
при использовании PAP или CHAP. Следовательно, вы
должны отключить строку set login.Изменение настроек pppна
летуВозможно изменение настроек ppp
программы во время ее работы в фоновом режиме, но только если
открыт соответствующий диагностический порт. Для его открытия
добавьте в настройку следующую строку:set server /var/run/ppp-tun%d DiagnosticPassword 0177С этой директивой ppp будет прослушивать заданный &unix;
сокет, запрашивая у клиентов пароль перед выдачей доступа.
Символы%d заменяются на номер используемого
устройства tun.Как только сокет открыт, в скриптах, выполняющих настройку
работающей программы, можно использовать &man.pppctl.8;.Использование NATPPPNATPPP имеет возможность использовать встроенный NAT без
преобразования пакетов в ядре. Эта возможность может быть включена
следующей строкой в /etc/ppp/ppp.conf:nat enable yesАльтернативно, PPP NAT может быть включен параметром командной
строки -nat. Существует также переменная
/etc/rc.confppp_nat,
которая включена по умолчанию.Если вы используете эту возможность, вы также можете
найти полезными параметры /etc/ppp/ppp.conf
для включения пересылки входящих соединений:nat port tcp 10.0.0.2:ftp ftp
nat port tcp 10.0.0.2:http httpили отключить все входящие соединенияnat deny_incoming yesЗавершающая настройка системыPPPconfigurationТеперь, когда программа ppp настроена,
осталось выполнить еще несколько действий прежде, чем все это
заработает. Они выполняются путем редактирования файла
/etc/rc.conf.Просматривая этот файл, убедитесь, что добавлена строка
hostname=, например:hostname="foo.example.com"Если провайдер предоставил вам статический IP адрес и имя,
возможно лучше всего использовать это имя в качестве имени
хоста.Проверьте переменную network_interfaces.
Если вы хотите настроить систему для дозвона по требованию,
убедитесь, что устройство tun0 добавлено
в список, иначе удалите его.network_interfaces="lo0 tun0"
ifconfig_tun0=Переменная ifconfig_tun0 должна быть пуста,
необходимо также создать файл
/etc/start_if.tun0. В этом файле должна
находиться строка:ppp -auto mysystemЭтот скрипт выполняется во время настройки сети, запуская
даемона ppp в автоматическом режиме. Если эта машина является
шлюзом для локальной сети, вы можете также использовать
переключатель . Обратитесь к странице
справочника за дальнейшей информацией.Убедитесь, что программа маршрутизации отключена переменной
в файле /etc/rc.conf:router_enable="NO"routedВажно, чтобы даемон routed не был запущен,
поскольку он может удалить запись маршрута по умолчанию, создаваемую
ppp.Возможно, стоит обратить внимание на переменную
sendmail_flags и убедиться, что она не включает
параметр , иначе sendmail
попытается сразу же обратиться к сети, и компьютер может начать
дозвон. Вы можете попробовать:sendmail_flags="-bd"sendmailОбратная сторона этого решения в том, что необходим
запуск очереди sendmail после поднятия
соединения ppp:&prompt.root; /usr/sbin/sendmail -qВы можете использовать команду !bg в файле
ppp.linkup для автоматического выполнения
этой задачи:1 provider:
2 delete ALL
3 add 0 0 HISADDR
4 !bg sendmail -bd -q30mSMTPЕсли вам это не нужно, возможна настройка
dfilter для блокирования SMTP трафика. Обратитесь
файлам примеров за дальнейшей информацией.Все, что осталось, это перегрузить компьютер. После
перезагрузки вы можете либо выполнить:&prompt.root; pppи затем набрать dial provider для запуска
сессии PPP, либо, если вы хотите, чтобы программа
ppp начинала соединение автоматически при
появлении исходящего трафика (и файл
start_if.tun0 не создан), выполните:&prompt.root; ppp -auto providerИтогиДля первоначальной настройки ppp необходимо пройти следующие
шаги:Сторона клиента:Убедитесь, что устройство tun
встроено в ядро.Убедитесь, что устройства
tunN
находятся в каталоге /dev.Создайте запись в
/etc/ppp/ppp.conf. Пример
pmdemand должен подойти для большинства
провайдеров.Если у вас динамический IP адрес, создайте запись в
/etc/ppp/ppp.linkup.Обновите файл /etc/rc.conf.Создайте скрипт start_if.tun0,
если необходим дозвон по требованию.Сторона сервера:Убедитесь, что устройство tun
встроено в ядро.Убедитесь, что устройства
tunN
находятся в каталоге /dev.Создайте запись в /etc/passwd
(используя программу &man.vipw.8;).Создайте профиль в домашнем каталоге пользователя,
запускающий ppp -direct direct-server
или подобную команду.Создайте запись в
/etc/ppp/ppp.conf. Пример
direct-server должен подойти.Создайте запись в
/etc/ppp/ppp.linkup.Обновите файл /etc/rc.conf.Gennady B.SorokopudЧасти документа первоначально предоставили RobertHuffPPP уровня ядраНастройка PPP уровня ядраPPPkernel PPPПеред началом настройки PPP на вашем компьютере, убедитесь, что
pppd находится в /usr/sbin
и каталог /etc/ppp существует.pppd может работать в двух режимах:В качестве клиента — когда вы хотите
подключить компьютер к внешнему миру через последовательное
соединение PPP или модемную линию.PPPсерверВ качестве сервера — когда компьютер
подключен к сети и используется для подключения других
компьютеров через PPP.В обеих случаях вам потребуется настроить файл параметров
(/etc/ppp/options или
~/.ppprc если на вашем компьютере
более одного пользователя работают с PPP).Вам потребуется также программа для модемных/последовательных
линий (предпочтительно comms/kermit) для дозвона и установки
соединения с удаленным хостом.TrevRoydhouseОсновано на информации, предоставленной Использование pppd в качестве клиентаPPPклиентCiscoДля подключения к линии PPP терминального сервера Cisco
может использоваться следующий файл
/etc/ppp/options.crtscts # enable hardware flow control
modem # modem control line
noipdefault # remote PPP server must supply your IP address
# if the remote host does not send your IP during IPCP
# negotiation, remove this option
passive # wait for LCP packets
domain ppp.foo.com # put your domain name here
:<remote_ip> # put the IP of remote PPP host here
# it will be used to route packets via PPP link
# if you didn't specified the noipdefault option
# change this line to <local_ip>:<remote_ip>
defaultroute # put this if you want that PPP server will be your
# default routerДля подключения:kermitмодемДозвонитесь на удаленный хост, используя
kermit (или любую другую модемную
программу), и введите ваше имя пользователя и пароль (или
те данные, которые требуются для установления PPP соединения
с удаленным хостом).Выйдите из kermit (без
обрыва соединения).Введите следующее:&prompt.root; /usr/src/usr.sbin/pppd.new/pppd /dev/tty0119200Убедитесь, что выбраны подходящая скорость и правильное имя
устройства.Теперь ваш компьютер подключен по PPP. Если соединение не
состоялось, вы можете добавить параметр
к файлу /etc/ppp/options, и отследить
проблему по сообщениям на консоли.Следующий скрипт /etc/ppp/pppup проведет все
3 стадии в автоматическом режиме:#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
ifconfig ppp0 down
ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.dial
pppd /dev/tty01 19200kermit/etc/ppp/kermit.dial это скрипт
kermit, который дозванивается до
удаленного хоста и проходит необходимую авторизацию (пример
такого скрипта находится в конце этого раздела).Используйте следующий скрипт /etc/ppp/pppdown
для отключения от PPP линии:#!/bin/sh
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ X${pid} != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill -TERM ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
/sbin/ifconfig ppp0 down
/sbin/ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.hup
/etc/ppp/ppptestПроверьте, запущен ли еще pppd,
выполнив /usr/etc/ppp/ppptest, который выглядит
примерно так:#!/bin/sh
pid=`ps ax| grep pppd |grep -v grep|awk '{print $1;}'`
if [ X${pid} != "X" ] ; then
echo 'pppd running: PID=' ${pid-NONE}
else
echo 'No pppd running.'
fi
set -x
netstat -n -I ppp0
ifconfig ppp0Для обрыва соединения, выполните
/etc/ppp/kermit.hup, который должен
содержать:set line /dev/tty01 ; put your modem device here
set speed 19200
set file type binary
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
pau 1
out +++
inp 5 OK
out ATH0\13
echo \13
exitСуществует альтернативный метод, использующий
chat вместо kermit:Для установления соединения pppdдостаточно
двух файлов./etc/ppp/options:/dev/cuaa1 115200
crtscts # enable hardware flow control
modem # modem control line
connect "/usr/bin/chat -f /etc/ppp/login.chat.script"
noipdefault # remote PPP serve must supply your IP address
# if the remote host doesn't send your IP during
# IPCP negotiation, remove this option
passive # wait for LCP packets
domain <your.domain> # put your domain name here
: # put the IP of remote PPP host here
# it will be used to route packets via PPP link
# if you didn't specified the noipdefault option
# change this line to <local_ip>:<remote_ip>
defaultroute # put this if you want that PPP server will be
# your default router/etc/ppp/login.chat.script:Все это может быть расположено на одной строке.ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDT<phone.number>
CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: <login-id>
TIMEOUT 5 sword: <password>Как только эти файлы будут созданы и отредактированы, необходимо
только запустить pppd, вот так:&prompt.root; pppdИспользование pppd в качестве сервера/etc/ppp/options должен содержать примерно
следующее:crtscts # Hardware flow control
netmask 255.255.255.0 # netmask (not required)
192.114.208.20:192.114.208.165 # IP's of local and remote hosts
# local ip must be different from one
- # you assigned to the ethernet (or other)
+ # you assigned to the Ethernet (or other)
# interface on your machine.
# remote IP is IP address that will be
# assigned to the remote machine
domain ppp.foo.com # your domain
passive # wait for LCP
modem # modem lineСледующий скрипт /etc/ppp/pppserv
укажет pppd работать в качестве
сервера:#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
# reset ppp interface
ifconfig ppp0 down
ifconfig ppp0 delete
# enable autoanswer mode
kermit -y /etc/ppp/kermit.ans
# run ppp
pppd /dev/tty01 19200Используйте этот скрипт /etc/ppp/pppservdown
для остановки сервера:#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
ifconfig ppp0 down
ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.noansСледующий kermit скрипт
(/etc/ppp/kermit.ans) включит/отключит
режим ответа модема на входящие звонки. Он должен выглядеть
примерно так:set line /dev/tty01
set speed 19200
set file type binary
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
pau 1
out +++
inp 5 OK
out ATH0\13
inp 5 OK
echo \13
out ATS0=1\13 ; change this to out ATS0=0\13 if you want to disable
; autoanswer mode
inp 5 OK
echo \13
exitСкрипт, называющийся /etc/ppp/kermit.dial,
используется для дозвона и аутентификации на удаленном хосте.
Вам потребуется приспособить его под собственные нужды. Поместите
ваш логин и пароль в этот скрипт; вам также потребуется изменить
операторы input в зависимости от ответов от модема и удаленного
хоста.;
; put the com line attached to the modem here:
;
set line /dev/tty01
;
; put the modem speed here:
;
set speed 19200
set file type binary ; full 8 bit file xfer
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
set modem hayes
set dial hangup off
set carrier auto ; Then SET CARRIER if necessary,
set dial display on ; Then SET DIAL if necessary,
set input echo on
set input timeout proceed
set input case ignore
def \%x 0 ; login prompt counter
goto slhup
:slcmd ; put the modem in command mode
echo Put the modem in command mode.
clear ; Clear unread characters from input buffer
pause 1
output +++ ; hayes escape sequence
input 1 OK\13\10 ; wait for OK
if success goto slhup
output \13
pause 1
output at\13
input 1 OK\13\10
if fail goto slcmd ; if modem doesn't answer OK, try again
:slhup ; hang up the phone
clear ; Clear unread characters from input buffer
pause 1
echo Hanging up the phone.
output ath0\13 ; hayes command for on hook
input 2 OK\13\10
if fail goto slcmd ; if no OK answer, put modem in command mode
:sldial ; dial the number
pause 1
echo Dialing.
output atdt9,550311\13\10 ; put phone number here
assign \%x 0 ; zero the time counter
:look
clear ; Clear unread characters from input buffer
increment \%x ; Count the seconds
input 1 {CONNECT }
if success goto sllogin
reinput 1 {NO CARRIER\13\10}
if success goto sldial
reinput 1 {NO DIALTONE\13\10}
if success goto slnodial
reinput 1 {\255}
if success goto slhup
reinput 1 {\127}
if success goto slhup
if < \%x 60 goto look
else goto slhup
:sllogin ; login
assign \%x 0 ; zero the time counter
pause 1
echo Looking for login prompt.
:slloop
increment \%x ; Count the seconds
clear ; Clear unread characters from input buffer
output \13
;
; put your expected login prompt here:
;
input 1 {Username: }
if success goto sluid
reinput 1 {\255}
if success goto slhup
reinput 1 {\127}
if success goto slhup
if < \%x 10 goto slloop ; try 10 times to get a login prompt
else goto slhup ; hang up and start again if 10 failures
:sluid
;
; put your userid here:
;
output ppp-login\13
input 1 {Password: }
;
; put your password here:
;
output ppp-password\13
input 1 {Entering SLIP mode.}
echo
quit
:slnodial
echo \7No dialtone. Check the telephone line!\7
exit 1
; local variables:
; mode: csh
; comment-start: "; "
; comment-start-skip: "; "
; end:TomRhodesПредоставил Решение проблем с соединениями PPPPPPрешение проблемЭтот раздел охватывает несколько вопросов, которые могут
возникнуть при использовании PPP через модемные соединения.
Например, предположим, что вам потребовалось узнать, какое
именно приглашение отображает система, до которой вы дозваниваетесь.
Некоторые провайдеры выдают приглашение ssword,
другие password; если ppp
скрипт не обрабатывает такие приглашения, попытка входа
завершится неудачно. Наиболее общий способ отладки
соединений ppp это подключение вручную.
Ниже дана пошаговая информация по подключению вручную.Проверьте файлы устройствЕсли вы пересобирали ядро, проверьте устройство
sio. Если вы не перенастраивали ядро,
нет причин для беспокойства. Просто проверьте вывод
dmesg для модемного устройства следующей
командой:&prompt.root;dmesg | grep sioВы должны получить информацию о устройствах
sio. Это COM порты, которые нам
необходимы. Если ваш модем работает как стандартный
последовательный порт, вы увидите его на
- sio1, или COM2. Если это так,
+ sio1, или COM2.
+ Если это так,
вам не требуется пересобирать ядро, необходимо лишь создать
последовательное устройство. Вы можете сделать это, зайдя в
/dev и запустив скрипт
MAKEDEV. Создайте последовательные
устройства:&prompt.root; sh MAKEDEV cuaa0 cuaa1 cuaa2 cuaa3Если модем находится на sio1,
- или COM2 в DOS, модемным устройством
- будет /dev/cuaa1.
+ или COM2 в DOS, модемным устройством
+ будет /dev/cuaa1.
Подключение вручнуюПодключение к интернет с контролированием ppp
вручную это быстрый, легкий и действенный способ отладки
соединения или получения информации о обслуживании
провайдером клиентского соединения ppp.
Запустите PPP из командной строки.
В примерах в качестве имени хоста мы будем использовать
example. Запустите ppp,
введя команду ppp:&prompt.root; pppТеперь программа ppp запущена.
- ppp ON example> set device /dev/cuaa1
+ ppp ON example> set device /dev/cuaa1Мы указали модемное устройство, в данном случае
cuaa1.ppp ON example> set speed 115200Мы установили скорость подключения к модему, в данном случае
115,200 кбит/с.ppp ON example> enable dnsСообщает ppp настроить разрешение имен,
добавив строки в /etc/resolv.conf.
Если ppp не может определить имя хоста,
его можно настроить позже вручную.ppp ON example> termПереключение в терминальный режим для контроля
модема вручную.
- deflink: Entering terminal mode on /dev/cuaa1
+ deflink: Entering terminal mode on /dev/cuaa1
type '~h' for helpat
- OK
- atdt123456789
+OK
+atdt123456789Использование команды at для инициализации
модема, а затем atdt и номера провайдера
для начала дозвона.CONNECTПодтверждение соединения, если есть проблемы с соединением,
не вызванные проблемами в оборудовании, здесь мы попытаемся решить
их.ISP Login:myusernameЗдесь вам предлагается ввести имя пользователя в приглашение,
выводимое сервером провайдера.ISP Pass:mypasswordЗдесь предлагается ввести пароль, предоставленный провайдером.
Как и при входе в &os;, пароль не отображается.Shell or PPP:pppВ зависимости от вашего провайдера, это приглашение может не
появиться. Здесь задается вопрос, хотите ли вы использовать
оболочку на компьютере провайдера или запустить
ppp. В этом примере мы выбрали
ppp, поскольку хотим соединиться с
интернет.Ppp ON example>Обратите внимание, что в этом примере первая буква
появилась в верхнем регистре. Это означает, что
мы успешно подключились к провайдеру.PPp ON example>Мы успешно аутентифицировались у провайдера и ожидаем
присвоения IP адреса.PPP ON example>Мы завершили согласование IP адресов,
соединение успешно установлено.PPP ON example>add default HISADDRЭто маршрут по умолчанию, его необходимо настроить, чтобы
сделать возможной связь с внешним миром, поскольку на этот
момент установлена связь только с удаленной стороной.
Если маршрут не устанавливается из-за уже существующего маршрута,
добавьте символ ! перед .
Альтернативно вы можете сделать настройку перед установкой
соединения.Если все прошло удачно, на данный момент должно работать
соединение с интернет, которое можно поместить в фоновый режим
клавишами CTRLz. Переход строки
PPP в приглашении в нижний регистр
(ppp) означает, что соединение было разорвано.
Таким образом, символы P в верхнем регистре означают наличие
соединения, а в нижнем — потерю соединения.ОтладкаЕсли у вас выделенная линия и нет необходимости устанавливать
соединение, выключите контроль передачи данных
CTS/RTS командой . Это обычно необходимо при подключении к
поддерживающим PPP терминальным
серверам, когда PPP прерывается
при попытке записать данные в ваше соединение, и ожидает сигнала
CTS, или Clear To Send, который не появляется.
Если вы используете этот параметр, используйте также параметр
, который может быть необходим для
устранения зависимости от оборудования путем пропускания
определенных символов через соединение, обычно XON/XOFF.
Обратитесь к странице справочника &man.ppp.8; за более подробной
информацией по этому параметру и его использованию.Если у вас старый модем, может потребоваться использование
. Проверка четности по умолчанию
отключена, но она используется для для устранения ошибок
(с серьезным увеличением объема трафика) на старых модемах
и у некоторых провайдеров.PPP может не вернуться в командный
режим, что обычно вызвано ошибкой согласования, когда провайдер
ждет от вас начала процесса согласования. В этот момент
использование команды ~p заставит ppp
начать отправку настроечной информации.Если вы не получаете приглашения на вход, скорее всего
вам требуется использование аутентификации
PAP или CHAP вместо
&unix; стиля как в примерах выше. Для использования
PAP или CHAP просто добавьте
следующие параметры PPP перед
переходом в терминальный режим:ppp ON example> set authname myusernameНеобходимо заменить myusername
на имя пользователя, выданное провайдером.ppp ON example> set authkey mypasswordГде mypassword должен быть
заменен на пароль, выданный провайдером.Если вы подключаетесь, не можете определить ни одно доменное
имя, попробуйте использовать &man.ping.8; с каким-либо
IP адресом и просмотрите выводимую информацию.
Если 100 процентов (100%) пакетов теряются, скорее всего не
назначен маршрут по умолчанию. Дважды проверьте, что параметр
установлен во время
соединения. Если вы можете подключиться к удаленному
IP адресу, возможно, что адрес сервера имен не
был добавлен в /etc/resolv.conf.
Этот файл должен выглядеть примерно так:domain example.com
nameserver x.x.x.x
nameserver y.y.y.yГде x.x.x.x и
y.y.y.y должны быть заменены на
IP адреса DNS серверов провайдера.
Эта информация может предоставляться провайдером,
вы можете выяснить это в службе поддержки.Вы можете также настроить &man.syslog.3; для протоколирования
PPP соединения. Просто добавьте:!ppp
*.* /var/log/ppp.logв файл /etc/syslog.conf. В большинстве
случаев эти строки уже присутствуют.JimMockПредоставил (с http://node.to/freebsd/how-tos/how-to-freebsd-pppoe.html) Использование PPP через Ethernet (PPPoE)PPPчерез EthernetPPPoEPPP, через EthernetЭтот раздел описывает настройку PPP через Ethernet (PPP over
Ethernet, PPPoE).Настройка ядраДля PPPoE более не требуется настройка ядра. Если необходимая
поддержка netgraph не встроена в ядро, она будет динамически загружена
ppp.Настройка ppp.confВот пример работающего
ppp.conf:default:
set log Phase tun command # you can add more detailed logging if you wish
set ifaddr 10.0.0.1/0 10.0.0.2/0
name_of_service_provider:
- set device PPPoE:xl1 # replace xl1 with your ethernet device
+ set device PPPoE:xl1 # replace xl1 with your Ethernet device
set authname YOURLOGINNAME
set authkey YOURPASSWORD
set dial
set login
add default HISADDRЗапуск pppПод пользователем root вы можете
запустить:&prompt.root; ppp -ddial name_of_service_providerЗапуск ppp при загрузкеДобавьте к /etc/rc.conf следующее:ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES" # if you want to enable nat for your local network, otherwise NO
ppp_profile="name_of_service_provider"Использование тега сервиса PPPoEИногда для установки соединения необходимо использовать тег
сервиса. Теги сервисов используются для различения
PPPoE серверов, подключенных к одной сети.В документации, предоставляемой провайдером, должна находиться
необходимая информация о теге сервиса. Если вы не можете
ее обнаружить, обратитесь в службу поддержки.В крайнем случае, вы можете попробовать метод, предложенный в
программе Roaring
Penguin PPPoE, которая находится в коллекции портов. Учтите, что этот
метод может сделать ваш модем неработоспособным, так что дважды
подумайте перед тем, как воспользоваться им. Просто установите
программу, поставляемую с модемом вашим провайдером. Затем,
войдите в меню System программы. Имя вашего
профиля должно находиться здесь. Обычно это
ISP.Имя профиля (тег сервиса) будет использоваться в записи
настройки PPPoE в файле ppp.conf
(часть команды set device, относящаяся к
провайдеру). Обратитесь к странице справочника &man.ppp.8;
за более подробной информацией. Эта команда должна выглядеть
примерно так:set device PPPoE:xl1:ISPНе забудьте изменить xl1 на имя
устройства вашей Ethernet карты.Не забудьте изменить ISP на
профиль, определенный вами ранее.Дополнительная информация:Cheaper
Broadband with FreeBSD on DSL, опубликовал Renaud
Waldura.
Nutzung von T-DSL und T-Online mit FreeBSD
by Udo Erdelhoff (на немецком).PPPoE c &tm.3com; HomeConnect ADSL Modem Dual LinkЭтот модем не поддерживает RFC 2516
(Метод соединения PPP через Ethernet
(PPPoE), написанный L. Mamakos, K. Lidl, J. Evarts,
D. Carrel, D. Simone, и R. Wheeler). Вместо этого, для
фреймов Ethernet используются различные коды типов пакетов.
Сообщите 3Com если
считаете, что они должны соблюдать спецификации PPPoE.Для включения поддержки этого нестандартного устройства, в FreeBSD
необходимо установить переменную sysctl. Это может быть сделано
автоматически, поместите в
/etc/sysctl.conf следующую переменную:net.graph.nonstandard_pppoe=1или, для непосредственного включения, выполните команду
sysctl net.graph.nonstandard_pppoe=1.К сожалению, поскольку эта настройка влияет на всю систему,
невозможно одновременно взаимодействовать с нормальным PPPoE
клиентом или сервером и &tm.3com; HomeConnect ADSL Modem.Использование PPP через ATM
(PPPoA)PPPчерез ATMPPPoAPPP, через ATMДалее описано как настроить PPP через ATM (PPP over ATM, PPPoA).
PPPoA популярен у европейских провайдеров DSL.Использование PPPoA с Alcatel &speedtouch; USBПоддержка PPPoA для этого устройства в FreeBSD поставляется в
виде порта, поскольку встроенное программное обеспечение поставляется
под лицензионным
соглашением Alcatel и не может свободно распространяться с
основной системой FreeBSD.Для установки этой программы, просто используйте
коллекцию портов. Установите
порт net/pppoa и следуйте
инструкциям.Как и многие устройства USB, Alcatel &speedtouch; USB должен
загрузить встроенное программное обеспечение с компьютера.
Возможна автоматизация этого процесса в &os;, чтобы эта
передача происходила при подключении устройства к порту USB.
Для включения этой автоматической передачи необходимо добавить
в /etc/usbd.conf нижеприведенную информацию.
Этот файл необходимо отредактировать под пользователем
root.device "Alcatel SpeedTouch USB"
devname "ugen[0-9]+"
vendor 0x06b9
product 0x4061
attach "/usr/local/sbin/modem_run -f /usr/local/libdata/mgmt.o"Для включения даемона USB, usbd,
поместите в /etc/rc.conf следующую строку:usbd_enable="YES"Возможна также настройка
ppp для дозвона при запуске. Для этого
добавьте в /etc/rc.conf нижеприведенные строки.
Опять же, для этого вам необходимо войти под пользователем
root.ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="adsl"Необходимо также использовать пример файла
ppp.conf, поставляемый с портом
net/pppoa.Использование mpdВы можете использовать mpd для
подключения к различным сервисам, в частности к сервисам PPTP.
Вы можете найти mpd в коллекции
портов, net/mpd.
Многие ADSL модемы требуют, чтобы PPTP туннель был создан между
модемом и компьютером, один из таких модемов это Alcatel
&speedtouch; Home.Сначала установите порт, затем настройте
mpd под собственные нужды и настройки
провайдера. Порт помещает набор примеров настройки в каталог
PREFIX/etc/mpd/.
PREFIX означает каталог, в который
устанавливаются порты, по умолчанию это
/usr/local/. Полное руководство по настройке
mpd доступно в HTML формате после
установки порта. Оно находится в
PREFIX/share/doc/mpd/.
Ниже находится пример настройки mpd
для соединения с ADSL сервисом. Настройка разделена на два
файла, первый это mpd.conf:default:
load adsl
adsl:
new -i ng0 adsl adsl
set bundle authname username
set bundle password password
set bundle disable multilink
set link no pap acfcomp protocomp
set link disable chap
set link accept chap
set link keep-alive 30 10
set ipcp no vjcomp
set ipcp ranges 0.0.0.0/0 0.0.0.0/0
set iface route default
set iface disable on-demand
set iface enable proxy-arp
set iface idle 0
openИмя пользователя, используемое для аутентификации у
провайдера.Пароль, используемый для аутентификации у
провайдера.Файл mpd.links содержит информацию о соединении
или соединениях, которые вы планируете установить. Пример
mpd.links, соответствующий приведенному выше
примеру:adsl:
set link type pptp
set pptp mode active
set pptp enable originate outcall
set pptp self 10.0.0.1
set pptp peer 10.0.0.138IP адрес компьютера &os;, с которого вы будете использовать
mpd.IP адрес модема ADSL. Для Alcatel
&speedtouch; Home этот адрес по умолчанию 10.0.0.138.Инициализация соединения возможно простым выполнением следующей
команды под root:&prompt.root; mpd -b adslВы можете просмотреть статус соединения с помощью следующей
команды:&prompt.user; ifconfig ng0
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500
inet 216.136.204.117 --> 204.152.186.171 netmask 0xffffffffИспользование mpd это рекомендуемый
способ подключения к сервису ADSL из &os;.Использование pptpclientВозможно также использование FreeBSD для подключения к сервисам
PPPoA с помощью
net/pptpclient.Для подключения к сервису DSL с использованием net/pptpclient, установите порт или
пакет и отредактируйте /etc/ppp/ppp.conf.
Вам потребуется работать под root.
Пример настройки ppp.conf дан ниже.
За дальнейшей информацией по параметрам ppp.conf
обратитесь к странице справочника ppp,
&man.ppp.8;.adsl:
set log phase chat lcp ipcp ccp tun command
set timeout 0
enable dns
set authname username
set authkey password
set ifaddr 0 0
add default HISADDRИмя пользователя вашей учетной записи у провайдера DSL.Пароль для вашей учетной записи.Поскольку вам необходимо поместить пароль в незашифрованном виде в
файл ppp.conf, убедитесь что никто другой не
сможет прочесть содержимое этого файла. Следующая последовательность
команд сделает этот файл доступным для чтения только пользователю
root. Обратитесь к страницам справочника
&man.chmod.1; и &man.chown.8; за дальнейшей информацией.&prompt.root; chown root:wheel /etc/ppp/ppp.conf
&prompt.root; chmod 600 /etc/ppp/ppp.confСледующая команда откроет туннель для PPP сессии к вашему
DSL маршрутизатору. Модемы Ethernet DSL поставляются с настроенным
IP адресом локальной сети, к которому вы подключаетесь. У
Alcatel &speedtouch; Home этот адрес 10.0.0.138. В документации на ваш
маршрутизатор должно быть указано, какой адрес используется.
Для открытия туннеля и начала PPP сессии выполните:&prompt.root; pptp addressadslЧтобы вернуться в приглашение командной строки после выполнения
этой команды, добавьте символ & в конец
строки.Устройство виртуального туннеля tun
будет создано для взаимодействия между процессами
pptp и ppp.
Как только вы вернетесь в приглашение, или процесс
pptp выполнит соединение, вы можете
проверить туннель примерно такой командой:&prompt.user; ifconfig tun0
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00
Opened by PID 918Если вы не сможете соединиться, проверьте настройку
маршрутизатора, которая обычно доступна через
telnet или через веб браузер.
Если вы все еще не можете подключиться, проверьте вывод команды
pptp и содержимое лог файла
ppp,
/var/log/ppp.log.SatoshiAsamiПервоначально предоставил GuyHelmerДополнительный материал предоставили PieroSeriniИспользование SLIPSLIPНастройка SLIP клиентаSLIPклиентНиже дан один из способов настройки FreeBSD для подключения к
SLIP сети со статическим адресом. Для динамического подключения
(адрес изменяется при каждом дозвоне) возможно потребуется более
сложная настройка.Сначала определите, к какому последовательному порту подключен
модем. Многие создают символическую ссылку, такую как
- /dev/modem, на настоящий файл устройства,
- /dev/cuaaN. Это позволяет абстрагироваться
+ /dev/modem, на настоящий файл устройства,
+ /dev/cuaaN. Это позволяет абстрагироваться
от имени файла устройства, например если вы переносите модем
на другой порт. Довольно сложно править множество файлов в
/etc и .kermrc во
всей системе!/dev/cuaa0 это
COM1, cuaa1 это
COM2, и т.д.Убедитесь, что в вашем файле настройки ядра присутствует
строка:pseudo-device sl 1
+ В &os; 5.X, используйте вместо этой строки
+ следующую:
+
+ device sl
+
Эта строка включена в ядро GENERIC, так что
если вы ее не удаляли, проблем быть не должно.То, что необходимо сделать только один разДобавьте ваш компьютер, шлюз и сервера имен в файл
/etc/hosts. Вот пример такого
файла:127.0.0.1 localhost loghost
136.152.64.181 water.CS.Example.EDU water.CS water
136.152.64.1 inr-3.CS.Example.EDU inr-3 slip-gateway
128.32.136.9 ns1.Example.EDU ns1
128.32.136.12 ns2.Example.EDU ns2Убедитесь, что в файле /etc/host.conf
находится перед
(для FreeBSD версий до 5.0). Начиная с FreeBSD 5.0,
система использует файл /etc/nsswitch.conf,
убедитесь, что параметр находится перед
в строке этого
файла. Без этого параметра могут происходить странные
вещи.Отредактируйте файл /etc/rc.conf.Установите имя хоста, настроив переменную
hostname:hostname="myname.my.domain"Здесь необходимо использовать полное доменное имя
вашего компьютера в интернет.Добавьте sl0 к списку
сетевых интерфейсов, изменив переменную:network_interfaces="lo0"на:network_interfaces="lo0 sl0"Измените параметры sl0,
добавив строку:ifconfig_sl0="inet ${hostname} slip-gateway netmask 0xffffff00 up"маршрут по умолчаниюНазначьте маршрутизатор по умолчанию, изменив
строку:defaultrouter="NO"на:defaultrouter="slip-gateway"Создайте файл /etc/resolv.conf,
содержащий:domain CS.Example.EDU
nameserver 128.32.136.9
nameserver 128.32.136.12сервер именимя доменаКак вы видите, здесь указаны адреса серверов имен.
Конечно, реальные имена доменов и адреса для вас будут
другими.Перегрузите компьютер и убедитесь, что его имя хоста
настроено правильно.Создание SLIP соединенияSLIPсоединениеДозвонитесь на удаленный сервер, введите
slip в приглашение, имя своего компьютера
и пароль. Все, что требуется ввести в вашем случае.
Если вы используете kermit, попробуйте такой скрипт:# kermit setup
set modem hayes
set line /dev/modem
set speed 115200
set parity none
set flow rts/cts
set terminal bytesize 8
set file type binary
# The next macro will dial up and login
define slip dial 643-9600, input 10 =>, if failure stop, -
output slip\x0d, input 10 Username:, if failure stop, -
output silvia\x0d, input 10 Password:, if failure stop, -
output ***\x0d, echo \x0aCONNECTED\x0aКонечно, вам потребуется заменить имя хоста и пароль на ваши
собственные. После этого, для подключения просто введите
slip из приглашения kermit.Хранение пароля в любом месте файловой системы в
незашифрованном виде это обычно плохая идея. Вы делаете
это на свой риск.Выйдите из kermit (вы можете приостановить его, нажав
Ctrlz) и введите под root:&prompt.root; slattach -h -c -s 115200 /dev/modemЕсли вы сможете выполнить ping
для хостов по другую сторону маршрутизатора, вы подключились!
Если это не работает, попробуйте параметр
slattach вместо
.Как прервать соединение:Сделайте следующее:&prompt.root; kill -INT `cat /var/run/slattach.modem.pid`для остановки slattach. Помните, что вы
должны работать под root для выполнения этой
команды. Затем вернитесь в kermit (запустив fg,
если он приостановлен) и выйдите из него
(q).Страница справочника slattach сообщает,
что для отключения интерфейса необходимо использовать
ifconfig sl0 down, но это похоже не
играет никакой роли. (ifconfig sl0 сообщает
о том же.)Иногда модем может не сбросить соединение (это бывает
довольно часто). В этом случае просто запустите kermit
и выйдите из него еще раз. При второй попытке соединение обычно
разрывается.Решение проблемВот наиболее часто встречающиеся ситуации:Не используются параметры slattach
или (это может
быть не фатально, но иногда вызывает проблемы.)Используется вместо
(с некоторыми шрифтами сложно увидеть
разницу).Попробуйте использовать ifconfig sl0
для просмотра статуса интерфейса. Например, вы можете
получить такую информацию:&prompt.root; ifconfig sl0
sl0: flags=10<POINTOPOINT>
inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00Если вы получите сообщение
no route to host от команды
ping, возможно это проблема с таблицей маршрутизации.
Используйте команду netstat -r для
отображения существующих маршрутов:&prompt.root; netstat -r
Routing tables
Destination Gateway Flags Refs Use IfaceMTU Rtt Netmasks:
(root node)
(root node)
Route Tree for Protocol Family inet:
(root node) =>
default inr-3.Example.EDU UG 8 224515 sl0 - -
localhost.Exampl localhost.Example. UH 5 42127 lo0 - 0.438
inr-3.Example.ED water.CS.Example.E UH 1 0 sl0 - -
water.CS.Example localhost.Example. UGH 34 47641234 lo0 - 0.438
(root node)Предыдущий пример получен на относительно загруженной
системе. Числа в вашей системе будут сильно зависеть от
загрузки сети.Настройка SLIP сервераSLIPсерверЭтот документ предоставляет решение для настройки SLIP сервера
в системе FreeBSD, что обычно означает настройку системы для
автоматического запуска соединений при удаленном входе SLIP
клиентов.Предварительные требованиясеть TCP/IPИнформация в этом разделе чисто техническая, поэтому требуются
некоторые предварительные знания. Предполагается, что вы знакомы
с сетевым протоколом TCP/IP, и в частности, с адресацией
сетей и хостов, сетевыми масками, делением на подсети,
маршрутизацией и протоколами маршрутизации, такими как RIP.
Настройка SLIP сервисов на сервере удаленного доступа требует
знания этих концепций, и если вы не знакомы с ними,
прочтите или книгу TCP/IP Network Administration
от Craig Hunt, опубликованную O'Reilly & Associates, Inc.
(ISBN Number 0-937175-82-X), или книги Douglas Comer по
протоколу TCP/IP.модемВ дальнейшем предполагается, что вы уже настроили ваш модем
(модемы) и настроили соответствующие системные файлы для
разрешения входа через них. Если вы еще не подготовили систему
соответствующим образом, обратитесь к руководству по настройке
сервисов удаленного входа; просмотрите список руководств
на http://www.FreeBSD.org/ru/.
+ url="&url.base;/ru/docs.html">http://www.FreeBSD.org/ru/docs.html.
Вы можете также обратиться к странице справочника &man.sio.4;
за информацией о драйвере последовательного порта и к
страницам &man.gettytab.5;, &man.getty.8; и &man.init.8;
за информацией по настройке системы для удаленного входа в систему
через модемы, и возможно &man.stty.1; за информацией о настройке
параметров последовательных портов (таких как
clocal для подключаемых непосредственно
последовательных интерфейсов).Краткий обзорВ типичной конфигурации FreeBSD работает в качестве SLIP сервера
так: пользователь SLIP дозванивается на FreeBSD SLIP сервер и
входит в систему со специальным SLIP логином, использующим
/usr/sbin/sliplogin в качестве оболочки.
Программа sliplogin просматривает файл
/etc/sliphome/slip.hosts на предмет строки,
соответствующей специальному пользователю, и если находит совпадение,
подключает последовательную линию к доступному SLIP интерфейсу,
а затем запускает shell скрипт
/etc/sliphome/slip.login для настройки
SLIP интерфейса.Пример входа на SLIP серверНапример, идентификатор пользователя на SLIP сервере
Shelmerg. Соответствующая запись
в /etc/master.passwd будет выглядеть
примерно так:Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliploginКогда Shelmerg входит в систему,
sliplogin ищет строку в
/etc/sliphome/slip.hosts, в которой
находится соответствующий идентификатор пользователя;
например, строка может быть такой:Shelmerg dc-slip sl-helmer 0xfffffc00 autocompПосле обнаружения этой строки sliplogin
подключает последовательную линию к следующему доступному
SLIP интерфейсу, а затем выполняет
/etc/sliphome/slip.login примерно так:/etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocompЕсли все проходит нормально,
/etc/sliphome/slip.login вызовет
ifconfig для SLIP интерфейса, к которому
подключилась программа sliplogin (slip
интерфейс 0 в примере выше, первый параметр в списке,
задаваемом slip.login) для установки
локального IP адреса ((dc-slip), удаленного
IP адреса (sl-helmer), сетевой маски для
SLIP интерфейса (0xfffffc00),
и любых дополнительных флагов (autocomp).
Если что-то идет не так, sliplogin
обычно протоколирует соответствующие сообщения в через
уровень daemon syslog; эти сообщения
как правило попадают в /var/log/messages
(обратитесь к страницам справочника &man.syslogd.8; и
&man.syslog.conf.5;, а также проверьте файл
/etc/syslog.conf, чтобы выяснить, что
протоколирует syslogd и куда помещается
информация).Достаточно примеров — давайте начнем настройку
системы.Настройка ядраядронастройкаСтандартное ядро FreeBSD обычно поставляется с двумя
SLIP интерфейсами ((sl0 и
sl1); вы можете использовать команду
netstat -i, чтобы выяснить, определены ли
эти интерфейсы в вашем ядре.Пример вывода netstat -i:Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll
ed0 1500 <Link>0.0.c0.2c.5f.4a 291311 0 174209 0 133
ed0 1500 138.247.224 ivory 291311 0 174209 0 133
lo0 65535 <Link> 79 0 79 0 0
lo0 65535 loop localhost 79 0 79 0 0
sl0* 296 <Link> 0 0 0 0 0
sl1* 296 <Link> 0 0 0 0 0Наличие в выводе netstat -i
интерфейсов sl0 и
sl1 означает, что SLIP интерфейсы встроены
в ядро (символ * показывает неактивность
интерфейсов).Ядро FreeBSD по умолчанию не пересылает пакеты между
интерфейсами (компьютер FreeBSD не работает как маршрутизатор),
вследствие требований RFC (см.
RFCs 1009 [Requirements for Internet Gateways], 1122
[Requirements for Internet Hosts — Communication Layers],
и возможно 1127 [A Perspective on the Host Requirements RFCs]).
Если вы хотите, чтобы FreeBSD SLIP работал в качестве
маршрутизатора, отредактируйте файл
/etc/rc.conf и присвойте переменной
gateway_enable значение
.Для вступления изменений в силу потребуется перезагрузка.В файле настройки стандартного ядра
(/sys/i386/conf/GENERIC)
находится строка:pseudo-device sl 2SLIPОна определяет число доступных устройств SLIP в ядре;
Число в конце строки определяет максимально возможное количество
одновременных SLIP соединений.Обратитесь к за информацией
по настройке ядра FreeBSD.Настройка sliploginКак упоминалось ранее, в каталоге
/etc/sliphome находятся три файла,
являющиеся частью настройки для
/usr/sbin/sliplogin (для
sliplogin существует страница справочника,
&man.sliplogin.8;): slip.hosts,
определяющий список пользователей SLIP и связанные с ними
IP адреса; slip.login, который обычно
всего лишь настраивает SLIP интерфейс;
slip.logout, который восстанавливает
состояние системы до запуска slip.login
после завершения последовательного соединения.Настройка slip.hosts/etc/sliphome/slip.hosts содержит
строки, в которых находится как минимум четыре параметра,
разделенных пробелами:ID пользователя SLIPЛокальный адрес (локальный для SLIP сервера) SLIP
соединенияУдаленный адрес SLIP соединенияСетевая маскаЛокальные и удаленные адреса могут быть именами хостов
(разрешаемыми в IP адреса через файл
/etc/hosts или через службу доменных
имен, в зависимости от настроек в файле
/etc/nsswitch.conf для FreeBSD 5.X,
или /etc/host.conf для FreeBSD 4.X),
а сетевая маска может быть именем, разрешаемым через
файл /etc/networks. В системе,
используемой в качестве примера, файл
/etc/sliphome/slip.hosts выглядит
так:#
# login local-addr remote-addr mask opt1 opt2
# (normal,compress,noicmp)
#
Shelmerg dc-slip sl-helmerg 0xfffffc00 autocompВ конце строки находятся один или более параметров. — нет сжатия
заголовков — сжимать
заголовки — сжимать заголовки,
если удаленная сторона это позволяет — запретить ICMP пакеты
(любые ping пакеты будут отброшены и не
станут помехой для другого трафика)SLIPсеть TCP/IPВыбор локального и удаленного адреса для SLIP соединений
зависит от того, используете ли вы выделенную TCP/IP сеть,
или используете на SLIP сервере ARP прокси.
(это не настоящий ARP прокси, но данная
терминология используется в этом разделе). Если вы не уверены,
какой метод выбрать, или как присвоить IP адреса, обратитесь к
книгам по TCP/IP, упомянутым выше ().
Если вы собираетесь использовать отдельную подсеть для SLIP
клиентов, потребуется выделить адреса за пределом адресов
вашей сети и присвоить каждому SLIP клиенту IP адрес из данной
подсети. Затем вам возможно потребуется настроить статический
маршрут в используемую для SLIP подсеть через SLIP сервер
на ближайшем IP маршрутизаторе.EthernetИначе, если вы будете использовать метод
proxy ARP, потребуется присвоить SLIP
клиентам IP адреса, не входящие в Ethernet подсеть сервера
SLIP, а также настроить скрипты
/etc/sliphome/slip.login и
/etc/sliphome/slip.logout, чтобы использовать
&man.arp.8; для управления записями ARP прокси в таблице
ARP сервера SLIP.Настройка slip.loginТипичный файл /etc/sliphome/slip.login
выглядит примерно так:#!/bin/sh -
#
# @(#)slip.login 5.1 (Berkeley) 7/1/90
#
# generic login file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6Этот файл slip.login всего лишь
запускает ifconfig для соответствующего
SLIP интерфейса с заданными локальным и удаленным адресом и сетевой
маской.Если вы решили использовать метод ARP прокси
(вместо использования отдельной подсети для SLIP клиентов),
ваш файл /etc/sliphome/slip.login
должен выглядеть примерно так:#!/bin/sh -
#
# @(#)slip.login 5.1 (Berkeley) 7/1/90
#
# generic login file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6
# Answer ARP requests for the SLIP client with our Ethernet addr
/usr/sbin/arp -s $5 00:11:22:33:44:55 pubДополнительная строка в этом
slip.login, arp -s
$5 00:11:22:33:44:55 pub, создает ARP запись
в ARP таблице SLIP сервера. При соединении другого узла
в Ethernet с IP адресом SLIP клиента, SLIP сервер выдает
ответ с собственным Ethernet MAC адресом.EthernetMAC адресПри использовании примера выше убедитесь, что заменили
Ethernet MAC адрес (00:11:22:33:44:55) на MAC адрес
Ethernet карты вашей системы, или ваш ARP прокси
точно не будет работать! Вы можете определить Ethernet MAC
адрес SLIP сервера, просмотрев вывод команды netstat
-i выше; информация об адресе находится второй
строке:ed0 1500 <Link>0.2.c1.28.5f.4a 191923 0 129457 0 116Это означает, что в данной системе Ethernet MAC адрес
00:02:c1:28:5f:4a —
точки в MAC адресе, выдаваемые netstat -i,
должны быть заменены на двоеточия, необходимо также добавить
нуль в начало каждого односимвольного шестнадцатеричного номера
для преобразования этого адреса в форму, пригодную для
&man.arp.8;; обратитесь к странице справочника &man.arp.8;
за полной информацией по использованию.При создании
/etc/sliphome/slip.login и
/etc/sliphome/slip.logout, должен быть
установлен бит выполнения (chmod 755
/etc/sliphome/slip.login /etc/sliphome/slip.logout),
или sliplogin не сможет их выполнить.Настройка slip.logout/etc/sliphome/slip.logout не является
совершенно необходимым (если только вы не реализуете
ARP прокси), но если вы решили создать его,
воспользуйтесь следующим примером:#!/bin/sh -
#
# slip.logout
#
# logout file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 downЕсли вы используете ARP прокси, потребуется
удаление записи ARP для SLIP клиента через
/etc/sliphome/slip.logout:#!/bin/sh -
#
# @(#)slip.logout
#
# logout file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 down
# Quit answering ARP requests for the SLIP client
/usr/sbin/arp -d $5Команда arp -d $5 удаляет запись ARP,
добавленную slip.login при входе
SLIP клиента.Повторяем: убедитесь, что на файл
/etc/sliphome/slip.logout установлен
бит выполнения (chmod 755
/etc/sliphome/slip.logout).Соглашения о маршрутизацииSLIPмаршрутизацияЕсли вы не используете ARP прокси метод для
маршрутизации пакетов между SLIP клиентами и остальной сетью
(и возможно интернет), вам возможно потребуется статический
маршрут (маршруты) до ближайшего шлюза (шлюзов) для
маршрутизации подсети SLIP клиентов через SLIP сервер.Статические маршрутыстатические маршрутыДобавление статических маршрутов может стать для кого-то
проблемой (это даже невозможно, если у вас нет соответствующих
прав). Если в вашей организации сеть с несколькими
маршрутизаторами, некоторые маршрутизаторы, например
Cisco и Proteon, требуют не только настройки статического маршрута
в подсеть SLIP, но и указания, о каких статических маршрутах
сообщать другим маршрутизаторам, так что для наладки
работоспособности статической маршрутизации может
потребоваться некоторое исследование и отладка.Запуск &gated;gated&gated; это закрытое программно
обеспечение, более недоступное в исходных текстах
(дополнительная информация находится на вебсайте &gated;). Этот раздел
существует лишь в целях обратной совместимости для тех,
кто все еще использует старую версию.Альтернатива головной боли со статическими маршрутами это
установка &gated; на FreeBSD SLIP
сервере и настройка его для использования соответствующих
протоколов маршрутизации (RIP/OSPF/BGP/EGP) для сообщения
другим маршрутизаторам о вашей SLIP подсети.
Вам потребуется создать /etc/gated.conf
для настройки gated. Ниже дан пример:#
# gated configuration file for dc.dsu.edu; for gated version 3.5alpha5
# Only broadcast RIP information for xxx.xxx.yy out the ed Ethernet interface
#
#
# tracing options
#
traceoptions "/var/tmp/gated.output" replace size 100k files 2 general ;
rip yes {
interface sl noripout noripin ;
interface ed ripin ripout version 1 ;
traceoptions route ;
} ;
#
# Turn on a bunch of tracing info for the interface to the kernel:
kernel {
traceoptions remnants request routes info interface ;
} ;
#
# Propagate the route to xxx.xxx.yy out the Ethernet interface via RIP
#
export proto rip interface ed {
proto direct {
xxx.xxx.yy mask 255.255.252.0 metric 1; # SLIP connections
} ;
} ;
#
# Accept routes from RIP via ed Ethernet interfaces
import proto rip interface ed {
all ;
} ;RIPВ примере выше используется широковещательная рассылка
информации о маршрутизации для подсети SLIP
xxx.xxx.yy протоколом RIP
на сеть Ethernet; если вы используете другой драйвер
Ethernet вместо ed, потребуется
соответственно изменить запись для ed.
В этом примере отладочная информация переправляется в
/var/tmp/gated.output;
вы можете выключить отладку, если
&gated; работает. Вам потребуется
заменить xxx.xxx.yy в сетевом адресе
на вашу подсеть SLIP (убедитесь, что изменение сетевой
маски в proto direct работает
нормально).Как только вы установили и настроили
&gated;, потребуется сообщить
стартовым скриптам FreeBSD запускать его вместо
routed. Простейший способ сделать
это — установить переменные router и
router_flags в
/etc/rc.conf. Обратитесь к странице
справочника &gated; за информацией
о параметрах командной строки.
diff --git a/ru_RU.KOI8-R/books/handbook/serialcomms/chapter.sgml b/ru_RU.KOI8-R/books/handbook/serialcomms/chapter.sgml
index 24f6ae111a..cc9b938872 100644
--- a/ru_RU.KOI8-R/books/handbook/serialcomms/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/serialcomms/chapter.sgml
@@ -1,2739 +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соединен с7SG
- TxD
+ TD2соединен с3
- RxD
+ RD
- RxD
+ RD3соединен с2
- TxD
+ TDRTS4соединен с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/ttydN
но также
- /dev/cuaaN,
- /dev/cuaiaN,
- /dev/cualaN,
- /dev/ttyldN,
+ /dev/cuaaN,
+ /dev/cuaiaN,
+ /dev/cualaN,
+ /dev/ttyldN,
и
- /dev/ttyidN.
+ /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 будет записано
+ устройство /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 (SD)
+ 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.
+ консоль будет на 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) и делает устройство недоступным
для обычной работы. Вы не должны использовать
этот флаг для устройства последовательного порта,
которое будет использоваться в качестве последовательной
консоли. Используйте этот флаг только если устройство
предназначено для удаленной отладки ядра. Обратитесь
к Руководству
+ url="&url.books.developers-handbook;/index.html">Руководству
для разработчиков за дополнительной информацией
по удаленной отладке.В 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 2823052b4f..acbfed0bca 100644
--- a/ru_RU.KOI8-R/books/handbook/users/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/users/chapter.sgml
@@ -1,1150 +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;.