diff --git a/ru_RU.KOI8-R/books/handbook/bibliography/chapter.sgml b/ru_RU.KOI8-R/books/handbook/bibliography/chapter.sgml
index 5a9eb048b7..9490ef8474 100644
--- a/ru_RU.KOI8-R/books/handbook/bibliography/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/bibliography/chapter.sgml
@@ -1,652 +1,661 @@
БиблиографияТак как страницы Справочника FreeBSD предоставляют лишь описание
отдельных частей операционной системы FreeBSD, они
не очень удобны для иллюстрации объединения этих частей вместе
для того, чтобы настроить ОС и сделать ее работу более гладкой.
Для этого незаменимы хорошая книга по системному администрированию
&unix; и хорошее руководство
пользователя.Книги и журналы, специализирующиеся на FreeBSDМеждународные книги и
журналы:Using FreeBSD (на китайском).FreeBSD Unleashed (перевод на китайский), опубликовано
China Machine
Press. ISBN 7-111-10201-0.
FreeBSD From Scratch First Edition (на китайском),
опубликовано China Machine Press. ISBN 7-111-07482-3.
FreeBSD From Scratch Second Edition (на китайском),
опубликовано China Machine Press. ISBN 7-111-10286-X.
FreeBSD Handbook (на китайском), опубликовано
Posts & Telecom
Press. ISBN 7-115-10541-3.
FreeBSD 3.x Internet (на китайском), опубликовано
Tsinghua
University Press. ISBN 7-900625-66-6.FreeBSD & Windows (на китайском), ISBN 7-113-03845-XFreeBSD Internet Services HOWTO (на китайском), ISBN 7-113-03423-3FreeBSD for PC 98'ers (на японском), выпущено SHUWA System
Co, LTD. ISBN 4-87966-468-5 C3055 P2900E.FreeBSD (на японском), выпущено CUTT. ISBN 4-906391-22-2
C3055 P2400E.Complete
Introduction to FreeBSD (на японском), выпущено
Shoeisha Co.,
Ltd. ISBN 4-88135-473-6 P3600E.Personal UNIX Starter Kit FreeBSD (на японском), выпущено ASCII. ISBN 4-7561-1733-3 P3000E.FreeBSD Handbook (японский перевод), выпущено ASCII. ISBN 4-7561-1580-2
P3800E.FreeBSD mit Methode (на немецком), выпущено Computer und
Literatur Verlag/Vertrieb Hanser, 1998. ISBN 3-932311-31-0.FreeBSD 4 - Installieren, Konfigurieren, Administrieren
(на немецком), выпущено Computer und Literatur Verlag, 2001.
ISBN 3-932311-88-4.FreeBSD 5 - Installieren, Konfigurieren, Administrieren
(на немецком), выпущено Computer und Literatur Verlag, 2003.
ISBN 3-936546-06-1.
FreeBSD de Luxe (на немецком), выпущено
Verlag Modere Industrie,
2003. ISBN 3-8266-1343-0.
FreeBSD Install and Utilization Manual (на японском), выпущено Mainichi Communications Inc..Onno W Purbo, Dodi Maryanto, Syahrial Hubbany, Widjil Widodo
Создание Интернет
Сервера с использованием FreeBSD (на Индонезийском языке),
выпущено Elex Media
Komputindo.Книги и журналы на английском языке:Absolute
BSD: The Ultimate Guide to FreeBSD, выпущено
No Starch Press, 2002.
ISBN: 1886411743
The Complete FreeBSD, выпущено
O'Reilly, 2003.
ISBN: 0596005164The FreeBSD
Corporate Networker's Guide, выпущено
Addison-Wesley, 2000.
ISBN: 0201704811
FreeBSD: An Open-Source Operating System for Your Personal
Computer, выпущено The Bit Tree Press, 2001.
ISBN: 0971204500Teach Yourself FreeBSD in 24 Hours, выпущено
Sams, 2002.
ISBN: 0672324245FreeBSD unleashed, выпущено
Sams, 2002.
ISBN: 0672324563FreeBSD: The Complete Reference, выпущено
McGrawHill, 2003.
ISBN: 0072224096 Руководства для пользователейComputer Systems Research Group, UC Berkeley. 4.4BSD
User's Reference Manual. O'Reilly & Associates,
Inc., 1994. ISBN 1-56592-075-9Computer Systems Research Group, UC Berkeley. 4.4BSD
User's Supplementary Documents. O'Reilly &
Associates, Inc., 1994. ISBN 1-56592-076-7UNIX in a Nutshell. O'Reilly &
Associates, Inc., 1990. ISBN 093717520XMui, Linda. What You Need To Know When You Can't Find
Your UNIX System Administrator. O'Reilly &
Associates, Inc., 1995. ISBN 1-56592-104-6Ohio State
University написал
Ознакомительный Курс UNIX который доступен в Online в
HTML и PS форматах.Итальянский перевод
этого документа доступен как часть FreeBSD Italian
Documentation Project.Jpman Project, Japan
FreeBSD Users Group. FreeBSD User's
Reference Manual (Японский перевод). Mainichi Communications
Inc., 1998. ISBN4-8399-0088-4 P3800E.Эдинбургский
Университет составил Online Путеводитель
для новичков в UNIX.Руководства для администраторовAlbitz, Paul and Liu, Cricket. DNS and
BIND, 4th Ed. O'Reilly & Associates, Inc., 2001.
ISBN 1-59600-158-4Computer Systems Research Group, UC Berkeley. 4.4BSD
System Manager's Manual. O'Reilly & Associates,
Inc., 1994. ISBN 1-56592-080-5Costales, Brian, et al. Sendmail, 2nd Ed.
O'Reilly & Associates, Inc., 1997. ISBN 1-56592-222-0Frisch, Æleen. Essential System
Administration, 2nd Ed. O'Reilly & Associates,
Inc., 1995. ISBN 1-56592-127-5Hunt, Craig. TCP/IP Network
Administration, 2nd Ed. O'Reilly & Associates,
Inc., 1997. ISBN 1-56592-322-7Nemeth, Evi. UNIX System Administration
Handbook. 2nd Ed. Prentice Hall, 2000. ISBN
0-13-020601-6Stern, Hal Managing NFS and NIS O'Reilly
& Associates, Inc., 1991. ISBN 0-937175-75-7Jpman Project, Japan
FreeBSD Users Group. FreeBSD System
Administrator's Manual (Japanese translation). Mainichi Communications
Inc., 1998. ISBN4-8399-0109-0 P3300E.Dreyfus, Emmanuel. Cahiers
de l'Admin: BSD 2nd Ed. (на французском), Eyrolles, 2004.
ISBN 2-212-11463-XРуководства для программистовAsente, Paul, Converse, Diana, and Swick, Ralph.
X Window System Toolkit. Digital Press, 1998.
ISBN 1-55558-178-1Computer Systems Research Group, UC Berkeley. 4.4BSD
Programmer's Reference Manual. O'Reilly &
Associates, Inc., 1994. ISBN 1-56592-078-3Computer Systems Research Group, UC Berkeley. 4.4BSD
Programmer's Supplementary Documents. O'Reilly &
Associates, Inc., 1994. ISBN 1-56592-079-1Harbison, Samuel P. and Steele, Guy L. Jr. C: A
Reference Manual. 4th ed. Prentice Hall, 1995.
ISBN 0-13-326224-3Kernighan, Brian and Dennis M. Ritchie. The C
Programming Language. 2nd Ed. PTR Prentice Hall, 1988.
ISBN 0-13-110362-8Lehey, Greg. Porting UNIX Software.
O'Reilly & Associates, Inc., 1995. ISBN 1-56592-126-7Plauger, P. J. The Standard C Library.
Prentice Hall, 1992. ISBN 0-13-131509-9Spinellis, Diomidis. Code
Reading: The Open Source Perspective.
Addison-Wesley, 2003. ISBN 0-201-79940-5
+ Spinellis, Diomidis. Code
+ Quality: The Open Source Perspective.
+ Addison-Wesley, 2003. ISBN 0-201-79940-5
+
+
+
+
Stevens, W. Richard. Advanced Programming in the UNIX
- Environment. Reading, Mass. : Addison-Wesley, 1992.
- ISBN 0-201-56317-7
+ Environment. 2nd Ed. Reading, Mass. :
+ Addison-Wesley, 2005. ISBN 0-201-43307-9
+
Stevens, W. Richard. UNIX Network
Programming. 2nd Ed, PTR Prentice Hall, 1998. ISBN
0-13-490012-XWells, Bill. Writing Serial Drivers for UNIX.
Dr. Dobb's Journal. 19(15), December 1994.
pp68-71, 97-99.Внутренности операционной системыAndleigh, Prabhat K. UNIX System
Architecture. Prentice-Hall, Inc., 1990. ISBN
0-13-949843-5Jolitz, William. Porting UNIX to the 386.
Dr. Dobb's Journal. January 1991-July
1992.Leffler, Samuel J., Marshall Kirk McKusick, Michael J Karels and
John Quarterman The Design and Implementation of the
4.3BSD UNIX Operating System. Reading, Mass. :
Addison-Wesley, 1989. ISBN 0-201-06196-1Leffler, Samuel J., Marshall Kirk McKusick, The Design
and Implementation of the 4.3BSD UNIX Operating System: Answer
Book. Reading, Mass. : Addison-Wesley, 1991. ISBN
0-201-54629-9McKusick, Marshall Kirk, Keith Bostic, Michael J Karels, and
John Quarterman. The Design and Implementation of the
4.4BSD Operating System. Reading, Mass. :
Addison-Wesley, 1996. ISBN 0-201-54979-4(глава 2 этой книги доступна онлайн как часть
Проекта документирования FreeBSD, и глава 9 доступна
здесь.)Marshall Kirk McKusick, George V. Neville-Neil The Design
and Implementation of the FreeBSD Operating System.
Boston, Mass. : Addison-Wesley, 2004. ISBN 0-201-70245-2Stevens, W. Richard. TCP/IP Illustrated, Volume 1:
The Protocols. Reading, Mass. : Addison-Wesley,
1996. ISBN 0-201-63346-9Schimmel, Curt. Unix Systems for Modern
Architectures. Reading, Mass. : Addison-Wesley, 1994.
ISBN 0-201-63338-8Stevens, W. Richard. TCP/IP Illustrated, Volume 3:
TCP for Transactions, HTTP, NNTP and the UNIX Domain
Protocols. Reading, Mass. : Addison-Wesley, 1996.
ISBN 0-201-63495-3Vahalia, Uresh. UNIX Internals -- The New
Frontiers. Prentice Hall, 1996. ISBN
0-13-101908-2Wright, Gary R. and W. Richard Stevens. TCP/IP
Illustrated, Volume 2: The Implementation. Reading,
Mass. : Addison-Wesley, 1995. ISBN 0-201-63354-XБезопасностьCheswick, William R. and Steven M. Bellovin. Firewalls
and Internet Security: Repelling the Wily Hacker.
Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-63357-4Garfinkel, Simson and Gene Spafford.
Practical UNIX & Internet Security.
2nd Ed. O'Reilly & Associates, Inc., 1996. ISBN
1-56592-148-8Garfinkel, Simson. PGP Pretty Good
Privacy O'Reilly & Associates, Inc., 1995. ISBN
1-56592-098-8ОборудованиеAnderson, Don and Tom Shanley. Pentium Processor
System Architecture. 2nd Ed. Reading, Mass. :
Addison-Wesley, 1995. ISBN 0-201-40992-5Ferraro, Richard F. Programmer's Guide to the EGA,
VGA, and Super VGA Cards. 3rd ed. Reading, Mass. :
Addison-Wesley, 1995. ISBN 0-201-62490-7Intel Corporation publishes documentation on their CPUs,
chipsets and standards on their developer web site,
usually as PDF files.Shanley, Tom. 80486 System Architecture.
3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-40994-1Shanley, Tom. ISA System Architecture.
3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-40996-8Shanley, Tom. PCI System Architecture.
4th ed. Reading, Mass. : Addison-Wesley, 1999. ISBN
0-201-30974-2Van Gilluwe, Frank. The Undocumented PC, 2nd Ed.
Reading, Mass: Addison-Wesley Pub. Co., 1996. ISBN
0-201-47950-8Messmer, Hans-Peter. The Indispensable PC Hardware Book, 4th Ed.
Reading, Mass: Addison-Wesley Pub. Co., 2002. ISBN
0-201-59616-4История &unix;Lion, John Lion's Commentary on UNIX, 6th Ed. With
Source Code. ITP Media Group, 1996. ISBN
1573980137Raymond, Eric S. The New Hacker's Dictionary, 3rd
edition. MIT Press, 1996. ISBN
0-262-68092-0. Also known as the Jargon
FileSalus, Peter H. A quarter century of UNIX.
Addison-Wesley Publishing Company, Inc., 1994. ISBN
0-201-54777-5Simon Garfinkel, Daniel Weise, Steven Strassmann. The
UNIX-HATERS Handbook. IDG Books Worldwide, Inc.,
1994. ISBN 1-56884-203-1. Не печаталась, доступна по адресу
online.Don Libes, Sandy Ressler Life with UNIX
— special edition. Prentice-Hall, Inc., 1989. ISBN
0-13-536657-7The BSD family tree.
или /usr/share/misc/bsd-family-tree
на компьютере FreeBSD.The BSD Release Announcements collection.
1997. Networked Computer Science Technical Reports
Library. Old BSD releases from the Computer Systems Research
group (CSRG).
:
В набор на 4CD включены все версии BSD от 1BSD до 4.4BSD и
4.4BSD-Lite2 (но к сожалению нет 2.11BSD). На последнем диске
находится также последняя версия исходных текстов и файлы
SCCS.Прочие изданияThe C/C++ Users Journal. R&D
Publications Inc. ISSN 1075-2838Sys Admin — The Journal for UNIX System
Administrators Miller Freeman, Inc., ISSN
1061-2688freeX — Das Magazin für Linux - BSD - UNIX
(на немецком) Computer- und Literaturverlag GmbH, ISSN 1436-7033
diff --git a/ru_RU.KOI8-R/books/handbook/eresources/chapter.sgml b/ru_RU.KOI8-R/books/handbook/eresources/chapter.sgml
index 2a17479135..4506adbfa7 100644
--- a/ru_RU.KOI8-R/books/handbook/eresources/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/eresources/chapter.sgml
@@ -1,1813 +1,1831 @@
ДенисПеплинПеревод на русский язык: Ресурсы в интернетВысокая скорость прогресса FreeBSD делает непрактичным использование
печатных изданий для информирования о последних разработках. Электронные
ресурсы это лучший, а зачастую и единственный способ информирования
о новых возможностях. Поскольку FreeBSD основывается на усилиях
добровольцев, сообщество пользователей само по себе зачастую выполняет
роль службы технической поддержки, а электронная почта и
новости USENET это наиболее эффективный способ обращения к этому
сообществу.Наиболее важная контактная информация сообщества пользователей
FreeBSD показана ниже. Если вам известно о других ресурсах, не
упомянутых здесь, пожалуйста отправьте информацию о них в
&a.doc;, чтобы мы могли включить в этот документ.Списки рассылкиХотя многие участники разработки FreeBSD читают USENET, мы не можем
всегда гарантировать, что ответим на ваши вопросы в краткий срок
(или вообще), если вы отправите их только в группы
comp.unix.bsd.freebsd.*. Вопросы, отправленные
в соответствующий список рассылки, достигнут и нас и обширной аудитории
FreeBSD, что несомненно гарантирует лучшую (или как минимум более
быструю) поддержку.Все сообщения в приведенные ниже списки рассылки должны быть
составлены только на английском языке.Описание каждой рассылки дано в конце этого документа.
Пожалуйста, прочтите описание перед подпиской или отправкой
почты в любой из списков. Большинство наших подписчиков
получают многие сотни относящихся к FreeBSD сообщений каждый день,
и определяя правила использования рассылок мы стремимся удержать
высокое соотношение сигнал к шуму. При меньшем
соотношении списки рассылки перестанут быть эффективной средой общения
участников проекта.Если вы сомневаетесь, в какой именно список рассылки нужно направить
вопрос, то прочтите статью Как эффективно использовать
список рассылки FreeBSD-questions.Перед тем, как направлять сообщение в любой список рассылки,
пожалуйста, выясните, как лучше всего их использовать, например, как
избежать частого повторения одних и тех же дискуссий, прочитав документ
Часто задаваемые вопросы
о списках рассылки (FAQ).Архивы поддерживаются для всех списков рассылки и поиск по ним
организован на 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.current.name;Обсуждения, относящиеся к использованию
&os.current;&a.isp.name;Вопросы использования FreeBSD провайдерами&a.jobs.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.bluetooth.name;Использование технологии &bluetooth; во FreeBSD&a.cluster.name;Использование FreeBSD в кластерах&a.cvsweb.name;Поддержка CVSweb&a.database.name;Обсуждение использования и разработки баз данных
под FreeBSD&a.doc.name;Создание относящихся к FreeBSD документов&a.drivers.name;Создание драйверов устройств для FreeBSD&a.eclipse.name;Использование в FreeBSD Eclipse IDE, а
также приложений и портов
для нее.
+
+ &a.embedded.name;
+ Использование FreeBSD во встроенных системах
+
+
&a.emulation.name;Эмуляция других систем, таких как
Linux/&ms-dos;/&windows;&a.firewire.name;Техническое обсуждение FreeBSD &firewire;
(iLink, IEEE 1394)&a.fs.name;Файловые системы&a.geom.name;Относящиеся к GEOM обсуждения и реализации&a.gnome.name;Портирование GNOME
и приложений GNOME&a.hackers.name;Общее техническое обсуждение&a.hardware.name;Общее обсуждение оборудования для
FreeBSD&a.i18n.name;Интернационализация FreeBSD&a.ia32.name;FreeBSD на платформе IA-32 (&intel; x86)&a.ia64.name;Портирование FreeBSD на будущие системы &intel;
IA64&a.ipfw.name;Технические обсуждения, относящиеся к переработке
кода IP брандмауэра&a.isdn.name;Разработчики ISDN&a.java.name;Разработчики &java; и те, кто занимается переносом &jdk;
на FreeBSD&a.kde.name;Портирование KDE и
приложений KDE&a.lfs.name;Портирование LFS на FreeBSD&a.libh.name;Второе поколение программы установки системы и
пакетов&a.mips.name;Портирование FreeBSD на &mips;&a.mobile.name;Обсуждение портативных компьютеров&a.mozilla.name;Портирование Mozilla на
FreeBSD&a.multimedia.name;Мультимедиа приложения&a.newbus.name;Технические обсуждения архитектуры шины&a.net.name;Обсуждения, относящиеся к сети и исходному тексту
TCP/IP&a.openoffice.name;Портирование OpenOffice.org и
&staroffice; на FreeBSD&a.performance.name;Вопросы оптимизации производительности для
быстрых/работающих под большой нагрузкой серверов&a.perl.name;Поддержка различных портов, относящихся к Perl&a.pf.name;Обсуждение брандмауэра на базе packet filter&a.platforms.name;Относится к портам для платформ не-&intel;
архитектуры&a.ports.name;Обсуждения Коллекции Портов&a.ports-bugs.name;Обсуждения относящихся к портам ошибок/PR&a.ppc.name;Портирование FreeBSD на &powerpc;&a.proliant.name;Работа FreeBSD на серверной платформе HP ProLiant&a.python.name;Вопросы, специфичные для использования
Python во FreeBSD&a.qa.name;Обсуждение гарантий качества (Quality Assurance),
обычно перед релизом&a.rc.name;Обсуждения, касающиеся системы rc.d и работы над
ней&a.realtime.name;Разработка расширений реального времени для
FreeBSD&a.scsi.name;Подсистема SCSI&a.security.name;Сообщения безопасности, касающиеся FreeBSD&a.small.name;Использование FreeBSD во встроенных приложениях&a.smp.name;Обсуждение [не]симметричной мультипроцессорной
архитектуры&a.sparc.name;Портирование FreeBSD на системы, основанные на
&sparc;&a.standards.name;Соответствие FreeBSD стандартам C99 и &posix;&a.threads.name;Потоки в FreeBSD&a.testing.name;Тестирование производительности и стабильности
FreeBSD&a.tokenring.name;Поддержка Token Ring в FreeBSD&a.usb.name;Обсуждение поддержки USB в &os;&a.vuxml.name;Обсуждение инфраструктуры VuXML&a.x11.name;Сопровождение и поддержка X11 в FreeBSDОграниченные списки: Следующие списки
рассылки предназначены для более специализированной (и более
официальной) аудитории и вероятно не могут заинтересовать широкую
публику. Вероятно хорошей идеей будет сначала наладить общение
в технических списках рассылки перед присоединением к ограниченным
спискам, так вы сможете освоить этику общения.СписокНазначение&a.hubs.name;Люди, поддерживающие зеркала (поддержка
инфраструктуры)&a.usergroups.name;Координация групп пользователей&a.vendors.name;Координация поставщиков перед релизом&a.www.name;Ответственные за www.FreeBSD.orgДайджест рассылки: Все вышеприведенные
списки доступны в формате дайджеста. После подписки на рассылку,
вы можете изменить параметры дайджеста в разделе настроек учетной
записи.CVS рассылки: Следующие рассылки
предназначены для людей, заинтересованных в просмотре сообщений
об изменении в различных областях дерева исходных текстов.
Это списки только для чтения и вы не должны
отправлять туда почту.РассылкаОбласть исходного текстаОписание области исходного текста&a.cvsall.name;/usr/(CVSROOT|doc|ports|projects|src)Все изменения в любой области дерева исходных текстов
(надмножество других списков рассылки CVS)&a.cvs-doc.name;/usr/(doc|www)Все изменения в дереве исходных текстов
документации и Web-сервера&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.
Это письмо будет разослано участникам рассылки по всему миру.Для отписки от рассылки, нажмите на ссылку, находящуюся внизу
каждого письма, отправляемого через список рассылки. Возможна
также отписка путем отправки письма на
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.bluetooth.name;&bluetooth; во FreeBSDЭто форум, где собираются пользователи &bluetooth; во
FreeBSD. Обсуждения касаются вопросов архитектуры, деталей
реализации, патчей, сообщений об ошибках, состояния работы,
запросов на добавление функций и всего, что относится к
&bluetooth;.&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.drivers.name;Создание драйверов устройств для
FreeBSDЭтот список рассылки предназначен для технических
дискуссий, относящихся к написанию драйверов устройств для
&os;. Это наилучшее место для того, чтобы задать вопросы
по форматам и протоколам общенияi (API) драйверов устройств с
ядром &os;.&a.eclipse.name;Список рассылки для пользователей системы
Eclipse IDE под &os;, а также
ее приложений и портов.Этот список рассылки призван оказать помощь тем, кто
выбирает, устанавливает, использует, разрабатывает и
поддерживает работу Eclipse IDE под &os;, а также
портирует их под &os;.Кроме того, в данном списке для общего блага пересекаются
и обмениваются информацией сообщества Eclipse и &os;.Хотя данный список предназначен главным образом для тех, кто
использует Eclipse, в нем также можно обсуждать средства
разработки приложений для &os; при помощи среды Eclipse.
+
+ &a.embedded.name;
+
+
+ Использование FreeBSD во встроенных
+ системах
+
+ Этот список рассылки, предназначенный для технических
+ обсуждений, рассматривает работу &os; в особо стесненных
+ условиях, в частности, во встроенных (embedded) системах.
+
+
+
&a.emulation.name;Эмуляция других систем, таких как
Linux/&ms-dos;/&windows; Этот список рассылки предназначен для обсуждения вопросов
запуска и эксплуатации под &os; программ, предназначенных для
работы под другими операционными системами.&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.openoffice.name;OpenOffice.orgОбсуждения, относящиеся к портированию и поддержке
OpenOffice.org и
&staroffice;.&a.performance.name;Обсуждения оптимизации или повышения скорости
FreeBSDЭтот список рассылки существует как место для обсуждения
тем, имеющих отношение к производительности FreeBSD,
хакерами, администраторами, и/или заинтересованными сторонами.
Приемлемые темы включают обсуждения установок FreeBSD, которые
находятся под высокой нагрузкой и сталкиваются с проблемами
производительности, или преодоление ограничений FreeBSD.
Заинтересованным сторонам, собирающимся работать над улучшением
производительности FreeBSD, настоятельно рекомендуется
подписаться на эту рассылку. Это техническая рассылка,
идеально подходящая для пользователей, хакеров или
администраторов, заинтересованных в скорости, стабильности
и расширяемости FreeBSD. Это не рассылка вопросов-и-ответов,
заменяющая чтение документации, а место, где можно внести свой
вклад или получить информацию по еще незатронутой
теме, связанной с производительностью.&a.pf.name;Обсуждение брандмауэра на базе packet
filterОбсуждения, касающиеся работы пакетного фильтра pf под
&os;. Допускаются как вопросы пользователей, так и технические
дискуссии. Помимо этого, в данном списке уместно обсуждать
инфраструктуру ALTQ QoS.&a.platforms.name;Портирование на не-&intel;
платформыКросс-платформенные вопросы FreeBSD, общее обсуждение и
предложения для не-&intel; портов FreeBSD. Это технический
список рассылки, предназначенный только для технических
обсуждений.&a.policy.name;Правила core teamЭто рассылка с малым количеством сообщений, только для
чтения, предназначенная для публикации решений FreeBSD
Core Team.&a.ports.name;Обсуждения
portsОбсуждения, относящиеся к коллекции портов
FreeBSD, (/usr/ports), инфраструктуры
портов и общих усилий по координации портов.
Это технический список рассылки, предназначенный только для
технических обсуждений.&a.ports-bugs.name;Обсуждение проблем в
portsОбсуждения, относящиеся к сообщениям о проблемах для
коллекции портов FreeBSD
(/usr/ports), предлагаемых портов, или
изменений к портам. Это технический список рассылки,
предназначенный только для технических обсуждений.&a.proliant.name;Работа FreeBSD на серверной платформе HP
ProLiantЭтот список используется для обсуждения технических
аспектов использования FreeBSD на серверах HP ProLiant,
в том числе для обсуждения специфичных для ProLiant драйверов,
управляющего ПО, систем конфигурации и обновлений BIOS.
В частности, это основное место для обсуждения модулей
hpasmd, hpasmcli и hpacucli.&a.python.name;Python во FreeBSDЭтот список рассылки посвящён обсуждениям, связанным с
улучшением поддержки Python во FreeBSD. Это технический список
рассылки. Он предназначен тем, кто работает над портированием
во FreeBSD языка Python, модулей сторонних разработчиков для него
и Zope. К участию приглашаются также все, кому интересны
технические вопросы.&a.questions.name;Вопросы пользователейЭто список рассылки по вопросам о FreeBSD. Вы не должны
отправлять вопросы как сделать в технические
рассылки, если только не уверены, что ваш вопрос чисто
технический.&a.scsi.name;Подсистема SCSIЭто список рассылки для тех, кто работает над подсистемой
SCSI для FreeBSD. Это технический список рассылки,
предназначенный только для технических обсуждений.&a.security.name;Вопросы безопасностиВопросы безопасности FreeBSD (DES, Kerberos, известные
проблемы безопасности и исправления, и т.п.). Это технический
список рассылки, предназначенный только для технических
обсуждений. Обратите внимание, что это не рассылка
вопросов-и-ответов, но дополнения в FAQ (И вопрос И ответ)
приветствуются.&a.security-notifications.name;Уведомления безопасностиУведомления о проблемах безопасности FreeBSD и исправления.
Эта рассылка не предназначена для обсуждений. Для обсуждения
предназначена рассылка FreeBSD-security.&a.small.name;Использование FreeBSD во встроенных
приложенияхВ этой рассылке обсуждаются темы, связанные с необычно
малыми и встроенными установками FreeBSD. Это технический
список рассылки, предназначенный только для технических
обсуждений.&a.stable.name;Обсуждения, касающиеся использования
&os.stable;Этот список рассылки предназначен для пользователей
&os.stable;. Он включает предупреждения о новых возможностях,
добавляемых в -STABLE, и влияющих на пользователей, и инструкции
по действиям, которые необходимы для поддержки системы в
состоянии -STABLE. Всякий, использующий STABLE,
должен подписаться на эту рассылку. Это технический список
рассылки, предназначенный только для технических
обсуждений.&a.standards.name;Соответствие C99 и POSIXЭто форум для технических обсуждений, относящихся к
соответствию FreeBSD стандартам C99 и POSIX.&a.usb.name;Обсуждение поддержки USB в &os;Это форум для технических обсуждений, относящихся к
поддержке в &os; устройств с интерфейсом USB.&a.usergroups.name;Список координации групп
пользователейЭтот список рассылки предназначен для обсуждения вопросов
координаторами каждой группы пользователей и назначенным
членом Core Team. Обсуждения в этой рассылке ограничены
темой встреч и координацией проектов, относящихся к группам
пользователей.&a.vendors.name;ПоставщикиОбсуждения, относящиеся к координации между FreeBSD Project
и поставщиками программного и аппаратного обеспечения для
FreeBSD.Фильтрация списков рассылкиСписки рассылки &os; фильтруются различными способами для
предотвращения распространения спама, вирусов, и другой нежелательной
почты. Действия по фильтрации, описанные в этом разделе,
не включают всех используемых для фильтрации списков рассылки
проекта действий.Только определенные типы вложений разрешены в списках рассылки.
Все вложения с типами MIME содержимого, не входящие в список ниже,
будут вырезаться перед тем, как письмо будет отправлено в список
рассылки.application/octet-streamapplication/pdfapplication/pgp-signatureapplication/x-pkcs7-signaturemessage/rfc822multipart/alternativemultipart/relatedmultipart/signedtext/htmltext/plaintext/x-difftext/x-patchНекоторые из списков рассылки могут пропускать вложения
других типов MIME, но список выше применим к большинству
рассылок.Если письмо содержит как HTML, так и только текстовую версию,
версия HTML будет удалена. Если письмо содержит только HTML
версию, она будет конвертирована в простой текст.Новостные группы UsenetВ дополнение к двум относящимся к FreeBSD группам новостей,
существуют множество других, где обсуждается FreeBSD или куда
помещается другая информация, относящаяся к пользователям FreeBSD.
Архивы
с поиском по ключевому слову доступны для некоторых из
этих новостных групп благодаря Warren Toomey
wkt@cs.adfa.edu.au.Относящиеся к BSD новостные группыcomp.unix.bsd.freebsd.announcecomp.unix.bsd.freebsd.miscde.comp.os.unix.bsd (German)fr.comp.os.bsd (French)it.comp.os.freebsd (Italian)Другие интересные &unix; новостные группыcomp.unixcomp.unix.questionscomp.unix.admincomp.unix.programmercomp.unix.shellcomp.unix.user-friendlycomp.security.unixcomp.sources.unixcomp.unix.advocacycomp.unix.misccomp.bugs.4bsdcomp.bugs.4bsd.ucb-fixescomp.unix.bsdX Window Systemcomp.windows.x.i386unixcomp.windows.xcomp.windows.x.appscomp.windows.x.announcecomp.windows.x.intrinsicscomp.windows.x.motifcomp.windows.x.pexcomp.emulators.ms-windows.wineСерверы World Wide Web
&chap.eresources.www.inc;
Адреса EmailСледующие группы пользователей предоставляют для своих участников
почтовые адреса. Приведенные в списке администраторы оставляют за собой
право удалить адреса при любом злоупотреблении.ДоменВозможностиГруппа пользователейАдминистраторukug.uk.FreeBSD.orgТолько пересылкаfreebsd-users@uk.FreeBSD.orgLee Johnston
lee@uk.FreeBSD.orgShell доступСледующие группы пользователей предоставляют shell доступ для тех,
кто активно поддерживает проект FreeBSD. Приведенные в списке
администраторы оставляют за собой право закрыть учетную запись при
любом злоупотреблении.ХостДоступВозможностиАдминистраторdogma.freebsd-uk.eu.orgTelnet/FTP/SSHEmail, место для сайта, анонимный FTPLee Johnston
lee@uk.FreeBSD.org
diff --git a/ru_RU.KOI8-R/books/handbook/kernelconfig/chapter.sgml b/ru_RU.KOI8-R/books/handbook/kernelconfig/chapter.sgml
index 1a74331e9c..a69b132a9e 100644
--- a/ru_RU.KOI8-R/books/handbook/kernelconfig/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/kernelconfig/chapter.sgml
@@ -1,1514 +1,1514 @@
JimMockОбновил и реструктуризовал JakeHambyПредоставил АлександромКоваленкоПереведено Настройка ядра FreeBSDКраткий обзорkernelсборка собственного ядраЯдро — это основная часть операционной системы &os;. Оно
ответственно за управление памятью, параметры безопасности, работу с
сетью, доступ к дискам и многое другое. Несмотря на то, что &os;
становится всё более динамически конфигурируемой, иногда приходится
собирать собственное ядро.После прочтения этой главы вы узнаете:Почему вам может понадобиться сборка собственного ядра.Как написать файл конфигурации ядра или изменить
существующий.Как использовать файл конфигурации ядра для того, чтобы создать и
собрать новое ядро.Как установить новое ядро.Что делать, если что-то не работает или работает не так, как
должно.Все команды, приводимые в этой главе в качестве примера,
должны выполняться от пользователя root.Зачем собирать собственное ядро?Традиционно в &os; использовалось так называемое
монолитное ядро. Это означает, что ядро — это одна
большая программа, которая поддерживает фиксированный набор устройств и в
случае, если необходимо изменить его поведение, требуется сборка нового
ядра и перезагрузка компьютера уже с новым ядром.На сегодняшний день &os; быстро продвигается к модели, в которой
большая часть функциональности содержится в модулях, которые могут быть
при необходимости динамически загружены и выгружены из ядра. Это
позволяет ядру использовать устройства, которые внезапно
появились в системе (например, устройства PCMCIA в лэптопе) или добавлять
новую функциональность в ядро, которая не была необходима в момент
первоначальной сборки ядра. Такой подход известен как модульность
ядра.Несмотря на это, всё ещё иногда бывает необходимо, чтобы некоторая
функциональность была вкомпилирована в ядро статически. В некоторых
случаях это продиктовано тем, что эта функциональность настолько сильно
привязана к ядру, что не может быть динамически загружаемой. В других
случаях это может быть просто потому, что никто не уделил время
написанию динамически загружаемого модуля для этой
функциональности.Сборка собственного ядра — один из наиболее важных ритуалов, через который
должен пройти практически любой пользователь BSD. Несмотря на
длительность этого процесса, ваша &os; останется только в выигрыше. В
отличие от ядра GENERIC, которое должно поддерживать
широкий спектр аппаратного обеспечения, собственное ядро содержит поддержку
аппаратного обеспечения только вашего компьютера.
Это может давать следующие преимущества:Меньшее время загрузки. Поскольку ядро будет пытаться определить
только то аппаратное обеспечение, которое установлено в вашем
компьютере, время, которое потребуется системе для загрузки,
может значительно уменьшиться.Уменьшение использования памяти. Собственное ядро часто использует меньше
памяти, чем ядро GENERIC, что очень важно,
поскольку ядро всегда находится в физической памяти. Именно по этой
причине собственное ядро особенно полезно при использовании систем с малым
объемом оперативной памяти.Поддержка дополнительного аппаратного обеспечения. Собственное ядро
позволяет вам добавить поддержку устройств,
отсутствующих в ядре GENERIC.Сборка и установка собственного ядраkernelсборка / установкаВо-первых, давайте сделаем краткий обзор каталога, в котором будет
происходить сборка ядра. Все каталоги, которые будут упоминаться, будут
относительными по отношению к основному каталогу
/usr/src/sys, который также доступен как каталог
/sys. Этот каталог содержит множество подкаталогов,
представляющих собой различные части ядра, но наиболее важным для нас
будет каталог arch/conf,
в котором вы будете редактировать конфигурационный файл ядра и в котором
находится каталог compile, где будет
собираться ваше ядро. arch может быть
i386, alpha,
amd64, ia64,
powerpc, sparc64 или
pc98 (альтернативная ветвь аппаратного обеспечения,
популярная в Японии). Все, что находится внутри каталога определенной
архитектуры, относится только к этой архитектуре; остальной код является
машинно независимым и общим для всех платформ, на которые &os; может
быть потенциально
портирована. Обратите внимание на логическую структуру каталогов, в
которой каждое поддерживаемое устройство, каждая файловая система и
каждая опция размещается в своём собственном каталоге.В примерах этой главы подразумевается, что вы используете
архитектуру i386. Если это не так, измените каталоги, указанные
в примерах, в соответствии с архитектурой вашей системы.Если в вашей системе отсутствует каталог
/usr/src/sys, это означает, что исходные тексты
ядра не были установлены. Наиболее простой способ установить их -
запустить sysinstall
как root, выбрать
Configure, потом
Distributions, потом
src, потом sys.
Если вы испытываете отвращение к sysinstall и
у вас есть доступ к официальному &os; CDROM, вы также
можете установить исходные тексты при помощи командной строки:&prompt.root; mount /cdrom
&prompt.root; mkdir -p /usr/src/sys
&prompt.root; ln -s /usr/src/sys /sys
&prompt.root; cat /cdrom/src/ssys.[a-d]* | tar -xzvf -Затем, перейдите в каталог
arch/conf
и скопируйте файл конфигурации GENERIC
в файл с выбранным вами именем. Например:&prompt.root; cd /usr/src/sys/i386/conf
&prompt.root; cp GENERIC MYKERNELПо традиции имя состоит из букв в верхнем регистре, и если
вы поддерживаете несколько компьютеров &os; на различном оборудовании,
хорошая идея добавлять это имя к имени хоста. Мы назвали ядро
MYKERNEL в этом примере.Помещение файла конфигурации ядра в /usr/src
может быть плохой идеей. Если вы испытываете проблемы,
их можно решить удалив /usr/src и начав
все с начала. После этого обычно требуется несколько секунд, чтобы
понять, что вы удалили собственный файл настройки ядра. Не
редактируйте непосредственно GENERIC, он может
быть также перезаписан и при следующем обновлении дерева исходных текстов,
и изменения ядра будут потеряны.Вы можете сохранить файл конфигурации ядра в другом месте,
а затем создать символическую ссылку на этот файл в каталоге
i386.Например:&prompt.root; cd /usr/src/sys/i386/conf
&prompt.root; mkdir /root/kernels
&prompt.root; cp GENERIC /root/kernels/MYKERNEL
&prompt.root; ln -s /root/kernels/MYKERNELТеперь отредактируйте файл MYKERNEL в своём
любимом текстовом редакторе. Если вы только начинаете, единственным
доступным редактором скорее всего будет vi,
который слишком сложен для того, чтобы описать его здесь,
но в библиографии перечислено
множество книг, в которых его использование хорошо освещено. Однако &os;
предоставляет более простой редактор ee,
который, если вы — новичок, подойдёт вам больше всего. Не стесняйтесь
изменять строки комментариев в начале файла, с тем, чтобы отобразить вашу
конфигурацию или изменения, которые вы сделали по сравнению с
GENERIC.SunOSЕсли вам приходилось собирать ядро для &sunos; или какой-либо другой
операционной системы типа BSD, многое из того, что содержится в этом
файле будет очень знакомо вам. Если же вы, напротив, использовали другую
операционную систему, такую как DOS, файл конфигурации
GENERIC может показаться вам крайне сложным, поэтому
следуйте инструкциям в разделе Конфигурационный файл медленно и
внимательно.Если вы синхронизируете дерево исходных текстов
с деревом проекта &os;, не забудьте свериться с файлом
/usr/src/UPDATING перед обновлением. В этом
файле описаны все важные вопросы и области исходного кода, требующие
особого внимания.
/usr/src/UPDATING всегда соответствует версии
ваших исходных текстов &os;, поэтому является более актуальным
источником информации, чем это руководство.Теперь вы должны скомпилировать ядро. Существует два способа, которые
позволяют это сделать. Какой из них выбрать, зависит от того, почему вам
понадобилось пересобирать ядро и версии &os;, которую вы
используете.Если вы установили только исходные тексты
ядра, используйте способ 1.Если вы собираете новое ядро, не обновляя исходные тексты
(возможно, для того, чтобы добавить новую опцию, например
IPFIREWALL), вы можете использовать любой
способ.Если вы пересобираете ядро как часть процесса
make buildworld, используйте способ 2.cvsupCTMCVSанонимныйЕсли вы не обновляли дерево исходных текстов
с момента последнего успешного завершения цикла
buildworld-installworld,
(то есть не запускали CVSup,
CTM, или не использовали
anoncvs), возможно использование
последовательности
config, make depend,
make, make install.
Способ 1. Сборка ядра традиционным способомЗапустите &man.config.8; для того, чтобы сгенерировать исходные
тексты ядра.&prompt.root; /usr/sbin/config MYKERNELПерейдите в каталог, в котором будет собираться ядро.
Запущенный как показано выше &man.config.8; выведет имя этого
каталога.&prompt.root; cd ../compile/MYKERNELДля &os; версий более ранних, чем 5.0, вместо этого
используйте:&prompt.root; cd ../../compile/MYKERNELСоберите ядро.&prompt.root; make depend
&prompt.root; makeУстановите новое ядро.&prompt.root; make installСпособ 2. Сборка ядра новым способом.Перейдите в каталог /usr/src.&prompt.root; cd /usr/srcСоберите ядро.&prompt.root; make buildkernel KERNCONF=MYKERNELУстановите новое ядро.&prompt.root; make installkernel KERNCONF=MYKERNELЭтот способ построения требует наличия всех исходных файлов систем.
Если вы только установили исходные файлы ядра, то используйте традиционный
способ, как описано выше.По умолчанию, при построении ядра, все
модули ядра так же будут пересобраны. Если вы хотите обновить
ядро быстрее или построить только определённые модули, то вам
нужно отредактировать файл /etc/make.conf
перед началом процесса сборки ядра:MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfsЭта переменная устанавливает список модулей, которые нужно построить
вместо построения всех модулей. За другими переменными, которые вы можете
посчитать полезными в процессе сборки ядра, обращайтесь к странице
справочника &man.make.conf.5;./boot/kernel.oldНовое ядро будет скопировано в каталог /boot/kernel как
/boot/kernel/kernel, а старое ядро будет перемещено в
/boot/kernel.old/kernel.
Теперь перезагрузите систему для того,
чтобы использовать новое ядро. Если что-то пойдёт не так, вы
можете обратиться к разделу Решение проблем в конце
этой главы, который может оказаться
полезен. Не забудьте прочитать
раздел, который объясняет как исправить ситуацию, когда ядро не загружается.Другие файлы, относящиеся к
процессу загрузки, такие как загрузчик (&man.loader.8;) и его
конфигурационные файлы, размещаются в /boot.
Модули сторонних производителей могут быть помещены в
/boot/kernel, хотя пользователи
должны знать, что
очень важно, чтобы модули были синхронизированы с собранным ядром.
Модули, не рассчитанные на работу с собранным ядром, могут вызвать
нестабильность и некорректность работы.JoelDahlОбновил для &os; 5.X Конфигурационный файлядроNOTESNOTESядроконфигурационный файлФормат конфигурационного файла достаточно прост. Каждая строка
представляет собой ключевое слово и один или более аргументов. Для
простоты большинство строк содержат только один аргумент. Всё, что
следует за символом # является комментарием и
игнорируется. Следующие разделы описывают каждый параметр, в
порядке, в котором они появляются в GENERIC.
За полным списком архитектурно-зависимых
параметров и устройств обратитесь к файлу NOTES
в том же каталоге, что и GENERIC. Архитектурно
независимые параметры находятся в
/usr/src/sys/conf/NOTES.В &os; 5.X и более поздних версиях вы все еще можете создать
собираемый LINT, выполнив:Для сборки ядра со всеми возможными опциями (обычно используется
для тестирования), выполните от имени суперпользователя
(root) следующую команду:&prompt.root; cd /usr/src/sys/i386/conf >> make LINTkernelконфигурационный файлЭто пример конфигурационного файла ядра
GENERIC с различными дополнительными комментариями,
которые могут понадобиться для ясности. Этот пример должен совпадать с вашей
копией в
/usr/src/sys/i386/conf/GENERIC
практически полностью.параметры ядраmachinemachine i386Это архитектура машины. Она должна быть одной из
следующих:
alpha, amd64,
i386, ia64,
pc98, powerpc, или
sparc64.параметры ядраcpucpu I486_CPU
cpu I586_CPU
cpu I686_CPUЭта опция указывает тип процессора, который используется в вашей
системе. В конфигурационном файле может быть несколько вхождений этой
опции (например, если вы не уверены, какой из типов процессора необходимо
использовать — I586_CPU или
I686_CPU), но для собственного ядра лучше указывать
только тот тип процессора, который установлен в вашей системе. Если вы
не уверены, какой тип необходимо использовать вам, вы можете
воспользоваться файлом /var/run/dmesg.boot, чтобы
увидеть протокол загрузки системы.параметры ядраcpu typeПоддержка типа I386_CPU все ещё существует в
исходных текстах &os;, но по умолчанию отключена в ветках -STABLE и
-CURRENT. Это означает, что для того, чтобы установить &os; на систему с
процессором i386, вы можете использовать следующие способы:Установить более раннюю версию &os; и пересобрать систему из
исходных текстов в соответствии с
.Собрать систему и ядро на более новой машине и установить на
386 используя уже собранные файлы в /usr/obj
(за дополнительной информацией можете обратиться к ).Сделать собственный релиз &os;, который включает поддержку
I386_CPU в ядре установочного CD-ROM.Первый из этих способов, возможно, наиболее простой из всех
предложенных, но вам понадобится много дискового пространства, что может
быть затруднительно для систем класса 386.параметры ядраidentident GENERICЭтот параметр определяет метку ядра. Необходимо,
чтобы она соответствовала названию файла конфигурации ядра, например
MYKERNEL, если вы следовали инструкциям в предыдущих
примерах. Значение, которое вы присвоите параметру
ident будет выводиться в процессе загрузки, поэтому
полезно давать новым ядрам другие имена для того, чтобы отличать их от
обычного ядра (например, если вы хотите собрать экспериментальное
ядро).#To statically compile in device wiring instead of /boot/device.hints
#hints "GENERIC.hints" # Default places to look for devices.&man.device.hints.5; используются для
настройки параметров драйверов устройств. Путь по умолчанию, который
&man.loader.8; будет проверять при загрузке -
/boot/device.hints. Используя опцию
hints вы можете вкомпилировать эти параметры
статически в ваше ядро. В этом случае не требуется создавать файл
device.hints в каталоге
/boot.#makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbolsОбычный процесс сборки &os; не включает генерацию отладочной
информации при сборке ядра и удаляет большую часть вспомогательной
информации (symbols) после того как ядро слинковано для того, чтобы
сэкономить немного места. Если вы собираетесь проводить тестирование
ядер в ветви -CURRENT или разрабатывать собственные правки для ядра &os;,
возможно вам потребуется раскомментировать эту строку. Тем самым вы
включите использования опции , которая включает
генерацию отладочной информации &man.gcc.1;. Того же самого эффекта
можно добиться используя опцию &man.config.8; , в
случае, если вы используете традиционный способ сборки
ядра (обратитесь к за
дополнительной информацией).options SCHED_4BSD # 4BSD schedulerТрадиционный планировщик &os;. В зависимости от загруженности
системы, вы можете повысить производительность, используя
новый планировщик &os; ULE, который был специально разработан для
SMP, но отлично работает также и на однопроцессорных системах.
Если вы хотите попробовать этот планировщик, замените
SCHED_4BSD на SCHED_ULE в
файле конфигурации ядра.options INET # InterNETworkingПоддержка сетевых возможностей. Оставьте эту опцию включенной, даже
если вы не планируете подключаться к сети. Большинство программ требуют,
чтобы работал хотя бы интерфейс обратной связи (loopback) (т.е.
создание сетевых соединений внутри вашего ПК), так что эта опция в
принципе является обязательной.options INET6 # IPv6 communications protocolsВключает поддержку коммуникационных протоколов IPv6.options FFS # Berkeley Fast FilesystemВключает поддержку основной файловой системы. Не удаляйте эту опцию,
если вы планируете загружаться с жесткого диска.options SOFTUPDATES # Enable FFS Soft Updates supportЭтот параметр включает в ядре технологию Soft Updates, которая
повышает скорость записи на диски. Несмотря на то, что эта технология
включена в ядре, она должна быть включена для отдельных дисков.
Просмотрите вывод команды &man.mount.8; чтобы определить, включены ли
Soft Updates для дисков вашей системы. Если вы не увидите параметр
soft-updates, вам будет необходимо активировать его
при помощи команды &man.tunefs.8; (для существующих файловых систем) или
команды &man.newfs.8; (для новых файловых систем).options UFS_ACL # Support for access control listsЭтот параметр включает в ядре
поддержку списков управления доступом (ACL). Основывается на
использовании расширенных атрибутов и UFS2, детальное
описание вы сможете найти в .
ACL включены по умолчанию и не должны выключаться в
случае, если они ранее использовались на файловой системе, так как это
удалит списки управления доступом и изменит то, как защищены файлы,
непредсказуемым образом.options UFS_DIRHASH # Improve performance on big directoriesЭта опция включает функциональность, которая повышает скорость
дисковых операций на больших каталогах в обмен на использование
дополнительной памяти. Для большого сервера или рабочей станции
рекомендуется оставить ее включенной, и выключить для системы, для
которой более приоритетна память, чем скорость доступа к дискам,
например для брандмауэра.options MD_ROOT # MD is a potential root deviceЭтот параметр включает поддержку использования дисков
в памяти для корневой файловой системы.параметры ядраNFSпараметры ядраNFS_ROOToptions NFSCLIENT # Network Filesystem Client
options NFSSERVER # Network Filesystem Server
options NFS_ROOT # NFS usable as /, requires NFSCLIENTСетевая файловая система. Если вы не планируете монтировать разделы
с файлового сервера &unix; через TCP/IP, вы можете исключить этот
параметр из конфигурационного файла ядра.параметры ядраMSDOSFSoptions MSDOSFS # MSDOS FilesystemФайловая система &ms-dos;. Если вы не собираетесь монтировать
форматированный в DOS раздел жесткого диска в момент загрузки, вы можете
безопасно закомментировать этот параметр. Необходимый модуль будет
автоматически загружен, когда вы в первый раз смонтируете раздел DOS, так,
как это описано ниже. Кроме того, замечательный пакет
emulators/mtools позволяет получить
доступ к DOS дискетам без необходимости монтировать и размонтировать их
(и не требует наличия MSDOSFS).options CD9660 # ISO 9660 FilesystemФайловая система ISO 9660 для компакт-дисков. Если у вас нет привода
CDROM или вы будете лишь изредка монтировать компакт-диски с данными,
закомментируйте эту строку, так как необходимый модуль будет загружен
автоматически при первом монтировании компакт-диска с данными. Для
использования звуковых компакт-дисков эта файловая система не
потребуется.options PROCFS # Process filesystemФайловая система процессов. Это виртуальная файловая
система монтируемая в /proc, которая позволяет таким
приложениям, как &man.ps.1; выдавать вам больше информации о запущенных
процессах. Использование PROCFS не
требуется, так как большинство мониторинговых и отладочных инструментов
было адаптировано для работы без PROCFS:
система по умолчанию не монтирует файловую
систему процессов. Более того,
ядра 6.X-CURRENT, которые используют PROCFS, должны
также включать поддержку PSEUDOFS:options PSEUDOFS # Pseudo-filesystem frameworkoptions GEOM_GPT # GUID Partition Tables.Этот параметр делает возможным наличие большого количества
разделов на одном диске.options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]Совместимость с 4.3BSD. Не выключайте эту опцию; некоторые
приложения будут вести себя странно, если этой опции не будет в
ядре.options COMPAT_FREEBSD4 # Compatible with &os;4Эта опция требуется в &os; 5.X для платформ &i386; и Alpha для
поддержки приложений, собранных на более старых версиях &os;, которые
используют старые интерфейсы вызовов. Рекомендуется использовать данную
опцию на всех системах на платформах &i386; и Alpha, на которых могут
запускаться старые приложения; платформы, поддержка которых появилась
только в &os; 5.X, например ia64 и &sparc64;, не требуют этой
опции.options SCSI_DELAY=15000 # Delay (in ms) before probing SCSIЭтот параметр заставляет ядро приостановиться на 15 секунд перед тем,
как идентифицировать каждое устройство SCSI в вашей системе. Если у вас
установлены только жесткие диски IDE, вы можете игнорировать эту опцию, в
противном случае, возможно, вы захотите уменьшить это число, например до
5 секунд, для того, чтобы ускорить загрузку. Естественно, что если вы
сделаете это, а у &os; появятся проблемы с распознанием ваших устройств
SCSI, необходимо будет увеличить этот параметр.options KTRACE # ktrace(1) supportВключает поддержку трассировки процессов, что удобно при
отладке.options SYSVSHM # SYSV-style shared memoryЭтот параметр предоставляет поддержку разделяемой памяти System V.
Наиболее распространенное применение этого — расширение XSHM в X, которое
многие приложения, интенсивно работающие с графикой, будут автоматически
использовать для повышения скорости работы. Если вы используете X,
эта опция будет необходима.options SYSVMSG # SYSV-style message queuesПоддержка сообщений System V. Этот параметр
добавляет в ядро всего лишь несколько сотен байт.options SYSVSEM # SYSV-style semaphoresПоддержка семафоров System V. Не настолько часто используемая
возможность, но в ядро добавляет всего несколько сотен байт.Команда &man.ipcs.1; с параметром покажет
все процессы, которые используют любую из этих возможностей
System V.options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensionsРасширения реального времени, добавленные 1993 &posix;. Определенные
приложения из коллекции используют их, например
&staroffice;.options KBD_INSTALL_CDEV # install a CDEV entry in /devЭтот параметр относится к клавиатуре. Он добавляет CDEV
в /dev.options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~128k to driver.
options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~215k to driver.Распечатка регистров для облегчения отладки.options ADAPTIVE_GIANT # Giant mutex is adaptive.Giant — имя механизма защиты (спящего
мьютекса) для крупных наборов ресурсов ядра. На нынешний момент
Giant представляется фактически непригодным для использования в связи
с серьезными потерями в производительности, и активно заменяется
на механизмы, защищающие отдельные ресурсы ядра. Параметр
ADAPTIVE_GIANT включает Giant в число адаптивных
мьютексов: в случае, когда нить ядра нуждается в Giant, а он уже
захвачен нитью, выполняющейся на другом процессоре, первая нить
будет продолжать выполнение и ждать освобождения Giant. В норме
нить должна была бы уснуть, пока не настанет очередной момент ее
выполнения. Если вы не уверены, оставьте этот параметр в покое.kernel optionsSMPdevice apic # I/O APICУстройство apic разрешает использование набора I/O APIC для
распределения прерываний. Оно может быть использовано как с
однопроцессорными, так и с многопроцессорными ядрами (для последних
наличие apic является обязательным). Для поддержки многопроцессорности
добавьте строку options SMP.device isaВсе компьютеры, поддерживаемые &os;, имеют хотя бы одно устройство ISA.
Не удаляйте эту строку, даже если в вашем компьютере нет слотов ISA.
Для архитектуры IBM PS/2 (Микроканальная Архитектура (MCA)), &os;
предоставляет ограниченную поддержку данной шины. За дальнейшей
информацией о поддержке MCA обратитесь к файлу
/usr/src/sys/i386/conf/NOTES.device eisaВключите эту опцию если у вас материнская плата EISA. Это включает
автоопределение и конфигурирование поддержки всех устройств на шине
EISA.device pciВключите этот параметр, если у вас материнская плата с поддержкой
PCI. Это включит автоопределение карт PCI и проксирование из шины PCI в
шину ISA.# Floppy drives
device fdcКонтроллер флоппи-диска.# ATA and ATAPI devices
device ataЭтот драйвер поддерживает все устройства ATA и ATAPI. Вам необходима
только одна строка device ata в ядре для того, чтобы
обнаружить все PCI устройства ATA/ATAPI в современных машинах.device atadisk # ATA disk drivesЭта строка необходима вместе с device ata для
поддержки дисков ATA.device ataraid # ATA RAID drivesЭта строка необходима вместе с device ata
для поддержки дисков ATA RAID.
device atapicd # ATAPI CDROM drivesПоддержка приводов ATAPI CDROM. Используется вместе с
device ata.device atapifd # ATAPI floppy drivesПоддержка флоппи-приводов ATAPI. Используется вместе с
device ata.device atapist # ATAPI tape drivesПоддержка ленточных приводов ATAPI (стримеров). Используется вместе с
device ata.options ATA_STATIC_ID # Static device numberingЗаставляет драйвер нумеровать устройства статически;
в противном случае происходит динамическая нумерация.# SCSI Controllers
device ahb # EISA AHA1742 family
device ahc # AHA2940 and onboard AIC7xxx devices
device ahd # AHA39320/29320 and onboard AIC79xx devices
device amd # AMD 53C974 (Teckram DC-390(T))
device isp # Qlogic family
device mpt # LSI-Logic MPT-Fusion
#device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (newer chipsets)
device trm # Tekram DC395U/UW/F DC315U adapters
device adv # Advansys SCSI adapters
device adw # Advansys wide SCSI adapters
device aha # Adaptec 154x SCSI adapters
device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
device bt # Buslogic/Mylex MultiMaster SCSI adapters
device ncv # NCR 53C500
device nsp # Workbit Ninja SCSI-3
device stg # TMC 18C30/18C50Контроллеры SCSI. Закомментируйте те, которых у вас в системе нет.
Если у вас в системе исключительно IDE устройства, вы можете удалить все
эти строки.# SCSI peripherals
device scbus # SCSI bus (required for SCSI)
device ch # SCSI media changers
device da # Direct Access (disks)
device sa # Sequential Access (tape etc)
device cd # CD
device pass # Passthrough device (direct SCSI access)
device ses # SCSI Environmental Services (and SAF-TE)Периферийные устройства SCSI. Опять-таки, закомментируйте те,
которых у вас в системе нет, или, если у вас в наличии исключительно IDE,
можете удалить все.USB &man.umass.4; драйвер (и некоторые другие драйверы) используют
подсистему SCSI, хотя и не являются настоящими SCSI устройствами.
Следовательно, вам необходимо сохранить поддержку SCSI, если
какой-либо из этих драйверов включен в конфигурацию ядра.# RAID controllers interfaced to the SCSI subsystem
device amr # AMI MegaRAID
device arcmsr # Areca SATA II RAID
device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID
device ciss # Compaq Smart RAID 5*
device dpt # DPT Smartcache III, IV - See NOTES for options
device hptmv # Highpoint RocketRAID 182x
device iir # Intel Integrated RAID
device ips # IBM (Adaptec) ServeRAID
device mly # Mylex AcceleRAID/eXtremeRAID
device twa # 3ware 9000 series PATA/SATA RAID
# RAID controllers
device aac # Adaptec FSA RAID
device aacp # SCSI passthrough for aac (requires CAM)
device ida # Compaq Smart RAID
device mlx # Mylex DAC960 family
device pst # Promise Supertrak SX6000
device twe # 3ware ATA RAIDПоддерживаемые RAID-контроллеры. Если у вас нет таковых, можете их
закомментировать или удалить эти строки.# atkbdc0 controls both the keyboard and the PS/2 mouse
device atkbdc # AT keyboard controllerКонтроллер клавиатуры (atkbdc) предоставляет
средства ввода/вывода для клавиатуры AT и PS/2 устройств. Этот
контроллер необходим драйверу клавиатуры (atkbd) и
PS/2 устройств (psm).device atkbd # AT keyboardДрайвер atkbd вместе с контроллером
atkbdc предоставляет доступ к клавиатуре AT 84 или
улучшенной клавиатуре AT, которая подключена к контроллеру AT
клавиатуры.device psm # PS/2 mouseИспользуйте это устройство, если ваша мышь включается в порт
PS/2.device vga # VGA video card driverДрайвер видеокарты.# splash screen/screen saver
device splash # Splash screen and screen saver supportЗаставка при загрузке. Хранители экрана также требуют этого
устройства.# syscons is the default console driver, resembling an SCO console
device scsc — это драйвер консоли по умолчанию, который
имитирует консоль SCO. Так как большая часть консольных полноэкранных
приложений обращаются к консоли через терминальную библиотеку
termcap, вас не должно волновать, будете ли вы
использовать этот драйвер, либо драйвер vt, который
является VT220-совместимым драйвером консоли. Если у
вас возникнут какие-либо проблемы с приложениями, работающими с этим
драйвером консоли, установите переменную окружения TERM в
значение scoansi.# Enable this for the pcvt (VT220 compatible) console driver
#device vt
#options XSERVER # support for X server on a vt console
#options FAT_CURSOR # start with block cursorVT220-совместимый драйвер консоли, обратно совместимый с VT100/102.
Он работает лучше на некоторых лэптопах, у которых возникают проблемы
несовместимости с sc. Также, установите переменную
окружения TERM в значение vt100 или
vt220. Этот драйвер также может быть полезен в
случаях подключения к большому количеству различных машин через сеть, на
которых параметры для устройства sc для
termcap или terminfo могут
отсутствовать — vt100 присутствует практически
на любой платформе.device agpВключите эту опцию, если у вас есть AGP карта в системе. Это включит
поддержку AGP и AGP GART для тех карт, которые поддерживают эту
возможность.# Floating point support - do not disable.
device npxnpx — это интерфейс к модулю операций с плавающей
точкой во &os;, который может использовать как аппаратный сопроцессор, так
и программную эмуляцию. Этот параметр является
обязательным.APM# Power management support (see NOTES for more options)
#device apmПоддержка Advanced Power Management. Чаще всего используется в
лэптопах, хотя в ядре GENERIC &os; 5.X
и выше отключена по умолчанию.# Add suspend/resume support for the i8254.
device pmtimerУстройство таймера для управления энергопотреблением, APM и
ACPI.# PCCARD (PCMCIA) support
# PCMCIA and cardbus bridge support
device cbb # cardbus (yenta) bridge
device pccard # PC Card (16-bit) bus
device cardbus # CardBus (32-bit) busПоддержка PCMCIA. Включите ее, если вы используете лэптоп.# Serial (COM) ports
device sio # 8250, 16[45]50 based serial portsЧетыре последовательных порта, которые известны как
COM порты
в мире &ms-dos;/&windows;Если у вас есть внутренний модем на COM4 и последовательный порт
COM2, вам понадобится поменять IRQ модема на 2 (по непонятным
техническим причинам IRQ2 = IRQ9) для того, чтобы получить к нему
доступ из &os;. Если у вас есть многопортовая карта с
последовательными портами, ознакомьтесь с &man.sio.4; чтобы узнать
корректные значения для добавления в
/boot/device.hints. Некоторые видеокарты (в частности
те, что используют чипы S3) используют адреса ввода/вывода в форме
0x*2e8 и, так как многие дешевые последовательные
карты не полностью раскодируют шестнадцатибитное пространство адресов
ввода/вывода, они конфликтуют с этими картами, в итоге COM4 оказывается
практически недоступным.Каждый последовательный порт требует уникального IRQ (кроме тех
случаев, когда вы используете мультипортовую карту, которая
поддерживает совместное использование прерываний), поэтому значения
IRQ по умолчанию для COM3 и
COM4 не могут быть использованы.# Parallel port
device ppcИнтерфейс параллельного порта на шине ISA.device ppbus # Parallel port bus (required)Поддержка шины параллельного порта.device lpt # PrinterПоддержка принтеров на параллельном порту.Все три последних устройства необходимы для поддержка принтеров на
параллельном порту.device plip # TCP/IP over parallelДрайвер TCP/IP через параллельный порт.device ppi # Parallel port interface deviceПоддержка ввода/вывода общего назначения (geek port) +
IEEE1284 ввода/вывода.#device vpo # Requires scbus and dazip driveДрайвер привода Iomega Zip. Требует наличия scbus
и da. Наилучшая производительность достигается с
портами в режиме EPP 1.9.#device pucРаскомментируйте это устройство, если у вас есть
простая последовательная или параллельная
PCI карта, поддерживаемая драйвером &man.puc.4;.# PCI Ethernet NICs.
device de # DEC/Intel DC21x4x (Tulip)
device em # Intel PRO/1000 adapter Gigabit Ethernet Card
device ixgb # Intel PRO/10GbE Ethernet Card
device txp # 3Com 3cR990 (Typhoon)
device vx # 3Com 3c590, 3c595 (Vortex)Драйвера сетевых карт PCI. Закомментируйте или удалите драйвера тех
карт, которые отсутствуют в вашей системе.# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device miibus # MII bus supportПоддержка шины MII требуется для некоторых PCI 10/100 Ethernet карт,
которые используют MII-совместимые передатчики или реализуют
интерфейс управления передатчиком, который имитирует MII. Добавление
device miibus в конфигурационный файл ядра включает
поддержку стандартного API miibus и всех драйверов PHY, включая стандартный
для тех PHY, которые не обрабатываются специфическим образом конкретным
драйвером.device bfe # Broadcom BCM440x 10/100 Ethernet
device bge # Broadcom BCM570xx Gigabit Ethernet
device dc # DEC/Intel 21143 and various workalikes
device fxp # Intel EtherExpress PRO/100B (82557, 82558)
device lge # Level 1 LXT1001 gigabit ethernet
device nge # NatSemi DP83820 gigabit ethernet
device pcn # AMD Am79C97x PCI 10/100 (precedence over 'lnc')
device re # RealTek 8139C+/8169/8169S/8110S
device rl # RealTek 8129/8139
device sf # Adaptec AIC-6915 (Starfire)
device sis # Silicon Integrated Systems SiS 900/SiS 7016
device sk # SysKonnect SK-984x > SK-982x gigabit Ethernet
device ste # Sundance ST201 (D-Link DFE-550TX)
device ti # Alteon Networks Tigon I/II gigabit Ethernet
device tl # Texas Instruments ThunderLAN
device tx # SMC EtherPower II (83c170 EPIC)
device vge # VIA VT612x gigabit ethernet
device vr # VIA Rhine, Rhine II
device wb # Winbond W89C840F
device xl # 3Com 3c90x (Boomerang, Cyclone)Драйвера, которые используют контроллер шины MII.# ISA Ethernet NICs. pccard NICs included.
device cs # Crystal Semiconductor CS89x0 NIC
# 'device ed' requires 'device miibus'
device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards
device ex # Intel EtherExpress Pro/10 and Pro/10+
device ep # Etherlink III based cards
device fe # Fujitsu MB8696x based cards
device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc.
device lnc # NE2100, NE32-VL Lance Ethernet cards
device sn # SMC's 9000 series of Ethernet chips
device xe # Xircom pccard Ethernet
# ISA devices that use the old ISA shims
#device leДрайвера сетевых карт ISA. Ознакомьтесь с файлом
/usr/src/sys/i386/conf/NOTES,
чтобы узнать, какие
сетевые карты каким драйвером поддерживаются.# Wireless NIC cards
device wlan # 802.11 support
device an # Aironet 4500/4800 802.11 wireless NICs.
device awi # BayStack 660 and others
device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
#device wl # Older non 802.11 Wavelan wireless NIC.Поддержка различных беспроводных карт.# Pseudo devices
device loop # Network loopbackСтандартное устройство обратной связи для TCP/IP. Если вы запускаете
telnet или FTP по отношению localhost (он же 127.0.0.1), то соединение пройдёт через это
устройство. Этот параметр обязателен.device mem # Memory and kernel memory devicesУстройства системной памяти.device io # I/O deviceЭтот параметр позволяет процессу получение привилегий
ввода/вывода. Он полезен для написания пользовательских
программ, работающих с оборудованием непосредственно. Необходим
для работы X Window system.device random # Entropy deviceГенератор случайных чисел для криптографической защиты.device ether # Ethernet supportether необходим лишь в случае, если у вас есть
сетевая карта. Он включает поддержку стандартного кода протокола
Ethernet.device sl # Kernel SLIPsl — это поддержка SLIP. SLIP был практически
вытеснен PPP, который легче настраивается, лучше подходит для соединений
модем-модем и имеет больше возможностей.device ppp # Kernel PPPПоддержка PPP в ядре для соединений dial-up. Также существует версия
PPP, реализованного как приложение, использующее tun, и
предлагающее большую гибкость и большее количество возможностей, как,
например, соединение при необходимости (наличии обращения к сети).device tun # Packet tunnel.Используется пользовательским программным обеспечением PPP.
Обратитесь к
разделу PPP этой книги за дальнейшей
информацией.
device pty # Pseudo-ttys (telnet etc)псевдо-терминал или имитированный порт для входа.
Используется входящими telnet и
rlogin-сессиями, приложением
xterm и некоторыми другими приложениями,
такими как Emacs.device md # Memory disksПсевдо-устройства дисков в памяти.device gif # IPv6 and IPv4 tunnelingПоддержка туннелирования IPv6 через IPv4, IPv4 через IPv6, IPv4 через
IPv4 и IPv6 через IPv6. Устройство
gif является автоклонируемым, и будет
срздавать файлы устройств по мере необходимости.device faith # IPv6-to-IPv4 relaying (translation)Это псевдо-устройство захватывает пакеты, которые были посланы ему и
перенаправляет их даемону трансляции IPv4/IPv6.# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that 'bpf' is required for DHCP.
device bpf # Berkeley packet filterФильтр пакетов Berkeley. Это псевдо-устройство позволяет переводить
сетевые интерфейсы в неразборчивый (promiscuous) режим, в
котором перехватывается любой пакет в широковещательной сети (например
ethernet). Эти пакеты могут быть сохранены на диск и/или исследованы при
помощи &man.tcpdump.1;.Устройство &man.bpf.4; также используется программой
&man.dhclient.8; для того, чтобы получить адрес шлюза по умолчанию и
т.п. Если вы используете DCHP, не удаляйте эту опцию.# USB support
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
#device ehci # EHCI PCI->USB interface (USB 2.0)
device usb # USB Bus (required)
#device udbp # USB Double Bulk Pipe devices
device ugen # Generic
device uhid # Human Interface Devices
device ukbd # Keyboard
device ulpt # Printer
device umass # Disks/Mass storage - Requires scbus and da
device ums # Mouse
device urio # Diamond Rio 500 MP3 player
device uscanner # Scanners
# USB Ethernet, requires mii
device aue # ADMtek USB Ethernet
device axe # ASIX Electronics USB Ethernet
device cdce # Generic USB over Ethernet
device cue # CATC USB Ethernet
device kue # Kawasaki LSI USB Ethernet
device rue # RealTek RTL8150 USB EthernetПоддержка различных USB устройств.# FireWire support
device firewire # FireWire bus code
device sbp # SCSI over FireWire (Requires scbus and da)
device fwe # Ethernet over FireWire (non-standard!)Поддержка различных устройств Firewire.За дальнейшей информацией о дополнительных устройствах,
поддерживаемых &os;, обратитесь к файлу
/usr/src/sys/i386/conf/NOTES.Конфигурации с большим количеством оперативной памяти
(PAE)
Расширения физического адресного пространства (Physical Address
Extensions (PAE))
Конфигурации с большим количеством оперативной памяти
Машины с большим количеством оперативной памяти, в которых требуется
более 4 гигабайт в пользовательском адресном пространстве и адресном
пространстве ядра (User+Kernel Virtual Address, KVA)
в обычном случае не смогут использовать более 4
гигабайт. Для решения этой проблемы Intel добавили поддержку 36-битной
адресации в &pentium; Pro и более поздних моделях процессоров.Расширение физического адресного пространства
(PAE) в процессорах &intel; &pentium; Pro и более
поздних позволяет использовать до 64 гигабайт оперативной памяти. &os;
имеет поддержку этой возможности посредством опции ядра
, доступной во всех текущих версиях &os;.
В связи с ограничениями архитектуры Intel, не делается
никакого различия между памятью ниже или выше 4 гигабайт. Память,
размещенная выше 4 гигабайт, просто добавляется к доступной памяти.Для того, чтобы включить PAE в ядре, просто
добавьте приведенную строку в конфигурационный файл ядра:options PAEПоддержка PAE в &os; существует только для
процессоров &intel; IA-32. Также следует заметить, что
PAE в &os; не было полностью протестировано и должно
считаться находящимся в состоянии бета-тестирования по сравнению с
другими, стабильными возможностями &os;.Поддержка PAE в &os; имеет следующие
ограничения:Процесс не может получить доступ к более, чем 4 гигабайтам
пространства VM.KLD модули не могут быть загружены в ядро с
включенной поддержкой PAE из-за разницы в
окружении для сборки модулей и самого ядра.Драйверы устройств, которые не используют интерфейс
&man.bus.dma.9;, приведут к повреждению информации в ядре с включенным
PAE. Не рекомендуется использовать такие драйверы.
По этой причине в &os; включен конфигурационный файл ядра
PAE, из которого удалены все драйверы, о которых
известно, что они не работают при включенной поддержке
PAE.Некоторые системные переменные определяют использование ресурсов
памяти по количеству доступной физической памяти. Такие переменные
могут привести к ненужному чрезмерному выделению памяти из-за
особенностей работы системы PAE. Один из таких
примеров — переменная , которая
управляет максимальным количеством vnode, разрешенных в ядре.
Рекомендуется установить эту и подобные ей переменные вручную в
адекватные значения.Возможно, понадобится увеличить пространство виртуальных адресов
ядра (KVA) или уменьшить какую-либо переменную (см.
выше), значение которой было неоправданно велико и могло привести к
исчерпанию KVA. Для этого может быть использована
опция ядра .В случае сомнений относительно производительности и стабильности
рекомендуется обратиться к странице руководства &man.tuning.7;. Страница
руководства &man.pae.4; содержит свежую информацию о поддержке
PAE в &os;.Решение проблемСуществует пять категорий проблем, которые могут возникнуть при
сборке собственного ядра. Вот они:Не удаётся отработать команде config:Если команда &man.config.8; не может отработать, то, скорее всего,
вы допустили где-нибудь маленькую ошибку. К счастью, &man.config.8;
выведет номер проблемной строки, поэтому вы можете быстро найти
строку, содержащую ошибку. Например, если вы видите:config: line 17: syntax errorУбедитесь, что опция введена верно путём сравнения с файлом
GENERIC или другим источником.Не удаётся отработать команде make:Если не удаётся отработать команде make, обычно
это означает ошибку в описании конфигурации ядра, которая не достаточно
тривиальна для того, чтобы &man.config.8; мог обнаружить её.
Опять-таки, просмотрите файл конфигурации, и, если вы все еще не можете
решить проблему, напишите письмо в &a.questions;, включив в письмо файл
конфигурации ядра. Скорее всего проблема будет решена быстро.Ядро не загружается:Если ваше новое ядро не загружается или ему не удаётся обнаружить
ваши устройства — не паникуйте! К счастью, в &os; существует отличный
механизм для восстановления после установки несовместимого ядра.
Просто выберите ядро, которое хотите загрузить, в загрузчике &os;.
Доступ к нему вы можете получить, когда система находится в стартовом меню.
Выберите шестой пункт (Escape to a loader prompt),
введите команду unload kernel и наберите
boot /boot/kernel.old/kernel,
или используйте любое
другое ядро, которое загрузится без проблем. Во время
переконфигурирования ядра всегда полезно оставлять копию ядра, о
котором известно, что оно рабочее.После загрузки с рабочим ядром вы можете проверить ваш файл
конфигурации и попробовать собрать ядро опять. Очень полезным в данном
случае окажется файл /var/log/messages, в котором,
среди других записей, имеются сообщения ядра от каждой успешной загрузки.
Также, команда &man.dmesg.8; выведет сообщения ядра от текущей
загрузки.Если у вас возникли проблемы со сборкой ядра, убедитесь, что вы
сохранили ядро GENERIC или другое рабочее ядро
под другим именем, чтобы оно не было удалено при следующей сборке. Вы
не можете использовать kernel.old, потому что
при установке нового ядра kernel.old
перезаписывается последним установленным ядром, которое может
оказаться нерабочим. Также, как можно скорее переместите рабочее
ядро в /boot/kernel,
так как некоторые команды, такие как &man.ps.1; будут работать
некорректно. Для этого просто переместите каталог, содержащий
работоспособное ядро:&prompt.root; mv /boot/kernel /boot/kernel.bad
&prompt.root; mv /boot/kernel.good /boot/kernelЯдро работает, но &man.ps.1; больше не работает:Если вы установили версию ядра отличную от той, с которой были
собраны ваши системные утилиты, например, ядро от -CURRENT на системе -RELEASE,
большая часть системных команд, таких как &man.ps.1; и &man.vmstat.8;
не будут больше работать. Вам потребуется перекомпилировать и установить систему
той же версии исходных текстов, что и ядро. Это одна из причин,
по которой не следует использовать версию ядра, отличную от версии всей
остальной системы.
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 c89486d6ff..6bf2c0b420 100644
--- a/ru_RU.KOI8-R/books/handbook/network-servers/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/network-servers/chapter.sgml
@@ -1,5274 +1,4831 @@
MurrayStokelyРеорганизовал АндрейЗахватовПеревод на русский язык: Сетевые серверыКраткий обзорЭта глава посвящена некоторым наиболее часто используемым сетевым
службам систем &unix;. Мы опишем, как установить, настроить,
протестировать и поддерживать многие различные типы сетевых сервисов.
Для облегчения вашей работы в главу включены
примеры конфигурационных файлов.После чтения этой главы вы будете знать:Как управлять даемоном inetd.Как настроить сетевую файловую систему.Как настроить сетевой сервер информации для совместного
использования учётных записей пользователей.Как настроить автоматическое конфигурирование сетевых параметров
при помощи DHCP.Как настроить сервер имён.Как настроить Apache HTTP
сервер.Как настроить файловый и сервер печати для &windows;
клиентов с использованием Samba.Как синхронизировать дату и время, а также настроить сервер
времени с протоколом NTP.Перед чтением этой главы вы должны:Понимать основы работы скриптов
/etc/rc.Свободно владеть основными сетевыми терминами.Знать как устанавливать дополнительные программы сторонних
разработчиков ().ChernLeeТекст предоставил Обновлено для &os; 6.1-RELEASEПроект документации &os;Супер-серверinetdОбзор&man.inetd.8; иногда называют также супер-сервером
Интернет, потому что он управляет соединениями к многим
сервисам. Когда
inetd принимает соединение, он определяет,
для какой программы предназначено соединение, запускает соответствующий
процесс и предоставляет ему сокет, ссылка на который передается
процессу в качестве стандартных устройств ввода, вывода и сообщения об
ошибках. Для не слишком нагруженных серверов запуск через
inetd может уменьшить общую нагрузку на систему по
сравнению с запуском каждого даемона индивидуально в выделенном
режиме.В первую очередь inetd используется для
вызова других даемонов, но несколько простых протоколов, таких, как
chargen, auth и
daytime, обслуживаются
непосредственно.Этот раздел посвящен основам настройки
inetd посредством его параметров командной
строки и его конфигурационного файла,
/etc/inetd.conf.Настройкиinetd инициализируется посредством
системы &man.rc.8;. Параметр
inetd_enable по умолчанию установлен в
NO, однако может быть включен утилитой
sysinstall в процессе установки.
Указание
inetd_enable="YES" или
inetd_enable="NO" в файле
/etc/rc.conf разрешит или запретит запуск
inetd во время загрузки.
Команда
/etc/rc.d/inetd rcvar
покажет текущие установки переменных, относящихся к
inetd.Кроме того, через inetd_flags даемону
inetd могут быть переданы различные
параметры командной строки.Параметры командной строкиКак и большинство даемонов, для inetd
существует большое количество разнообразных опций, изменяющих
его поведение. Полный из список таков;inetdОпции могут передаваться inetd
при помощи переменной inetd_flags файла
/etc/rc.conf. По умолчанию переменная
inetd_flags установлена в -wW -C
60, то есть включает обработку TCP wrapping и запрещает
обращаться с одного IP-адреса к сервису более чем 60 раз в
минуту.Начинающих пользователей порадует отсутствие необходимости
менять эти параметры в стандартных случаях. Тем не менее, мы
остановимся на опциях, ограничивающих количество и частоту
соединений, поскольку они могут быть полезны для исключения
массированных атак. Полный список опций можно найти на странице
справочника &man.inetd.8;.-c maximumОпределение максимального числа одновременных запусков каждой
службы; по умолчание не ограничено. Может быть переопределено
индивидуально для каждой службы при помощи параметра
.-C rateОпределение по умолчанию максимального количества раз,
которое служба может быть вызвана с одного IP-адреса в минуту; по
умолчанию не ограничено. Может быть переопределено для каждой
службы параметром
.-R rateОпределяет максимальное количество раз, которое служба может
быть вызвана в минуту; по умолчанию 256. Частота, равная 0,
не ограничивает число вызовов.-s maximumЗадает максимальное количество процессов, одновременно
обслуживающих один сервис для одного IP-адреса; по умолчанию
не ограничено. Может переопределяться для каждой службы
параметром .inetd.confНастройка inetd производится через файл
/etc/inetd.conf.Если в файле /etc/inetd.conf делались
изменения, то inetd можно заставить считать
его конфигурационный файл повторно посредством командыПерезагрузка конфигурационного файла
inetd&prompt.root; /etc/rc.d/inetd reloadВ каждой строке конфигурационного файла описывается отдельный
даемон. Комментариям в файле предшествует знак #.
Строки в файле
/etc/inetd.conf имеют такой формат:service-name
socket-type
protocol
{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]
user[:group][/login-class]
server-program
server-program-argumentsПример записи для даемона &man.ftpd.8;,
использующего 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[/max-child-per-ip]]] определяет, может ли даемон,
вызванный из inetd, работать с
собственным сокетом, или нет. Сокеты типа
должны использовать параметр , когда как
даемоны с потоковыми
сокетами, которые обычно многопоточны, должны использовать
. обычно передает
много сокетов одному даемону, когда как
порождает даемон для каждого нового сокета.Максимальное число порожденных даемонов, которых может
создать inetd, может быть задано
параметром . Если нужно ограничение в
десять экземпляров некоторого даемона, то после параметра
нужно задать
/10. При задании /0
ограничения на количество экземпляров снимаются.Кроме , могут быть задействованы
два других параметра, ограничивающих максимальное число соединений от
одного источника.
ограничивает
количество соединений от одного IP-адреса в течение минуты, так что
значение, равное десяти, будет ограничивать
любой заданный IP-адрес на выполнение десяти попыток подключения
к некоторому сервису в минуту. Параметр
ограничивает количество
дочерних процессов, которые могут быть одновременно
задействованы на обслуживание одного IP-адреса.
Эти опции полезны для предотвращения
намеренного или ненамеренного расходования ресурсов и атак типа
Denial of Service (DoS) на машину.В этом поле одно из значений
или
обязательны. ,
и
опциональны.Многопоточный даемон типа stream без ограничений
,
или
будет
определен просто как nowait.Тот же самый даемон с ограничением в максимум десять даемонов
будет определен так: nowait/10.Та же конфигурация с ограничением в двадцать
соединений на IP-адрес в минуту и общим ограничением в максимум
десять порожденных даемонов выглядит так:
nowait/10/20.Эти параметры, используемые все со значениями по умолчанию
даемоном &man.fingerd.8;, имеют такой
вид:finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -sНаконец, пример, описывающий ограничение на 100 даемонов
в целом, при этом не более чем по 5 на один IP-адрес,
будет выглядеть так:
nowait/100/0/5.userЭто имя пользователя, под которым должен
работать соответствующий даемон. Чаще всего даемоны работают
как пользователь 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 предоставляет
идентификационные сетевые услуги
и поддается настройке; прочие сервисы ненастраиваемы.Обратитесь к справочной странице по &man.inetd.8; для получения
более подробной информации.TomRhodesРеорганизация и улучшения BillSwingleТекст создал Network File System (NFS)NFSКроме поддержки многих прочих типов файловых систем, во FreeBSD
встроена поддержка сетевой файловой системы (Network File System),
известной как NFS. NFS позволяет
системе использовать каталоги и файлы совместно с другими машинами,
посредством сети. Посредством NFS пользователи и
программы могут получать доступ к файлам на удалённых системах точно так
же, как если бы это были файлы на собственных дисках.Вот некоторые из наиболее заметных преимуществ, которые даёт
использование NFS:Отдельно взятые рабочие станции используют меньше собственного
дискового пространства, так как совместно используемые данные могут
храниться на одной отдельной машине и быть доступными для других
машин в сети.Пользователям не нужно иметь домашние каталоги, отдельные
для каждой машины в вашей сети. Домашние каталоги могут
располагаться на сервере NFS и их можно сделать
доступными отовсюду в сети.Устройства хранения информации, такие, как дискеты, приводы
CD-ROM и устройства &iomegazip;, могут использоваться другими машинами в
сети. Это может привести к уменьшению переносимых устройств хранения
информации в сети.Как работает NFSNFS строится по крайней мере из двух основных
частей: сервера и одного или большего количества клиентов. Клиент
обращается к данным, находящимся на сервере, в режиме удалённого
доступа. Для того, чтобы это нормально функционировало, нужно
настроить и запустить несколько процессов.
-
- В &os; 4.X, вместо утилиты
- rpcbind использовалась утилита
- portmap.
- Таким образом, при
- использовании &os; 4.X пользователю необходимо заменить в
- последующих примерах все команды rpcbind
- на portmap.
-
-
На сервере работают следующие даемоны:NFSсерверфайл серверUNIX клиентыrpcbind
-
- portmap
- mountdnfsdДаемонОписаниеnfsdДаемон NFS, обслуживающий запросы от
клиентов NFS.mountdДаемон монтирования NFS, который
выполняет запросы, передаваемые ему от &man.nfsd.8;.rpcbindЭтот даемон позволяет клиентам
NFS определить порт, используемый сервером
NFS.Клиент может запустить также даемон, называемый
nfsiod. nfsiod
обслуживает запросы, поступающие от сервера от сервера
NFS. Он необязателен, увеличивает
производительность, однако для нормальной и правильной работы не
требуется. Для получения дополнительной информации обратитесь к
разделу справочной системы о &man.nfsiod.8;.Настройка NFSNFSнастройкаНастройка NFS является достаточно незамысловатым
процессом. Все процессы, которые должны быть запущены, могут быть
запущены во время загрузки посредством нескольких модификаций в
вашем файле /etc/rc.conf.Проверьте, что на NFS-сервере в файле
/etc/rc.conf имеются такие строки:rpcbind_enable="YES"
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 4"
mountd_flags="-r"mountd запускается автоматически, если включена
функция сервера NFS.На клиенте убедитесь, что в файле /etc/rc.conf
присутствует такой параметр:nfs_client_enable="YES"Файл /etc/exports определяет, какие
файловые системы на вашем сервере NFS будут
экспортироваться (иногда их называют совместно
используемыми). Каждая строка в
/etc/exports задаёт файловую систему, которая
будет экспортироваться и какие машины будут иметь к ней доступ. Кроме
машин, имеющих доступ, могут задаваться другие параметры, влияющие на
характеристики доступа. Имеется полный набор параметров,
которые можно использовать, но здесь пойдёт речь лишь о некоторых из
них. Описания остальных параметров можно найти на страницах справочной
системы по &man.exports.5;.Вот несколько примерных строк из файла
/etc/exports:NFSпримеры экспортированияВ следующих примерах даётся общая идея того, как экспортировать
файловые системы, хотя конкретные параметры могут отличаться в
зависимости от ваших условий и конфигурации сети. К примеру, чтобы
экспортировать каталог /cdrom для трёх машин,
находящихся в том же самом домене, что и сервер (поэтому отсутствует
доменное имя для каждой машины) или для которых имеются записи в
файле /etc/hosts. Флаг
указывает на использование экспортируемой файловой
системы в режиме только чтения. С этим флагом удалённая система не
сможет никоим образом изменить экспортируемую файловую систему./cdrom -ro host1 host2 host3В следующей строке экспортируется файловая система
/home, которая становится доступной трем хостам,
указанным по их IP-адресам. Это полезно, если у вас есть собственная
сеть без настроенного сервера DNS. Как вариант,
файл /etc/hosts может содержать внутренние имена
хостов; пожалуйста, обратитесь к справочную систему по &man.hosts.5;
для получения дополнительной информации. Флаг
позволяет рассматривать подкаталоги в
качестве точек монтирования. Другими словами, это не монтирование
подкаталогов, но разрешение клиентам монтировать только каталоги,
которые им требуются или нужны./home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4В строке, приведённой ниже, файловая система
/a экспортируется таким образом, что она доступна
двум клиентам из других доменов. Параметр
позволяет пользователю
root удалённой системы осуществлять запись на
экспортируемую файловую систему как пользователь
root. Если параметр
-maproot=root не задан,
то даже если пользователь имеет права доступа root
на удалённой системе, он не сможет модифицировать
файлы на экспортированной файловой системе./a -maproot=root host.example.com box.example.orgДля того, чтобы клиент смог обратиться к экспортированной файловой
системе, он должен иметь права сделать это. Проверьте, что клиент
указан в вашем файле /etc/exports.В файле /etc/exports каждая строка содержит
информацию об экспортировании для отдельной файловой системы для
отдельно взятого хоста. Удалённый хост может быть задан только
один раз для каждой файловой системы, и может иметь
только одну запись, используемую по умолчанию, для каждой локальной
файловой системы. К примеру, предположим, что
/usr является отдельной файловой системой.
Следующий /etc/exports будет некорректен:# Invalid when /usr is one file system
/usr/src client
/usr/ports clientОдна файловая система, /usr, имеет две
строки, задающие экспортирование для одного и того же хоста,
client. Правильный формат в этом случае таков:/usr/src /usr/ports clientСвойства отдельной файловой системы, экспортируемой некоторому
хосту, должны задаваться в одной строке. Строки без указания клиента
воспринимаются как отдельный хост. Это ограничивает то, как вы можете
экспортировать файловые системы, но для большинства это не
проблема.Ниже приведён пример правильного списка экспортирования, где
/usr и /exports являются
локальными файловыми системами:# Экспортируем src и ports для client01 и client02, но
# только client01 имеет права пользователя root на них
/usr/src /usr/ports -maproot=root client01
/usr/src /usr/ports client02
# Клиентские машины имеют пользователя root и могут монтировать всё в
# каталоге /exports. Кто угодно может монтировать /exports/obj в режиме чтения
/exports -alldirs -maproot=root client01 client02
/exports/obj -roДаемон mountd должен быть
проинформирован об изменении файла /etc/exports,
чтобы изменения вступили в силу. Это может быть достигнуто посылкой
сигнала HUP процессу mountd:&prompt.root; kill -HUP `cat /var/run/mountd.pid`или вызовом скрипта mountd подсистемы &man.rc.8;
- с соответстввующим параметром:
+ с соответствующим параметром:
&prompt.root; /etc/rc.d/mountd reloadЗа подробной информацией о работе скриптов rc.d обращайтесь к
.Как вариант, при перезагрузке FreeBSD всё настроится правильно.
Хотя выполнять перезагрузку вовсе не обязательно. Выполнение следующих
команд пользователем root запустит всё, что
нужно.На сервере NFS:&prompt.root; rpcbind
&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:rpcbindportmapТерминОписаниеИмя домена NISГлавный сервер NIS и все его клиенты (включая вторичные
серверы), имеют доменное имя NIS. Как и в случае с именем
домена &windowsnt;, имя домена NIS не имеет ничего общего с
DNS.rpcbindДля обеспечения работы RPC (Remote Procedure Call,
Удалённого Вызова Процедур, сетевого протокола, используемого
NIS), должен быть запущен даемон rpcbind.
Если даемон rpcbind не запущен, невозможно
будет запустить сервер NIS, или работать как
- NIS-клиент (в &os; 4.X вместо
- rpcbind используется
- portmap).
+ 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 также поддерживает пакет программ
TCP Wrapper от Wietse Venema. Это позволяет
администратору для ограничения доступа вместо
/var/yp/securenets использовать конфигурационные
файлы TCP Wrapper.Хотя оба этих метода управления доступом обеспечивают некоторую
безопасность, они, как основанные на проверке привилегированного
порта, оба подвержены атакам типа IP spoofing. Весь
сетевой трафик, связанный с работой NIS, должен блокироваться вашим
брандмауэром.Серверы, использующие файл /var/yp/securenets,
могут быть не в состоянии обслуживать старых клиентов NIS с древней
реализацией протокола TCP/IP. Некоторые из этих реализаций при
рассылке широковещательных запросов устанавливают все биты машинной
части адреса в ноль и/или не в состоянии определить маску подсети при
вычислении адреса широковещательной рассылки. Хотя некоторые из этих
проблем могут быть решены изменением конфигурации клиента, другие
могут привести к отказу от использования
/var/yp/securenets.Использование /var/yp/securenets на сервере
с такой архаичной реализацией TCP/IP является весьма плохой идеей, и
приведёт к потере работоспособности NIS в большой части вашей
сети.TCP WrapperИспользование пакета TCP Wrapper увеличит
время отклика вашего сервера 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 версиях младше 6.0 используется
реализация DHCP клиента (&man.dhclient.8;) от ISC
(Internet Software Consortium). Более поздние версии используют
dhclient, импортированный из OpenBSD 3.7.
Вся информация здесь, относительно dhclient относится
либо к ISC, либо к DHCP клиентам. DHCP сервер включён в ISC
дистрибутив.Что описывается в этом разделеВ этом разделе описываются, как компоненты клиентской части ISC или OpenBSD
DHCP клиента, так и компоненты 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;.Интеграция с FreeBSDDHCP клиент от ISC или от OpenBSD, dhclient, полностью
интегрирован во &os; (относительно, используемой вами версии &os;). Поддержка клиента DHCP есть как в программе
установки, так и в самой системе, что исключает необходимость в
знании подробностей конфигурации сети в любой сети, имеющей сервер
DHCP. Утилита dhclient включена во все версии
FreeBSD, начиная с 3.2.sysinstallDHCP поддерживается утилитой sysinstall.
При настройке сетевого интерфейса из программы
sysinstall второй
вопрос, который вам задается: Do you want to try DHCP
configuration of the interface? (Хотите ли вы попробовать
настроить этот интерфейс через DHCP?). Утвердительный ответ
приведёт к запуску программы dhclient, и при удачном
его выполнении к автоматическому заданию информации для настройки
интерфейса.Есть две вещи, которые вы должны сделать для того, чтобы ваша
система использовала DHCP при загрузке:DHCPтребованияУбедитесь, что устройство bpf
включено в компиляцию вашего ядра. Чтобы это сделать, добавьте
- строчку device bpf
- (pseudo-device bpf в &os; 4.X)
- в конфигурационный
+ строчку device bpf в конфигурационный
файл ядра и перестройте ядро. Более подробная информация о
построении ядер имеется в .Устройство bpf уже является частью
ядра GENERIC, которое поставляется вместе с
FreeBSD, так что, если вы не используете другое ядро, то вам и
не нужно его делать для того, чтобы работал DHCP.Те, кто беспокоится о безопасности, должны иметь в виду, что
устройство bpf является также тем самым
устройством, которое позволяет работать программам-снифферам
пакетов (хотя для этого они должны быть запущены пользователем
root). Наличие устройства
bpfнеобходимо для
использования DHCP, но если вы чересчур беспокоитесь о
безопасности, то вам нельзя добавлять устройство
bpf в ядро только для того, чтобы
в неопределённом будущем использовать DHCP.Отредактируйте ваш файл /etc/rc.conf,
включив в него следующее:ifconfig_fxp0="DHCP"Обязательно замените fxp0 на имя интерфейса,
который вы хотите настраивать динамически, как это описано в .Если dhclient в вашей системе находится в другом
месте или если вы хотите задать дополнительные параметры для
dhclient, то также укажите следующее (изменив так,
как вам нужно):dhcp_program="/sbin/dhclient"
dhcp_flags=""DHCPсерверСервер DHCP, dhcpd, включён как часть порта
net/isc-dhcp3-server в коллекцию
портов. Этот порт содержит DHCP-сервер от ISC и документацию.ФайлыDHCPконфигурационные файлы/etc/dhclient.confdhclient требует наличия конфигурационного
файла, /etc/dhclient.conf. Как правило, файл
содержит только комментарии, а настройки по умолчанию достаточно
хороши. Этот настроечный файл описан на страницах справочной
системы по &man.dhclient.conf.5;./sbin/dhclientdhclient скомпонован статически и находится
в каталоге /sbin. На страница Справочника
&man.dhclient.8; дается более подробная информация о
dhclient./sbin/dhclient-scriptdhclient-script является специфичным для
FreeBSD скриптом настройки клиента DHCP. Он описан в
&man.dhclient-script.8;, но для нормального функционирования
никаких модификаций со стороны пользователя не требуется./var/db/dhclient.leasesВ этом файле клиент DHCP хранит базу данных выданных к
использованию адресов в виде журнала. На странице
&man.dhclient.leases.5; дается гораздо более подробное
описание.Дополнительная литератураПолное описание протокола DHCP дается в RFC 2131. Кроме
того, дополнительная информация есть на сервере .Установка и настройка сервера DHCPЧему посвящён этот разделЭтот раздел даёт информацию о том, как настроить систему
FreeBSD для работы в качестве сервера DHCP на основе реализации
пакета DHCP от ISC (Internet Software Consortium).Серверная часть пакета не поставляется как часть FreeBSD, так
что вам потребуется установить порт net/isc-dhcp3-relay для получения
этого сервиса. Обратитесь к для получения
более полной информации об использовании коллекции портов.Установка сервера DHCPDHCPустановкаДля того, чтобы настроить систему FreeBSD на работу в качестве
сервера DHCP, вам необходимо обеспечить присутствие устройства
&man.bpf.4;, вкомпилированного в ядро. Для этого
- добавьте строку device bpf
- (pseudo-device bpf в &os; 4.X) в файл
+ добавьте строку device bpf в файл
конфигурации вашего ядра. Для получения более полной информации о
построении ядер, обратитесь к .Устройство 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, нужно разрешить запуск сервера DHCP
в файле /etc/rc.conf, добавив в него
строкиdhcpd_enable="YES"
dhcpd_ifaces="dc0"
- Замените dc0 именем инферфейса (или именами
+ Замените dc0 именем интерфейса (или именами
интерфейсов, разделяя их пробелами), на котором(ых) сервер DHCP
должен принимать запросы от клиентов.Затем вы можете стартовать сервер DHCP при помощи команды&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Текст предоставил
+
+
+ Tom
+ Rhodes
+
+
+
+ Daniel
+ Gerzo
+
- Domain Name System (DNS)
+ 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 -
+ это протокол, при помощи которого имена преобразуются в
+ IP-адреса и наоборот. Например, в ответ на запрос о
+ www.FreeBSD.org будет получен IP-адрес
+ веб-сервера Проекта &os;, а запрос о ftp.FreeBSD.org возвратит
+ IP-адрес соответствующей машины с
+ FTP-сервером. Точно также происходит и обратный
+ процесс. Запрос, содержащий IP-адрес машины, возвратит имя хоста. Для
+ выполнения запросов к DNS вовсе не обязательно иметь
+ в системе работающий сервер имён.
+
+ &os; в настоящее время поставляется с сервером
+ DNS BIND9, предоставляющим
+ расширенные настройки безопасности, новую схему расположения файлов
+ конфигурации и автоматические настройки для &man.chroot.8;.DNS
- В сети Интернет DNS управляется через достаточно сложную систему
- авторизированных корневых серверов имён, и других менее крупных
- серверов имён, которые содержат и кэшируют информацию о конкретных
- доменах.
-
- В этом документа рассматривается BIND 8.x, так как это стабильная
- версия, используемая во FreeBSD. Начиная с &os; 5.3, с системой
- поставляется BIND9, инструкции к настройке которого
- находятся далее в этой главе. Пользователи &os; 5.2 и предыдущих
- релизов могут установить BIND9 из порта
- net/bind9.
-
- Протокол DNS стандартизован в RFC1034 и RFC1035.
+ В сети Интернет DNS управляется через
+ достаточно сложную систему авторизированных корневых серверов имён,
+ серверов доменов первого уровня (Top Level Domain,
+ TLD) и других менее крупных серверов имён, которые
+ содержат и кэшируют информацию о конкретных доменах.На данный момент пакет BIND поддерживается Internet Software
Consortium .Используемая терминологияДля понимания этого документа нужно понимать значения некоторых
- терминов, связанных с работой DNS.
+ терминов, связанных с работой DNS.
резолверобратный DNSкорневая зона
+
ТерминОпределение
- Прямой запрос к DNS (forward DNS)
+ Прямой запрос к DNS (forward DNS)Преобразование имён хостов в адреса IPОриджин (origin)Обозначает домен, покрываемый конкретным файлом
зоныnamed, bind, сервер
имёнОбщеупотребительные названия для обозначения пакета BIND,
- обеспечивающего работу сервера имён во FreeBSD.
+ обеспечивающего работу сервера имён во &os;.
РезолверСистемный процесс, посредством которого машина обращается
к серверу имён для получения информации о зоне
- Обратный DNS (reverse DNS)
+ Обратный DNS (reverse
+ DNS)
- Операция, обратная прямому запросу к DNS; преобразование
- адресов IP в имена хостов
+ Операция, обратная прямому запросу к
+ DNS; преобразование
+ адресов IP в имена хостовКорневая зонаНачало иерархии зон Интернет. Все зоны находятся под
корневой зоной, подобно тому, как все файлы располагаются ниже
корневого каталога.Зона
- Отдельный домен, поддомен или часть DNS, управляемая
+ Отдельный домен, поддомен или часть
+ DNS, управляемая
одним сервером.зоныпримерыПримеры зон:. является корневой зоной
- org. является зоной ниже корневой зоны
+ org. — домен верхнего уровня
+ (TLD) в корневой зоне.
- example.org. является зоной под зоной
- org.
+ example.org. является
+ зоной в домене верхнего уровня (TLD)
+ org..
- foo.example.org. является поддоменом,
- зоной под зоной example.org.
-
-
-
- 1.2.3.in-addr.arpa является зоной, в которую
- включены все IP-адреса, формирующие пространство адресов
- 3.2.1.*.
+ 1.168.192.in-addr.arpa является зоной, в которую
+ включены все IP-адреса, формирующие пространство адресов
+ 192.168.1.*.Как можно видеть, уточняющая часть имени хоста появляется слева.
Например, example.org. более точен, чем
org., также, как org. более
точен, чем корневая зона. Расположение каждой части имени хоста сильно
- похоже на файловую систему: каталог /dev
+ похоже на файловую систему: каталог /dev
расположен в корневой файловой системе, и так далее.Причины, по которым вам может понадобиться сервер имёнСервера имён обычно используются в двух видах: авторитетный сервер
имён и кэширующий сервер имён.Авторитетный сервер имён нужен, когда:
- нужно предоставлять информацию о DNS остальному миру, отвечая
- на запросы авторизированно.
+ нужно предоставлять информацию о DNS
+ остальному миру, отвечая на запросы авторизированно.зарегистрирован домен, такой, как
example.org и в этом домене требуется
- поставить имена машин в соответствие с их адресами IP.
+ поставить имена машин в соответствие с их адресами
+ IP.
- блоку адресов IP требуется обратные записи DNS (IP в имена
+ блоку адресов IP требуется обратные записи
+ DNS (IP в имена
хостов).
- резервный (slave) сервер имён должен отвечать на запросы о
- домене, когда основной не работает или не доступен.
+ резервный (slave) сервер имён должен отвечать на запросы.Кэширующий сервер имён нужен, когда:
- локальный сервер DNS может кэшировать информацию и отвечать на
+ локальный сервер DNS может кэшировать информацию и отвечать на
запросы быстрее, чем это происходит при прямом опросе внешнего
сервера имён.
-
-
- требуется уменьшение общего сетевого трафика (DNS
- составляет около 5% всего трафика Интернет, или чуть
- больше).
- Например, когда кто-нибудь запрашивает информацию о
www.FreeBSD.org, то обычно резолвер обращается к
серверу имён вашего провайдера, посылает запрос и ожидает ответа. С
- локальным кэширующим сервером DNS запрос во внешний мир будет делаться
+ локальным кэширующим сервером DNS запрос во внешний мир будет делаться
всего один раз. Каждый дополнительный запрос не будет посылаться за
пределы локальной сети, потому что информация уже имеется в
кэше.Как это работает
- Во FreeBSD даемон BIND, по очевидным причинам, называется
+ Во &os; даемон BIND, по очевидным причинам, называется
named.ФайлОписание
- named
- даемон BIND
+ &man.named.8;
+ Даемон BIND
- ndc
- программа управления даемоном сервера имён
+ &man.rndc.8;
+ Программа управления даемоном сервера имён
- /etc/namedb
- каталог, в котором располагается вся информация о зонах
+ /etc/namedb
+ Каталог, в котором располагается вся информация о зонах
BIND/etc/namedb/named.conf
- конфигурационный файл для даемона
+ Конфигурационный файл для даемонаФайлы зон обычно располагаются в каталоге
/etc/namedb и содержат информацию о зоне DNS,
за которую отвечает сервер имён.
+ В зависимости от способа конфигурации зоны на сервере файлы
+ зон могут располагаться в подкаталогах master, slave или dynamic иерархии
+ /etc/namedb.
+ Эти файлы содержат DNS информацию, которую и будет
+ сообщать в ответ на запросы сервер имен.Запуск BINDBINDзапуск
+
Так как сервер имён BIND устанавливается по умолчанию, его
настройка сравнительно проста.
+ Стандартная конфигурация named
+ запускает простой кэширующий сервер в ограниченной среде
+ &man.chroot.8;. Для одноразового запуска даемона в этой
+ конфигурации используйте команду
+
+ &prompt.root; /etc/rc.d/named forcestart
+
Чтобы даемон named запускался во
время загрузки, поместите в /etc/rc.conf
следующую строку:named_enable="YES"
- Для запуска даемона вручную (после его настройки):
-
- &prompt.root; ndc start
+ Разумеется, существует множество различных конфигураций
+ /etc/namedb/named.conf, лежащих за рамками
+ данного документа. Разнообразные опции запуска
+ named во &os; описаны в переменных
+ named_* файла
+ /etc/defaults/rc.conf и странице справочника
+ &man.rc.conf.5;. Кроме того, полезной может оказаться
+ .Конфигурационные файлыBINDконфигурационные файлы
+ Файлы конфигурации даемона named
+ расположены в каталоге
+ /etc/namedb и, за исключением
+ случая, когда вам требуется просто резолвер, требуют модификации.
+
Использование make-localhost
- Обязательно выполните следующие команды:
+ Для создания основной зоны для локального хоста перейдите
+ в каталог /etc/namedb
+ и выполните команду
- &prompt.root; cd /etc/namedb
-&prompt.root; sh make-localhost
+ &prompt.root; sh make-localhost
- для того, чтобы правильно создать файл
- /etc/namedb/master/localhost.rev локальной обратной
- зоны для loopback-интерфейса.
+ В каталоге master
+ должны появиться файлы localhost.rev для
+ локальной адресной зоны и localhost-v6.rev для
+ для конфигурации IPv6. Ссылки на эти файлы уже
+ содержатся в файле конфигурации named.conf./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.
+// If you are going to set up an authoritative server, make sure you
+// understand the hairy details of how DNS works. Even with
+// simple mistakes, you can break connectivity for affected parties,
+// or cause huge amounts of useless Internet traffic.
options {
- directory "/etc/namedb";
+ directory "/etc/namedb";
+ pid-file "/var/run/named/pid";
+ dump-file "/var/dump/named_dump.db";
+ statistics-file "/var/stats/named.stats";
+
+// If named is being used only as a local resolver, this is a safe default.
+// For named to be accessible to the network, comment this option, specify
+// the proper IP address, or delete this option.
+ listen-on { 127.0.0.1; };
+
+// If you have IPv6 enabled on this system, uncomment this option for
+// use as a local resolver. To give access to the network, specify
+// an IPv6 address, or the keyword "any".
+// listen-on-v6 { ::1; };
// 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;
+// 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.
+// 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.
+// first in your /etc/resolv.conf so this server will be queried.
// 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";
+ file "master/localhost.rev";
+};
+
+// RFC 3152
+zone "1.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.ARPA" {
+ type master;
+ file "master/localhost-v6.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
+// Example slave zone config entries. It can be convenient to become
+// a slave at least for the zone 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
+// (This is named after the first bytes of the 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.
+// Before starting to set up a primary zone, make sure you fully
+// understand how DNS and BIND works. There are sometimes
+// non-obvious pitfalls. Setting up a slave zone is 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 в ограниченном окружении
- находится в соответствующем
- разделе.
+/* An example master zone
+zone "example.net" {
+ type master;
+ file "master/example.net";
+};
+*/
- /*
+/* An example dynamic zone
+key "exampleorgkey" {
+ algorithm hmac-md5;
+ secret "sf87HJqjkqh8ac87a02lla==";
+};
+zone "example.org" {
+ type master;
+ allow-update {
+ key "exampleorgkey";
+ };
+ file "dynamic/example.org";
+};
+*/
+
+/* Examples of forward and reverse slave zones
zone "example.com" {
type slave;
- file "s/example.com.bak";
+ file "slave/example.com";
masters {
192.168.1.1;
};
};
-
-zone "0.168.192.in-addr.arpa" {
+zone "1.168.192.in-addr.arpa" {
type slave;
- file "s/0.168.192.in-addr.arpa.bak";
+ file "slave/1.168.192.in-addr.arpa";
masters {
192.168.1.1;
};
};
*/Это примеры описаний прямой и обратной зон из файла
named.conf для вторичных серверов.Для каждого новой зоны, которую будет обслуживать сервер имён,
в файл named.conf должна быть добавлена
запись.К примеру, самая простая запись для домена example.org может выглядеть вот так:zone "example.org" {
type master;
- file "example.org";
+ file "master/example.org";
};Зона является первичной, что отражается в поле
, и информация о зоне хранится в файле
- /etc/namedb/example.org, что указывается в
+ /etc/namedb/master/example.org, что указывается в
поле .zone "example.org" {
type slave;
- file "example.org";
+ file "slave/example.org";
};В случае вторичной зоны информация о ней передается с основного
сервера имён для заданной зоны и сохраняется в указанном файле. Если
и когда основной сервер имён выходит и строя или недосягаем, то
- скачанная информация о зоне будет находиться на вторичных серверах и
+ скачанная информация о зоне будет находиться на вторичных серверах, и
они смогут обслуживать эту зону.Файлы зон
+
+ BIND
+ файлы зон
+ Пример файла зоны example.org
для основного
сервера (располагающийся в файле
- /etc/namedb/example.org) имеет такой
+ /etc/namedb/master/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
+ $TTL 3600 ; 1 hour
+example.org. IN SOA ns1.example.org. admin.example.org. (
+ 2006051501 ; Serial
+ 10800 ; Refresh
+ 3600 ; Retry
+ 604800 ; Expire
+ 86400 ; Minimum TTL
+ )
; DNS Servers
-@ IN NS ns1.example.org.
-@ IN NS ns2.example.org.
+ IN NS ns1.example.org.
+ IN NS ns2.example.org.
+
+; MX Records
+ IN MX 10 mx.example.org.
+ IN MX 20 mail.example.org.
+
+ IN A 192.168.1.1
; 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
+localhost IN A 127.0.0.1
+ns1 IN A 192.168.1.2
+ns2 IN A 192.168.1.3
+mx IN A 192.168.1.4
+mail IN A 192.168.1.5
; Aliases
-www IN CNAME @
-
-; MX Record
-@ IN MX 10 mail.example.org.
+www IN CNAME @Заметьте, что все имена хостов, оканчивающиеся на .,
задают полное имя, тогда как все имена без символа . на
конце считаются заданными относительно 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 day
+
+example.org. IN SOA ns1.example.org. admin.example.org. (
+ 2006051501 ; 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
становится admin.example.org)
- 5
+ 2006051501последовательный номер файла. При каждом изменении файла
зоны это число должно увеличиваться. В настоящее время для
нумерации многие администраторы предпочитают формат
- ггггммддвв. 2001041002
+ ггггммддвв. 2006051501
будет означать, что
- файл последний раз изменялся 10.04.2001, а последнее число
- 02
- означает, что это была вторая модификация файла за день.
+ файл последний раз изменялся 15.05.2006, а последнее число
+ 01
+ означает, что это была первая модификация файла за день.
Последовательный номер важен, так как он служит для того, чтобы
вторичные серверы узнавали об обновлении зоны.
- @ IN NS ns1.example.org.
+
+ 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
+
+localhost IN A 127.0.0.1
+ns1 IN A 192.168.1.2
+ns2 IN A 192.168.1.3
+mx IN A 192.168.1.4
+mail IN A 192.168.1.5Записи типа A служат для обозначения имён машин. Как это видно
выше, имя ns1.example.org будет
преобразовано в
- 3.2.1.2. И снова здесь используется
- символ ориджина @, обозначая, что
- example.org будет преобразовано
- в 3.2.1.30.
+ 192.168.1.2.
+
+
+ IN A 192.168.1.1
+
+ Эта строка присваивает IP адрес
+ 192.168.1.1 текущему ориджину,
+ в данном случае домену
+ example.org.www IN CNAME @Записи с каноническими именами обычно используются для присвоения
машинам псевдонимов. В этом примере www является
- псевдонимом для машины, соответствующей ориджину, то есть
+ псевдонимом для главной машины, соответствующей ориджину, то есть
example.org (3.2.1.30).
+ role="ipaddr">192.168.1.1).
Записи CNAME могут использоваться для присвоения
псевдонимов именам хостов или для использования одного имени
несколькими машинами по очереди.MX record
- @ IN MX 10 mail.example.org.
+ IN MX 10 mail.example.org.MX-запись указывает, какие почтовые серверы
отвечают за обработку входящей электронной почты для зоны. mail.example.org является именем почтового
сервера, а 10 обозначает приоритет этого почтового сервера.
- Можно иметь несколько почтовых серверов с приоритетами 3, 2 и 1.
+ Можно иметь несколько почтовых серверов с приоритетами,
+ например, 10, 20 и так далее.
Почтовый сервер, пытающийся доставить почту для example.org,
сначала попробует связаться с машиной, имеющий MX-запись с самым
- большим приоритетом, затем с приоритетом поменьше и так далее, до тех
+ большим приоритетом (наименьшим числовым значением в поле MX),
+ затем с приоритетом поменьше и так далее, до тех
пор, пока почта не будет отправлена.Для файлов зон in-addr.arpa (обратные записи DNS) используется тот
же самый формат, отличающийся только использованием записей
PTR вместо A или
CNAME.
- $TTL 3600
+ $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
+1.168.192.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. (
+ 2006051501 ; Serial
+ 10800 ; Refresh
+ 3600 ; Retry
+ 604800 ; Expire
+ 3600 ) ; Minimum
-@ IN NS ns1.example.org.
-@ IN NS ns2.example.org.
+ 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.
+1 IN PTR example.org.
+2 IN PTR ns1.example.org.
+3 IN PTR ns2.example.org.
+4 IN PTR mx.example.org.
+5 IN PTR mail.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
-&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
- лог файлы
- named
-
-
- Если вы используете &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 удаляется
- при загрузке, может быть полезно добавить эту команду
- в &man.crontab.5; для root
- с использованием параметра
- .
-
-
-
- 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 "." 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, всегда
стоит вопрос об обеспечении безопасности. Время от времени
обнаруживаются возможные и реальные бреши в безопасности.
+ &os; автоматически запускает named
+ в ограниченном окружении (&man.chroot.8;); помимо этого, есть
+ еще несколько механизмов, помогающих защититься от возможных
+ атак на сервис DNS.
+
Весьма полезно прочесть сообщения безопасности CERT и подписаться на
&a.security-notifications; для того, чтобы быть в курсе
- текущих проблем с обеспечением безопасности Internet и FreeBSD.
+ текущих проблем с обеспечением безопасности Internet и &os;.
Если возникают проблемы, то наличие последних исходных текстов и
свежеоткомпилированного named
не помешает.Дополнительная литератураСправочная информация по BIND/named:
- &man.ndc.8;, &man.named.8; и
+ &man.rndc.8;, &man.named.8; и
&man.named.conf.5;
Официальная страница ISC BIND
+
+ Официальный форум ISC
+ BIND
+
+
FAQ по BIND
-
- Книга издательства O'Reilly DNS and BIND 4th
+
+ Книга издательства O'Reilly DNS and BIND 5th
EditionRFC1034 - Domain
Names - Concepts and FacilitiesRFC1035 - Domain
Names - Implementation and Specification
-
-
-
-
- Tom
- Rhodes
- Автор:
-
-
-
-
- Dmitry
- Morozovsky
- Перевод на русский язык:
-
-
-
- BIND9 и &os;
-
-
-
- bind9
- установка
-
- &os; начиная с версии 5.3 содержит в базовой поставке
- сервер DNS BIND9.
- Среди прочих нововведений стоит отметить новые возможности, связанные
- с безопасностью, новую организацию файлов конфигурации и автоматическое
- использование опции &man.chroot.8;. Первая часть этой главы посвящена
- обсуждению новых возможностей и их использования, вторая описывает
- процесс обновления сервера DNS при переходе на &os; 5.3. Мы будем
- ссылаться на сервер BIND как &man.named.8;.
- Мы подразумеваем, что читатель знаком с терминологией, описываемой в
- предыдущей главе.
-
- Файлы конфигурации для named в настоящее время
- располагаются в каталоге
- /var/named/etc/namedb/ и требуют
- модификации перед началом использования сервера. Большая часть работы
- по конфигурации сервера DNS происходит именно в этом каталоге.
-
-
- Конфигурация основной (Master) зоны
-
- Для создания основной зоны перейдите в каталог
- /var/named/etc/namedb/
- и выполните команду
-
- &prompt.root; sh make-localhost
-
- При удачном стечении обстоятельств в каталоге
- master появится два новых файла:
- localhost.rev для локального домена и
- localhost-v6.rev для локальной зоны
- IPv6. В поставляемом стандартном файле
- конфигурации named.conf уже есть ссылки на оба
- файла зон.
-
-
-
- Конфигурация зависимой (Slave) Зоны
-
- Дополнительные домены и поддомены могут быть добавлены как
- зависимые зоны. В большинстве случаев достаточно просто скопировать
- файл master/localhost.rev в каталог
- slave и изменить копию.
- После изменения файлов зон нужно добавить ссылки на них в
- основной файл конфигурации named.conf,
- как в следующем примере для example.com:
-
- zone "example.com" {
- type slave;
- file "slave/example.com";
- masters {
- 10.0.0.1;
- };
-};
-
-zone "0.168.192.in-addr.arpa" {
- type slave;
- file "slave/0.168.192.in-addr.arpa";
- masters {
- 10.0.0.1;
- };
-};
-
-
-
- Отметим, что использованный в этом примере IP
- адрес является адресом, с которого будут копироваться файлы зон;
- этот адрес не обязательно является публичным сервером
- DNS.
-
-
-
- Стартовая конфигурация системы
-
- Для автоматического запуска даемона named
- при загрузке системы добавьте в файл стартовой конфигурации
- rc.conf строку
-
- named_enable="YES"
-
- Есть и другие параметры конфигурации, но эта строка —
- минимально необходима. Список параметров можно найти на странице
- справочника &man.rc.conf.5;. Если запуск named
- не разрешен в rc.conf, сервер можно запустить
- вручную командой
-
- &prompt.root; /etc/rc.d/named start
-
-
-
- BIND9: вопросы безопасности
-
- &os; автоматически запускает named
- в ограниченном пространстве &man.chroot.8;; кроме того, существует
- еще несколько средств, помогающих защитить сервис
- DNS от возможных атак.
-
-
- Списки ограничения доступа
-
- Для ограничения доступа к зонам могут применяться списки
- доступа. Для этого опишите для домена список IP
- адресов, которым разрешены запросы к содержимому доменной зоны, и
- используйте имя этого списка в конфигурации зоны.
- Вот пример описания списка ограничения доступа:
-
- acl "example.com" {
- 192.168.0.0/24;
-};
-
-zone "example.com" {
- type slave;
- file "slave/example.com";
- masters {
- 10.0.0.1;
- };
- allow-query { example.com; };
-};
-
-zone "0.168.192.in-addr.arpa" {
- type slave;
- file "slave/0.168.192.in-addr.arpa";
- masters {
- 10.0.0.1;
- };
- allow-query { example.com; };
-};
-
-
-
- Версия сервера
-
- Разрешать всем запросы о версии вашего DNS
- сервера может быть не самой лучшей идеей: возможный злоумышленник
- может воспользоваться ей для выяснения известных ошибок и
- уязвимостей и применить их вашего сервера.
-
-
- Подмена сообщения о версии не защитит ваш сервер от
- эксплоитов. Защитить сервер может только обновление до
- версии, не содержащей известных ошибок.
-
-
- Для предотвращения этого
- в раздел options файла конфигурации
- named.conf можно вписать строку, скрывающую
- версию сервера:
-
- options {
- directory "/etc/namedb";
- pid-file "/var/run/named/pid";
- dump-file "/var/dump/named_dump.db";
- statistics-file "/var/stats/named.stats";
- version "None of your business";
-};
-
-
-
-
-
MurrayStokelyПредоставил Apache HTTP сервервеб серверынастройкаApacheОбзор&os; используется в качестве платформы для многих из самых
нагруженных серверов в мире. Большинство серверов в интернет
используют Apache HTTP сервер.
Пакеты Apache должны быть включены
в поставку FreeBSD. Если вы не установили их во вместе с
системой, воспользуйтесь портами www/apache13 или www/apache20.Как только 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 без
прерывания имеющихся соединений, выполните:&prompt.root; /usr/local/sbin/apachectl gracefulДополнительная информация находится на странице
справочного руководства &man.apachectl.8;.Для запуска 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 1.3.X с
mod_ssl может быть установлена
через порт www/apache13-modssl.
Поддержка SSL также доступна для
Apache 2.X
через порт www/apache20,
где она включена по умолчанию.Построение динамических сайтов при помощи Perl и PHPВ последние годы все большее число компаний обращает внимание
на Интернет как площадку для ведения и расширения бизнеса.
Среди прочего, этот процесс подчеркивает потребность в
интерактивном содержимом сайтов. Некоторые компании, такие как
µsoft;, представляют свои закрытые решения; сообщество
разработчиков открытых программ отвечает на вызов.
Два возможных пути решения проблемы динамического контента —
mod_perl и mod_php.mod_perlmod_perlPerlПроект интеграции
Apache/Perl объединяет мощь
языка программирования Perl и HTTP сервера
Apache.
С модулем mod_perl возможно
написание модулей Apache
полностью на Perl. Кроме того, постоянно
запущенный встроенный в сервер интерпретатор
позволяет не тратить ресурсы на запуск внешнего
интерпретатора и время на запуск Perl.mod_perl можно использовать
различными способами. Помните, что
mod_perl 1.0 работает только с
Apache 1.3, тогда как
mod_perl 2.0 совместим только с
Apache 2.
mod_perl 1.0 доступен как порт www/mod_perl, а также в виде статически
скомпилированной версии в www/apache13-modperl.
mod_perl 2.0 доступен как www/mod_perl2.TomRhodesНаписал mod_phpmod_phpPHPPHP, также известный как Препроцессор гипертекста
(Hypertext Preprocessor), —
это скриптовый язык общего назначения, в основном предназначенный
для веб разработки. Этот язык может быть встроен в
HTML, его синтаксис заимствован из C, &java;
и Perl, и он позволяет веб разработчикам быстро писать динамически
генерируемые страницы.Добавление поддержки PHP5 к веб серверу
Apache производится путем установки
порта www/mod_php5.Этот порт устанавливает и настраивает модули, необходимые
для поддержки динамических PHP веб страниц.
Убедитесь, что в файл
/usr/local/etc/apache/httpd.conf были
добавлены следующие секции:LoadModule php5_module libexec/apache/libphp5.soAddModule mod_php5.c
<IfModule mod_php5.c>
DirectoryIndex index.php index.html
</IfModule>
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>Для загрузки модуля PHP
после этого просто вызовите команду
apachectl с параметром graceful:&prompt.root; apachectl gracefulПоддержка PHP в &os; построена по
модульному принципу, поэтому базовая установка обладает очень
ограниченной функциональностью. Дополнительная функциональность
может быть легко добавлена при помощи порта lang/php5-extensions, управляющего набором
расширений PHP через меню, либо просто путем
установки дополнительных портов.Например, для добавления поддержки
MySQL к PHP5,
просто установите порт
databases/php5-mysql.После установки новых расширений сервер
Apache должен быть рестартован,
чтобы изменения в конфигурации вступили в силу:&prompt.root; apachectl gracefulMurrayStokelyПредоставил Файл сервер и печать для µ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
необходимо перечитать конфигурацию.Как только swat был включен
inetd.conf, вы можете использовать
браузер для подключения к .
Сначала необходимо зарегистрироваться с системной
учетной записью root.После успешного входа на основную страницу настройки
Samba, вы можете просмотреть
документацию или начать настройку, нажав на кнопку
Globals. Раздел Globals
соответствует переменным,
установленным в разделе [global] файла
/usr/local/etc/smb.conf.Глобальные настройкиНезависимо от того, используете ли вы
swat, или редактируете
/usr/local/etc/smb.conf непосредственно,
первые директивы, которые вы скорее всего встретите при
настройке Samba, будут
следующими:workgroupИмя домена или рабочей группы NT для компьютеров,
которые будут получать доступ к этому серверу.netbios nameNetBIOSУстанавливает имя NetBIOS, под которым будет
работать Samba сервер. По
умолчанию оно устанавливается
равным первому компоненту DNS имени хоста.server stringУстанавливает строку, которая будет показана командой
net view и некоторыми другими сетевыми
инструментами, которые отображают строку описания
сервера.Настройки безопасностиДве из наиболее важных настроек в
/usr/local/etc/smb.conf отвечают за
выбор модели безопасности и за формат паролей для
клиентов. Эти параметры контролируются следующими
директивами:securityДва наиболее часто используемых параметра это
security = share и security
= user. Если имена пользователей для клиентов
совпадают с их именами на компьютере &os;, вы возможно
захотите включить безопасность уровня пользователя (user).
Это политика безопасности по умолчанию, она требует,
чтобы клиент авторизовался перед доступом к совместно
используемым ресурсам.На уровне безопасности share клиенту не требуется
входить на сервер перед подключением к ресурсу.
Эта модель безопасности использовалась по умолчанию
в старых версиях Samba.passdb backendNIS+LDAPSQL база данныхSamba поддерживает
несколько различных подсистем аутентификации. Вы можете
аутентифицировать клиентов с помощью LDAP, NIS+,
базы данных SQL, или через модифицированный файл
паролей. Метод аутентификации по умолчанию
smbpasswd, и здесь рассматривается
только он.Предполагая, что используется подсистема по умолчанию
smbpasswd, необходимо создать файл
/usr/local/private/smbpasswd, чтобы
Samba могла аутентифицировать
клиентов. Если вы хотите разрешить всем учетным записям
&unix; доступ с &windows; клиентов, используйте следующую
команду:&prompt.root; grep -v "^#" /etc/passwd | make_smbpasswd > /usr/local/private/smbpasswd
&prompt.root; chmod 600 /usr/local/private/smbpasswdОбратитесь к документации на Samba
за дополнительной информацией о параметрах настройки.
Основные настройки, рассмотренные здесь, достаточны для
первого запуска Samba.Запуск SambaДля запуска Samba при
загрузке системы, добавьте в /etc/rc.conf
следующую строку:samba_enable="YES"Затем вы можете запустить Samba в
любой момент, набрав:&prompt.root; /usr/local/etc/rc.d/samba.sh start
Starting SAMBA: removing stale tdbs :
Starting nmbd.
Starting smbd.Samba состоит из трех
отдельных даемонов. Вы можете видеть, что
nmbd и smbd
запускаются скриптом samba.sh.
Если вы включили сервис разрешения имен winbind
в smb.conf, то увидите также
запуск даемона winbindd.Вы можете остановить Samba в любой
момент, набрав:&prompt.root; /usr/local/etc/rc.d/samba.sh stopSamba это сложный программный
набор с функциональностью, позволяющей полную интеграцию в сети
µsoft.windows;. За дальнейшей информацией о функциях,
выходящих за рамки описанной здесь базовой установки,
обращайтесь к .MurrayStokelyПредоставил Протокол передачи файлов (FTP)FTP серверыОбзорПротокол передачи файлов (File Transfer Protocol, FTP) дает
пользователям простой путь передачи файлов на и с FTP сервера. В &os;
серверная программа FTP,
ftpd, включена в базовую систему.
Это упрощает настройку и администрирование FTP сервера в
FreeBSD.НастройкаНаиболее важный шаг заключается в определении того,
каким учетным записям будет позволено получать доступ
к FTP серверу. В обычной системе FreeBSD есть множество
системных учетных записей, используемых различными даемонами,
но пользователям должно быть запрещен вход с использованием
этих учетных записей. В файле /etc/ftpusers
находится список пользователей, которым запрещен доступ по
FTP. По умолчанию он включает упомянутые системные учетные
записи, но в него можно добавить и определенных пользователей,
которым будет запрещен доступ по FTP.Вам может понадобиться ограничить доступ определенных
пользователей без полного запрета использования FTP.
Это можно сделать через файл /etc/ftpchroot.
В нем находится список пользователей и групп, к которым
применяется ограничение доступа. На странице справочника
&man.ftpchroot.5; дана подробная информация, и она не будет
дублироваться здесь.FTPанонимныйЕсли вы захотите разрешить анонимный 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Как описано в ,
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/xferlogFTPанонимныйУчитывайте потенциальные проблемы, возникающие с
анонимным FTP сервером. В частности, вы должны дважды
подумать, прежде чем позволить анонимным пользователям
загружать файлы на сервер. Вы можете обнаружить, что
FTP сайт стал форумом, на котором происходит обмен
нелицензионным коммерческим программным обеспечением
или чем-то еще хуже. Если вам необходимо разрешить
анонимную выгрузку файлов на FTP, права должны быть настроены
таким образом, чтобы эти файлы не могли прочитать другие
анонимные пользователи до их рассмотрения администратором.TomHukinsТекст предоставил Синхронизация часов через NTPNTPОбзорС течением времени часы компьютера имеют тенденцию отставать.
Network Time
Protocol - Сетевой Протокол Времени (NTP) является одним из способов
вести точное время.Многие сервисы Интернет опираются или сильно зависят от точности
часов компьютеров. К примеру, веб-сервер может получать запрос на
посылку файла, который был недавно модифицирован. В локальной сети
необходимо, чтобы часы компьютеров, совместно использующих файлы,
были синхронизированы, чтобы время модификации файлов устанавливалось
правильно. Такие службы, как
&man.cron.8;, также зависят от правильности установки системных
часов, поскольку запускают команды в определенное время.NTPntpdFreeBSD поставляется с сервером NTP &man.ntpd.8;, который можно
использовать для опроса других серверов NTP для установки часов на
вашей машине или предоставления услуг точного времени.Выбор подходящих серверов NTPNTPвыбор серверовДля синхронизации ваших часов вам нужно найти для использования
один или большее количество серверов NTP. Ваш сетевой администратор
или провайдер могут иметь сервер NTP для этой цели—обратитесь к
ним, так ли это в вашем случае. Существует онлайн список
общедоступных серверов NTP, которым можно воспользоваться для
поиска ближайшего к вам сервера NTP. Не забудьте выяснить политику
выбранного вами сервера и спросить разрешения, если это
требуется.Выбор нескольких несвязанных серверов NTP является хорошей идеей в
том случае, если один из используемых вами серверов станет недоступным
или его часы неточны. &man.ntpd.8; использует ответы, которые он
получает от других серверов с умом—он делает предпочтение
надежным серверам.Настройка вашей машиныNTPнастройкаБазовая конфигурацияntpdateЕсли вам нужно только синхронизировать ваши часы при загрузке
машины, вы можете воспользоваться утилитой &man.ntpdate.8;. Это
может подойти для некоторых настольных машин, которые часто
перезагружаются и только требуют изредка синхронизироваться, но
на большинстве машин должен работать &man.ntpd.8;.Использование &man.ntpdate.8; при загрузке также хорошо для
машин, на которых запущен даемон &man.ntpd.8;. Программа
&man.ntpd.8; изменяет время постепенно, тогда как &man.ntpdate.8;
устанавливает время вне
зависимости от того, насколько велика разница между текущим временем
машины и точным временем.Для включения &man.ntpdate.8; во время загрузки, добавьте строчку
ntpdate_enable="YES" в файл
/etc/rc.conf. Вам также потребуется указать
все серверы, с которыми вы хотите синхронизироваться, и все
параметры, которые передаются в &man.ntpdate.8;, в
ntpdate_flags.NTPntp.confОбщие настройкиNTP настраивается в файле /etc/ntp.conf,
формат которого описан в &man.ntp.conf.5;. Вот простой
пример:server ntplocal.example.com prefer
server timeserver.example.org
server ntp2a.example.net
driftfile /var/db/ntp.driftПараметр server задает, какие серверы будут
использоваться, по одному в каждой строке. Если сервер задан с
аргументом prefer, как ntplocal.example.com, то этому серверу отдается
предпочтение перед остальными. Ответ от предпочтительного сервера
будет отброшен, если он значительно отличается от ответов других
серверов, в противном случае он будет использоваться безотносительно
к другим ответам. Аргумент prefer обычно
используется для серверов NTP, о которых известно, что они очень
точны, такими, на которых используется специальное оборудование
точного времени.Параметр driftfile задает файл, который
используется для хранения смещения частоты системных часов.
Программа &man.ntpd.8; использует его для автоматической компенсации
естественного смещения часов, позволяя ему поддерживать достаточно
правильную настройку, даже если он на некоторый период отключается от
внешнего источника информации о времени.Параметр driftfile задает, какой файл
используется для сохранения информации о предыдущих ответах от
серверов NTP, которые вы используете. Этот файл содержит внутреннюю
информацию для NTP. Он не должен изменяться никакими другими
процессами.Управление доступом к вашему серверуПо умолчанию ваш сервер NTP будет доступен всем хостам в
Интернет. Параметр restrict в файле
/etc/ntp.conf позволяет вам контролировать,
какие машины могут обращаться к вашему серверу.Если вы хотите запретить всем машинам обращаться к вашему серверу
NTP, добавьте следующую строку в
файл /etc/ntp.conf:restrict default ignoreЕсли вы хотите разрешить синхронизировать свои часы с вашим
сервером только машинам в вашей сети, но запретить им настраивать
сервер или быть равноправными участниками синхронизации времени, то
вместо указанной добавьте строчкуrestrict 192.168.1.0 mask 255.255.255.0 nomodify notrapгде 192.168.1.0 является адресом
IP вашей сети, а 255.255.255.0 её
сетевой маской./etc/ntp.conf может содержать несколько
директив restrict. Для получения подробной
информации обратитесь к подразделу Access Control
Support (Поддержка Управления Доступом) в
&man.ntp.conf.5;.Запуск сервера NTPДля того, чтобы сервер NTP запускался при загрузке, добавьте строку
ntpd_enable="YES" в файл
/etc/rc.conf. Если вы хотите передать
дополнительные опции в &man.ntpd.8;, то отредактируйте параметр
ntpd_flags в файле
/etc/rc.conf.Для запуска сервера без перезагрузки вашей машины, выполните
команду ntpd, не забыв задать дополнительные
параметры из переменной ntpd_flags в файле
/etc/rc.conf. К примеру:&prompt.root; ntpd -p /var/run/ntpd.pid
-
-
- Во &os; 4.X
- вам необходимо заменить каждую строчку
- ntpd на xntpd.
- Использование 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/printing/chapter.sgml b/ru_RU.KOI8-R/books/handbook/printing/chapter.sgml
index aa632af260..ebeb75e8aa 100644
--- a/ru_RU.KOI8-R/books/handbook/printing/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/printing/chapter.sgml
@@ -1,4925 +1,4853 @@
SeanKellyНаписал JimMockРеструктурировал и обновил ВалерийКравчукПеревод на русский язык: ПечатьКраткий обзорсистема спулинга LPDпечатьFreeBSD можно использовать для печати на широком спектре принтеров, от
старых матричных до новейших лазерных, без исключений, что позволяет
создавать высококачественные распечатки из используемых приложений.FreeBSD можно также сконфигурировать для работы в качестве сервера
печати в сети; в этом качестве FreeBSD может получать задания печати от множества
других компьютеров, включая другие компьютеры под управлением ОС FreeBSD, хосты &windows;
и &macos;. FreeBSD будет гарантировать печать заданий по одному и может сохранять
информацию о том, какие пользователи и машины выполняют основную часть печати,
выдавать страницы-баннеры, показывающие, кому принадлежит распечатка,
и многое другое.При прочтении этой главы вы узнаете:Как конфигурировать спулер печати FreeBSD.Как устанавливать фильтры печати для специфической обработки определенных
заданий печати, включая преобразование поступающих на печать документов в
форматы, которые понимает принтер.Как включить при печати колонтитулы или выдачу страниц-баннеров.Как печатать на принтеры, подключенные к другим компьютерам.Как печатать на принтеры, подключенные непосредственно к сети.Как задавать ограничения для принтера, включая ограничение
размера заданий печати и запрет печати для отдельных пользователей.Как сохранять статистическую информацию о печати и учитывать использование
принтера.Как решать проблемы печати.Прежде чем читать эту главу, вы должны:Знать, как сконфигурировать и установить новое ядро
().ВведениеДля использования принтеров в ОС FreeBSD вы можете настроить их для
работы с системой спулинга печати Беркли (Berkeley line printer spooling system),
также известной как система спулинга LPD.
Это — стандартная система управления принтером во FreeBSD. В этой главе
представлена система спулинга LPD и описано
ее конфигурирование.Если вы уже знакомы с LPD или другой
системой спулинга печати, вы можете сразу перейти к разделу Базовая настройка.LPD управляет всеми аспектами работы принтеров
хоста. Она отвечает за несколько вещей:Она управляет доступом к непосредственно подключенным принтерам и
принтерам, подключенным к другим хостам в сети.задания печатиОна позволяет пользователям посылать файлы на печать; эти
данные
называют заданиями.Она предотвращает одновременный доступ к принтеру нескольких
пользователей путем поддержки очереди для каждого
принтера.Она позволяет печатать страницы заголовка (их также
называют баннерными или начальными
страницами), чтобы пользователи могли легко находить распечатанные задания
в пачке распечаток.Она обеспечивает установку параметров взаимодействия для принтеров,
подключенных к последовательным портам.Она может отправлять задания по сети спулеру
LPD на другом хосте.Она может применять специальные фильтры для форматирования заданий
для печати на разных языках описания страниц или задействования специфических
возможностей принтера.Она учитывает использование принтера.С помощью файла конфигурации
(/etc/printcap) и за счет предоставления специальных
программ фильтрования, можно потребовать от системы LPD
выполнять все или некоторые из перечисленных выше функций на широком
спектре принтерного оборудования.Зачем использовать спулерЕсли вы — единственный пользователь системы, вы можете спросить,
зачем возиться со спулером, если управление доступом,
страницы заголовка или учет использования принтера вам не нужны. Хотя можно
обеспечить непосредственный доступ к принтеру, в любом случае следует
использовать спулер, поскольку:LPD печатает задания в фоновом режиме;
вам не придется ждать, пока данные будут скопированы на принтер.&tex;LPD позволяет легко пропустить
задание печати через фильтры для добавления заголовков с
датой/временем или преобразования специального формата файлов
(такого как &tex; DVI) в формат, который понимает принтер.
Вам не придется выполнять эти шаги вручную.Многие свободно распространяемые и коммерческие программы,
обеспечивающие возможность печати, обычно предполагают
взаимодействие со спулером системы. Путем настройки
системы спулинга вы упростите поддержку другого
программного обеспечения, которое может быть добавлено
в дальнейшем или уже установлено.Основная настройкаДля использования принтеров с системой спулинга
LPD, необходимо настроить как сам
принтер, так и программное обеспечение
LPD. Этот документ описывает два уровня
настройки:См. раздел Простая настройка
принтера, чтобы узнать, как подключить принтер,
объяснить LPD, как с ним
взаимодействовать, и отправлять на принтер простые текстовые
файлы.См. раздел Расширенная
настройка принтера, чтобы узнать, как печатать файлы
множества специальных форматов, как печатать страницы заголовка,
печатать по сети, управлять доступом к принтерам и учитывать
использование принтера.Простая настройка принтераВ этом разделе описано, как сконфигурировать принтер
и программное обеспечение LPD для
использования принтера. Здесь рассматриваются следующие вопросы:В разделе Настройка
оборудования представлены советы по подключению
принтера к порту компьютера.В разделе Настройка
программного обеспечения показано, как настроить
файл конфигурации спулера LPD
(/etc/printcap).Если вы настраиваете принтер, использующий для принятия
заданий печати сетевой протокол, вместо локальных интерфейсов
компьютера, см. раздел
Принтеры с
сетевыми интерфейсами.Хотя этот раздел и назван Простая настройка
принтера, это, на самом деле, достаточно сложно.
Заставить принтер работать с компьютером и спулером
LPD — самая сложная часть.
Расширенные опции, вроде выдачи страниц заголовков и учета
использования, установить несложно, как только принтер
заработает.Настройка оборудованияВ этом разделе описаны различные способы подключения
принтера к ПК. Рассматриваются различные порты и кабели, а
также параметры конфигурации ядра, которые может потребоваться
установить, чтобы ОС FreeBSD могла взаимодействовать с
принтером.Если вы уже подключили ваш принтер и успешно печатали на
него в другой операционной системе, можете перейти к разделу
Настройка программного
обеспечения.Порты и кабелиПринтеры, которые продаются сегодня для использования на ПК,
обычно поддерживают один или несколько из следующих
интерфейсов:принтерыпоследовательныеПоследовательные интерфейсы, также
известные как RS-232, или COM-порты, используют
для посылки данных на принтер последовательный порт
компьютера. Последовательные интерфейсы широко
распространены в компьютерной индустрии, кабели для них легко
найти и просто сделать. Для последовательных интерфейсов
иногда нужны специальные кабели, и для их использования может
потребоваться настраивать достаточно сложные опции
взаимодействия. Большинство последовательных портов ПК имеют
максимальную скорость передачи 115200 бит/сек, поэтому
печатать через них большие графические задания
неудобно.принтерыпараллельныеПараллельные интерфейсы используют
параллельный порт компьютера для посылки данных на принтер.
Параллельные интерфейсы широко распространены на рынке ПК
и работают быстрее, чем последовательные RS-232.
Кабели легко найти, но сделать самостоятельно сложнее. При
использовании параллельных интерфейсов опции взаимодействия
обычно задавать не надо, что делает их конфигурирование
существенно проще.centronicsпараллельные принтерыПараллельные интерфейсы иногда называют
интерфейсами Centronics, по названию типа
разъема на принтере.принтерыUSBИнтерфейсы USB (сокращение от Universal Serial
Bus — универсальная последовательная шина), могут работать
на еще больших скоростях, чем параллельные или
последовательные интерфейсы RS-232. Кабели для них —
простые и дешевые. USB превосходит последовательный RS-232
и параллельный интерфейсы для печати, но не слишком
хорошо поддерживается в &unix;-системах. Обойти эту проблему
можно, купив принтер с двумя интерфейсами, USB и
параллельным, как у многих принтеров.В общем случае, параллельные интерфейсы обычно
обеспечивают только одностороннюю передачу (с компьютера
на принтер), тогда как последовательные и USB поддерживают
двустороннюю. Более новые параллельные порты (EPP и ECP) и принтеры
могут взаимодействовать в обоих направлениях под FreeBSD, если
используется кабель, соответствующий стандарту IEEE-1284.PostScriptДвустороннее взаимодействие с принтером через параллельный
порт обычно выполняется одним из двух способов. Первый метод
опирается на использование специально созданного драйвера
принтера для FreeBSD, который поддерживает специфический язык
данного принтера. Этот метод типичен для струйных принтеров и
может использоваться для получения информации об уровне чернил и
другой информации о состоянии. Второй метод используется, когда
принтер поддерживает &postscript;.Фактически, задания &postscript;
являются программами, посылаемыми для выполнения принтеру;
они вообще могут не выдавать результат на бумагу и возвращать
его непосредственно компьютеру. &postscript; также использует
двустороннее взаимодействие для сообщения компьютеру о проблемах,
таких как ошибки в &postscript;-программе или замятие бумаги.
Такая информация может пригодиться пользователям. Более того,
лучший способ эффективного учета использования
&postscript;-принтера требует двустороннего взаимодействия:
вы запрашиваете у принтера значение счетчика страниц (сколько
страниц напечатал принтер за все время существования), затем
посылаете задание пользователя, затем снова запрашиваете значение
его счетчика страниц. Вычитаем одно значение из другого, и узнаем,
сколько бумаги потратил пользователь.Параллельные портыДля подключения принтера через параллельный интерфейс,
соедините принтер и компьютер кабелем Centronics.
Инструкции для принтера, для компьютера или обе должны полностью
описывать эту процедуру.Помните, какой параллельный порт компьютера вы использовали.
Первый параллельный порт в ОС FreeBSD —
ppc0; второй —
ppc1, и так далее. Имена устройств для
принтеров используют ту же схему: /dev/lpt0
для принтера на первом параллельном порту и т.д.Последовательные портыДля подключения принтера через последовательный интерфейс,
соедините принтер с компьютером подходящим последовательным кабелем.
Инструкции для принтера, для компьютера или обе должны полностью
описывать эту процедуру.Если вы не знаете, что такое подходящий последовательный
кабель, можете попробовать использовать один из следующих:Модемный кабель соединяет каждый штырёк
на одном конце кабеля напрямую с соответствующим штырьком
на другом конце. Кабель такого типа также называют
кабелем DTE-to-DCE.нуль-модемный кабельНуль-модемный кабель соединяет часть
штырьков напрямую, другие — меняет (пересылку данных на приём
данных, например), а некоторые — закорачивает на каждом разъеме.
Кабель такого типа также называют кабелем
DTE-to-DTE cable.Кабель последовательного принтера,
необходимый для некоторых редко используемых принтеров, похож
на нуль-модемный кабель, но посылает часть сигналов на
соответствующие штырьки, а не закорачивает их.скорость передачичетностьпротокол управления передачейВам надо также настроить эти параметры взаимодействия с принтером,
обычно — через элементы управления на лицевой панели или переключатели
(DIP switches) на принтере. Выберите максимальную скорость передачи
bps (бит в секунду, иногда —
baud rate), которую могут поддерживать как
компьютер, так и принтер. Выберите 7 или 8 битов данных; четность none,
even или odd; и 1 или 2 стоп-бита. Также надо выбрать протокол управления
передачей: none или XON/XOFF (также известный как
внутриполосный или программный).
Запомните выбранные установки для последующего конфигурирования
программного обеспечения.Настройка программного обеспеченияВ этом разделе описана настройка программного обеспечения,
необходимая для печати с помощью системы спулинга
LPD в ОС FreeBSD.
Вот план действий, которые необходимо выполнить:При необходимости, сконфигурировать в ядре поддержку порта,
к которому подключен принтер; в разделе Конфигурирование ядра описано,
что надо сделать.Установить режим взаимодействия для параллельного порта,
если используется параллельный порт; детали представлены
в разделе Настройка
режима взаимодействия для параллельного порта.Проверить, может ли операционная система посылать данные
на принтер. В разделе Проверка
взаимодействия с принтером даны советы, как это сделать.Настроить LPD для принтера,
изменяя файл /etc/printcap. Как это
сделать описано далее в этой главе.Конфигурирование ядраЯдро операционной системы компилируется для работы с
конкретным набором устройств. Последовательный или параллельный
интерфейс для принтера входит в этот набор. Поэтому может
понадобиться добавить поддержку для дополнительного
последовательного или параллельного порта, если он еще
не сконфигурирован в ядре.Чтобы узнать, поддерживает ли используемое в настоящий
момент ядро последовательный интерфейс, наберите:&prompt.root; grep sioN /var/run/dmesg.bootГде N — номер последовательного
порта, начиная с нуля. Если вы получаете результат, подобный
следующему:sio2 at port 0x3e8-0x3ef irq 5 on isa
sio2: type 16550Aзначит, ядро поддерживает порт.Чтобы узнать, поддерживает ли ядро параллельный интерфейс,
наберите:&prompt.root; grep ppcN /var/run/dmesg.bootГде N номер параллельного порта,
начиная с нуля. Если вы получаете результат, подобный
следующему:ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/8 bytes thresholdзначит, ядро поддерживает порт.Может потребоваться переконфигурировать ядро, чтобы
операционная система распознала и использовала параллельный
или последовательный порт, используемый для подключения
принтера.Чтобы добавить поддержку последовательного порта,
обратитесь к разделу, посвященному конфигурированию ядра.
Чтобы добавить поддержку параллельного порта, почитайте
этот же раздел и следующий раздел.
-
- Добавление файлов /dev для портов
-
- FreeBSD 5.0 включает файловую систему
- devfs, которая автоматически создает
- специальные файлы устройств по мере необходимости.
- Если вы используете версию FreeBSD с включенной поддержкой
- devfs, можно пропустить этот раздел.
-
- Хотя ядро может уже поддерживать взаимодействие по
- последовательному или параллельному порту, вам необходим
- программный интерфейс, через которых работающие в системе программы
- смогут посылать и принимать данные. Именно для этого и
- существуют специальные файлы устройств в каталоге
- /dev.
-
- Для добавления файла в каталог /dev
- для порта:
-
-
-
- Станьте пользователем root с помощью
- команды &man.su.1;.
- Введите пароль пользователя root
- в ответ на приглашение.
-
-
-
- Перейдите в каталог /dev:
-
- &prompt.root; cd /dev
-
-
-
- Введите команду:
-
- &prompt.root; ./MAKEDEV port
-
- Где port — имя специального файла
- устройства для порта, который вы хотите создать. Используйте
- lpt0 для принтера на первом параллельном порту,
- lpt1 для принтера на втором порту и т.д.;
- используйте ttyd0 для первого последовательного
- порта, ttyd1 — для второго и так далее.
-
-
-
- Введите команду:
-
- &prompt.root; ls -l port
-
- чтобы убедиться, что требуемый специальный файл устройства
- создан.
-
-
-
-
+ Настройка режима взаимодействия для параллельного портаПри использовании параллельного интерфейса можно выбрать,
должна ли ОС FreeBSD взаимодействовать с принтером на основе
прерываний или путем опроса. Универсальный драйвер принтера
- (&man.lpt.4;) во FreeBSD 4.X и 5.X использует
+ (&man.lpt.4;) во FreeBSD использует
систему &man.ppbus.4;, которая управляет чипсетом порта
с помощью драйвера &man.ppc.4;.Метод взаимодействия на основе прерываний
является стандартным для ядра GENERIC. По этому методу,
операционная система использует линию запроса прерывания (IRQ line)
для определения готовности принтера к приему данных.Метод взаимодействия путем опроса
требует от операционной системы постоянно запрашивать
принтер, готов ли он к приему данных. Когда он отвечает,
что готов, ядро посылает дополнительные данные.Метод взаимодействия на основе прерываний обычно работает
несколько быстрее, но использует ценную линию запроса прерывания.
Про некоторые новые принтеры HP утверждают, что они работают
некорректно в режиме взаимодействия на основе прерываний,
вероятно, из-за некоторой (еще не вполне понятной) проблемы
синхронизации. Для этих принтеров необходимо устанавливать
режим опроса. Используйте тот режим, который работает. Некоторые
принтеры будут работать в обоих режимах, но оказываются
крайне медленными в режиме на основе прерываний.Режим взаимодействия можно установить двумя способами:
конфигурируя ядро или с помощью программы &man.lptcontrol.8;.Для установки режима взаимодействия путем
конфигурирования ядра:Отредактируйте файл конфигурации ядра. Найдите запись
ppc0. Если вы настраиваете второй
параллельный порт, ищите запись ppc1.
Используйте запись ppc2 для третьего порта,
и так далее.Если необходимо установить режим на основе прерываний,
- для FreeBSD 4.X добавьте спецификацию
- irq:
-
- device ppc0 at isa? irq N
-
- Где N — номер IRQ
- для параллельного порта компьютера.
-
- Для FreeBSD 5.X, отредактируйте следующую строку:
+ отредактируйте следующую строку:
hint.ppc.0.irq="N"в файле /boot/device.hints, заменив
N соответствующим номером IRQ.
Файл конфигурации ядра также должен содержать драйвер
&man.ppc.4;:device ppc
- Если необходимо установить режим опроса, не добавляйте
- спецификацию irq:
-
- Для FreeBSD 4.X используйте следующую строку в
- файле конфигурации ядра:
-
- device ppc0 at isa?
-
- Для FreeBSD 5.X просто удалите из файла
+ Если необходимо установить режим опроса,
+ удалите из файла
/boot/device.hints следующую
строку:hint.ppc.0.irq="N"В некоторых случаях, этого недостаточно для перевода
- порта в режим опроса под FreeBSD 5.X. Чаще всего,
+ порта в режим опроса под FreeBSD. Чаще всего,
проблема связана с драйвером &man.acpi.4;, который может
опрашивать и подключать устройства и, тем самым,
управлять режимом доступа к порту принтера. Чтобы решить
эту проблему, проверьте конфигурацию &man.acpi.4;.Сохраните файл. Затем сконфигурируйте, соберите и установите
ядро и перезагрузите систему. Подробнее см. в разделе конфигурирование ядра.Для настройки режима взаимодействия с помощью
утилиты &man.lptcontrol.8;:Введите команду:&prompt.root; lptcontrol -i -d /dev/lptNдля установки режима взаимодействия на основе прерываний
для lptN.Введите команду:&prompt.root; lptcontrol -p -d /dev/lptNдля установки режима взаимодействия по опросу для
lptN.Вы можете поместить эти команды в файл
/etc/rc.local для установки требуемого режима
при каждой загрузке системы. Дополнительную информацию об этом
ищите на странице справочного руководства &man.lptcontrol.8;.
-
+
-
+ Проверка взаимодействия с принтеромПрежде чем переходить к конфигурированию системы спулинга,
надо убедиться, что операционная система может успешно посылать данные
на принтер. Намного проще отлаживать взаимодействие с принтером и
систему спулинга отдельно.Для тестирования принтера мы пошлем на него текст. Для принтеров,
которые могут непосредственно печатать посланные на них символы,
идеально подходит программа &man.lptest.1;: она генерирует все 96
печатных символов ASCII в 96 строках.PostScriptДля &postscript;- (или основанного на другом языке) принтера,
необходим более сложный тест. Подойдет небольшая
&postscript;-программа, вроде следующей:%!PS
100 100 moveto 300 300 lineto stroke
310 310 moveto /Helvetica findfont 12 scalefont setfont
(Is this thing working?) show
showpageПредставленный выше &postscript;-код можно поместить в
в файл и использовать, как показано в примерах в следующих
разделах.PCLКогда в этом документе речь идет о языке принтера,
подразумевается язык типа &postscript;, а не PCL компании Hewlett
Packard. Хотя PCL имеет прекрасные функциональные возможности, в нем
можно смешивать обычный текст с его управляющими
последовательностями. &postscript; не позволяет непосредственно
печатать обычный текст, и это язык принтера именно того рода,
для которого надо выполнять специальные настройки.
-
+ Проверка параллельного принтерапринтерыпараллельныеВ этом разделе описано, как проверить, может ли ОС FreeBSD
взаимодействовать с принтером, подключенным к параллельному порту.Для тестирования принтера на параллельном порту:Станьте пользователем root с помощью
команды &man.su.1;.Пошлите данные на принтер.Если принтер может печатать обычный текст, используйте
утилиту &man.lptest.1;. Введите команду:&prompt.root; lptest > /dev/lptNГде N — номер параллельного порта,
начиная с нуля.Если принтер понимает &postscript; или другой язык принтера,
пошлите на принтер небольшую программу. Введите команду:&prompt.root; cat > /dev/lptNЗатем, построчно, внимательно введите
программу, поскольку вы не сможете отредактировать строку
после нажатия клавиши RETURN
или ENTER. По окончании ввода программы,
нажмите CONTROL+D или другую комбинацию клавиш,
используемую для ввода символа конца файла.Можно также поместить программу в файл и выполнить команду:&prompt.root; cat file > /dev/lptNГде file — имя файла, содержащего
программу, которую вы хотите послать принтеру.Вы должны увидеть распечатку. Не переживайте, если текст выглядит
не так, как предполагалось; этими проблемами мы займемся позже.
-
+
-
+ Проверка последовательного принтерапринтерыпоследовательныеВ этом разделе описано, как проверить, может ли ОС FreeBSD
взаимодействовать с принтером, подключенным к последовательному
порту.Для тестирования принтера на последовательном
порту:Станьте пользователем root с помощью
команды &man.su.1;.Отредактируйте файл /etc/remote.
Добавьте следующую запись:printer:dv=/dev/port:br#bps-rate:pa=parityбит в секундупоследовательный портчетностьГде port — специальный файл
устройства для последовательного порта (ttyd0,
ttyd1 и т.д.), bps-rate —
скорость обработки данных принтером, в битах в секунду,
а parity — требуемая принтером четность
(значение even, odd,
none или zero).Вот пример записи для принтера, подключенного
к третьему последовательному порту на скорости 19200 bps
без четности:printer:dv=/dev/ttyd2:br#19200:pa=noneПодключитесь к принтеру с помощью &man.tip.1;.
Введите команду:&prompt.root; tip printerЕсли этот шаг не срабатывает, снова отредактируйте
файл /etc/remote и попробуйте использовать
устройство /dev/cuaaN
вместо /dev/ttydN.Пошлите данные на принтер.Если принтер может печатать обычный текст, используйте
утилиту &man.lptest.1;. Введите команду:&prompt.user; $lptestЕсли принтер понимает &postscript; или другой язык
принтера, пошлите на принтер небольшую программу.
Вводите программу, построчно, очень
внимательно, поскольку нажатие клавиши Backspacе
или других клавиш редактирования может иметь значение
для принтера. Может также понадобиться нажать специальную
комбинацию клавиш, обозначающую конец файла, чтобы принтер
понял, что получена вся программа. Для
&postscript;-принтеров нажмите CONTROL+D.Можно также поместить программу в файл и ввести команду:&prompt.user; >fileГде file — имя файла,
содержащего программу. После того, как утилита
&man.tip.1; пошлет файл, нажмите требуемую для
ввода признака конца файла комбинацию клавиш.Вы должны увидеть распечатку. Не переживайте, если текст выглядит
не так, как предполагалось; этими проблемами мы займемся позже.
- Включение спулера: файл /etc/printcapСейчас ваш принтер уже должен быть подключен, ядро
(при необходимости) — сконфигурировано для взаимодействия с ним,
и вы смогли послать на принтер простые данные. Теперь мы готовы
к конфигурированию системы LPD для управления
доступом к принтеру.Система LPD конфигурируется путем
редактирования файла /etc/printcap. Система
спулинга LPD читает этот файл при
каждом использовании спулера, так что, изменения в файле
сразу же учитываются.принтерыхарактеристикиФормат файла &man.printcap.5; прост. Используйте
свой любимый текстовый редактор для изменения файла
/etc/printcap. Формат файла идентичен
формату других файлов, описывающих характеристики, например,
/usr/share/misc/termcap и
/etc/remote. Полная информация о формате
представлена на странице справочного руководства &man.cgetent.3;.Простое конфигурирование спулера включает следующие шаги:Выберите имя (и несколько удобных псевдонимов) для принтера
и поместите их в файл /etc/printcap; подробнее
об именовании см. в разделе
Именование принтера.начальные страницыОтключите выдачу начальных страниц (которые по умолчанию выдаются),
вставив характеристику sh; подробнее об
этом см. в разделе
Подавление выдачи
начальных страниц.Создайте каталог для спулинга и укажите его местонахождение
с помощью характеристики sd; подробнее об этом
см. в разделе Создание
каталога спулинга.Выберите специальный файл устройства /dev для
использования с принтером и укажите его в файле
/etc/printcap с помощью характеристики
lp; подробнее об этом см. в разделе
Выбор устройства для принтера.
Кроме того, если принтер подключен к последовательному порту,
настройте параметры взаимодействия с помощью характеристики
ms#, которая обсуждается в разделе
Конфигурирование параметров
взаимодействия для спулера.Установите фильтр для обычного текста; подробнее об этом
см. в разделе Установка
текстового фильтра.Проверьте настройку, напечатав что-нибудь с помощью команды
&man.lpr.1;. Подробнее об этом см. в разделах
Проверка и
Выявление
проблем.Принтеры, использующие специальные языки, например, &postscript;-принтеры,
не могут непосредственно печатать обычный текст. Простая настройка,
представленная выше и описанная в следующих разделах, предполагает, что,
если вы устанавливаете такой принтер, то будете печатать только файлы,
которые он может обработать.Пользователи часто предполагают, что они могут печатать обычный
текст на любом из установленных в системе принтеров. Программы,
взаимодействующие для обеспечения печати с системой
LPD, обычно исходят из этого же предположения.
Если вы устанавливаете такой принтер и хотите иметь возможность посылать
на печать задания на языке принтера и в виде обычного
текста, настоятельно рекомендуется добавить дополнительный шаг к представленной
выше простой последовательности настройки: установите программу
автоматического преобразования обычного текста в &postscript; (или
другой язык принтера). В разделе
Прием заданий с обычным текстом
на &postscript;-принтеры рассказано, как это сделать.Именование принтераПервый (простой) шаг — выбрать имя для принтера.
На самом деле, не важно, выберете ли вы функциональное имя или
причудливое, поскольку для принтера можно также задать несколько
псевдонимов.По крайней мере, один из принтеров, указанных в файле
/etc/printcap, должен иметь псевдоним
lp. Это — стандартное имя принтера.
Если пользователи не установят переменную среды PRINTER
и не укажут имя принтера в командной сроке при вводе любой
команды системы LPD, по умолчанию для
ее выполнения будет использован принтер lp.Также широко распространена практика в качестве последнего
псевдонима для принтера задавать полное его описание, включая
производителя и модель.После выбора имени и нескольких популярных псевдонимов поместите
их в файл /etc/printcap. Имя принтера должно начинаться
с крайнего левого столбца. Каждый псевдоним отделяйте вертикальной
чертой, а после последнего псевдонима поместите двоеточие.В следующем примере мы начнем со скелетного файла
/etc/printcap, определяющего два принтера
(построчный принтер Diablo 630 и лазерный &postscript;-принтер
Panasonic KX-P4455):#
# /etc/printcap для хоста rose
#
rattan|line|diablo|lp|Diablo 630 Line Printer:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:В этом примере первый принтер назван
rattan и ему заданы псевдонимы
line, diablo,
lp и Diablo 630 Line
Printer. Поскольку у него есть псевдоним
lp, он является стандартным принтером. Второму
принтеру дано имя bamboo и ему заданы псевдонимы
ps, PS,
S, panasonic и
Panasonic KX-P4455 PostScript v51.4.Подавление выдачи начальных страницпечатьначальных страницСистема спулинга LPD будет по умолчанию
печатать заголовочную страницу для каждого задания.
Заголовочная страница содержит имя пользователя, отправившего задание,
хост, с которого поступило задание, и имя задания, красивыми большими
буквами. К сожалению, все эти дополнительные тексты мешают
отладке простой настройки принтера, поэтому мы будет отключать
выдачу начальных страниц.Для подавления выдачи начальных страниц добавьте характеристику
sh к записи принтера в файле
/etc/printcap. Вот пример файла
/etc/printcap с добавлением sh:#
# /etc/printcap для хоста rose - никаких начальных страниц
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:Обратите внимание, как мы использовали правильный формат: первая
строка начинается с самого левого столбца, а последующие строки
смещены. Каждая строка в записи,
кроме последней, завершается символом обратной косой черты.Создание каталога для спулингаprinter spoolзадания печатиСледующий шаг в простой настройке спулера — создать
каталог для спулинга, каталог, в котором
находятся задания печати, пока не будут напечатаны, и где находятся
еще несколько других файлов для поддержки спулера.Из-за присущих каталогам спулинга постоянных изменений, принято
помещать эти каталоги в каталог /var/spool.
Кроме того, не нужно создавать резервные копии содержимого каталогов
спулинга. Пересоздать их можно с помощью простой команды
&man.mkdir.1;.Принято также задавать для каталога имя, совпадающее с именем
принтера, как показано ниже:&prompt.root; mkdir /var/spool/имя-принтераОднако при наличии большого количества принтеров в сети
может иметь смысл поместить все каталоги спулинга в один каталог,
который просто резервируется для печати с помощью
LPD. Мы сделаем это для наших двух принтеров,
rattan и bamboo:&prompt.root; mkdir /var/spool/lpd
&prompt.root; mkdir /var/spool/lpd/rattan
&prompt.root; mkdir /var/spool/lpd/bambooЕсли вас интересует конфиденциальность заданий, отправляемых
пользователями на печать, можно защитить каталог спулинга, чтобы
он не был общедоступным. Каталоги спулинга должны принадлежать и
быть доступны на чтение, запись и просмотр содержимого пользователю
daemon и группе daemon, и никому больше. Мы установим это для
каталогов спулинга принтеров из нашего примера:&prompt.root; chown daemon:daemon /var/spool/lpd/rattan
&prompt.root; chown daemon:daemon /var/spool/lpd/bamboo
&prompt.root; chmod 770 /var/spool/lpd/rattan
&prompt.root; chmod 770 /var/spool/lpd/bambooНаконец, надо сообщить системе LPD
об этих каталогах с помощью файла /etc/printcap.
Полное имя каталога спулинга задается с помощью характеристики
sd:#
# /etc/printcap для хоста rose - добавлены каталоги спулинга
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:Обратите внимание, что имя принтера начинается с самого
первого столбца, а все последующие строки смещены, и каждая строка в записи,
кроме последней, завершается символом обратной косой черты.Если вы не зададите каталог спулинга с помощью характеристики
sd, система спулинга будет использовать по умолчанию
каталог /var/spool/lpd.Выбор устройства для принтера
- В разделе Добавление файлов
- /dev для портов мы выяснили, какой специальный
+
+ Мы выяснили, какой специальный
файл устройства в каталоге /dev FreeBSD будет
использовать для взаимодействия с принтером. Теперь мы сообщаем эту
информацию системе LPD. Когда у системы
спулинга есть задание для печати, она будет открывать указанное устройство
от имени программы-фильтра (которая отвечает за передачу данных
на принтер).Задайте полное имя устройства /dev в файле
/etc/printcap с помощью характеристики
lp.В нашем текущем примере давайте предположим, что принтер
rattan подключен к первому параллельному порту,
а принтер bamboo — к шестому последовательному
порту; вот что нужно добавить в файл /etc/printcap:#
# /etc/printcap для хоста rose - указано, какие устройства использовать
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:Если вы не укажете характеристику lp для
принтера в файле /etc/printcap, система
LPD использует по умолчанию
устройство /dev/lp. Устройство
/dev/lp сейчас в ОС FreeBSD не существует.Если устанавливаемый принтер подключен к параллельному порту,
перейдите к разделу Установка
текстового фильтра. Иначе выполните сначала инструкции,
представленные в следующем разделе.Конфигурирование параметров взаимодействия спулерапринтерыпоследовательныеДля принтеров на последовательных портах система
LPD может устанавливать скорость передачи,
четность и другие параметры взаимодействия через последовательных порт
от имени программы-фильтра, которая посылает данные на принтер.
Это полезно потому, что:Позволяет опробовать различные параметры взаимодействия, просто
редактируя файл /etc/printcap; программу-фильтр
перекомпилировать не нужно.Позволяет системе спулинга использовать одну и ту же
программу-фильтр для нескольких принтеров, которые могут иметь
различные установки для взаимодействия через последовательный
порт.Следующие характеристики в файле /etc/printcap
задают параметры взаимодействия через последовательный порт
для устройства, указанного в качестве значения характеристики
lp:br#bps-rateУстанавливает скорость взаимодействия для устройства в
bps-rate, где
bps-rate может иметь значение 50, 75, 110,
134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600,
19200, 38400, 57600 или 115200 бит в секунду.ms#stty-modeУстанавливает опции для терминального устройства после открытия устройства.
Поддерживаемые опции описаны на странице справочного руководства &man.stty.1;.Когда система LPD открывает устройство,
заданное характеристикой lp, она устанавливает
опции устройства в соответствии со значением характеристики
ms#. Наибольший интерес представляют
режимы parenb, parodd,
cs5, cs6, cs7,
cs8, cstopb,
crtscts и ixon, которые
описаны на странице справочного руководства &man.stty.1;.Давайте зададим опции для нашего принтера на шестом последовательном
порту. Мы установим скорость передачи 38400. В качестве режима
установим режим без четности с помощью -parenb,
8-битовые символы с помощью cs8,
отсутствие модемного управления с помощью clocal и
аппаратное управление потоком с помощью опции crtscts:bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:Установка текстового фильтрапечатьфильтрыТеперь мы готовы задать системе LPD,
какой текстовый фильтр использовать для посылки заданий на принтер.
Текстовый фильтр, известный также как
входной фильтр, — это программа,
которую система LPD запускает при
получении задания на
печать. Когда система LPD запускает
текстовый фильтр для принтера, она направляет на стандартный
входной поток фильтра задание печати, а его стандартный выходной
поток — на устройство принтера, заданное характеристикой lp.
Предполагается, что фильтр прочитает задание из стандартного входного
потока, выполнит все необходимые для принтера преобразования и
выдаст результат в стандартный выходной поток, который и будет
напечатан. Подробнее о текстовом фильтре см. в разделе
Фильтры.Для простой настройки принтера в качестве текстового фильтра можно
задать небольшой скрипт командного интерпретатора, который просто
выполняет /bin/cat для посылки задания на принтер.
В составе FreeBSD поставляется другой фильтр, lpf,
обрабатывающий забой и подчеркивание для принтеров, которые не слишком
хорошо справляются с потоком данных, содержащих такие символы. И,
конечно же, вы можете использовать любую другую необходимую
программу-фильтр. Фильтр lpf детально описан в разделе
lpf: текстовый фильтр.Сначала давайте создадим скрипт командного интерпретатора
/usr/local/libexec/if-simple для простого
тестового фильтра. Поместите в этот файл следующий текст с помощью
любимого текстового редактора:#!/bin/sh
#
# if-simple - Простой фильтр входного текста для lpd
# Установлен в /usr/local/libexec/if-simple
#
# Просто копирует stdin в stdout. Игнорирует все аргументы фильтра.
/bin/cat && exit 0
exit 2Сделайте этот файл выполняемым:&prompt.root; chmod 555 /usr/local/libexec/if-simpleА теперь потребуйте от системы LPD его использовать, указав его в
качестве значения характеристики if в файле
/etc/printcap. Мы добавим его для двух принтеров,
имеющихся пока в примере файла /etc/printcap:#
# /etc/printcap для хоста rose - добавлен текстовый фильтр
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:\
:if=/usr/local/libexec/if-simple:Копию скрипта if-simple можно
найти в каталоге /usr/share/examples/printing.Запуск системы LPDДаемон &man.lpd.8; запускается из /etc/rc,
а необходимость запуска задается переменной lpd_enable.
Эта переменная по умолчанию имеет значение NO. Если
вы еще этого не сделали, добавьте строку:lpd_enable="YES"в файл /etc/rc.conf, а затем либо перезапустите
машину, либо просто выполните команду &man.lpd.8;.&prompt.root; lpdПроверкаВы добрались до конца простой настройки системы
LPD. К сожалению,
поздравлять вас еще рано, поскольку надо еще проверить
настройку и устранить все выявленные проблемы. Для проверки
настройки, попытайтесь что-то распечатать. Для печати с помощью
системы LPD используется
команда &man.lpr.1;, которая посылает задание на печать.Можно скомбинировать &man.lpr.1; с программой &man.lptest.1;,
представленной в разделе Проверка
взаимодействия с принтером, генерирующей тестовый текст.Для тестирования простой настройки
LPD:Введите команду:&prompt.root; lptest 20 5 | lpr -Pprinter-nameГде printer-name — имя
(или псевдоним) принтера, заданное в файле
/etc/printcap. Для проверки стандартного
принтера, введите команду &man.lpr.1; без аргумента .
Как уже отмечалось, если тестируется принтер, предполагающий использование
&postscript;, пошлите ему &postscript;-программу вместо использования
утилиты &man.lptest.1;. Это можно сделать, поместив программу в файл
и выполнив команду lpr file.Для &postscript;-принтера вы должны получить результаты выполнения
программы. Если вы используете &man.lptest.1;, ваши результаты должны
иметь такой вид:!"#$%&'()*+,-./01234
"#$%&'()*+,-./012345
#$%&'()*+,-./0123456
$%&'()*+,-./01234567
%&'()*+,-./012345678Для дальнейшего тестирования принтера, попытайтесь загрузить
программы побольше (для принтеров, поддерживающих определенный язык)
или выполните команду &man.lptest.1; с другими аргументами. Например,
команда lptest 80 60 выдаст 60 строк по 80
символов в каждой.Если принтер не работает, см. раздел Выявление проблем.Расширенная настройка принтераВ этом разделе описаны фильтры для печати специально сформатированных
файлов, начальных страниц, печати по сети, ограничения и учета использования
принтера.ФильтрыпечатьфильтрыХотя система LPD поддерживает сетевые
протоколы, очереди, контроль доступа и другие аспекты печати, большая
часть реальной работы происходит в
фильтрах. Фильтры — это программы,
взаимодействующие с принтером и обеспечивающие учет особенностей
устройства и специальных требований. При простой настройке принтера
мы установили фильтр для обычного текста — крайне простой, который
должен работать с большинством принтеров (см. раздел
Установка текстового
фильтра).Однако, чтобы обеспечить преобразования формата, учет использования
принтера и индивидуальных особенностей отдельных принтеров и т.п.,
надо разобраться, как работают фильтры. В конечном итоге, всеми этими
аспектами печати должен заниматься фильтр. А плохая новость состоит
в том, что, в большинстве случаев, вы сами
должны предоставить соответствующие фильтры. Хорошая новость состоит
в том, что многие фильтры общедоступны; а если подходящих нет,
их обычно легко написать.Кроме того, в составе ОС FreeBSD поставляется один фильтр,
/usr/libexec/lpr/lpf, работающий со многими
принтерами, которые могут печатать обычный текст. (Он обрабатывает
символы забоя и табуляции в файле, выполняет учет использования, но
и не более того.) Есть также ряд фильтров и компонентов фильтров
в наборе портов FreeBSD.Вот что вы найдете в этом разделе:В разделе Как работают
фильтры сделана попытка дать обзор роли фильтра в процессе
печати. Прочтите этот раздел, чтобы понять, что происходит
за кадром, когда система LPD
использует фильтры. Это понимание поможет предвидеть и решать
проблемы, с которыми вы можете столкнуться при добавлении дополнительных
фильтров для каждого из принтеров.Система LPD предполагает, что
каждый принтер, по умолчанию, может печатать обычный текст. Это
проблематично для &postscript;-принтеров (или принтеров на базе
другого языка), поскольку они не могут печатать обычный текст
непосредственно. В разделе
Прием заданий с
обычным текстом на &postscript;-принтеры описано, что
нужно сделать, чтобы решить эту проблему. Прочтите этот раздел,
если используете &postscript;-принтер.&postscript; — популярный формат выдачи для многих программ.
Некоторые люди даже пишут &postscript;-код непосредственно. К
сожалению, &postscript;-принтеры дороги. В разделе Имитация &postscript; на
не-&postscript; принтерах описано, как можно дополнительно
изменить текстовый фильтр принтера для приема и печати данных
&postscript; не не-&postscript; принтере.
Прочтите этот раздел, если ваш принтер не поддерживает
&postscript;.В разделе Фильтры преобразования
описан способ автоматизации преобразования определенных форматов
файлов, например, графики или данных для печатного станка, в форматы,
которые может обработать ваш принтер. После чтения этого раздела
вы сможете настроить свои принтеры так, что пользователи смогут
выполнять команду lpr -t для печати данных troff,
или lpr -d для печати данных &tex; DVI, или
lpr -v — для печати растровых изображений, и
так далее. Я рекомендую прочитать этот раздел.В разделе Выходные фильтры
описана не часто используемая возможность задавать выходные
фильтры в системе LPD. Если только вы
не печатаете начальные страницы (см. Начальные страницы),
можно, пожалуй, вообще пропустить этот раздел.В разделе lpf: текстовый
фильтр описана команда lpf, — достаточно
полный, хотя и простой текстовый фильтр для строчных принтеров
(и лазерных принтеров, работающих как строчные), поставляемый в
составе ОС FreeBSD. Если надо быстро настроить учет использования
принтера для обычного текста или если используется принтер,
из которого при получении символов забоя идет дым, несомненно,
стоит подумать об использовании lpf.Различные скрипты, описанные далее, можно найти в каталоге
/usr/share/examples/printing.Как работают фильтрыКак уже упоминалось, фильтр — это выполняемая программа, запускаемая
системой LPD для поддержки специфических
особенностей устройства при взаимодействии с принтером.Когда системе LPD надо напечатать
входящий в задание файл, она запускает программу-фильтр. Стандартный
входной поток фильтра связывается с файлом, который надо распечатать,
его стандартный выходной поток — с принтером, а стандартный поток
ошибок перенаправляется в файл регистрации ошибок (задается
характеристикой lf в файле
/etc/printcap, или используется стандартное
устройство /dev/console).troffЗапускаемый системой LPD фильтр и его
аргументы зависят от того, что указано в файле
/etc/printcap, и какие аргументы указал
пользователь для задания в команде &man.lpr.1;. Например,
если пользователь ввел команду lpr -t,
система LPD должна запустить фильтр troff,
заданный характеристикой tf для соответствующего
принтера. Если пользователь хочет печатать обычный текст, система
должна запустить фильтр if (это верно в большинстве
случаев: подробнее см. в разделе
Выходные фильтры).В файле /etc/printcap можно задавать
три вида фильтров:Текстовый фильтр, который в документации
LPD двусмысленно называют
входным фильтром, обеспечивает печать
обычного текста. Рассматривайте его как стандартный фильтр.
Система LPD предполагает, что любой
принтер может по умолчанию печатать обычный текст, а на текстовый
фильтр возлагается задача обеспечить, чтобы символы забоя,
табуляции или другие специальные символы не сбивали принтер с
толку. Если вы работаете в среде, где надо учитывать
использование принтера, текстовый фильтр должен также
учитывать количество напечатанных страниц, обычно, подсчитывая
количество напечатанных строк и сравнивая их с количеством строк на
страницу, поддерживаемых принтером. Текстовый фильтр запускается со
следующим списком аргументов:
имя-фильтра-c-wширина-lдлина-iсдвиг-n имя-пользователя-h хостучетный-файл
где
указывается, если задание послано командой
lpr -lшириназначение из характеристики pw (page
width — ширина страницы), указанной в файле
/etc/printcap, по умолчанию — 132длиназначение из характеристики pl (page
length — длина страницы), по умолчанию — 66сдвигсдвиг, заданный командой lpr -i,
по умолчанию — 0имя-пользователярегистрационное имя пользователя, печатающего файлхостимя хоста, с которого было послано заданиеучетный-файлимя учетного файла, задаваемое характеристикой
af.печатьфильтрыФильтр преобразования преобразует
специфичный формат файла в то, что принтер может воспроизвести
на бумаге. Например, данные системы набора ditroff нельзя печатать
непосредственно, но можно установить фильтр преобразования
для файлов ditroff, чтобы преобразовывать данные ditroff
в тот вид, который принтер может воспринять и напечатать. В разделе
Фильтры
преобразования написано всё об этих фильтрах. Фильтры
преобразования также необходимы для учета, если предполагается
учет использования принтера. Фильтры преобразования
запускаются со следующими аргументами:
имя-фильтра-xширина-пиксела-yвысота-пиксела-n имя-пользователя-h хостучетный-файл
где ширина-пиксела — значение
характеристики px (по умолчанию — 0),
а высота-пиксела — значение характеристики
py (по умолчанию — 0).Выходной фильтр используется только
если нет текстового фильтра или если включена выдача начальных
страниц. Судя по моему опыту, выходные фильтры используются редко.
Они описаны в разделе Выходные
фильтры. У выходного фильтра есть всего два аргумента:
имя-фильтра-wширина-lдлина
которые идентичны аргументам и
текстового фильтра.Фильтры также должны завершать работу со
следующим статусом выхода:exit 0Если фильтр успешно напечатал файл.exit 1Если фильтр не смог напечатать файл, но хочет, чтобы
система LPD попыталась
распечатать файл ещё раз. Система LPD
перезапустит фильтр, если его работа завершена с этим статусом.exit 2Если фильтр не смог напечатать файл и не хочет, чтобы
система LPD пыталась его печатать
еще раз. Система LPD удалит файл.Поставляемый в составе FreeBSD текстовый фильтр
/usr/libexec/lpr/lpf использует аргументы, задающие
ширину и длину страницы для определения того, когда посылать символ
прогона страницы (form feed) и как учитывать использование принтера.
Он использует переданные в качестве аргументов имя пользователя,
хост и учетный файл для внесения учетных записей.При поиске фильтров убедитесь, что они совместимы с системой LPD.
Если да, они должны поддерживать описанные выше списки аргументов.
Если вы планируете создавать фильтры для общего использования,
позаботьтесь о поддержке этих списков аргументов и кодов выхода.Прием заданий с обычным текстом на &postscript;-принтерызадания печатиЕсли вы — единственный пользователь компьютера и &postscript;-принтера
(или принтера на основе другого языка), и вы обещаете никогда не
посылать на принтер обычный текст и никогда не использовать возможностей
различных программ, требующих посылки на принтер обычного текста,
вам можно не заботиться о том, что описано в этом разделе.Но, если вы хотите посылать на принтер как задания &postscript;,
так и обычный текст, рекомендуется дополнить настройку принтера. Для
этого надо, чтобы текстовый фильтр определял, является ли поступающее
задание обычным текстом или программой на языке &postscript;. Все
&postscript;-задания должны начинаться с %! (для
других языков принтеров обратитесь к соответствующей документации).
Если первые два символа в задании — именно эти, речь идет о &postscript;,
и мы можем остальную часть задания передавать непосредственно. Если же
первые два символа в файле — другие, фильтр будет преобразовывать
текст в &postscript; и печатать результат.Как нам это сделать?принтерыпоследовательныеЕсли вы используете последовательный принтер, хороший способ
достичь поставленной цели состоит в установке lprps.
lprps — это фильтр для &postscript;-принтера,
выполняющий двустороннее взаимодействие с принтером. Он обновляет файл
состояния принтера, помещая в него подробную информацию, выданную
принтером, так что пользователи и администраторы могут узнать,
в каком именно состоянии (например, toner low
или paper jam) находится принтер. Но еще
важнее, что он включает программу psif, которая
определяет, является ли входящее задание обычным текстом, и вызывает
textps (еще одну программу, поставляемую вместе
с lprps) для преобразования его в &postscript;.
Затем lprps посылает преобразованное задание
на принтер.lprps входит в набор портов FreeBSD
(см. Набор портов). Вы, конечно, можете
загрузить, собрать и установить его самостоятельно. После установки
lprps просто укажите путь к программе
psif, входящей в состав пакета
lprps. Если вы установили lprps
из Коллекции Портов, используйте следующий текст в записи для
последовательного &postscript;-принтера в файле
/etc/printcap::if=/usr/local/libexec/psif:Надо также задать характеристику rw;
она требует от системы LPD открывать принтер
в режиме чтения и записи.При использовании параллельного &postscript;-принтера (что не
позволяет обеспечить двустороннее взаимодействие с принтером,
необходимое для системы lprps), можно
использовать в качестве текстового фильтра следующий скрипт командного
интерпретатора:#!/bin/sh
#
# psif - Печать PostScript или обычного текста на PostScript-принтере
# Скрипт, а НЕ версия, входящая в состав lprps
# Установлен в /usr/local/libexec/psif
#
IFS="" read -r first_line
first_two_chars=`expr "$first_line" : '\(..\)'`
if [ "$first_two_chars" = "%!" ]; then
#
# Задание PostScript, печатать его.
#
echo "$first_line" && cat && printf "\004" && exit 0
exit 2
else
#
# Обычный текст, преобразовать его, а затем напечатать.
#
( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0
exit 2
fiВ представленном выше скрипте, textps —
отдельно установленная программа для преобразования обычного текста в
&postscript;. Можно использовать любую программу преобразования
текста в &postscript;. Коллекция Портов FreeBSD (см. материал о
Коллекции Портов) включает
полнофункциональную программу преобразования текста в &postscript;
под названием a2ps, которую
тоже можно попробовать использовать.Имитация &postscript; на не-&postscript; принтерахPostScriptэмуляцияGhostscript&postscript; является фактическим стандартом для
высококачественного набора и печати. &postscript;, однако, —
дорогой стандарт. К счастью, благодаря компании
Aladdin Enterprises есть свободный аналог &postscript; под названием
Ghostscript, который работает с FreeBSD.
Ghostscript может читать большинство &postscript;-файлов и выдавать
соответствующие страницы на множество устройств, включая многие
моделей не-PostScript принтеров. Установив Ghostscript и используя
специальный текстовый фильтр для принтера, можно заставить ваш
не-&postscript; принтер работать фактически как &postscript;-принтер.Ghostscript входит в набор портов FreeBSD, если вы хотите
устанавливать его оттуда. Вы можете также легко загрузить, собрать и
установить его самостоятельно.Для имитации &postscript; надо, чтобы текстовый фильтр
определял, печатается ли &postscript;-файл. Если нет, фильтр будет
передавать файл на принтер непосредственно; в противном случае, он
будет использовать Ghostscript, чтобы сначала преобразовать файл в
формат, который поймет принтер.Рассмотрим пример: следующий сценарий представляет собой
текстовый фильтр для принтеров Hewlett Packard DeskJet 500.
Для других принтеров замените аргумент
в команде gs (Ghostscript). (Введите
команду gs -h для получения списка устройств,
поддерживаемых установленной версией Ghostscript.)#!/bin/sh
#
# ifhp - Печать Ghostscript-эмулированного PostScript на DeskJet 500
# Установлен в /usr/local/libexec/ifhp
#
# Обрабатывать LF как CR+LF (чтобы избежать "эффекта ступенек"
# на принтерах HP/PCL:
#
printf "\033&k2G" || exit 2
#
# Прочитать первые два символа файла
#
IFS="" read -r first_line
first_two_chars=`expr "$first_line" : '\(..\)'`
if [ "$first_two_chars" = "%!" ]; then
#
# Это PostScript; используем Ghostscript для чтения, преобразования и печати.
#
/usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \
-sOutputFile=- - && exit 0
else
#
# Обычный текст или HP/PCL, поэтому просто печатаем его напрямую; печатаем в
# конце символ прогона страницы, чтобы была выдана последняя страница.
#
echo "$first_line" && cat && printf "\033&l0H" &&
exit 0
fi
exit 2Наконец, надо указать системе LPD,
какой фильтр использовать, задав характеристику if::if=/usr/local/libexec/ifhp:Вот и все. Теперь можно выполнять lpr plain.text
и lpr whatever.ps, и обе команды должны успешно
печатать.Фильтры преобразованияПосле завершения простой настройки, описанной в разделе
Простая настройка принтера,
прежде всего, вам может потребоваться установить фильтры
преобразования для любимых форматов файлов (кроме обычных
текстов ASCII).Зачем устанавливать фильтры преобразования?&tex;печать файлов DVIФильтры преобразования упрощают печать различного рода файлов.
В качестве примера, предположим, что активно используется
издательская система &tex; и имеется &postscript;-принтер.
При каждой генерации DVI-файла из &tex;, мы не можем печатать его
непосредственно, пока не преобразуем в &postscript;. Для этого
используется такая последовательность команд:&prompt.user; dvips seaweed-analysis.dvi
&prompt.user; lpr seaweed-analysis.psУстановив фильтр преобразования для файлов DVI, мы можем не
конвертировать файл каждый раз вручную, возложив эту задачу на
систему LPD. Теперь при каждом получении
DVI-файла нас от его распечатки отделяет только один шаг:&prompt.user; lpr -d seaweed-analysis.dviМы заставили систему LPD автоматически
преобразовывать DVI-файл, указав опцию . Все
опции преобразования представлены в разделе
Опции форматирования
и преобразования.Для каждой из опций преобразования, которая должна поддерживаться
принтером, установите фильтр преобразования и
укажите его полное имя в файле /etc/printcap.
Фильтр преобразования аналогичен текстовому фильтру для простой
настройки принтера (см. раздел
Установка текстового фильтра),
но вместо печати обычного текста он преобразует файл в формат,
который может понять принтер.Какие фильтры преобразования следует устанавливать?Устанавливать надо те фильтры преобразования, которые
предполагается использовать. Если вы часто печатаете файлы DVI,
значит, фильтр преобразования DVI необходим. Если вам часто
приходится печатать результаты работы troff, может потребоваться
фильтр troff.В следующей таблице представлены фильтры, с которыми
работает система LPD, их
соответствующие характеристики для файла
/etc/printcap, а также способ их вызова
в команде lpr:Тип файлаХарактеристика /etc/printcapОпция lprcifplotcfDVIdfplotgfditroffnfТекст на языке FORTRANrftrofftfрастровое изображениеvfобычный текстifникакой, или
В нашем примере использование lpr -d означает,
что для принтера должна быть задана характеристика
df в записи в файле
/etc/printcap.FORTRANВопреки мнению многих, форматы вроде текста на языке FORTRAN
и plot, вероятно, устарели. У себя на машине вы можете дать
новые значения этим или любым другим опциям форматирования,
установив соответствующие специализированные фильтры. Например,
пусть необходимо напрямую печатать файлы Printerleaf (файлы
настольной издательской системы Interleaf), но вообще вы не собираетесь
печатать файлы типа plot. Можно установить фильтр преобразования
Printerleaf в качестве значения характеристики gf
и научить своих пользователей, что команда lpr -g
означает печатать файлы Printerleaf.Установка фильтров преобразованияПоскольку фильтры преобразования представляют собой программы,
не входящие в базовую поставку FreeBSD, их, видимо, надо помещать
в каталоге /usr/local. Популярное
местонахождение — каталог /usr/local/libexec,
поскольку эти фильтры являются специализированными программами для
выполнения системой LPD; обычным
пользователям никогда не понадобится их выполнять.Для включения фильтра преобразования, укажите его полное
имя в качестве значения соответствующей характеристики для принтера
в файле /etc/printcap.В качестве примера, давайте добавим фильтр преобразования DVI
в запись для принтера bamboo. Вот опять пример
файла /etc/printcap, с новой характеристикой
df для принтера bamboo.#
# /etc/printcap для хоста rose - добавлен фильтр df для bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Фильтр DVI — скрипт командного интерпретатора по имени
/usr/local/libexec/psdf. Вот его текст:#!/bin/sh
#
# psdf - фильтр принтера, преобразующий DVI в PostScript
# Установлен в /usr/local/libexec/psdf
#
# Вызывается системой lpd при выполнении пользователем команды lpr -d
#
exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"Это скрипт выполняет команду dvips в режиме
фильтрования (аргумент ) входного потока,
представляющего собой задание для печати. Затем запускается
фильтр &postscript;-принтера lprps (см. раздел
Прием заданий с
обычным текстом на &postscript;-принтеры) с аргументами,
переданными системой LPD этому скрипту.
Команда lprps будет использовать эти аргументы
для учета распечатанных страниц.Дополнительные примеры фильтров преобразованияПоскольку нет фиксированного набора шагов для установки
фильтров преобразования, я просто представлю дополнительные
примеры. Используйте их в качестве руководства при создании
собственных фильтров. Используйте их непосредственно, если
нужно.Следующий пример фильтра преобразует растровый файл (точнее,
GIF-файл) для печати на принтере Hewlett Packard LaserJet III-Si:#!/bin/sh
#
# hpvf - Преобразовать GIF-файлы в HP/PCL и напечатать
# Установлен в /usr/local/libexec/hpvf
PATH=/usr/X11R6/bin:$PATH; export PATH
giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \
&& exit 0 \
|| exit 2Он работает путем преобразования GIF-файла в переносимый формат anymap,
его — в переносимый формат graymap, затем — в переносимый bitmap,
а уже его — в данные, подходящие для LaserJet/PCL.Вот файл /etc/printcap с записью для
принтера, в которой используется представленный выше фильтр:#
# /etc/printcap для хоста orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:\
:vf=/usr/local/libexec/hpvf:Следующий скрипт является фильтром преобразования для печати
данных troff, получаемых из системы набора groff, на
&postscript;-принтере bamboo:#!/bin/sh
#
# pstf - Преобразует выдаваемые groff данные troff в PS и печатает.
# Установлен в /usr/local/libexec/pstf
#
exec grops | /usr/local/libexec/lprps "$@"Представленный выше скрипт снова использует команду
lprps для взаимодействия с принтером.
Если принтер подключен к параллельному порту, придется
использовать следующий скрипт:#!/bin/sh
#
# pstf - Преобразует выдаваемые groff данные troff в PS и печатает.
# Установлен в /usr/local/libexec/pstf
#
exec gropsВот и все. Вот какую запись надо добавить в файл
/etc/printcap, чтобы включить этот фильтр::tf=/usr/local/libexec/pstf:Вот пример, который пригодится старым специалистам по языку FORTRAN.
Это фильтр для печати текста программы на языке FORTRAN на любом принтере,
который может непосредственно печатать обычный текст. Мы установим его
для принтера teak:#!/bin/sh
#
# hprf - Фильтр текста на языке FORTRAN для LaserJet 3si:
# Установлен в /usr/local/libexec/hprf
#
printf "\033&k2G" && fpr && printf "\033&l0H" &&
exit 0
exit 2Надо добавить следующую строку к записи в файле
/etc/printcap для принтера
teak, чтобы включить этот фильтр::rf=/usr/local/libexec/hprf:Перейдем к последнему, более сложному примеру. Мы добавим фильтр
DVI для уже использовавшегося принтера LaserJet по имени
teak. Сначала простая часть: изменить файл
/etc/printcap, указав местонахождение
фильтра DVI::df=/usr/local/libexec/hpdf:А теперь — часть посложнее: создать фильтр. Для этого нам
понадобится программа преобразования DVI в LaserJet/PCL. Набор
портов FreeBSD (см. Набор портов)
содержит одну: соответствующий пакет называется
dvi2xx. Установка этого пакета дает нам
необходимую программу, dvilj2p, которая
преобразует DVI в коды, подходящие для LaserJet IIp,
LaserJet III и LaserJet 2000.Команда dvilj2p требует создания
достаточно сложного фильтра hpdf, поскольку
она не может читать стандартный входной поток. Она хочет работать
с именем файла. Что еще хуже, имя файла должно завершаться
расширением .dvi, так что использование
стандартного входного потока /dev/fd/0
тоже проблематично. Мы можем обойти эту проблему, создав (символическую)
связь (с именем, завершающимся суффиксом .dvi) с
устройством /dev/fd/0, тем самым, заставив
команду dvilj2p читать из стандартного входного
потока.Единственная оставшаяся проблема состоит в том, что мы не можем
создавать временную связь в каталоге /tmp.
Символьные связи принадлежат пользователю и группе bin.
Фильтр же работает от имени пользователя daemon. А у
каталога /tmp установлен sticky bit. Фильтр сможет
создать связь, но не сможет почистить за собой и удалить ее, поскольку
связь будет принадлежать другому пользователю.Вместо этого, фильтр будет создавать символическую связь в текущем
рабочем каталоге, которым является каталог спулинга (задаваемый
характеристикой sd в файле
/etc/printcap). Это отличное место для выполнения
фильтрами своих действий, особенно потому, что (иногда)
в каталоге спулинга места больше, чем в /tmp.Вот, наконец, и сам фильтр:#!/bin/sh
#
# hpdf - Печать данных DVI на принтере HP/PCL
# Установлен в /usr/local/libexec/hpdf
PATH=/usr/local/bin:$PATH; export PATH
#
# Определяем функцию для удаления временных файлов. Они существуют
# в текущем каталоге - в каталоге спулинга для принтера.
#
cleanup() {
rm -f hpdf$$.dvi
}
#
# Определяем функцию для обработки критических ошибок: напечатать заданное
# сообщение и выйти с кодом 2. Код выхода 2 сообщает системе LPD, что не
# надо повторно пытаться печатать задание.
#
fatal() {
echo "$@" 1>&2
cleanup
exit 2
}
#
# Если пользователь удаляет задание, система LPD будет посылать сигнал SIGINT,
# поэтому перехватываем SIGINT (и пару других сигналов), чтобы убрать за собой.
#
trap cleanup 1 2 15
#
# Гарантируем, что не конфликтуем с существующими файлами.
#
cleanup
#
# Связываем входной файл DVI со стандартным входным потоком (файлом для печати).
#
ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0"
#
# Заменяем LF = CR+LF
#
printf "\033&k2G" || fatal "Cannot initialize printer"
#
# Преобразуем и печатаем. Значение, возвращаемое программой dvilj2p, не надежно,
# так что мы его игнорируем.
#
dvilj2p -M1 -q -e- dfhp$$.dvi
#
# Убираем за собой и завершаем работу
#
cleanup
exit 0Автоматизированное преобразование: альтернатива фильтрам преобразованияВсе эти фильтры преобразования многое дают для среды печати,
но требуют от пользователя указывать (в командной строке
&man.lpr.1;), какой именно фильтр использовать. Если пользователи
не особенно разбираются в компьютерах, необходимость указывать
опцию фильтра будет их раздражать. Что еще хуже, однако,
при неправильном указании опции фильтрования может быть применен
фильтр, не соответствующий типу файла, и принтер испортит несколько
сотен страниц бумаги.Вместо установки фильтров преобразования, можно попытаться
заставить текстовый фильтр (поскольку он применяется по умолчанию)
определять тип файла, который его попросили напечатать, и затем
автоматически вызывать соответствующий фильтр преобразования.
В этом могут помочь утилиты вроде file. Конечно,
будет сложно различать некоторые типы
файлов — и, конечно же, можно задавать фильтры преобразования
только для них.apsfilterпечатьфильтрыapsfilterВ наборе портов FreeBSD есть текстовый фильтр, выполняющий
автоматическое преобразование; это apsfilter.
Он может выявлять обычный текст, &postscript; и файлы DVI,
выполнять соответствующие преобразования и печатать
результат.Выходные фильтрыСистема спулинга LPD поддерживает еще
один тип фильтров, который мы еще не рассматривали: выходные фильтры.
Выходной фильтр предназначен только для печати обычного текста,
как текстовый фильтр, но с множеством упрощений. Если вы используете
выходной фильтр, а текстовый фильтр не задан, то:Система LPD запускает выходной
фильтр один раз для всего задания, а не для каждого файла задания.Система LPD не пытается определить начало
или конец файлов в задании для выходного фильтра.Система LPD не передает выходному
фильтру имя пользователя или хоста, так что этот фильтр не предназначен
для учета использования принтера. Фактически, он получает всего два
аргумента:имя-фильтра-wширина-lдлинаГде ширина берется из характеристики
pw, а длина — из
характеристики pl для соответствующего
принтера.Не соблазняйтесь простотой выходного фильтра. Если вы хотите,
чтобы каждый файл в задании начинал печататься с новой страницы,
выходной фильтр не поможет. Используйте текстовый
фильтр (также известный как входной); см. раздел
Установка текстового фильтра.
Более того, выходной фильтр, фактически, — более
сложный, поскольку он должен проверять посылаемый ему
поток байтов в поисках специальных символов-флагов и посылать себе
сигналы от имени системы LPD.Однако выходной фильтр необходим, если
надо выдавать начальные страницы и требуется посылать управляющие
последовательности или другие строки инициализации, чтобы можно было
напечатать начальную страницу. (Но он не поможет,
если необходимо учитывать начальные страницы для пользователя,
поскольку система LPD не передает
выходному фильтру никакой информации о пользователе или хосте.)На одном принтере система LPD
позволяет совместно с выходным использовать текстовый или другие
фильтры. В таких случаях, система LPD будет
запускать выходной фильтр только для печати начальной страницы (см.
раздел Начальные
страницы). Система LPD затем
предполагает, что выходной фильтр остановится,
посылая ему два байта: ASCII 031 и ASCII 001. Когда выходной фильтр
видит эти два байта (031, 001), он должен остановиться, посылая
себе сигнал SIGSTOP. Когда система
LPD закончит выполнение остальных фильтров,
она перезапускает выходной фильтр, посылая ему сигнал
SIGCONT.Если есть выходной фильтр, но нет текстового,
и система LPD обрабатывает задания с обычным
текстом, LPD использует для выполнения
задания выходной фильтр. Как уже было сказано, выходной фильтр
будет печатать все файлы задания последовательно, без прогонов
страниц или других настроек бумаги, а это вряд ли
вас устроит. Почти во всех случаях необходим текстовый фильтр.Программа lpf, которую мы представили ранее
как текстовый фильтр, может также работать как выходной фильтр. Если
срочно необходим простой выходной фильтр, но вы не хотите писать
код для выявления байтов и посылки сигнала, попробуйте использовать
lpf. Можно также поместить lpf
в скрипт командного интерпретатора для обработки любых
кодов инициализации, которые может потребовать принтер.lpf: текстовый фильтрПрограмма /usr/libexec/lpr/lpf,
поставляемая в составе двоичного дистрибутива FreeBSD,
представляет собой текстовый (входной) фильтр, который может
печатать с отступом (если задание послано командой
lpr -i), пропускать все символы на печать
(если задание послано командой lpr -l),
настраивать позицию печати при получении в задании символов
забоя и табуляции, а также учитывать количество напечатанных страниц.
Она может также использоваться как выходной фильтр.Программа lpf подходит для многих сред печати.
И хотя она не позволяет посылать на принтер инициализационные
последовательности, легко написать скрипт командного интерпретатора,
который будет выполнять необходимую инициализацию, а затем вызывать
lpf.учет страницучетиспользования принтераЧтобы программа lpf корректно выполняла учет
страниц, ей необходимо указать корректные значения характеристик
pw и pl в файле
/etc/printcap. Она использует эти значения для
определения того, сколько текста может поместиться на странице и сколько
страниц было в задании пользователя. Подробнее об учете использования
принтера см. в разделе Учет
использования принтера.Начальные страницыПри наличии множества пользователей, использующих
различные принтеры, вероятно, можно считать начальные
страницы неизбежным злом.баннерные страницыначальные страницыначальные страницыНачальные страницы, которые также называют баннерными
или разделительными страницами, идентифицируют,
кому принадлежат задания после их печати. Обычно информация на них
выдается большими, жирными буквами, возможно, с декоративными рамочками,
чтобы в пачке распечаток они отличались от реальных документов,
образующих задания пользователей. Они позволяют пользователям быстро
находить свои задания. Очевидный недостаток выдачи начальных страниц
состоит в том, что для каждого задания надо печатать на одну страницу
больше, причем, страница эта хоть сколько-нибудь нужна несколько минут, а
затем она оказывается в мусорной корзине или сдается в макулатуру.
(Учтите, что начальная страница выдается в начале задания, а не перед каждым
файлом, так что бумаги может теряться не так уж и много.)Система LPD может выдавать заголовочные
страницы для ваших распечаток автоматически, если
ваш принтер может непосредственно печатать обычный текст. Если используется
&postscript;-принтер, потребуется внешняя программа для генерации начальной
страницы; см. Начальные
страницы на &postscript;-принтерах.Включение выдачи начальных страницВ разделе Простая настройка
принтера мы отключили выдачу начальных страниц, задав характеристику
sh (что означает suppress header) в
файле /etc/printcap. Для включения
выдачи начальных страниц на принтер, просто удалите характеристику
sh.Кажется слишком просто, правда?Вы правы. Может потребоваться задать выходной
фильтр для посылки строк инициализации на принтер. Вот пример выходного
фильтра для Hewlett Packard PCL-совместимых принтеров:#!/bin/sh
#
# hpof - Выходной фильтр для Hewlett Packard PCL-совместимых принтеров
# Установлен в /usr/local/libexec/hpof
printf "\033&k2G" || exit 2
exec /usr/libexec/lpr/lpfЗадайте полное имя выходного фильтра в качестве значения
характеристики of. Подробнее об этом см.
в разделе Выходные фильтры.Вот пример файла /etc/printcap для принтера
teak, который мы представили ранее; мы включили
выдачу начальных страниц и добавили показанный выше выходной фильтр:#
# /etc/printcap для хоста orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:\
:vf=/usr/local/libexec/hpvf:\
:of=/usr/local/libexec/hpof:Теперь, когда пользователи выдают задания на принтер
teak, они получают начальную страницу с каждым
заданием. Если пользователи хотят тратить время на поиск своих
распечаток, они могут подавить вывод начальных страниц,
посылая задание с опцией lpr -h;
другие опции &man.lpr.1; см. в разделе
Опции начальных
страниц.Система LPD выдает символ прогона
страницы (form feed) после начальной страницы. Если ваш принтер
использует другой символ или последовательность символов
для выброса напечатанной страницы, укажите их в
качестве значения характеристики ff
в файле /etc/printcap.Управление начальными страницамиВключая выдачу начальных страниц, система LPD
будет выдавать длинный длинный заголовок, целую страницу
с большими буквами, идентифицирующими пользователя, хост и задание. Ниже
представлен пример (kelly напечатала задание по имени outline с хоста rose): k ll ll
k l l
k l l
k k eeee l l y y
k k e e l l y y
k k eeeeee l l y y
kk k e l l y y
k k e e l l y yy
k k eeee lll lll yyy y
y
y y
yyyy
ll
t l i
t l
oooo u u ttttt l ii n nnn eeee
o o u u t l i nn n e e
o o u u t l i n n eeeeee
o o u u t l i n n e
o o u uu t t l i n n e e
oooo uuu u tt lll iii n n eeee
r rrr oooo ssss eeee
rr r o o s s e e
r o o ss eeeeee
r o o ss e
r o o s s e e
r oooo ssss eeee
Job: outline
Date: Sun Sep 17 11:04:58 1995Система LPD добавляет прогон страницы
после этого текста, чтобы задание начиналось с новой страницы
(если только вы не указали характеристику sf (suppress
form feeds) в записи соответствующего принтера в файле
/etc/printcap).Если вы предпочитаете, чтобы система LPD
создавала короткий заголовок, укажите
характеристику sb (short banner) в файле
/etc/printcap. Начальная страница будет
иметь следующий вид:rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995Также по умолчанию система LPD печатает
начальную страницу перед заданием. Для изменения порядка на обратный,
укажите характеристику hl (header last) в файле
/etc/printcap.Учет начальных страницИспользование встроенных начальных страниц системы
LPD порождает определенную парадигму
учета использования принтера: начальные страницы пользователи
не должны оплачивать.Почему?Поскольку выходной фильтр — единственная внешняя программа,
управляющая выдачей начальных страниц, которая может выполнять учет,
а ей не передают информацию о пользователе или хосте
и учётный файл, так что, она не имеет никакого представления о том,
на чей счет отнести использование принтера. Также недостаточно
просто добавлять одну страницу в текстовом фильтре
или в любом из фильтров преобразований (которые имеют информацию
о пользователе и хосте), поскольку пользователи могут подавлять
выдачу начальных страниц с помощью опции lpr -h.
И их заставят оплачивать начальные страницы, которые они не печатали.
Понятно, что опцию lpr -h будут использовать в большинстве
случаев те, кто озабочен проблемами окружающей среды, но вы никак не
можете стимулировать ее использование.Также недостаточно, чтобы каждый из фильтров
генерировал собственные начальные страницы (и, тем самым,
мог их учитывать). Если пользователи захотят отказаться от выдачи
начальных страниц и укажут опцию lpr -h, они все
равно их получат, и будут вынуждены оплатить, поскольку система
LPD не передает информации о наличии опции
ни одному из этих фильтров.Итак, что же вы можете сделать?Вы можете:Принять парадигму системы LPD и
сделать начальные страницы бесплатными.Установить альтернативную систему вместо LPD,
такую как LPRng. В разделе
Альтернативы стандартному
спулеру представлена дополнительная информация о других
системах спулинга, которые можно использовать вместо
LPD.
Написать умный выходной фильтр. Обычно
выходной фильтр не предназначен для выполнения чего-то кроме
инициализации принтера и простых преобразований символов. Он
подходит для начальных страниц и заданий с обычным текстом
(когда нет текстового (входного) фильтра). Но, если есть текстовый
фильтр для заданий с обычным текстом, то система
LPD будет запускать выходной фильтр только
для начальных страниц. И выходной фильтр может анализировать
текст начальной страницы, которую генерирует система
LPD, чтобы определить, на счет какого
пользователя и хоста отнести начальную страницу. Единственная
проблема этого метода в том, что выходной фильтр все равно не
знает, какой учетный файл использовать (ему не передают
имя файла, заданное в качестве значения характеристики
af), но при наличии хорошо известного учетного
файла, его имя можно явно указать в выходном фильтре. Для
упрощения этапа анализа задайте характеристику
sh (short header) в файле
/etc/printcap. Повторимся, что это может
оказаться слишком сложным, и пользователи, несомненно, больше оценят
великодушного системного администратора, который сделает начальные
страницы бесплатными.Начальные страницы на &postscript;-принтерахКак было описано выше, система LPD может
генерировать начальную страницу в виде обычного текста, что подходит для
многих принтеров. Конечно, &postscript;-принтеры не могут непосредственно
печатать обычный текст, так что, для них возможность выдачи начальных
страниц системы LPD бесполезна — или почти
бесполезна.Один очевидный способ получить начальные страницы — заставить
каждый фильтр преобразования и текстовый фильтр генерировать начальную
страницу. Эти фильтры должны использовать аргументы имя пользователя и хост
для генерации соответствующей начальной страницы. Недостаток этого
метода состоит в том, что пользователи будут всегда получать начальные
страницы, даже если будут посылать задания с помощью команды
lpr -h.Давайте рассмотрим этот метод детально. Следующий сценарий
принимает три аргумента (регистрационное имя пользователя,
имя хоста и имя задания) и создает простую
начальную страницу на языке &postscript;:#!/bin/sh
#
# make-ps-header - выдать начальную страницу на языке PostScript в stdout
# Установлен в /usr/local/libexec/make-ps-header
#
#
# Это единицы измерения PostScript (72 на дюйм). Измените значения для A4 или
# другого используемого формата бумаги:
#
page_width=612
page_height=792
border=72
#
# Проверяем аргументы
#
if [ $# -ne 3 ]; then
echo "Usage: `basename $0` <user> <host> <job>" 1>&2
exit 1
fi
#
# Сохраняем значения в переменных, в основном, для упрощения понимания
# последующего PostScript-кода.
#
user=$1
host=$2
job=$3
date=`date`
#
# Посылаем PostScript-код в stdout.
#
exec cat <<EOF
%!PS
%
% Гарантируем, что не будем влиять на следующее далее задание пользователя
%
save
%
% Делаем тонкую некрасивую рамку по краям бумаги.
%
$border $border moveto
$page_width $border 2 mul sub 0 rlineto
0 $page_height $border 2 mul sub rlineto
currentscreen 3 -1 roll pop 100 3 1 roll setscreen
$border 2 mul $page_width sub 0 rlineto closepath
0.8 setgray 10 setlinewidth stroke 0 setgray
%
% Выдаем регистрационное имя пользователя, красивыми, большими и рельефными буквами
%
/Helvetica-Bold findfont 64 scalefont setfont
$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto
($user) show
%
% Теперь выдаем всякие детали
%
/Helvetica findfont 14 scalefont setfont
/y 200 def
[ (Job:) (Host:) (Date:) ] {
200 y moveto show /y y 18 sub def }
forall
/Helvetica-Bold findfont 14 scalefont setfont
/y 200 def
[ ($job) ($host) ($date) ] {
270 y moveto show /y y 18 sub def
} forall
%
% Вот и все
%
restore
showpage
EOFТеперь, каждый из фильтров преобразования и текстовый фильтр
может вызвать этот сценарий, чтобы сначала сгенерировать
начальную страницу, а затем напечатать задание пользователя.
Вот фильтр преобразования DVI, представленный ранее в этом
документе, измененный для выдачи начальной страницы:#!/bin/sh
#
# psdf - фильтр преобразования DVI в PostScript
# Установлен в /usr/local/libexec/psdf
#
# Вызывается системой lpd при выполнении пользователем команды lpr -d
#
orig_args="$@"
fail() {
echo "$@" 1>&2
exit 2
}
while getopts "x:y:n:h:" option; do
case $option in
x|y) ;; # Ignore
n) login=$OPTARG ;;
h) host=$OPTARG ;;
*) echo "LPD started `basename $0` wrong." 1>&2
exit 2
;;
esac
done
[ "$login" ] || fail "No login name"
[ "$host" ] || fail "No host name"
( /usr/local/libexec/make-ps-header $login $host "DVI File"
/usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_argsОбратите внимание, как фильтр должен анализировать список
аргументов, чтобы определить имя пользователя и имя хоста.
Анализ аргументов в других фильтрах аргументов выполняется точно так же.
Текстовый фильтр принимает, однако, немного другой набор аргументов
(см. раздел Как работают
фильтры).Как уже упоминалось, представленная выше схема хотя и достаточно
проста, но не позволяет учесть опцию подавить вывод
начальной страницы (опция ) команды
lpr. Если пользователи хотят сберечь деревья
(или несколько копеек, если вы берете деньги и за начальные страницы),
они не смогут этого сделать, поскольку каждый фильтр будет
выдавать начальную страницу для каждого задания.Чтобы позволить пользователям отключать выдачу начальной страницы для
отдельного задания, надо будет использовать прием, представленный в
разделе Учет
начальных страниц: написать выходной фильтр, который анализирует
сгенерированную системой LPD начальную страницу и выдает ее
&postscript;-версию. Если пользователь посылает задание командой
lpr -h, система LPD
не будет генерировать начальную страницу, как и ваш выходной
фильтр. В противном случае, ваш выходной фильтр будет читать текст,
полученный от системы LPD, и
посылать на принтер соответствующий &postscript;-код для начальной
страницы.Если вы используете &postscript;-принтер с последовательным
интерфейсом, можно использовать систему lprps,
которая включает выходной фильтр, psof,
делающий то, что описано выше. Помните, что программа
psof не учитывает напечатанные пользователями
начальные страницы.Печать по сетипринтерысетевыепечать по сетиFreeBSD поддерживает печать по сети: посылку заданий на
удаленные принтеры. Печатью по сети обычно называют две разные
ситуации:Работа с принтером, подключенным к удаленному хосту. Вы
устанавливаете принтер с обычным последовательным или параллельным
интерфейсом на одном хосте. Затем, вы настраиваете систему
LPD для обеспечения доступа к принтеру
с других хостов в сети. В разделе
Принтеры, установленные
на удаленных хостах описано, как это сделать.Работа с принтером, подключенным непосредственно к сети.
Принтер имеет сетевой интерфейс, кроме (или вместо) более
традиционного последовательного или параллельного. Такой принтер
может работать следующим образом:Он может понимать протокол LPD и
даже поддерживать очереди заданий с удаленных хостов. В этом
случае, он работает просто как обычный хост с системой
LPD. Для настройки такого принтера
следуйте той же процедуре, которая описана в разделе
Принтеры,
установленные на удаленных хостах.Он может поддерживать получение потока данных по сети. В
этом случае, вы подключаете принтер к одному
из хостов в сети, делая этот хост ответственным за поддержку
очередей заданий и их посылку на принтер. В разделе
Принтеры с
сетевыми интерфейсами представлен
ряд советов по установке таких принтеров.Принтеры, установленные на удаленных хостахСистема спулинга LPD имеет встроенную
поддержку посылки заданий на другие хосты, на которых тоже работает
система LPD (или совместимая с
LPD). Это позволяет установить принтер
на одном хосте и сделать его доступным с других хостов. Она также
работает с принтерами, имеющими сетевые интерфейсы и понимающими
протокол LPD.Для обеспечения такого рода удаленной печати, сначала установите
принтер на одном хосте, хосте принтера, с помощью
процедуры, описанной в разделе Простая
настройка принтера. Выполните любые необходимые дополнительные
настройки, как описано в разделе Расширенная
настройка принтера. Не забудьте протестировать принтер и убедиться,
обеспечивает ли он заданные возможности системы LPD.
Также проверьте, что локальный хост имеет право
использовать службу LPD на
удаленном хосте (см. раздел
Ограничение приема
заданий с удаленных хостов).принтерысетевыепечать по сетиЕсли вы используете принтер с сетевым интерфейсом,
совместимый с системой LPD, упомянутым
в обсуждении выше хостом принтера будет сам
принтер, а в качестве имени принтера будет
выступать имя, которое вы сконфигурировали для принтера. См.
документацию, поставляемую с принтером и/или сетевым интерфейсом
принтера.Если вы используете Hewlett Packard Laserjet, то при задании
принтеру имени text будет автоматически
выполняться преобразование символа LF в последовательность
CRLF, так что, сценарий hpif не понадобится.Затем, на других хостах, для которых вы хотите обеспечить доступ
к принтеру, создайте запись в их файлах /etc/printcap
со следующими компонентами:Дайте записи любое подходящее имя. Для простоты, однако,
имеет смысл задавать такое же имя и псевдонимы, как и на хосте
принтера.Характеристику lp оставьте пустой, указав
это явно (:lp=:).Создайте каталог спулинга и укажите его местонахождение в
характеристике sd. Система
LPD будет сохранять задания в нем,
прежде чем они будут посланы на хост принтера.Укажите имя хоста принтера в качестве значения характеристики
rm.Укажите имя принтера на хосте принтера
в качестве значения характеристики rp.Вот и все. Не нужно перечислять фильтры преобразования, размеры
страницы и вообще ничего больше в файле
/etc/printcap.Рассмотрим пример. На хосте rose есть два принтера,
bamboo и rattan.
Мы позволим пользователям хоста orchid печатать на эти
принтеры. Вот файл /etc/printcap для хоста
orchid (из раздела
Включение
выдачи начальных страниц). В нем уже есть запись для принтера
teak; мы добавили две записи для принтеров на
хосте rose:#
# /etc/printcap для хоста orchid - добавлены (удаленные) принтеры на rose
#
#
# teak - локальный принтер; он подключен непосредственно к orchid:
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/ifhp:\
:vf=/usr/local/libexec/vfhp:\
:of=/usr/local/libexec/ofhp:
#
# rattan подключен к rose; посылать задания для rattan на хост rose:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
#
# bamboo тоже подключен к rose:
#
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:Затем достаточно только создать каталоги спулинга на
orchid:&prompt.root; mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo
&prompt.root; chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo
&prompt.root; chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bambooТеперь пользователи хоста orchid могут печатать на
принтеры rattan и bamboo. Если,
например, пользователь на orchid выполнит команду
&prompt.user; lpr -P bamboo -d sushi-review.dvi
система LPD на orchid
будет копировать задание в каталог спулинга
/var/spool/lpd/bamboo и учтет, что печатается
задание DVI. Как только на хосте rose появится место
в каталоге спулинга принтера bamboo, две системы
LPD передадут файл на хост rose.
Файл будет ждать в очереди на rose пока, наконец, не будет
напечатан. Он будет преобразован из формата DVI в &postscript; (поскольку
bamboo является &postscript;-принтером) на хосте
rose.Принтеры с сетевыми интерфейсамиЧасто при покупке сетевой карты для принтера можно приобрести
две версии: эмулирующую спулер (более дорогая версия) или просто
позволяющую принимать на принтер данные так, как если бы
использовался последовательный или параллельный порт (более
дешевая версия). В этом разделе описано, как использовать
более дешёвую версию. Использование более дорогой версии
описано в предыдущем разделе
Принтеры, установленные
на удаленных хостах.Формат файла /etc/printcap позволяет
указывать, какой последовательный или параллельный интерфейс
использовать, и (при использовании последовательного интерфейса),
какую установить скорость, использовать ли управление потоком,
размер отступов для табуляций, преобразование символов новой строки
и другие параметры. Но нет способа указать подключение к принтеру,
прослушивающему TCP/IP или другой сетевой порт.Для посылки данных на подключенный к сети принтер, надо разработать
программу взаимодействия, которую могут вызывать текстовый фильтр и
фильтры преобразований. Вот один из примеров: скрипт
netprint принимает все данные со стандартного
входного потока и посылает их на принтер, подключенный к сети.
Мы указываем имя хоста принтера в качестве первого аргумента, а
номер порта, к которому надо подключаться — в качестве второго
аргумента команды netprint. Учтите, что
поддерживается только одностороннее взаимодействие (с ОС FreeBSD
на принтер); многие сетевые принтеры поддерживают двустороннее
взаимодействие, и вы можете захотеть его использовать (для
получения состояния принтера, учета и т.п.).#!/usr/bin/perl
#
# netprint - Текстовый фильтр для принтера, подключенного к сети
# Установлен в /usr/local/libexec/netprint
#
$#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>";
$printer_host = $ARGV[0];
$printer_port = $ARGV[1];
require 'sys/socket.ph';
($ignore, $ignore, $protocol) = getprotobyname('tcp');
($ignore, $ignore, $ignore, $ignore, $address)
= gethostbyname($printer_host);
$sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address);
socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol)
|| die "Can't create TCP/IP stream socket: $!";
connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!";
while (<STDIN>) { print PRINTER; }
exit 0;Затем можно использовать этот сценарий в различных фильтрах. Пусть
у нас есть строчный принтер Diablo 750-N, подключенный к сети. Принтер
принимает данные на печать через порт 5100. Имя хоста для принтера —
scrivener. Вот текстовый фильтр для этого принтера:#!/bin/sh
#
# diablo-if-net - Текстовый фильтр для принтера Diablo `scrivener',
# прослушивающего порт 5100. Установлен в /usr/local/libexec/diablo-if-net
#
exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100Ограничение использования принтерапринтерыограничение доступаВ этом разделе представлена информация об ограничении доступа к
принтеру. Система LPD позволяет управлять
тем, кто может обращаться к принтеру, как локально, так и удаленно,
смогут ли они печатать несколько копий, насколько большими могут
быть их задания и насколько могут разрастаться очереди печати.Ограничение количества копийСистема LPD позволяет пользователям
легко печатать несколько копий файла. Пользователи могут печатать
задания с помощью команды lpr -#5
(например) и получать пять копий каждого файла в задании. Хорошо это
или нет — решать вам.Если вы считаете, что многочисленные копии только изнашивают ваши
принтеры, можете отключить опцию команды
&man.lpr.1;, добавив характеристику sc в файл
/etc/printcap. Когда пользователи пошлют
задания с опцией , они увидят:lpr: multiple copies are not allowedУчтите, что если вы настроили удаленный доступ к принтеру (см.
раздел Принтеры,
установленные на удаленных хостах), необходимо задать
характеристику sc также и в файлах
/etc/printcap удаленных хостов, иначе
пользователи все равно смогут посылать задания с несколькими
копиями с других хостов.Рассмотрим пример. Вот файл /etc/printcap
для хоста rose. Принтер rattan
вполне надежен, поэтому мы разрешим печатать на него несколько
копий, но лазерный принтер bamboo несколько
более изношен, поэтому мы отключим для него печать нескольких
копий, добавив характеристику sc:#
# /etc/printcap для хоста rose - запрещает печать нескольких копий на bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Теперь нам также нужно добавить характеристику sc
в файле /etc/printcap на хосте orchid
(и раз уж мы его меняем, давайте отключим печать нескольких копий для
принтера teak):#
# /etc/printcap для хоста orchid - отключена печать нескольких копий на
# локальном принтере teak и на удаленном принтере bamboo
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\
:if=/usr/local/libexec/ifhp:\
:vf=/usr/local/libexec/vfhp:\
:of=/usr/local/libexec/ofhp:
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:С помощью характеристики sc мы предотвращаем
использование команды lpr -#, но это не мешает
пользователям просто выполнить команду &man.lpr.1; несколько раз
или просто послать один и тот же файл несколько раз в одном задании
следующим образом:&prompt.user; lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.signЕсть много способов предотвратить такое некорректное использование
(включая его игнорирование), которые вы можете разработать самостоятельно.Ограничение доступа к принтерамВы можете управлять тем, кто и на какие принтеры может печатать,
с помощью механизма групп &unix; и характеристики
rg в файле /etc/printcap.
Просто поместите пользователей, которым необходимо предоставить
доступ к принтеру, в определенную группу, a затем укажите эту
группу в качестве значения характеристики rg.Пользователи, не входящие в эту группу (включая root)
будут получать уведомление
lpr: Not a member of the restricted group
при попытке печатать на контролируемый принтер.Как и в случае с характеристикой sc (подавить
выдачу нескольких копий), при необходимости, надо указывать
характеристику rg и на удаленных хостах, имеющих
доступ к вашим принтерам (см. раздел
Принтеры, установленные
на удаленных хостах).Например, давайте разрешим всем обращаться к принтеру
rattan, но только пользователи группы
artists смогут использовать принтер
bamboo. Вот знакомый уже файл
/etc/printcap для хоста rose:#
# /etc/printcap для хоста rose - ограничение группы для bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Давайте не будем менять другой рассматриваемый файл
/etc/printcap (для хоста
orchid). Конечно, в результате, любой пользователь
orchid может печатать на bamboo.
Возможно, на хосте orchid учетных записей и так
немного, и вы хотите, чтобы все они имели доступ к принтеру. Или нет.Для принтера может быть только одна ограниченная группа.Контроль размеров посылаемых заданийзадания печатиЕсли к принтеру обращается несколько пользователей, вам,
возможно, понадобиться установить ограничение на максимальный
размер файлов, которые пользователи могут посылать на печать.
В конечном итоге, размер файловой системы, в которой находятся
каталоги спулинга, ограничен, и надо гарантировать, что
в нем останется место для заданий других пользователей.задания печатиуправленияСистема LPD ограничить максимально
допустимый размер файла в задании с помощью характеристики
mx. Размер задается в блоках, размер которых,
BUFSIZ, составляет 1024 байта.
Если задать этой характеристике значение ноль, размер файла
ограничиваться не будет; однако, если характеристика
mx вообще не задана, то будет использоваться
стандартное ограничение — 1000 блоков.Ограничение применяется к файлам в задании,
а не к общему размеру задания.Система LPD не откажется печатать
файл больше максимально допустимого для принтера размера. Вместо
этого, она поставит в очередь часть файла до заданного
предела, и она будет напечатана. Остальное не будет напечатано.
Правильность такого поведения не бесспорна.Давайте установим ограничения для принтеров из наших примеров,
rattan и bamboo. Поскольку
&postscript;-файлы этих художников обычно бывают весьма
большими, мы ограничим их размер пятью мегабайтами. Мы не
будем ограничивать использование обычного текстового строчного
принтера:#
# /etc/printcap для хоста rose
#
#
# Без ограничения на размер задания:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:mx#0:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
#
# Размер файла - не более пяти мегабайт:
#
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Опять таки, ограничения применяются только для локальных
пользователей. Если вы настроили удаленный доступ к принтерам,
для удаленных пользователей эти ограничения не действуют.
Надо задать характеристику mx и в файлах
/etc/printcap удаленных хостов. Более
детальную информацию по удаленной печати см. в разделе
Принтеры,
установленные на удаленных хостах.Есть еще один специализированный способ ограничить
размер заданий печати с удаленных принтеров; см. раздел
Ограничение
печати заданий с удаленных хостов.Ограничение печати заданий с удаленных хостовСистема спулинга LPD обеспечивает
несколько способов ограничить посылку заданий с удаленных
хостов:Ограничения хостовВы можете управлять тем, с каких удаленных хостов
локальная система LPD принимает
запросы, с помощью файлов /etc/hosts.equiv и
/etc/hosts.lpd. Система
LPD проверяет, поступает ли
входящий запрос с хоста, указанного в одном из этих файлов.
Если нет, система LPD отвергает
запрос.Формат этих файлов простой: по одному имени хоста в строке.
Учтите, что файл /etc/hosts.equiv также
используется протоколом &man.ruserok.3; и влияет на
программы &man.rsh.1; и &man.rcp.1;, так что, будьте
внимательны.Например, вот файл /etc/hosts.lpd
для хоста rose:orchid
violet
madrigal.fishbaum.deЭто означает, что хост rose будет
принимать запросы с хостов orchid,
violet и
madrigal.fishbaum.de. Если любой
другой хост попытается обратиться к системе
LPD хоста rose,
его задание будет отвергнуто.Ограничения размераВы можете управлять тем, сколько свободного места должно
оставаться в файловой системе, в которой находится каталог
спулинга. Создайте файл с именем minfree
в каталоге спулинга для локального принтера. Вставьте в этот
файл число, задающее, сколько блоков диска (по 512 байтов)
должно быть свободными, чтобы удаленное задание было принято.Это позволяет гарантировать, что удаленные пользователи не
заполнят вашу файловую систему. Можно также использовать этот
механизм для предоставления определенного преимущества
локальным пользователям: они смогут ставить задания в очередь
еще долго после того, как свободного места на диске станет
меньше, чем указано в файле minfree.Например, давайте добавим файл minfree
для принтера bamboo. Найдем в файле
/etc/printcap каталог спулинга для этого
принтера; вот запись для принтера bamboo:bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:mx#5000:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Каталог спулинга задается характеристикой
sd. Укажем, что в файловой системе
должно быть три мегабайта (что составляет 6144 блоков диска)
свободного места, чтобы система LPD
принимала удаленные задания:&prompt.root; echo 6144 > /var/spool/lpd/bamboo/minfree
Ограничения пользователейВы можете управлять тем, какие удаленные пользователи
смогут печатать на локальные принтеры, задавая характеристику
rs в файле /etc/printcap.
Когда характеристика rs указана в записи
для локально подключенного принтера, система
LPD будет принимать задания с
удаленных хостов, если пользователь,
посылающий задание, также имеет учетную запись с тем же
именем на локальном хосте. В противном случае,
система LPD отвергает задание.Эта возможность особенно полезна в среде, где есть,
например, несколько отделов, совместно использующих сеть,
и некоторые пользователи могут переходить из отдела в отдел.
Если дать им учетные записи в системах, они смогут использовать
принтеры из систем в своих отделах. Если вы хотели бы
позволить им использовать только
принтеры, но не остальные ресурсы вашего компьютера,
можно дать им формальные учетные записи,
без начального каталога и с бесполезным начальным
командным интерпретатором вроде /usr/bin/false.Учет использования принтераучетиспользования принтераИтак, вам надо брать деньги за распечатки. А почему нет?
Бумага и чернила стоят денег. А есть еще и затраты на
поддержку в работоспособном состоянии — принтеры имеют
множество движущихся частей и склонны к поломкам. Вы проанализировали
состояние принтеров, объемы использования и затраты на их эксплуатацию,
и получили определенную стоимость страницы (или фута, метра или
чего угодно). Теперь, как же начать реально учитывать распечатки?Итак, плохая новость состоит в том, что система спулинга
LPD в этом не сильно поможет. Учет сильно
зависит от типа используемого принтера, форматов распечаток и
ваших требований к оплате использования
принтеров.Для реализации учета надо изменить текстовый фильтр принтера
(чтобы учитывать обычные текстовые задания) и фильтры преобразования
(чтобы учитывать другие форматы файлов), для подсчета страниц или
запроса количества напечатанных страниц у принтера. Не получится
обойтись использованием простого выходного фильтра, поскольку
он не может выполнять учет. См. раздел
Фильтры.Обычно есть два способа выполнения учета:Периодический учет — более распространенный
способ, возможно, потому, что он проще. Когда кто-то печатает
задание, фильтр регистрирует пользователя, хост и количество
страниц в учетном файле. Каждый месяц, семестр, год или раз в
любой желаемый период времени, вы собираете учетные файлы для
различных принтеров, суммируете напечатанные каждым пользователем
страницы и выставляете суммы за использование. Затем вы
очищаете все регистрационные файлы, начиная с чистого листа новый
отчетный период.Постоянный учет используется реже,
вероятно, потому, что сложнее в реализации. Этот метод требует от
фильтров выставлять пользователям суммы за распечатки сразу после
использования принтеров. Как и проверка дисковых квот, этот учет
выполняется немедленно. Вы можете не давать пользователям печатать,
если баланс на их счету стал отрицательным, а также предоставить
им способ проверить и изменить свои квоты печати.
Но этот метод требует поддержки базы данных для отслеживания
пользователей и квот.Система спулинга LPD легко поддерживает
оба метода: поскольку вы (в большинстве случаев) должны предоставить
фильтры, вам придется предоставить и код для учета. Но есть и
положительный момент: методы учета могут быть сколько угодно гибкими.
Например, можно выбрать периодический или постоянный учет. Можно
выбрать, какую именно информацию регистрировать: имена пользователей,
имена хостов, типы заданий, количество напечатанных страниц,
квадратные метры использованной бумаги, продолжительность печати
заданий, и т.д. Это делается путем изменения фильтров так, чтобы
они сохраняли соответствующую информацию.Простая система учета использования принтераВ составе FreeBSD поставляется две программы, которые можно сразу
использовать для организации простой системы периодического учета.
Речь идет о текстовом фильтре lpf, описанном в
разделе lpf: текстовый фильтр,
и о программе &man.pac.8;, обеспечивающей сбор и суммирование
записей из учетных файлов принтеров.Как уже упоминалось в разделе, посвященном фильтрам
(Фильтры), система
LPD при запуске текстового фильтра и
фильтров преобразований передает им имя учетного файла в командной
строке. Фильтры могут использовать соответствующий аргумент, чтобы
определить, куда записывать учетную информацию. Имя этого файла
берется из значения характеристики af в файле
/etc/printcap и, если не заданно как абсолютное,
интерпретируется относительно каталога спулинга.Система LPD запускает lpf
с аргументами ширины и длины страницы (которые берутся из
характеристик pw и pl).
Программа lpf использует эти аргументы для
определения количества бумаги, которая будет использована. После
посылки файла на принтер она вносит запись в учетный файл. Эти
записи имеют следующий вид:2.00 rose:andy
3.00 rose:kelly
3.00 orchid:mary
5.00 orchid:mary
2.00 orchid:zhangСледует использовать отдельный учетный файл для каждого принтера,
поскольку программа lpf не реализует механизм
блокирования файлов, и два экземпляра lpf могут
повредить записи друг друга, если записывают одновременно в один
и тот же файл. Простой способ выделить отдельный учетный файл для
каждого принтера — использовать характеристику
af=acct в файле /etc/printcap.
Тогда каждый учетный файл окажется в каталоге спулинга соответствующего
принтера и будет назван acct.Когда вы будете готовы выставить пользователям счет за
распечатки, запустите программу &man.pac.8;. Просто перейдите в
каталог спулинга принтера, учетную информацию которого вы хотите
обработать, и введите команду pac. Вы
получите итоговые суммы в долларах, как показано ниже: Login pages/feet runs price
orchid:kelly 5.00 1 $ 0.10
orchid:mary 31.00 3 $ 0.62
orchid:zhang 9.00 1 $ 0.18
rose:andy 2.00 1 $ 0.04
rose:kelly 177.00 104 $ 3.54
rose:mary 87.00 32 $ 1.74
rose:root 26.00 12 $ 0.52
total 337.00 154 $ 6.74Команда &man.pac.8; принимает следующие аргументы:По какому принтеру подсчитывать
итоговые суммы. Эта опция работает, только если в качестве
значения характеристики af в файле
/etc/printcap указано абсолютное имя.Сортировать отчет по сумме, а не по имени пользователя в
алфавитном порядке.Игнорировать имя хоста в учетных файлах. При указании этой
опции, пользователь smith на хосте
alpha считается тем же, что и пользователь
smith на хосте gamma.
Обычно эти пользователи считаются разными.Вычислять суммы из расчета стоимость
долларов за страницу или за фут, вместо использования
значения характеристики pc в файле
/etc/printcap, или двух центов (как принято по
умолчанию). Можно задавать стоимость
как число с плавающей запятой.Изменить порядок сортировки.Создать итоговый учетный файл и очистить учетный файл.имя…Выдать учетную информацию только для пользователей с
заданными именами.В стандартном отчете, который создает команда &man.pac.8;,
выдается количество страниц, напечатанное каждым из пользователей с
различных хостов. Если для вас хосты не имеют значения (поскольку
пользователи могут работать на любом хосте), выполните команду
pac -m для получения следующих итогов: Login pages/feet runs price
andy 2.00 1 $ 0.04
kelly 182.00 105 $ 3.64
mary 118.00 35 $ 2.36
root 26.00 12 $ 0.52
zhang 9.00 1 $ 0.18
total 337.00 154 $ 6.74Для получения сумм в долларах программа &man.pac.8; использует
значение характеристики pc в файле
/etc/printcap (по умолчанию — 200, или 2 цента
за страницу). Укажите в качестве значения этой характеристики, в
сотых долях цента, стоимость страницы или фута, исходя из которой
вы хотите брать деньги за распечатки. Это значение можно
переопределить при вызове команды &man.pac.8; с помощью опции
. Но при использовании опции
стоимость надо указывать в долларах, а не в сотых долях цента.
Например, команда
&prompt.root; pac -p1.50
приводит к тому, что страница будет стоить один доллар пятьдесят
центов. Используя эту опцию, можно фактически начинать грести деньги
лопатой.Наконец, при выполнении команды pac -s итоговая
информация будет сохранена в итоговом учетном файле, имя которого
строится как имя учетного файла принтера с суффиксом
_sum. Затем учетный файл принтера очищается.
Когда команда &man.pac.8; выполняется повторно, она перечитывает
итоговый файл для получения начальных сумм, а затем добавляет
информацию из обычного учетного файла.Как можно подсчитать количество напечатанных страниц?Для выполнения хоть отдаленно точного учета надо уметь определять,
сколько бумаги использовано для печати задания. Это — основная
проблема учета использования принтеров.Для обычных текстовых заданий решить эту проблему не сложно: надо
считать, сколько строк входит в задание, и сравнивать с количеством
строк на страницу, которые поддерживает принтер. Не забывайте
учитывать символы забоя в файлах, которые приводят к перепечатке
строк поверх, а также длинные логические строки, которые переносятся
на несколько физических.Текстовый фильтр lpf (представленный в разделе
lpf: текстовый фильтр)
учитывает эти вещи при выполнении учета. Если вы пишете текстовый
фильтр, который должен осуществлять учет, может иметь смысл
просмотреть исходный код программы lpf.Но как обрабатывать файлы других форматов?Ну, для преобразования из DVI в формат LaserJet или из DVI в
&postscript;, можно в фильтре анализировать диагностические
результаты команды dvilj или dvips,
чтобы определить, сколько страниц было преобразовано. Может оказаться
возможным применить этот прием и для других форматов файлов и
программ преобразования.Но эти методы несовершенны из-за того, что принтер мог
фактически и не напечатать все эти страницы. Например, он мог
замять бумагу, в нем мог закончиться тонер или он мог вообще
взорваться — и пользователю все равно пришлось бы платить.Так что же делать?Есть только один надежный способ
точного учета. Купите принтер, который может
сообщать, сколько бумаги он использовал, и подключите его
через последовательный порт или по сети. Практически все
&postscript;-принтеры поддерживают такую возможность. Другие
модели — тоже (сетевые лазерные принтеры Imagen, например).
Измените фильтры для этих принтеров так, чтобы получать количество
использованных страниц после печати каждого задания, и пусть они
записывают учетную информацию только на основе
этого значения. Не надо ни считать строки, ни выполнять
чреватую ошибками обработку файла.Конечно, всегда можно поступить великодушно и не брать денег
за распечатки.Использование принтеровпринтерыиспользованиеВ этом разделе описано, как использовать настроенные принтеры
в ОС FreeBSD. Вот сводка команд пользовательского уровня:&man.lpr.1;Печать заданий&man.lpq.1;Проверка очередей принтеров&man.lprm.1;Удаление заданий из очередей принтеровЕсть также административная команда, &man.lpc.8;, описанная в
разделе Администрирование принтеров, используемая для управления
принтерами и их очередями.Все три команды, &man.lpr.1;, &man.lprm.1; и &man.lpq.1;,
поддерживают опцию ,
позволяющую указать, с каким принтером/очередью из указанных в
файле /etc/printcap работать. Это позволяет
посылать, удалять и проверять задания на разных принтерах. Если вы
не используете опцию , эти команды используют
принтер, указанный в качестве значения переменной среды
PRINTER. Наконец, если переменная среды
PRINTER не задана, эти команды по умолчанию
направляются на принтер по имени lp.Далее термин стандартный принтер
означает принтер, указанный переменной среды PRINTER
или принтер по имени lp, если переменная
среды PRINTER не задана.Задания печатиДля печати файлов, выполните команду:&prompt.user; lpr имя-файла...печатьЭта команда печатает каждый из перечисленных файлов на стандартный
принтер. Если файлы не указаны, команда &man.lpr.1; читает данные для
печати со стандартного входного потока. Например, следующая команда
печатает некоторые важные системные файлы:&prompt.user; lpr /etc/host.conf /etc/hosts.equivДля выбора конкретного принтера, введите:&prompt.user; lpr -P имя-принтераимя-файла...Следующая команда печатает подробный листинг текущего каталога
на принтере rattan:&prompt.user; ls -l | lpr -P rattanПоскольку для команды &man.lpr.1; файлы не указаны,
команда lpr читает данные для печати из стандартного
входного потока, который содержит результат выполнения команды
ls -l.Команда &man.lpr.1; может также принимать множество опций
для управления форматированием, применения преобразований,
печати нескольких копий и т.д. Дополнительную информацию см. в
разделе Опции печати.Проверка заданийзадания печатиПри печати с помощью команды &man.lpr.1;, данные, которые надо
напечатать, помещаются вместе в пакет, который называют заданием
печати, и посылаются системе спулинга LPD.
Каждый принтер имеет очередь заданий, и ваше задание ждет в этой
очереди вместе с другими вашими заданиями и заданиями других
пользователей. Принтер печатает эти задания по принципу первым пришло,
первым выполнено.Для получения очереди стандартного принтера, введите команду
&man.lpq.1;. Чтобы указать конкретный принтер, используйте
опцию . Например, команда
&prompt.user; lpq -P bamboo
показывает очередь для принтера по имени bamboo.
Вот пример результатов выполнения команды lpq:bamboo is ready and printing
Rank Owner Job Files Total Size
active kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes
2nd kelly 10 (standard input) 1635 bytes
3rd mary 11 ... 78519 bytesПоказано, что в очереди bamboo есть три
задания. Первое задание, посланное пользователем kelly, получило
номер задания 9. Каждое задание для принтера получает
уникальный номер задания. В большинстве случаев номер задания можно
игнорировать, но он потребуется, если надо будет отменить задание;
подробнее об этом см. в разделе Удаление
заданий.Задание номер 9 состоит из двух файлов; несколько файлов,
указанных в командной строке &man.lpr.1;, считаются частью одного
задания. Это задание является текущим активным (обратите внимание на
слово active в столбце Rank),
т.е. принтер должен сейчас печатать это задание. Второе задание
состоит из данных, передаваемых в качестве стандартного входного
потока команде &man.lpr.1;. Третье задание послано пользователем
mary; оно намного больше по объему.
Полное имя файла, который печатается, слишком длинное и не помещается,
поэтому команда &man.lpq.1; просто выдает три точки.Самая первая строка результатов команды &man.lpq.1; тоже полезна:
она говорит о том, что сейчас делает принтер (или, по крайней мере,
что он делает по мнению системы LPD).Команда &man.lpq.1; также поддерживает опцию
для генерации подробного длинного листинга. Вот пример результатов
выполнения команды lpq -l:waiting for bamboo to become ready (offline ?)
kelly: 1st [job 009rose]
/etc/host.conf 73 bytes
/etc/hosts.equiv 15 bytes
kelly: 2nd [job 010rose]
(standard input) 1635 bytes
mary: 3rd [job 011rose]
/home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytesУдаление заданийЕсли вы передумали печатать задание, можно удалить его из очереди
заданий с помощью команды &man.lprm.1;. Часто можно использовать
&man.lprm.1; для удаления активного задания, но часть задания или
даже все задание все равно может быть напечатано.Для удаления задания со стандартного принтера сначала используйте
команду &man.lpq.1; для поиска номера задания. Затем введите команду:&prompt.user; lprm номер-заданияДля удаления задания с указанного принтера, задайте опцию
option. Следующая команда удаляет задание номер
10 из очереди заданий принтера bamboo:&prompt.user; lprm -P bamboo 10Для команды &man.lprm.1; есть ряд сокращений:lprm -Удаляет все задания (со стандартного принтера), принадлежащие
пользователю, который выполнил команду.lprm пользовательУдаляет все задания (для стандартного принтера), принадлежащие
указанному пользователю. Суперпользователь
может удалять задания других пользователей; обычный пользователь
может удалять только собственные задания.lprmЕсли в командной строке не указаны номер задания, имя
пользователя, или указана опция ,
команда &man.lprm.1; удаляет текущее активное задание на стандартном
принтере, если оно принадлежит вам. Суперпользователь может удалять
любое активное задание.Добавьте опцию для любого из перечисленных выше
сокращений, чтобы работать с любым необходимым принтером вместо
стандартного. Например, следующая команда удаляет все задания текущего
пользователя из очереди принтера по имени rattan:&prompt.user; lprm -P rattan -Если вы работаете в сетевой среде, команда &man.lprm.1; позволит
вам удалять задания только с хоста, с которого они были посланы,
даже если тот же принтер доступен и с других хостов. Следующая
последовательность команд демонстрирует это:&prompt.user; lpr -P rattan myfile
&prompt.user; rlogin orchid
&prompt.user; lpq -P rattan
Rank Owner Job Files Total Size
active seeyan 12 ... 49123 bytes
2nd kelly 13 myfile 12 bytes
&prompt.user; lprm -P rattan 13
rose: Permission denied
&prompt.user; logout
&prompt.user; lprm -P rattan 13
dfA013rose dequeued
cfA013rose dequeued
Не только обычный текст: опции печатиКоманда &man.lpr.1; поддерживает несколько опций, управляющих
форматированием текста, преобразованием графики и других форматов
файлов, выдачей нескольких копий, обработкой задания и др. В этом
разделе описаны эти опции.Опции форматирования и преобразованияСледующие опции команды &man.lpr.1; управляют форматированием
файлов в задании. Используйте эти опции, если задание содержит не
простой текст или если вы хотите сформатировать простой текст с
помощью утилиты &man.pr.1;.&tex;Например, следующая команда печатает файл DVI (из системы
верстки &tex;) по имени fish-report.dvi
на принтере bamboo:&prompt.user; lpr -P bamboo -d fish-report.dviЭти опции применяются для каждого файла в задании, так что нельзя
смешивать (например) файлы DVI и ditroff в одном задании. Вместо этого
посылайте однотипные файлы отдельными заданиями, используя для каждого
задания соответствующие опции преобразования.Все эти опции, кроме и ,
требуют наличия установленных для целевого принтера фильтров
преобразования. Например, опция требует фильтра
преобразования DVI. Подробнее см. в разделе
Фильтры преобразования.Печать файлов cifplot.Печать файлов DVI.Печать текстовых файлов на языке FORTRAN.Печать графиков.Сдвинуть результат вправо на число
столбцов; если число не указано,
сдвиг выполняется на 8 столбцов. Эта опция работает только с
определенными фильтрами преобразования.Не помещайте пробелы между и числом.Печать текстовых данных буквально, включая управляющие символы.Печать данных ditroff (device independent troff).-pФорматировать обычный текст перед печатью утилитой &man.pr.1;.
Подробнее см. &man.pr.1;.Использовать указанный заголовок
в колонтитуле &man.pr.1; вместо имени файла. Эта опция учитывается
только при использовании вместе с опцией .Печать данных troff.Печать растровых данных.Вот пример: следующая команда печатает красиво сформатированную
версию справочного руководства по команде &man.ls.1; на стандартный
принтер:&prompt.user; zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -tКоманда &man.zcat.1; распаковывает исходный код страницы справочного
руководства &man.ls.1; и передает его команде &man.troff.1;, которая
форматирует его и выдает результат в формате GNU troff, передаваемый
команде &man.lpr.1;, посылающей задание спулеру LPD.
Поскольку мы использовали опцию команды &man.lpr.1;,
спулер при печати задания будет преобразовывать результат GNU troff в
формат, понятный стандартному принтеру.Опции обработки заданийСледующие опции команды &man.lpr.1; требуют от системы
LPD специальной обработки задания:-# копийВыдавать указанное количество копий
каждого файла в задании вместо одной. Администратор может отключить
эту опцию для уменьшения износа принтера и поощрения использования
ксерокса. См. раздел
Ограничение
количества копий.В следующем примере на стандартный принтер печатается три
копии файла parser.c, а затем — три копии
parser.h:&prompt.user; lpr -#3 parser.c parser.h-mПосылать почту после завершения задания печати. При указании
этой опции, система LPD будет посылать
почту на ваше имя после завершения обработки вашего задания. В
сообщении будет сказано, выполнено ли задание успешно или по ходу
была ошибка, и (часто) — в чем она состояла.-sНе копировать файлы в каталог спулинга, а сделать там на них
символические связи.Эту опцию имеет смысл использовать при печати больших заданий.
Она экономит место в каталоге спулинга (ваше задание может занять
все свободное место в файловой системе, в которой находится каталог
спулинга). Она также экономит время, поскольку системе
LPD не придется копировать каждый байт
задания в каталог спулинга.Есть, однако, и недостаток: поскольку система
LPD будет ссылаться на исходные
файлы непосредственно, вы не сможете изменять или удалять их,
пока они не будут распечатаны.Если вы печатаете на удаленный принтер, система LPD
будет вынуждена, так или иначе, скопировать файлы с локального хоста
на удаленный, поэтому опция сэкономит место только
в локальном каталоге спулинга, но не в удаленном. Но, она все равно
полезна.-rУдалять файлы в задании после копирования в каталог спулинга
или после печати, если указана опция . Будьте
внимательны при использовании этой опции!Опции начальных страницЭти опции команды &man.lpr.1; изменяют текст, который обычно
выдается на начальной странице задания. Если выдача начальных страниц
для целевого принтера отключена, эти опции не действуют. Информацию по
настройке начальных страниц см. в разделе
Начальные страницы.-C текстЗаменить имя хоста на начальной странице
текстом. Обычно на ней выдается имя хоста,
с которого было послано задание.-J текстЗаменить имя задания на начальной странице
текстом. Имя задания обычно совпадает с
именем первого файла в задании или имеет значение stdin,
если печатается стандартный входной поток.-hНе выдавать начальной страницы.В некоторых организациях эта опция может не действовать, что
определяется способом генерации начальных страниц. Подробнее см. в
разделе Начальные
страницы.Администрирование принтеровКак администратор принтеров, вы должны их установить, настроить и
протестировать. С помощью команды &man.lpc.8; вы можете
взаимодействовать с принтерами и другими способами. С помощью
&man.lpc.8; вы можете:Запускать и останавливать принтерыВключать и отключать их очередиИзменять порядок заданий в каждой очереди.Начнем с замечания по терминологии: если принтер
остановлен, он не будет печатать ничего из
своей очереди. Пользователи могут продолжать посылать задания,
которые будут ждать в очереди, пока принтер не будет
запущен или пока очередь не будет очищена.Если очередь отключена, ни один пользователь
(кроме root) не может посылать задания на
принтер. Во включенную очередь можно посылать
задания. Принтер для отключенной очереди может быть
запущен; при этом он будет продолжать печатать
находящиеся в очереди задания, пока очередь не станет пустой.В общем случае, для использования команды &man.lpc.8; необходимо
иметь привилегии root. Обычные пользователи
могут использовать команду &man.lpc.8; только для получения состояния
принтера и перезапуска зависшего принтера.Далее представлена сводка команд &man.lpc.8;. Большинство команд
принимает аргумент имя-принтера, задающий,
с каким принтером работать. Можно использовать значение all
вместо имени-принтера, означающее все
принтеры, перечисленные в файле /etc/printcap.abort
имя-принтераСнять текущее задание и остановить принтер. Пользователи могут
продолжать посылать задания, если очередь включена.clean
имя-принтераУдалить старые файлы из каталога спулинга принтера.
Иногда файлы, составляющие задание, не удаляются как положено
системой LPD, особенно если
в ходе печати были ошибки и выполнялось много административных
действий. Эта команда находит файлы, не принадлежащие каталогу
спулинга, и удаляет их.disable
имя-принтераОтключить постановку новых заданий в очередь. Если принтер
работает, он продолжит печатать задания, остающиеся в очереди.
Суперпользователь (root) всегда может посылать
задания, даже в отключенную очередь.Эта команда полезна при тестировании вновь установленного
принтера или фильтра: отключаем очередь и посылаем задания как
root. Другие пользователи не смогут посылать
задания, пока вы не закончите тестирование и не включите очередь
повторно командой enable.down имя-принтерасообщениеОтключить принтер. Аналогична последовательности команд
disable и stop.
Указанное сообщение выдается как
состояние принтера при проверке пользователем очереди принтера
с помощью &man.lpq.1; или запросе его состояния командой
lpc status.enable
имя-принтераВключить очередь для принтера. Пользователи могут посылать
задания, но принтер не будет их печатать, пока не будет запущен.help
имя-командыВыдать справочную информацию по команде
имя-команды. Если
имя-команды не указано,
выдает сводку по имеющимся командам.restart
имя-принтераПерезапустить принтер. Обычные пользователи могут использовать эту
команду, если в результате неких чрезвычайных обстоятельств система
LPD зависла, но они не могут запустить
принтер, остановленный командами stop или
down. Команда restart
эквивалентна последовательности команд abort
и start.start
имя-принтераЗапустить принтер. Принтер будет печатать задания, находящиеся в
его очереди.stop
имя-принтераОстановить принтер. Принтер закончит печать текущего задания
и больше ничего из очереди печатать не будет. Хотя принтер и
остановлен, пользователи могут посылать задания во включенную
очередь.topq имя-принтеразадание-или-имя-пользователяПереупорядочить очередь для указанного принтера, помещая
указанные по номеру задания или
задания указанного по имени пользователя
в начало очереди. Для этой команды нельзя использовать
all в качестве имени-принтера.up
имя-принтераВключить принтер; команда по действию противоположна команде
down. Эквивалентна последовательности команд
start и enable.Утилита &man.lpc.8; принимает перечисленные выше команды в
командной строке. Если команда не указана, утилита &man.lpc.8;
входит в интерактивный режим, в котором можно вводить команды,
пока не будет введена команда exit,
quit или символ конца файла.Альтернативы стандартному спулеруЕсли вы прочитали все это руководство, к этому моменту вы
знаете практически все, что надо знать о системе спулинга
LPD, входящей в состав ОС FreeBSD.
Вы, возможно, уже осознали многие из ее недостатков, что, естественно,
приводит к вопросу: Какие еще системы спулинга существуют (и
работают с ОС FreeBSD)?LPRngLPRngСистема LPRng, имя которой означает
LPR: the Next Generation (LPR: следующее поколение) —
это полностью переписанная система PLP. Патрик Пауэл (Patrick Powell)
и Джастин Мейсон (Justin Mason) (основной специалист, занимающийся
поддержкой PLP) объединили усилия для создания системы
LPRng. Основной сайт по системе
LPRng —
.CUPSCUPSСистема CUPS (сокращение от Common
UNIX Printing System) предоставляет переносимый механизм печати для
операционных систем, основанных на &unix;. Она была разработана
компанией Easy Software Products в качестве стандартного механизма
печати для всех производителей и пользователей &unix;.Система CUPS использует протокол
Internet Printing Protocol (IPP) для управления
заданиями и очередями. Протоколы Line Printer Daemon (LPD),
Server Message Block (SMB) и AppSocket (известный
также как JetDirect) также поддерживаются, но с меньшими возможностями.
Система CUPS добавляет поиск сетевых принтеров и опции печати на
основе PostScript Printer Description (PPD), для
поддержки практической печати в &unix;.Основной сайт по системе CUPS —
.Выявление проблемПосле выполнения простого тестирования с помощью команды
&man.lptest.1; вы можете получить один из следующих результатов вместо
корректной распечатки:Все работает, после определенной задержки; или не выдается
распечатанная страница.Принтер напечатал все, что нужно, но он на некоторое время
задумывался и ничего не делал. Фактически, могло потребоваться
нажать кнопку PRINT REMAINING или FORM FEED на принтере, чтобы
результаты были выданы.Если это произошло, вероятно, принтер ждал, нет ли в задании
еще данных, прежде чем что бы то ни было печатать. Для решения
этой проблемы можно посылать в текстовом фильтре на принтер символ
FORM FEED (или любую необходимую последовательность символов).
Этого обычно достаточно, чтобы принтер немедленно распечатал
любой остающийся в его внутреннем буфере текст. Также полезно
убедиться, что каждое задание печати заканчивается полной страницей,
чтобы следующее задание не начиналось где-то с середины последней
страницы предыдущего задания.Следующий измененный скрипт командного интерпретатора
/usr/local/libexec/if-simple выдает символ
прогона страницы после посылки задания на принтер:#!/bin/sh
#
# if-simple - Простой текстовый входной фильтр для lpd
# Установлен в /usr/local/libexec/if-simple
#
# Просто копирует stdin в stdout. Игнорирует все аргументы фильтра.
# Выдает символ прогона страницы (\f) после печати задания.
/bin/cat && printf "\f" && exit 0
exit 2Принтер печатает лесенкой.Вы получаете на бумаге следующее:!"#$%&'()*+,-./01234
"#$%&'()*+,-./012345
#$%&'()*+,-./0123456MS-DOSOS/2ASCIIВы стали очередной жертвой эффекта лесенки,
вызванного различными интерпретациями того, какие символы должны
обозначать новую строку. Операционные системы &unix;-стиля используют
один символ: ASCII-код 10, перевод строки (line feed — LF). &ms-dos;,
&os2; и другие используют пару символов, ASCII-код 10
и ASCII-код 13 (возврат каретки, carriage return
или CR). Многие принтеры используют соглашение &ms-dos; для
представления новых строк.При печати из FreeBSD в тексте используется только символ перевода
строки. Принтер, встретив символ перевода строки, переходит на
следующую строку, но оставляет ту же горизонтальную позицию на
строке для следующего печатаемого символа. Вот зачем нужен символ
возврата каретки: чтобы перенести следующий печатаемый символ
на левый край бумаги.Вот что ОС FreeBSD хочет от принтера:Принтер получает CRПринтер печатает CRПринтер получает LFПринтер печатает CR + LFВот несколько способов этого добиться:Использовать переключатели конфигурации принтера или панель
управления, чтобы изменить его интерпретацию этих символов.
Поищите как это сделать в руководстве по своему принтеру.Если вы загружаете другие операционные системы, кроме
FreeBSD, может иметь смысл переконфигурировать
принтер для использования такой интерпретации символов CR и LF,
которая принята в этих операционных системах. Затем можно
использовать одно из представленных далее решений.Заставить драйвер последовательного порта FreeBSD автоматически
преобразовывать LF в CR+LF. Конечно, это подойдет
только для принтеров, подключенных к
последовательным портам. Для включения этой возможности используйте
характеристику ms# и установите режим
onlcr для принтера в файле
/etc/printcap.Послать управляющий код на принтер,
заставляющий его временно обрабатывать символы LF по-другому.
Управляющие коды, которые может поддерживать ваш принтер, поищите
в руководстве своего принтера. Когда найдете соответствующий
управляющий код, измените текстовый фильтр для посылки сначала
этого кода, а затем — задания печати.PCLВот пример текстового фильтра для принтеров, понимающих
управляющие последовательности языка Hewlett-Packard PCL. Этот
фильтр заставляет принтер обрабатывать символы LF как LF и CR;
затем он посылает задание; наконец, он посылает символ
прогона страницы для выдачи последней страницы задания. Он должен
работать практически со всеми принтерами Hewlett Packard.#!/bin/sh
#
# hpif - Простой текстовый входной фильтр для lpd для принтеров на базе HP-PCL
# Установлен в /usr/local/libexec/hpif
#
# Просто копирует stdin в stdout. Игнорирует все аргументы фильтра.
# Требует от принтера обрабатывать LF как CR+LF. Выдает страницу по окончании.
printf "\033&k2G" && cat && printf "\033&l0H" && exit 0
exit 2Вот пример файла /etc/printcap с хоста
orchid. К нему через первый параллельный порт
подключен один принтер, Hewlett Packard LaserJet 3Si, по имени
teak. Для него в качестве текстового фильтра
используется представленный выше скрипт:#
# /etc/printcap для хоста orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:Строки напечатаны одна поверх другой.Принтер так и не перешел на следующую строку. Все строки текста
были напечатаны одна поверх другой, на одной строке.Эта проблема обратна эффекту лесенки, описанному
выше, и встречается намного реже. Каким-то образом, символы LF,
которые ОС FreeBSD использует для завершения строк, обрабатывались
как символы CR и вызывали перевод позиции печати на левый край
бумаги, но не переход на следующую строку.Используйте переключатели конфигурации принтера или панель управления
для обеспечения следующей интерпретации символов LF и CR:Принтер получаетПринтер печатаетCRCRLFCR + LFПринтер теряет символы.По ходу печати принтер не печатает несколько символов в каждой
строке. Проблема со временем может становиться все хуже, так что
теряется все больше символов.Проблема состоит в том, что принтер не справляется с той скоростью,
с которой компьютер посылает данные по последовательной линии (эта
проблема не должна возникать на принтерах, подключенных к параллельным
портам). Есть два способа решить проблему:Если принтер поддерживает управление потоком XON/XOFF,
заставить FreeBSD использовать его, указав режим
ixon в характеристике ms#.Если принтер поддерживает управление несущим потоком
(carrier flow control), укажите режим crtscts
в характеристике ms#. Убедитесь, что кабель,
соединяющий принтер с компьютером, правильно распаян для управления
несущим потоком.Напечатан мусор.Принтер напечатал нечто похожее на случайный мусор, а не
требуемый текст.Это, обычно, — еще один симптом неправильных параметров
взаимодействия с последовательным принтером. Перепроверьте
скорость взаимодействия в характеристике br
и установку четности в характеристике ms#;
проверьте, что принтер использует те же установки, которые
заданы в файле /etc/printcap.Ничего не произошло.Если ничего не произошло, проблема, вероятно, связана с FreeBSD, а
не с оборудованием. Добавьте характеристику журнального файла
(lf) в файл /etc/printcap для
принтера, работу с которым отлаживаете. Например, вот запись для
принтера rattan с характеристикой
lf:rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:\
:lf=/var/log/rattan.logЗатем попытайтесь напечатать снова. Поищите в журнальном файле
(в нашем примере — /var/log/rattan.log)
возможные сообщения об ошибках. На основе полученных сообщений
попытайтесь решить проблему.Если вы не зададите характеристику lf,
система LPD использует по умолчанию
/dev/console.
diff --git a/ru_RU.KOI8-R/books/handbook/security/chapter.sgml b/ru_RU.KOI8-R/books/handbook/security/chapter.sgml
index 80ea4d0e81..6ca6abdc16 100644
--- a/ru_RU.KOI8-R/books/handbook/security/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/security/chapter.sgml
@@ -1,5154 +1,5002 @@
MatthewDillonБольшая часть этой главы была взята из страницы справочника
security(7) которую написал ДенисПеплинПеревод на русский язык: БезопасностьбезопасностьКраткое описаниеЭта глава представляет введение в основные концепции безопасности
системы, некоторые эмпирические правила и более подробно обращается к
отдельным темам, касающимся &os;. Большая часть затрагиваемых тем может
быть применена к безопасности системы и безопасности в интернет вообще.
Интернет больше не то дружественное место, где каждый
хочет быть вам добрым соседом. Защита системы необходима для сохранения
ваших данных, интеллектуальной собственности, времени и всего остального
от хакеров и им подобных.&os; предоставляет массу утилит и механизмов для обеспечения
целостности и безопасности системы и сети.После прочтения этой главы вы узнаете:Основные концепции безопасности системы, специфику &os;.О различных механизмах шифрования в &os;, таких как
DES и MD5.Как настроить аутентификацию с использованием одноразовых
паролей.Как настроить TCP Wrappers для
использования с inetd.Как настроить KerberosIV в релизах
&os; до 5.0.
- Как настроить Kerberos5 в релизах &os;
- после 5.0.
+ Как настроить Kerberos5 в &os;.Как настроить IPsec и создать VPN между
компьютерами на &os;/&windows;.Как настроить и использовать OpenSSH,
реализацию SSH в &os;.Что такое ACL и как их использовать.Как использовать утилиту Portaudit для
проверки пакетов сторонних разработчиков, установленных из Коллекции
Портов.Как работать с сообщениями безопасности &os;.Что такое Process Accounting и как активировать его во
&os;.Перед чтением этой главы вам потребуется:Понимание основных концепций &os; и интернет.В этой книге рассмотрены и другие вопросы безопасности.
Например, принудительный контроль доступа (Mandatory Access
Control) рассматривается в , а брандмауэры в .ВведениеБезопасность это первая и основная функция системного
администратора. Хотя все многопользовательские системы BSD &unix;
уже снабжены некоторой защитой, работа по созданию и поддержке
дополнительных механизмов безопасности, обеспечивающих защищенную работу
пользователей, это одна из самых серьезных задач системного
администратора. Компьютеры безопасны настолько, насколько вы сделаете
их безопасными и требования безопасности всегда находятся в противоречии
с удобством работы пользователей. Системы &unix; способны одновременно
работать с огромным количеством процессов и многие из этих процессов
серверные — это означает, что с ними могут взаимодействовать
внешние программы. Сегодня десктопы заменили мини-компьютеры и
мэйнфрэймы, и поскольку компьютеры в наши дни подключены к сети
интернет, безопасность важна как никогда.Наилучшая реализация системы безопасности представима в виде
послойной системы. Вообще говоря все, что нужно сделать,
это создать столько слоев безопасности, сколько необходимо и затем
внимательно следить за вторжениями в систему. Не переусердствуйте в
настройке системы безопасности, иначе она сделает невозможной
обнаружение вторжений, являющееся одним из наиболее важных аспектов
механизма безопасности. Например, нет большого смысла в установке
флага schg (&man.chflags.1;) на каждый исполняемый
файл системы, поскольку хотя таким способом можно временно защитить
исполняемые файлы, это помешает обнаружению факта взлома
системы.Безопасность системы также относится к различным формам атак,
имеющих своей целью вызвать крах системы, или сделать систему
недоступной другим способом, но не пытающихся получить доступ к учётной
записи root (break root).
Угрозы безопасности могут быть поделены на несколько категорий:Отказ в обслуживании (Denial of service, DoS).Взлом пользовательских учётных записей.Взлом учётной записи root через доступные сервисы.Взлом учётной записи root через учётные записи
пользователей.Создание backdoor.DoS атакиотказ в обслуживании (Denial of Service, DoS)безопасностьDoS атакиотказ в обслуживании (Denial of Service, DoS)Отказ в обслуживании (Denial of Service, DoS)Атака отказ в обслуживании отбирает у машины
необходимые ресурсы. Обычно DoS атаки используют грубую силу, чтобы
попытаться обрушить систему или сделать ее недоступной другим способом,
превысив лимиты ее сервисов или сетевого стека. Некоторые DoS атаки
пытаются использовать ошибки в сетевом стеке для обрушения системы одним
пакетом. Эту проблему можно решить только исправив ядро системы. Атаки
зачастую можно предотвратить правильной установкой параметров,
ограничивающих нагрузку на систему в неблагоприятных условиях. С
атаками, использующими грубую силу, бороться сложно. Например, атака с
использованием пакетов с поддельными адресами, которую почти невозможно
остановить, может быстро отключить вашу систему от интернет. Возможно,
она не приведет к отказу системы, но сможет переполнить соединение с
интернет.безопасностьвзлом учётных записейВзлом учётной записи пользователя обычно встречается чаще, чем DoS
атаки. Многие системные администраторы все еще используют стандартные
сервисы telnetd,
rlogind и ftpd на
своих серверах. Эти сервисы по умолчанию не работают с зашифрованными
соединениям. В результате при среднем количестве пользователей пароль
одного или нескольких пользователей, входящих в систему через внешнее
соединение (это обычный и наиболее удобный способ входа в систему),
будет перехвачен. Внимательный системный администратор должен
анализировать логи удаленного доступа на предмет подозрительных адресов
пользователей даже в случае успешного входа.Кто-то может предположить, что атакующий при наличии доступа к
учётной записи пользователя может взломать учётную запись
root. Однако, реальность такова, что в хорошо
защищенной и поддерживаемой системе доступ к учётной записи пользователя
не обязательно даст атакующему доступ к root.
Разница между доступом к обычной учётной записи и к
root важна, поскольку без доступа к
root атакующий обычно не способен скрыть свои
действия, и в худшем случае сможет лишь испортить файлы пользователя или
вызвать крах системы. Взлом пользовательских учётных записей
встречается очень часто, поскольку пользователи заботятся о безопасности
так, как системные администраторы.безопасностьbackdoorsСистемные администраторы должны помнить, что существует множество
потенциальных способов взлома учётной записи root.
Атакующий может узнать пароль root, найти ошибку в
сервисе, работающем с привилегиями и взломать учётную запись
root через сетевое соединение с этим сервисом, или
узнать об ошибке в suid-root программе, позволяющей атакующему взлом
root с помощью взломанной учётной записи
пользователя. Если атакующий нашел способ взлома
root, ему может не понадобиться установка backdoor.
Многие из обнаруженных и закрытых на сегодняшний день брешей
в системе, позволяющие взлом root, требуют от
атакующего серьезной работы по заметанию следов, поэтому большинство
атакующих устанавливают backdoor. Backdoor предоставляет атакующему
простой способ восстановления доступа к системе с привилегиями
root, но также дает системному администратору
удобный способ обнаружения вторжения. Устранение возможности установки
backdoor возможно повредит безопасности системы, поскольку это
не устранит брешь, позволившую проникнуть в
систему.Меры безопасности всегда должны реализовываться на нескольких
уровнях, которые могут быть классифицированы следующим образом:Защита root и служебных учётных
записей.Защита работающих под root
сервисов и suid/sgid исполняемых файлов.Защита учётных записей пользователей.Защита файла паролей.Защита ядра, raw устройств и файловых
систем.Быстрое обнаружение несанкционированных изменений в
системе.Паранойя.В следующем разделе этой главы эти темы изложены более
подробно.Защита &os;безопасностьзащита &os;Команда и протоколВ этом документе мы будет использовать
выделенный текст, упоминая приложение,
и моноширинный шрифт, упоминая определенные
команды. Для протоколов используется обычный шрифт. Это
типографическое отличие полезно для таких случаев, как ssh, поскольку
это и команда и протокол.В последующем разделе будут рассмотрены методы защиты системы
&os;, упомянутые в предыдущем разделе этой главы.Защита учётной записи root и служебных
учётных записейsuВо-первых, не беспокойтесь о защите служебных учётных записей,
если не защищена учётная запись root. В
большинстве систем у учётной записи root есть
пароль. Использование пароля root
опасно всегда. Это не означает, что вы должны
удалить пароль. Пароль почти всегда необходим для доступа
по консоли. Но это означает, что вы должны сделать невозможным
использование пароля не из консоли или может быть даже с помощью
команды &man.su.1;. Например, убедитесь, что псевдо-терминалы
в файле /etc/ttys перечислены с параметром
insecure, что делает невозможным вход на них
под root напрямую с помощью
telnet или rlogin. При
использовании других средств входа, таких как
sshd, убедитесь что вход под
root напрямую отключен и в них. Сделайте
это, открыв файл /etc/ssh/sshd_config, и
убедившись, что параметр PermitRootLogin
установлен в NO. Проверьте каждый метод доступа
— сервис FTP и ему подобные часто подвержены взлому. Прямой
вход под root должен быть разрешен только с
системной консоли.wheelКонечно, как системный администратор вы должны иметь доступ
root, поэтому потребуется открыть несколько
лазеек. Но убедитесь, что для доступа к ним необходим
дополнительный пароль. Одним из способов доступа к
root является добавление соответствующих учётных
записей к группе wheel (в файле
/etc/group). Это позволяет использовать
su для доступа к root.
Вы никогда не должны давать таким учётным записям доступ
к wheel непосредственно, помещая их в группу
wheel в файле паролей. Служебные учётные
записи должны помещаться в группу staff,
а затем добавляться к группе wheel в файле
/etc/group. Только те члены группы staff,
которым действительно нужен доступ к root,
должны быть помещены в группу wheel.
При работе с такими методами аутентификации как Kerberos, возможно также
использование файла .k5login в каталоге
пользователя root для доступа к учётной записи
root с помощью &man.ksu.1; без помещения
кого-либо в группу wheel. Это решение возможно
лучше, поскольку механизм wheel все еще
позволяет взлом root, если злоумышленник
получил копию файла паролей и смог взломать служебную учётную запись.
Хотя использование механизма wheel лучше,
чем работа через root напрямую, это не
обязательно самый безопасный способ.Непрямой способ защиты служебных учётных записей и конечно
root это использование альтернативных методов
доступа и замена зашифрованных паролей на символ
*. Используя команду
&man.vipw.8;, замените каждый зашифрованный пароль служебных учётных
записей на этот символ для запрета входа с аутентификацией по паролю.
Эта команда обновит файл /etc/master.passwd и
базу данных пользователей/паролей.Служебная учётная запись вроде этой:foobar:R9DT/Fa1/LV9U:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcshДолжна быть заменена на такую:foobar:*:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcshЭто изменение предотвратит обычный вход, поскольку зашифрованный
пароль никогда не совпадет с *.
После этого члены группы staff должны использовать другой механизм
аутентификации, например &man.kerberos.1; или &man.ssh.1; с парой
ключей: публичным и приватным. При использовании такой системы как
Kerberos, потребуется защитить сервер Kerberos и рабочую станцию.
При использовании пары публичного/приватного ключей с ssh,
потребуется защитить компьютер, с которого
происходит вход (обычно это рабочая станция). Дополнительных слой
защиты может быть добавлен путем защиты пары ключей при создании их
с помощью &man.ssh-keygen.1;. Возможность заменить пароли служебных
учётных записей на * гарантирует
также, что вход может быть осуществлен только через защищенные методы
доступа, которые вы настроили. Это принуждает всех членов staff
использовать защищенные, шифрованные соединения для всех входов,
что закрывает большую брешь, используемую многими нарушителями:
перехват паролей с другого, слабо защищенного компьютера.Более непрямой механизм безопасности предполагает, что вы входите
с более защищенного сервера на менее защищенный. Например, если
главный сервер работает со всеми сервисами, рабочая станция не должна
работать ни с одним. Для поднятия уровня безопасности до приемлемого
уровня, число запущенных на ней сервисов необходимо сократить до
минимума, вплоть до отключения их всех, кроме того необходимо
использовать защищенный паролем хранитель экрана. Конечно, при
наличии физического доступа к рабочей станции атакующий может взломать
любую систему безопасности. Это определенно проблема, которую вы
должны учитывать, но учтите также тот факт, что большинство взломов
совершаются удаленно, через сеть, людьми, которые не имеют физического
доступа к вашим рабочим станциям или серверам.KerberosIVИспользование такой системы как Kerberos дает возможность
заблокировать или изменить пароль в одном месте, что сразу
отразиться на всех компьютерах, где существует служебная учётная
запись. Если эта учётная запись будет взломана, возможность
немедленно изменить пароль на всех компьютерах нельзя недооценивать.
Без этой возможности изменение паролей на N машинах может стать
проблемой. Вы можете также наложить ограничения на смену паролей
с помощью Kerberos: не только установить значения timeout в
Kerberos, но и добавить требование смены пароля пользователем
после определенного периода времени (скажем, раз в месяц).Защита работающих под root сервисов и suid/sgid исполняемых
файловntalkcomsatfingersandboxessshdtelnetdrshdrlogindПредусмотрительный системный администратор запускает только те
сервисы, в которых нуждается, ни больше ни меньше. Учитывайте, что
сервисы сторонних разработчиков наиболее подвержены ошибкам. К примеру,
работа со старыми версиями imapd или
popper это все равно что раздача доступа
root всему миру. Никогда не запускайте
сервисы, которые вы не проверили достаточно внимательно. Многим
сервисам не требуется работа под root.
Например, даемоны ntalk,
comsat, и
finger могут быть запущены в так
называемых песочницах
(sandboxes). Песочница это не идеальное
решение, поскольку вызывает много проблем, но она подходит под
модель послойной безопасности: если кто-то сможет взломать сервис,
работающий в песочнице, ему потребуется взломать еще и саму
песочницу. Чем больше уровней (слоев) потребуется
пройти атакующему, тем меньше вероятность его успеха. Ошибки,
позволяющие получать root доступ, находили фактически во всех
сервисах, запускаемых под root, включая
основные системные сервисы. Если вы обслуживаете машину, на которую
входят только через sshd и никогда не
входят через telnetd,
rshd или
rlogind, отключите эти сервисы!В &os; сервисы
ntalkd,
comsat и
finger теперь по умолчанию работают в
песочнице. Другая программа, которая может быть
кандидатом на запуск в песочнице это
&man.named.8;. /etc/defaults/rc.conf включает
необходимые для запуска named
в песочнице аргументы в закомментированой форме.
В зависимости от того, устанавливаете ли вы новую систему, или
обновляете старую, учётные записи пользователей, используемые
этими песочницами могут не быть созданы.
Предусмотрительный системный администратор должен узнать о
песочницах для сервисов и установить их если есть
возможность.sendmailЕсть множество других сервисов, которые обычно не работают в
песочницах: sendmail,
popper,
imapd, ftpd,
и другие. Некоторым из этих сервисов есть альтернативы,
но их установка может потребовать больше работы, чем вы готовы
выполнить (фактор удобства). Вы можете запустить эти сервисы под
root и положиться на другие механизмы обнаружения
вторжений, которые могут пройти через них.Другая большая потенциальная root брешь
в системе это suid-root и sgid исполняемые файлы. Большинство
этих исполняемых файлов, таких как rlogin,
установлены в /bin, /sbin,
/usr/bin, или /usr/sbin.
Хотя ничто не может быть безопасно на 100%, находящиеся по умолчанию
в системе suid и sgid исполняемые файлы могут быть признаны
достаточно безопасными. Но root бреши все еще
обнаруживаются в этих исполняемых файлах. root
брешь, обнаруженная в Xlib в 1998 делала
xterm (который обычно suid) подверженным
взлому. Лучше сразу принять меры предосторожности, чем сожалеть
потом. Предусмотрительный системный администратор ограничит права
запуска suid исполняемых файлов, которые должны запускаться
пользователями группы staff, только этой группой, а также запретит
доступ (chmod 000) к тем исполняемым файлам
suid, которые никем не используются. Серверу без монитора обычно
не требуется исполняемый файл xterm.
Исполняемые sgid исполняемые файлы могут быть почти так же опасны.
Если нарушитель сможет взломать sgid-kmem исполняемый файл, он
возможно сможет прочесть /dev/kmem и
таким образом получить файл зашифрованных паролей, что потенциально
делает возможным взлом любой защищённой паролем учётной записи.
Аналогично нарушитель, проникший в группу kmem,
может отслеживать последовательности клавиш, отправляемые через
псевдо-терминалы, включая те, что используют защищённые соединения.
Нарушитель, вошедший в группу
tty может сделать вывод почти на любой
пользовательский терминал. Если пользователь работает с
терминальной программой или эмулятором с возможностью эмуляции
клавиатуры, взломщик может потенциально сгенерировать поток данных,
который заставит терминал пользователя ввести команду, и она будет
запущена с правами этого пользователя.Защита учётных записей пользователейУчетные записи пользователей обычно сложнее всего защитить.
Вы можете ввести драконовские ограничения доступа к служебным учётным
записям, заменив их пароли на символ
*, но возможно не сможете сделать
то же с обычными учётными записями пользователей. Если есть
такая возможность, вы возможно сможете защитить учётные записи
пользователей соответствующим образом. Если нет, просто
более бдительно отслеживайте эти учётные записи. Использование
ssh и Kerberos для учётных записей пользователей более
проблематично, поскольку требует дополнительной административной
работы и технической поддержки, но все же это решение лучше,
чем файл с шифрованными паролями.Защита файла паролейЕдинственный абсолютно надежный способ это замена на
* максимально возможного количества паролей и
использование ssh или Kerberos для доступа к таким учётным записям.
Хотя файл с шифрованными паролями (/etc/spwd.db)
доступен для чтения только root, возможно, что
нарушитель сможет получить доступ на чтение к этому файлу, даже если
не получит права root на запись.Ваши скрипты безопасности должны всегда проверять и составлять
отчет об изменениях файла паролей (обратитесь к разделу Проверка целостности файлов
ниже по тексту).Защита ядра, raw устройств и файловых
системЕсли атакующий взломает root, он сможет
сделать практически все, но есть способы усложнить его задачу.
Например, в большинстве современных ядер встроено устройство
перехвата пакетов. В &os; оно называется
bpf. Нарушитель обычно пытается запустить
перехват пакетов на взломанной машине. Вы не должны предоставлять
ему такой возможности, на большинстве систем устройство
bpf не должно быть встроено в ядро.sysctlНо даже если вы выключите устройство bpf,
все еще остаются проблемы, связанные с устройствами
/dev/mem и
/dev/kmem.
Нарушитель все еще может писать на дисковые raw устройства.
Есть также другая возможность ядра, загрузка модулей, &man.kldload.8;.
Активный нарушитель может использовать KLD модуль для установки
собственного устройства bpf или другого
перехватывающего устройства на работающее ядро. Для решения этих
проблем запускайте ядро с большим уровнем безопасности, как минимум 1.
Уровень безопасности может быть установлен с помощью
sysctl через переменную
kern.securelevel. После установки уровня
безопасности в 1 доступ на запись в raw устройства будет запрещена и
полностью заработают специальные флаги chflags,
такие как schg. Убедитесь также, что
флаг schg установлен на критически важных
загрузочных исполняемых файлах, каталогах и файлах скриптов —
на всем, что запускается до установке уровня безопасности.
Это требует большого объема работы, и обновление системы на более
высоком уровне безопасности может стать гораздо сложнее. Вы можете
пойти на компромисс и запускать систему на высоком уровне безопасности,
но не устанавливать флаг schg для каждого
существующего системного файла и каталога. Другая возможность
состоит в монтировании / и
/usr только для чтения. Необходимо заметить,
что такие правила слишком жесткие и могут помешать обнаружению
вторжения.Проверка целостности файлов: исполняемые, конфигурационные файлы
и т.д.Вы можете защищать только ядро, файлы настройки и управления
системой только до тех пор, пока эта защита не вступит в конфликт
с удобством работы в системе. Например, использование
chflags для установки бита
schg на большинство файлов в /
вероятно может только навредить, поскольку хотя и может защитить
файлы, препятствует обнаружению. Последний слой системы безопасности,
возможно, наиболее важный — обнаружение. Остальные меры
безопасности практически бесполезны (или, что еще хуже, могут дать
вам ложное ощущение безопасности) если вы не обнаружите потенциальное
вторжение. Половина функций системы безопасности направлена на
замедление атакующего, а не на его остановку, для того, чтобы дать
системе обнаружения возможность поймать нарушителя на месте
преступления.Лучший способ обнаружения вторжения — отслеживание
измененных, отсутствующих, или неожиданно появившихся файлов.
Для наблюдения за измененными файлами лучше всего использовать
другую (зачастую централизованную) систему с ограниченным
доступом. Добавление написанных вами скриптов к этой дополнительно
защищенной системе с ограниченным доступом делает ее практически
невидимой для потенциальных взломщиков, и это важно. В целях
достижения максимального эффекта вам может потребоваться предоставить
этой системе доступ к другим машинам в сети, обычно с помощью
NFS экспорта только для чтения или сгенерировав пары ключей ssh
для доступа к другим машинам по ssh. Помимо большого объема
сетевого трафика, NFS более скрытый метод — он позволяет
контролировать файловые системы на каждом клиентском компьютере
практически незаметно. Если ваш сервер с ограниченным доступом
подключен к клиентским компьютерам через коммутатор, NFS метод
это зачастую лучший выбор. При соединении через концентратор, или
через несколько маршрутизаторов, NFS метод может стать слишком
небезопасным и использование ssh может стать лучшим выбором даже
несмотря на то, что ssh оставляет следы своей работы.Как только у вас появился сервер с ограниченным доступом,
и как минимум доступ на чтение в клиентских системах, потребуется
написать скрипты для выполнения мониторинга. При наличии доступа
по NFS вы можете написать скрипты с помощью простых системных утилит,
таких как &man.find.1; и &man.md5.1;. Лучше всего подсчитывать
md5 файлов на клиентском компьютере как минимум один раз в день,
а файлы, контролирующие запуск из /etc и
/usr/local/etc даже более часто. При
обнаружении расхождений в md5, контролирующий компьютер должен
просигналить системному администратору проверить изменившиеся
файлы. Хороший скрипт безопасности проверит также наличие
несоответствующих исполняемых suid файлов и новых или измененных
файлов в системных разделах / и
/usr.При использовании ssh вместо NFS, написать скрипты безопасности
гораздо сложнее. Вам обязательно потребуется скопировать
(scp) скрипты на клиентский компьютер,
сделать из невидимыми, и для безопасности потребуется также
скопировать исполняемые файлы (такие как find), которые будут
использоваться скриптом. Приложение ssh
на клиентском компьютере может быть уже взломано. В конечном итоге,
без ssh не обойтись при работе через небезопасные соединения,
но его гораздо сложнее использовать.Хороший скрипт безопасности проверит также изменения в файлах
настройки, работающих при подключении пользователей и служебных учётных
записей:
.rhosts, .shosts,
.ssh/authorized_keys и так далее…
файлы, которые могли не попасть в область проверки
MD5.Если для пользователей выделен большой объем дискового
пространства, проверка каждого файла на таких разделах может занять
слишком много времени. В таком случае установка флагов монтирования
для запрета suid исполняемых файлов и устройств на таких разделах
это хорошая идея. Примените параметры &man.mount.8;
nodev и nosuid. Проверяйте
эти разделы в любом случае, хотя бы раз в неделю, поскольку
необходимо обнаруживать попытки взлома, независимо от того,
эффективны они или нет.Учет процессов (&man.accton.8;) это относительно несложная
возможность операционной системы, которая может помочь
как механизм обнаружения состоявшихся вторжений. Она особенно
полезна для обнаружения пути проникновения нарушителя в систему,
если файл не был затронут проникновением.Наконец, скрипты безопасности должны обработать лог файлы,
которые необходимо создавать настолько защищенным способом, насколько
это возможно — подключение syslog удаленно может быть очень
полезным. Злоумышленник попытается уничтожить следы взлома,
и лог файлы критически важны для системного администратора,
пытающегося отследить время и метод первого проникновения.
Один из надежных способов получения лог файлов является подключение
системной консоли к последовательному порту и постоянный
сбор информации через защищенную машину, отслеживающую
консоли.ПаранойяНемного паранойи никогда не повредит. Как правило, системный
администратор может добавлять элементы безопасности в любом
количестве, пока это не влияет на удобство, а также некоторое
количество элементов безопасности, влияющих
на удобство. Что даже более важно, системный администратор должен
немного изменить их — если вы используете рекомендации, например
те, что даны в этом документе, они становятся известны атакующему,
который также имеет доступ к этому документу.
prospective attacker who also has access to this document.Атаки DoSОтказ в обслуживании (DoS)Этот раздел охватывает DoS атаки. DoS атаки это обычно
пакетные атаки. Хотя против современной атаки с подделкой пакетов,
которая перегружает сеть, мало что можно сделать, вы можете
ограничить повреждения, убедившись, что атака не может
обрушить ваши сервера.Ограничение количества порождаемых процессов.Уменьшение последствий springboard атак (ICMP ответ,
широковещательный ping и т.д.).Кэш маршрутизации ядра.Обычная DoS атака против порождающего процессы сервера пытается
исчерпать ресурсы сервера по процессам, файловым дескрипторам и
памяти до тех пор, пока машина не повиснет. У
inetd (обратитесь к &man.inetd.8;)
есть несколько параметров, позволяющих ограничить такие атаки.
Необходимо учесть, что хотя можно предотвратить падение системы, в
общем случае невозможно предотвратить прекращение работы сервиса.
Внимательно прочтите страницу справочника и обратите особое внимание
на параметры , , и
. Учтите, что параметр не
работает в случае атак с использованием поддельных IP пакетов,
поэтому как правило необходимо использование комбинации параметров.
Некоторые standalone сервисы используют собственные параметры,
ограничивающие порождение процессов.У Sendmail есть собственный параметр
, которая работает гораздо лучше,
чем параметр sendmail, ограничивающий нагрузку. Вам необходимо задать
параметр запуска sendmailMaxDaemonChildren достаточно большим, чтобы
обслуживать ожидаемую нагрузку, но так, чтобы компьютер мог обслужить
такое количество приложений sendmail без
падения системы. Хорошей мерой является запуск sendmail в режиме
очереди () и запуск даемона
(sendmail -bd) отдельно от очереди
(sendmail -q15m). Если вы все же хотите
организовать доставку в режиме реального времени, запускайте
очередь с меньшим интервалом , но убедитесь
в правильной установке параметра sendmail
MaxDaemonChildren для предотвращения
ошибок.Syslogd может быть атакован
непосредственно, настоятельно рекомендуется использовать параметр
если это возможно и параметр
в остальных случаях.Вы также должны быть очень осторожны с сервисами, совершающими
обратное подключение, например, с TCP
Wrapper и его обратным identd-запросом, который может
быть атакован напрямую. По этой причине возможность TCP
Wrapper генерировать обратный ident обычно не следует
использовать.Правильным будет запрет доступа к внутренним сервисам из внешней
сети путем соответствующей настройки брандмауэра на внешнем
маршрутизаторе. Идея в том, чтобы предотвратить перегрузку сервисов
атаками из внешней сети, а кроме того защитить
root от взлома через сеть. Всегда настраивайте
исключающий брандмауэр, т.е. закрыть все
кроме портов A, B, C, D, и M-Z.
Этим способом вы можете закрыть все порты нижнего диапазона,
кроме явно указанных, таких как named
(если вы поддерживаете интернет-зону),
ntalkd,
sendmail, и других сервисов, доступных
из интернет. Если вы попробуете настроить брандмауэр другим
способом — включающий, или разрешающий брандмауэр, есть
большой шанс забыть закрыть пару сервисов, или
добавить новый внутрисетевой сервис и забыть обновить брандмауэр.
Вы можете открыть диапазон портов с большими номерами
для обычных приложений без угрозы портам нижнего диапазона.
Учтите также, что &os; позволяет вам контролировать диапазоны
портов, используемые для динамической привязки через различные
переменные sysctlnet.inet.ip.portrange (sysctl -a | fgrep
portrange), что позволяет упростить настройку
брандмауэра. Например, вы можете использовать обычный
диапазон портов со значениями от 4000 до 5000, и диапазон портов с
большими номерами от 49152 до 65535, а затем заблокировать все до
4000 порта (конечно оставив доступ из интернет к определенным
портам.Другой распространенный тип DoS атак называется springboard
— сервер атакуется таким образом, что генерируемые ответы
перегружают его, локальную сеть или какие-то другие компьютеры.
Наиболее распространенная атака этого вида это
широковещательная ICMP ping атака.
Атакующий подделывает пакеты ping, подставляя IP адрес машины, которую
он намеревается атаковать, и отправляет их на широковещательный
адрес вашей локальной сети. Если ваш внешний маршрутизатор не
настроен на отбрасывание пакетов ping на широковещательные адреса,
ваша сеть начинает генерировать соответствующие ответы на
поддельный адрес, что приводит к перегрузке хоста-жертвы, особенно
если атакующий использует этот же трюк с множеством
широковещательных адресов в множестве сетей одновременно.
Были зарегистрированы широковещательные атаки свыше ста двадцати
мегабит. Другая распространенная springboard атака направлена на
ICMP систему сообщения об ошибках. Конструируя пакеты, вызывающие
ICMP сообщения об ошибках, атакующий может нагрузить входящее
соединение сервера и вынудить сервер нагрузить исходящее соединение
ICMP ответами. Этот тип атаки может также обрушить сервер, когда
тот исчерпает mbuf, обычно если сервер не может ограничить число
- ответов ICMP, когда они генерируются слишком быстро. В ядре
- &os; 4.X есть опция сборки ,
- которая ограничивает эффективность этого типа атак.
- Более поздние ядра используют переменную
- sysctl
+ ответов ICMP, когда они генерируются слишком быстро.
+ Используйте переменную sysctlnet.inet.icmp.icmplim. Последний
основной класс springboard атак относится к определенным
внутренним сервисам inetd, таким как
сервис udp echo. Атакующий просто подделывает адрес источника
и адрес назначения UDP пакетов, устанавливая в их качестве
соответственно echo порт сервера A и B, оба этих сервера принадлежат
вашей локальной сети. Эти два сервера начинают перебрасываться
этим пакетом друг с другом. Атакующий может вызвать перегрузку
обеих серверов и их сетей, просто отправив несколько пакетов таким
способом. Аналогичные проблемы существуют с портом
chargen. Компетентный системный
администратор должен отключить эти тестовые сервисы inetd.Атаки с поддельными пакетами могут также использоваться для
переполнения кэша маршрутизации ядра. Обратитесь к параметрам
sysctlnet.inet.ip.rtexpire,
rtminexpire, и rtmaxcache.
Атака с поддельными пакетами, использующая произвольный IP адрес
источника, заставит ядро сгенерировать временный кэшированный
маршрут в таблице маршрутизации, который можно увидеть с помощью
netstat -rna | fgrep W3. Эти маршруты обычно
удаляются через 1600 секунд или около того. Если ядро определит,
что кэшированная маршрутная таблица стала слишком большой, оно
динамически уменьшит rtexpire, но никогда не
станет делать его меньше чем rtminexpire.
С этим связаны две проблемы:Ядро не отреагирует достаточно быстро, когда легко нагруженный
сервер будет внезапно атакован.Значение rtminexpire недостаточно мало
для поддержки работоспособности в условиях продолжительной
атаки.Если ваши серверы подключены к интернет через линию T3 или
более быструю, предусмотрительно будет изменить оба значения
rtexpire и rtminexpire
с помощью &man.sysctl.8;. Никогда не устанавливайте ни один из этих
параметров в нуль (если только вы не хотите обрушить систему).
Установка обеих параметров в значение 2 секунды должна предотвратить
таблицу маршрутизации от атак.Проблемы, связанные с доступом к Kerberos и SSHsshKerberosIVПри использовании Kerberos и ssh необходимо учесть несколько
возможных проблем. Kerberos V это отличный протокол
аутентификации, но в адаптированных к нему приложениях
telnet и
rlogin есть несколько ошибок, которые
могут сделать их непригодными к работе с бинарными потоками.
К тому же, по умолчанию Kerberos не шифрует сессию, если вы не
используете параметр .
ssh шифрует все по умолчанию.
ssh работает очень хорошо во всех ситуациях, но пересылает
ключи по умолчанию. Это означает, что если вы работаете с
защищенной рабочей станции, ключи на которой дают доступ к
остальной сети, и заходите по ssh на незащищенный компьютер,
эти ключи могут быть использованы для взлома. Атакующему
не удастся получить сами ключи, но поскольку ssh открывает порт
во время входа в систему, то если на незащищенной машине
взломан root, эти ключи могут быть использованы
для доступа к другим компьютерам, на которых они действуют.Мы рекомендуем использовать ssh в комбинации с Kerberos
для служебных учётных записей если это возможно.
ssh может быть собран с поддержкой
Kerberos. Это уменьшает зависимость от потенциально подверженных
взлому ssh ключей, и в то же время защищает пароли через
Kerberos. Ключи ssh должны использоваться только для работы
скриптов на защищенных компьютерах (там, где Kerberos использовать
не получится). Мы также рекомендуем или выключить передачу ключей
в настройках ssh, или использовать параметр
from=IP/DOMAIN, поддерживаемый ssh в файле
authorized_keys, который позволяет использовать
ключи только с определенных компьютеров.BillSwingleЧастично переписал и обновил DES, MD5, и шифрованиебезопасностьшифрованиешифрованиеDESMD5У каждого пользователя &unix; системы есть пароль, связанный с его
учётной записью. Очевидно, что эти пароли должны быть известны только
пользователю и соответствующей операционной системе. Для защиты паролей
они шифруются способом, известным как односторонний хэш,
то есть их можно легко зашифровать, но нельзя расшифровать. Другими
словами, то, что мы сказали чуть раньше было очевидно, но не совсем
верно: операционной системе сам пароль
неизвестен. Ей известен только пароль в
зашифрованной форме. Единственный способ получить
обычный пароль это простой перебор всех возможных
паролей.К сожалению, единственный способ шифрования пароля при появлении
&unix; был основан на DES, Data Encryption Standard. Это не было
проблемой для пользователей, живущих в США, но поскольку исходный код
DES нельзя было экспортировать из США, &os; нашла способ одновременно
не нарушать законов США и сохранить совместимость со всеми другими
вариантами &unix;, где все еще использовался DES.Решение было в разделении библиотек шифрования, чтобы пользователи
в США могли устанавливать и использовать библиотеки DES, а у остальных
пользователей был метод шифрования, разрешенный к экспорту. Так
&os; пришла к использованию MD5 в качестве метода шифрования по
умолчанию. MD5 считается более безопасным, чем DES, поэтому установка
DES рекомендуется в основном из соображений совместимости.Определения механизма шифрования
- До &os; 4.4 libcrypt.a была
- символической ссылкой на библиотеку, используемую для шифрования.
- В &os; 4.4 libcrypt.a была изменена
- для предоставления настраиваемой библиотеки аутентификации по хэшу
- пароля. На данный момент библиотека поддерживает хэши DES, MD5 и
+ На данный момент библиотека поддерживает хэши DES, MD5 и
Blowfish. По умолчанию &os; использует для шифрования паролей
MD5.Довольно легко определить какой метод шифрования используется
в &os;. Один из способов это проверка файла
/etc/master.passwd. Пароли, зашифрованные в
хэш MD5 длиннее, чем те, что зашифрованы с помощью DES и начинаются
с символов $1$. Пароли, начинающиеся
с символов $2a$ зашифрованы с помощью
Blowfish. Пароли, зашифрованные DES не содержат каких-то определенных
идентифицирующих символов, но они короче, чем пароли MD5 и
закодированы в 64-символьном алфавите, не содержащем символа
$, поэтому относительно короткая строка,
не начинающаяся с этого символа это скорее всего DES пароль.Формат паролей, используемых для новых паролей, определяется
параметром passwd_format в
/etc/login.conf, которое может принимать значения
des, md5 или
blf. Обратитесь к странице справочника
&man.login.conf.5; за дополнительной информацией о параметрах
login.Одноразовые паролиодноразовые паролибезопасностьодноразовые пароли
- S/Key это схема с одноразовыми паролями, основанная на одностороннем
- хэше. &os; использует хэш MD4 для совместимости, но другие системы
- используют MD5 и DES-MAC. S/Key была частью базовой системы &os;
- начиная с версии 1.1.5 и используется также во все большем числе
- операционных систем. S/Key это зарегистрированная торговая марка
- Bell Communications Research, Inc.
-
- Начиная с &os; версии 5.0, S/Key была замещена на функциональный
- эквивалент — OPIE (One-time Passwords In Everything).
+ &os; использует для одноразовых паролей
+ OPIE (One-time Passwords In Everything).
OPIE по умолчанию использует MD5.Есть три различных вида паролей, о которых мы поговорим ниже.
Первый вид это ваш обычный пароль &unix; или пароль Kerberos; мы
будем называть его пароль &unix;. Второй вид это
- одноразовый пароль, сгенерированный программой S/Key
- key или программой OPIE &man.opiekey.1; и принимаемый
- командами keyinit или &man.opiepasswd.1;
+ одноразовый пароль, сгенерированный программой
+ OPIE &man.opiekey.1; и принимаемый
+ командой &man.opiepasswd.1;
и в приглашении login; мы будем называть их одноразовыми
паролями. Последний вид паролей это защищенные пароли, которые
- вы передаете программам
- key/opiekey (и иногда
- программам keyinit/opiepasswd),
+ вы передаете программам opiekey (и иногда
+ opiepasswd),
и которые эти программы используют для создания одноразовых паролей;
мы будем называть его защищенными паролями или просто
паролями.Защищенный пароль не имеет никакого отношения к вашему паролю
&unix;; они могут быть одинаковыми, но это не рекомендуется.
- Защищенные пароли S/Key и OPIE не ограничены 8-ю символами, как
+ Защищенные пароли OPIE не ограничены 8-ю символами, как
старые &unix; паролиВ &os; стандартный пароль
может быть до 128 символов длиной.,
они могут быть настолько длинными, насколько вы захотите. Очень часто
используются пароли длиной в шесть или семь символов. По большей части
- система S/Key или OPIE работает полностью независимо от системы
+ система OPIE работает полностью независимо от системы
паролей &unix;.
- Помимо паролей, есть два других вида данных, важных для S/Key и
+ Помимо паролей, есть два других вида данных, важных для
OPIE. Первый, известный как seed или
ключ, состоит из двух букв и пяти цифр. Другой,
называемый счетчиком цикла, это номер от 1 до 100.
- S/Key создает одноразовый пароль, соединяя ключ и защищенный пароль,
- а затем применяя MD4/MD5 столько раз, сколько указано счетчиком цикла и
+ OPIE создает одноразовый пароль, соединяя ключ и защищенный пароль,
+ а затем применяя MD4 столько раз, сколько указано счетчиком цикла и
выдает результат в виде шести коротких слов на английском. Эти шесть
слов на английском и есть ваш одноразовый пароль. Система
аутентификации (как правило PAM) хранит последний использованный
одноразовый пароль, и пользователь аутентифицируется если хэш вводимого
пользователем пароля совпадает с предыдущим паролем. Поскольку
используется односторонний хэш, невозможно сгенерировать следующий
одноразовый пароль если получен предыдущий; счетчик цикла уменьшается
после каждого успешного входа для поддержки синхронизации пользователя
- с программой login. Когда счетчик цикла уменьшается до 1, S/Key и OPIE
- должны быть переинициализированы.
+ с программой login. Когда счетчик цикла уменьшается до 1, набор OPIE
+ должен быть переинициализирован.В каждой из обсуждаемых ниже систем задействованы три программы.
- Программы key и opiekey
- получают счетчик цикла, ключ и защищенный пароль и создают одноразовый
- пароль или последовательный список одноразовых паролей. Программы
- keyinit и opiepasswd
- используются для инициализации S/Key и OPIE соответственно,
- и для смены паролей, счетчиков цикла, или ключей; они принимают
+ Программа opiekey
+ получает счетчик цикла, ключ и защищенный пароль и создает одноразовый
+ пароль или последовательный список одноразовых паролей. Программа
+ opiepasswd
+ используется для инициализации OPIE соответственно,
+ и для смены паролей, счетчиков цикла, или ключей; она принимает
защищенный пароль или счетчик цикла, ключ и одноразовый пароль.
- Программы keyinfo и opieinfo
- проверяют соответствующие файлы (/etc/skeykeys
- или /etc/opiekeys) и печатают текущий счетчик
+ Программа opieinfo
+ проверяет соответствующий файл (/etc/opiekeys)
+ и печатает текущий счетчик
цикла и ключ вызывающего пользователя.Мы рассмотрим четыре вида операций. Первая это использование
- keyinit или opiepasswd через
+ opiepasswd через
защищенное соединение для первоначальной настройки системы одноразовых
паролей, или для изменения пароля или ключа. Вторая операция это
- использование в тех же целях keyinit или
+ использование в тех же целях
opiepasswd через незащищенное соединение, в сочетании
- с key или opiekey через защищенное
+ с opiekey через защищенное
соединение. Третья это использование
- key/opiekey для входа через
+ opiekey для входа через
незащищенное соединение. Четвертая это использование
- key или opiekey для генерации
+ opiekey для генерации
набора ключей, которые могут быть записаны или распечатаны для
соединения из места, где защищенное соединение недоступно.Защищенная установка соединения
- Для первоначальной настройки S/Key, измените ваш пароль или
- ключ при входе через защищенное соединение (например, с консоли
- компьютера или через ssh), используйте
- команду keyinit без параметров при входе под
- своим именем:
-
- &prompt.user; keyinit
-Adding unfurl:
-Reminder - Only use this method if you are directly connected.
-If you are using telnet or rlogin exit with no password and use keyinit -s.
-Enter secret password:
-Again secret password:
-
-ID unfurl s/key is 99 to17757
-DEFY CLUB PRO NASH LACE SOFT
-
- Для OPIE, вместо этого используется
+ Для первоначальной настройки OPIE используется команда
opiepasswd:&prompt.user; opiepasswd -c
[grimreaper] ~ $ opiepasswd -f -c
Adding unfurl:
Only use this method from the console; NEVER from remote. If you are using
telnet, xterm, or a dial-in, type ^C now or exit with no password.
Then run opiepasswd without the -c parameter.
Using MD5 to compute responses.
Enter new secret pass phrase:
Again new secret pass phrase:
ID unfurl OTP key is 499 to4268
MOS MALL GOAT ARM AVID COED
В приглашениях Enter new secret pass phrase: или
Enter secret password:, введите пароль или фразу.
Запомните, это не тот пароль, с которым вы будете входить, он
используется для генерации одноразовых паролей. Строка
ID содержит информацию для вашего конкретного случая:
имя пользователя, счетчик цикла и ключ. При входе система запомнит
эти параметры и отправит их вам, поэтому их не надо запоминать. В
последней строке находится одноразовый пароль, соответствующий
этим параметрам и секретному паролю; если вы войдете в систему сразу,
используйте этот одноразовый пароль.Незащищенная установка соединенияДля инициализации или изменения защищенного пароля через
незащищенное соединение, вам потребуется существующее защищенное
- соединение куда-то, где вы сможете запустить key
- или opiekey; это может быть средство доступа
- &macintosh; или shell на компьютере, которому вы доверяете.
+ соединение куда-то, где вы сможете запустить
+ opiekey; это может быть
+ shell на компьютере, которому вы доверяете.
Вам потребуется также установить значение счетчика цикла (100
возможно подойдет), и задать ключ или использовать сгенерированный.
Через незащищенное соединение (к компьютеру, на котором производится
- настройка), используйте команду keyinit -s:
-
- &prompt.user; keyinit -s
-Updating unfurl:
-Old key: to17758
-Reminder you need the 6 English words from the key command.
-Enter sequence count from 1 to 9999: 100
-Enter new key [default to17759]:
-s/key 100 to 17759
-s/key access password:
-s/key access password:CURE MIKE BANE HIM RACY GORE
-
-
- Для OPIE, используйте opiepasswd:
+ настройка), используйте команду opiepasswd:&prompt.user; opiepasswd
Updating unfurl:
You need the response from an OTP generator.
Old secret pass phrase:
otp-md5 498 to4268 ext
Response: GAME GAG WELT OUT DOWN CHAT
New secret pass phrase:
otp-md5 499 to4269
Response: LINE PAP MILK NELL BUOY TROY
ID mark OTP key is 499 gr4269
LINE PAP MILK NELL BUOY TROY
- Чтобы принять ключ по умолчанию нажмите Enter.
+ Чтобы принять ключ по умолчанию нажмите Enter.
Затем, перед вводом пароля доступа введите те же параметры в
- вашем защищенном соединении или средстве доступа S/Key:
-
- &prompt.user; key 100 to17759
-Reminder - Do not use this program while logged in via telnet or rlogin.
-Enter secret password: <secret password>
-CURE MIKE BANE HIM RACY GORE
-
- Или для OPIE:
+ вашем защищенном соединении или средстве доступа OPIE:&prompt.user; opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHAT
Теперь переключитесь на незащищенное соединение и скопируйте
одноразовый пароль, сгенерированный соответствующей программой.Создание одного одноразового пароля
- Как только вы настроите S/Key или OPIE, во время входа появится
+ Как только вы настроите OPIE, во время входа появится
приглашение вроде этого:&prompt.user; telnet example.com
Trying 10.0.0.1...
Connected to example.com
Escape character is '^]'.
FreeBSD/i386 (example.com) (ttypa)
-login: <username>
-s/key 97 fw13894
-Password:
-
- Или для OPIE:
-
-&prompt.user; telnet example.com
-Trying 10.0.0.1...
-Connected to example.com
-Escape character is '^]'.
-
-FreeBSD/i386 (example.com) (ttypa)
-
login: <username>
otp-md5 498 gr4269 ext
Password:
- Кроме того, у S/Key и OPIE есть полезная особенность (не
+ Кроме того, у OPIE есть полезная особенность (не
показанная здесь): если вы нажмете Enter
в приглашении на ввод пароля, включится эхо, и вы сможете увидеть
то, что вводите. Это может быть очень полезно, если вы пытаетесь
ввести пароль вручную, например с распечатки.MS-DOSWindowsMacOSВ этот момент вам потребуется сгенерировать одноразовый пароль,
чтобы ввести его в приглашение. Это должно быть выполнено на
защищенной системе, в которой вы можете запустить
- key или opiekey (есть версии
+ opiekey (есть версии
для DOS, &windows; и &macos;). Им требуются значения счетчика цикла
и ключ в качестве параметров командной строки. Вы можете скопировать
и вставить их прямо из приглашения login компьютера, на который
входите.В защищенной системе:
- &prompt.user; key 97 fw13894
-Reminder - Do not use this program while logged in via telnet or rlogin.
-Enter secret password:
-WELD LIP ACTS ENDS ME HAAG
-
- Для OPIE:
-
&prompt.user; opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHATТеперь, когда у вас есть одноразовый пароль, можете продолжить
- вход в систему:
-
- login: <username>
-s/key 97 fw13894
-Password: <return to enable echo>
-s/key 97 fw13894
-Password [echo on]: WELD LIP ACTS ENDS ME HAAG
-Last login: Tue Mar 21 11:56:41 from 10.0.0.2 ...
-
+ вход в систему.Создание нескольких одноразовых паролейИногда вы отправляетесь туда, где нет доступа к защищенному
компьютеру или защищенному соединению. В этом случае, можно
- использовать команды key и
+ использовать команду
opiekey для создания нескольких одноразовых
паролей, которые вы сможете распечатать и забрать с собой.
Например:
- &prompt.user; key -n 5 30 zz99999
-Reminder - Do not use this program while logged in via telnet or rlogin.
-Enter secret password: <secret password>
-26: SODA RUDE LEA LIND BUDD SILT
-27: JILT SPY DUTY GLOW COWL ROT
-28: THEM OW COLA RUNT BONG SCOT
-29: COT MASH BARR BRIM NAN FLAG
-30: CAN KNEE CAST NAME FOLK BILK
-
- Или для OPIE:
-
&prompt.user; opiekey -n 5 30 zz99999
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase: <secret password>
26: JOAN BORE FOSS DES NAY QUIT
27: LATE BIAS SLAY FOLK MUCH TRIG
28: SALT TIN ANTI LOON NEAL USE
29: RIO ODIN GO BYE FURY TIC
30: GREW JIVE SAN GIRD BOIL PHIПараметр запрашивает пять паролей,
указывает значение последнего счетчика цикла.
Обратите внимание, что пароли печатаются в
обратном по сравнению с обычным использованием
порядке. Если вы действительно параноик, перепишите результат
вручную; иначе скопируйте и передайте его lpr.
Обратите внимание, что каждая линия содержит как счетчик цикла, так
и одноразовый пароль; вам может показаться удобным отрывать пароль
после использования.Ограничение использования &unix; паролей
- S/Key может наложить ограничения на использование &unix; паролей
- на основе имени хоста, имени пользователя, порта терминала или IP
- адреса сессии. Эти ограничения можно найти в файле настройки
- /etc/skey.access. Страница справочника
- &man.skey.access.5; содержит дополнительную информацию о полном
- формате файла а также детали о некоторых предосторожностях, которые
- должны быть предприняты перед тем, как положиться в вопросах
- безопасности на этот файл.
-
- Если файла /etc/skey.access нет (это
- ситуация по умолчанию в системах &os; 4.X), всем пользователям
- будет разрешено входить с паролями &unix;. Если файл существует,
- использование S/Key станет обязательно для всех, если только
- параметры настройки в файле skey.access не
- указывают иначе. В любом случае, пароли &unix; разрешены при входе
- с консоли.
-
- Вот пример файла настройки skey.access,
- иллюстрирующий три наиболее распространенных вида параметров
- настройки:
-
- permit internet 192.168.0.0 255.255.0.0
-permit user fnord
-permit port ttyd0
-
- Первая строка (permit internet) разрешает
- пользователям, чей IP адрес (который подвержен подделке)
- соответствует заданному значению и маске, входить с использованием
- паролей &unix;. Это должно рассматриваться не как механизм
- безопасности, а как напоминание пользователям, что они работают через
- небезопасное соединение и должны использовать для аутентификации
- S/Key.
-
- Вторая строка (permit user) позволяет
- определенным пользователям, в данном случае
- fnord, всегда использовать пароли &unix;.
- Вообще говоря, это должно использоваться только для тех, кто
- не может использовать программу key, например
- если они работают с простых терминалов или необучаемы.
-
- Третья строка (permit port) позволяет всем
- пользователям, вошедшим с определенного терминала использовать
- пароли &unix;; этот параметр должен использоваться для подключений
- по dial-up.
-
OPIE может ограничивать использование паролей &unix; на основе IP
- адреса как и S/Key. Соответствующий файл называется
- /etc/opieaccess, он существует по умолчанию в
- &os; 5.0 и более современных системах. Обратитесь к
+ адреса. Соответствующий файл называется
+ /etc/opieaccess, он существует по умолчанию.
+ Обратитесь к
&man.opieaccess.5; за более подробной информацией об этом файле и о
предосторожностях, которые вы должны предпринять при использовании
этого файла.Вот пример файла opieaccess:permit 192.168.0.0 255.255.0.0Эта строка позволяет пользователям, чей IP адрес (который
подвержен подделке) соответствует указанному значению и маске,
входить с паролем &unix;.Если ни одно из правил в opieaccess не
сработало, поведением по умолчанию является запрет всех не-OPIE
входов.TomRhodesНаписал: TCP WrappersTCP WrappersКаждый, кто знаком с &man.inetd.8;, возможно когда-то слышал
о TCP Wrappers. Но немногие полностью
понимают их полезность в сетевой среде: большинство
используют брандмауэр. Хотя его применимость очень широка,
есть вещи, с которыми брандмауэр не может работать, такие
как отправка текста обратно вызывающей стороне. Программное
обеспечение уровня TCP может делать это
и многое другое. В следующих нескольких разделах обсуждаются
многие возможности TCP Wrappers, и, когда
это необходимо, даются примеры настроек.Программное обеспечение TCP Wrappers
расширяет возможность inetd по поддержке
каждого даемона. С ним становится возможным протоколирование,
возврат сообщений вызывающей стороне, ограничение подключений
внутренней сетью и т.п. Хотя некоторые из этих возможностей
могут быть реализованы брандмауэром, TCP
Wrappers не только предоставляют дополнительный уровень защиты,
но и дают больше контроля над системой, чем это возможно
с брандмауэром.Расширенная функциональность обработчиков TCP
не может заменить хороший сетевой экран. Тем не менее, обработчики
TCP могут использоваться совместно с сетевым экраном
и другими средствами обеспечения информационной безопасности, обеспечивая
тем самым дополнительный уровень защиты системы.Поскольку рассматривается расширение к настройкам
inetd, предполагается, что читатель ознакомился
с разделом о настройке
inetd.Хотя программы, запускаемые из &man.inetd.8;, на самом деле не
соответствуют термину даемоны, существует традиция
называть их именно так. Этот термин и используется в данном
разделе.Начальная настройкаЕдинственное требование для использования TCP
Wrappers в &os; это наличие в rc.conf
параметров запуска inetd ;
это настройки по умолчанию. Конечно, ожидается также наличие
правильной настройки /etc/hosts.allow,
но &man.syslogd.8; отправит сообщения в системный протокол если
что-то не так.В отличие от других реализаций TCP
Wrappers, использование hosts.deny не
поддерживается. Все параметры настройки должны быть помещены
в /etc/hosts.allow.В простейшей конфигурации, политика подключения сводится к
разрешению или блокированию в зависимости от параметров в
/etc/hosts.allow. Настройка в &os;
по умолчанию заключается в разрешении подключения к любому
даемону, запущенному из inetd. Изменение
этого поведения будет обсуждаться только после рассмотрения
базовой настройки.Базовая настройка обычно принимает форму
daemon : address : action, где
daemon это имя даемона, который запускается
inetd. В поле address
может находиться имя хоста, IP адрес, или
IPv6 адрес, заключенный в квадратные скобки ([ ]).
Поле action может принимать значения allow или deny,
чтобы соответственно разрешать или запрещать доступ.
Помните, что поиск правил производится до первого совпадения.
При обнаружении совпадения применяется соответствующее правило
и поиск прерывается.Существуют и другие параметры, но они будут описаны в следующих
разделах. Простая конфигурация может быть, например, такой:
для разрешения соединений по протоколу POP3
к даемону mail/qpopper,
в hosts.allow необходимо добавить следующие
строки:# This line is required for POP3 connections:
qpopper : ALL : allowПосле добавления этой строки, inetd
необходимо перезапустить. Это можно выполнить командой
&man.kill.1; или скриптом /etc/rc.d/inetd
с параметром restart.Расширенная конфигурацияУ TCP Wrappers имеются дополнительные
параметры; они дают дополнительные возможности контроля над
соединениями. Иногда бывает полезно возвращать комментарий
определенным хостам или при подключении к определенным
даемонам. В других случаях может быть необходимо добавить
запись в лог файл, или отправить письмо администратору.
В определенных ситуациях сервис должен использоваться
только для локальных соединений. Все это возможно с
использованием параметров c шаблонами, символами подстановки
и путем выполнения внешних команд. Следующие два раздела
посвящены этим типам настроек.Внешние командыПредположим ситуацию, в которой соединение должно
быть запрещено, а о причине необходимо сообщить вызывающей
стороне. Как это можно сделать? Соответствующую
возможность предоставляет параметр .
При попытке подключения выполняется команда или скрипт,
заданный этим параметром. Пример дан в файле
hosts.allow:# The rest of the daemons are protected.
ALL : ALL \
: severity auth.info \
: twist /bin/echo "You are not welcome to use %d from %h."В этом примере сообщение,
You are not allowed to use daemon
from hostname. будет возвращено
от всех даемонов, которые не были предварительно настроены
в файле доступа. Обратите внимание, что возвращаемое
сообщение должно быть заключено в
кавычки; из этого правила нет исключений.Возможна реализация DoS атаки, когда группа
атакующих производит множество запросов на подключение.Возможно также использование параметра .
Как и параметр , параметр
подразумевает запрет соединения
и может использоваться для запуска команд или скриптов.
В отличие от , не
отправляет ответ вызывающей стороне. Например, следующая
конфигурация:# We do not allow connections from example.com:
ALL : .example.com \
: spawn (/bin/echo %a from %h attempted to access %d >> \
/var/log/connections.log) \
: denyотклонит все попытки соединения из домена
*.example.com; имя хоста,
IP адрес и даемон протоколируются в файл
/var/log/connections.log.Помимо приведенных выше символов подстановки, например
%a, существует еще несколько символов. Обратитесь к странице
&man.hosts.access.5; справочной системы за полным списком.Параметры – шаблоныДо этого момента в примерах использовался шаблон
ALL. Существуют и другие параметры,
функциональность которых в дальнейшем может быть расширена.
ALL соответствует любому даемону,
домену или IP адресу. Другой доступный
шаблон это PARANOID, который соответствует
хосту, IP адрес которого может быть
подделан. Другими словами, paranoid
может быть использован для определения действия с хостами,
IP адрес которых не соответствует имени
хоста. Вот пример применения этого параметра:# Block possibly spoofed requests to sendmail:
sendmail : PARANOID : denyВ этом примере все запросы на подключения к
sendmail от хостов, IP
адрес которых не соответствует имени хоста, будут
отклонены.Использование PARANOID невозможно,
если у клиента или сервера неправильно настроен
DNS. В таких случаях необходимо
вмешательство администратора.Более подробная информация о шаблонах и их возможностях
дана на странице &man.hosts.access.5; справочной
системы.Для того, чтобы любая выбранная конфигурация заработала,
в hosts.allow необходимо закомментировать
первую строку настройки. В начале раздела об этом не
упоминалось.MarkMurrayПредоставил MarkDapozОригинальный текст предоставил KerberosIVKerberos это сетевая дополнительная система/протокол, которая
делает возможной аутентификацию пользователей через сервисы на защищенном
сервере. Такие сервисы, как удаленный вход, удаленное копирование,
защищенное копирование файлов между системами и другие задачи с
высоким риском становятся допустимо безопасными и более
контролируемыми.Последующие инструкции могут использоваться в качестве руководства
по настройке поставляемого с &os; Kerberos. Тем не менее, вам
могут потребоваться страницы справочника полного дистрибутива.Установка KerberosIVMITKerberosIVустановкаKerberos это опциональный компонент &os;. Простейший способ
установки этой программы это выбор krb4 или
krb5 из sysinstall
во время первой установки &os;. Будет установлен
eBones (KerberosIV) или Heimdal
(Kerberos5) вариант Kerberos. Включение этих реализаций объясняется
тем, что они разработаны вне США/Канады и доступны вне этих стран,
поскольку на них не влияют ограничения на экспорт криптографического
кода из США.Кроме того, реализация MIT Kerberos доступна из Коллекции Портов
в виде пакета
security/krb5.Создание базы данныхЭто необходимо сделать только на сервере Kerberos. Во-первых,
убедитесь что не осталось старой базы данных Kerberos. Войдите
в каталог /etc/kerberosIV и убедитесь, что в нем
находятся только эти файлы:&prompt.root; cd /etc/kerberosIV
&prompt.root; ls
README krb.conf krb.realmsЕсли присутствуют еще какие-то файлы (такие как
principal.* или master_key),
используйте команду kdb_destroy для удаления старой
базы данных Kerberos, или, если Kerberos не запущен, просто удалите
эти файлы.Затем отредактируйте файлы krb.conf и
krb.realms, введя ваши данные. В этом примере
уникальный идентификатор EXAMPLE.COM, сервер
grunt.example.com. Отредактируем или
создадим файл krb.conf:&prompt.root; cat krb.conf
EXAMPLE.COM
EXAMPLE.COM grunt.example.com admin server
CS.BERKELEY.EDU okeeffe.berkeley.edu
ATHENA.MIT.EDU kerberos.mit.edu
ATHENA.MIT.EDU kerberos-1.mit.edu
ATHENA.MIT.EDU kerberos-2.mit.edu
ATHENA.MIT.EDU kerberos-3.mit.edu
LCS.MIT.EDU kerberos.lcs.mit.edu
TELECOM.MIT.EDU bitsy.mit.edu
ARC.NASA.GOV trident.arc.nasa.govВ этом примере другие идентификаторы введены для иллюстрации
настройки c несколькими хостами. С целью упрощения
настройки вы можете не включать их.Первая строка содержит идентификатор, под которым работает эта
система. Остальные строки связывают идентификаторы с именами хостов.
Сначала указывается идентификатор, затем хост под этим
идентификатором, работающий как центр распространения
ключей. Слова admin server с последующим
именем хоста означают, что этот хост также является сервером
администрирования базы данных. За дальнейшей информацией об этих
терминах обратитесь к страницам справочника по Kerberos.Мы добавили grunt.example.com
к идентификатору EXAMPLE.COM и кроме того
сопоставили всем хостам в домене
.example.com идентификатор
EXAMPLE.COM. Файл
krb.realms будет выглядеть так:&prompt.root; cat krb.realms
grunt.example.com EXAMPLE.COM
.example.com EXAMPLE.COM
.berkeley.edu CS.BERKELEY.EDU
.MIT.EDU ATHENA.MIT.EDU
.mit.edu ATHENA.MIT.EDUКак и в предыдущем примере, другие идентификаторы добавлены только
для примера. С целью упрощения настройки вы можете не включать
их.В первой строке определенная система
сопоставляется с идентификатором. В остальных строках показано,
сопоставить идентификатору остальные системы определенного
поддомена.Теперь мы готовы к созданию базы данных. Потребуется всего лишь
запустить сервер Kerberos (или центр распространения ключей).
Используйте для этого kdb_init:&prompt.root; kdb_initRealm name [default ATHENA.MIT.EDU ]:EXAMPLE.COM
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Введите главный ключ Kerberos:Теперь мы должны сохранить ключ, чтобы сервера на локальных
компьютерах могли его взять. Используйте для этого команду
kstash:&prompt.root; kstashEnter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!Этой командой зашифрованный главный пароль сохранен в
/etc/kerberosIV/master_key.Запуск KerberosKerberosIVпервый запускДля каждой системы, защищаемой Kerberos, в базу данных должны
быть добавлены две записи. Это kpasswd и
rcmd. Они добавляются вместе с именем
системы.Эти даемоны, kpasswd и
rcmd позволяют другим системам изменять
пароли Kerberos и запускать такие команды как &man.rcp.1;,
&man.rlogin.1;, &man.rsh.1;.Теперь добавим эти записи:&prompt.root; kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name:passwdInstance:grunt
<Not found>, Create [y] ?y
Principal: passwd, Instance: grunt, kdc_key_ver: 1
New Password: <---- enter RANDOM here
Verifying password
New Password: <---- enter RANDOM here
Random password [y] ?y
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?Max ticket lifetime (*5 minutes) [ 255 ] ?Attributes [ 0 ] ?
Edit O.K.
Principal name:rcmdInstance:grunt
<Not found>, Create [y] ?
Principal: rcmd, Instance: grunt, kdc_key_ver: 1
New Password: <---- enter RANDOM here
Verifying password
New Password: <---- enter RANDOM here
Random password [y] ?
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?Max ticket lifetime (*5 minutes) [ 255 ] ?Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- null entry here will cause an exitСоздание файла настройки сервераТеперь необходимо создать все записи сервисов, которые были
определены для каждого компьютера. Используем для этого команду
ext_srvtab. Будет создан файл, который должен
быть скопирован или перемещен безопасным способом
в каталог /etc/kerberosIV каждого Kerberos
клиента. Этот файл должен присутствовать на каждом сервере и
клиенте, он необходим для работы Kerberos.&prompt.root; ext_srvtab gruntEnter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Generating 'grunt-new-srvtab'....Эта команда создаст временный файл, который должен быть
переименован в srvtab, чтобы серверы смогли
обратиться к нему. Используйте команду &man.mv.1; для перемещения
его в исходной системе:&prompt.root; mv grunt-new-srvtab srvtabЕсли файл предназначен для клиентской системы, и сеть не
безопасна, скопируйте
client-new-srvtab
на съемный носитель и перенесите файл с его помощью. Убедитесь, что
переименовали его в srvtab в каталоге
/etc/kerberosIV клиента, и что режим доступа к
нему 600:&prompt.root; mv grumble-new-srvtab srvtab
&prompt.root; chmod 600 srvtabПополнение базы данныхТеперь необходимо добавить в базу данных пользователей.
Во-первых, создадим запись для пользователя jane.
Используйте команду kdb_edit:&prompt.root; kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name:janeInstance:
<Not found>, Create [y] ?y
Principal: jane, Instance: , kdc_key_ver: 1
New Password: <---- enter a secure password here
Verifying password
New Password: <---- re-enter the password here
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?Max ticket lifetime (*5 minutes) [ 255 ] ?Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- null entry here will cause an exitТестирование всей системыВо-первых, запустите даемоны Kerberos. При правильном
редактировании файла /etc/rc.conf они запустятся
автоматически при перезагрузке. Это необходимо только на сервере
Kerberos. Клиенты Kerberos получат все необходимые данные из
каталога /etc/kerberosIV.&prompt.root; kerberos &
Kerberos server starting
Sleep forever on error
Log file is /var/log/kerberos.log
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Current Kerberos master key version is 1
Local realm: EXAMPLE.COM
&prompt.root; kadmind -n &
KADM Server KADM0.0A initializing
Please do not use 'kill -9' to kill this job, use a
regular kill instead
Current Kerberos master key version is 1.
Master key entered. BEWARE!Теперь для получения доступа через созданного пользователя
jane используйте kinit:&prompt.user; kinit jane
MIT Project Athena (grunt.example.com)
Kerberos Initialization for "jane"
Password:Попробуйте просмотреть имеющиеся данные с помощью
klist:&prompt.user; klist
Ticket file: /tmp/tkt245
Principal: jane@EXAMPLE.COM
Issued Expires Principal
Apr 30 11:23:22 Apr 30 19:23:22 krbtgt.EXAMPLE.COM@EXAMPLE.COMТеперь попробуйте изменить пароль с помощью &man.passwd.1;,
чтобы убедиться, что даемон kpasswd
может получить информацию из базы данных Kerberos:&prompt.user; passwd
realm EXAMPLE.COM
Old password for jane:New Password for jane:
Verifying password
New Password for jane:
Password changed.Включение suKerberos позволяет назначить каждому
пользователю, который нуждается в привилегиях
root, свой собственный
пароль &man.su.1;. Необходимо добавить учётную запись, которой
разрешено получать root доступ через &man.su.1;.
Это делается путем связывания учётной записи root
с пользовательской учётной записью. Создадим в базе данных Kerberos
запись jane.root с помощью
kdb_edit:&prompt.root; kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name:janeInstance:root
<Not found>, Create [y] ? y
Principal: jane, Instance: root, kdc_key_ver: 1
New Password: <---- enter a SECURE password here
Verifying password
New Password: <---- re-enter the password here
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?Max ticket lifetime (*5 minutes) [ 255 ] ?12 <--- Keep this short!
Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- null entry here will cause an exitТеперь проверим работоспособность этой записи:&prompt.root; kinit jane.root
MIT Project Athena (grunt.example.com)
Kerberos Initialization for "jane.root"
Password:Необходимо добавить пользователя к root
файлу .klogin:&prompt.root; cat /root/.klogin
jane.root@EXAMPLE.COMТеперь попробуйте выполнить &man.su.1;:&prompt.user; suPassword:и посмотрите на имеющиеся данные:&prompt.root; klist
Ticket file: /tmp/tkt_root_245
Principal: jane.root@EXAMPLE.COM
Issued Expires Principal
May 2 20:43:12 May 3 04:43:12 krbtgt.EXAMPLE.COM@EXAMPLE.COMИспользование других командВ примере выше мы создали запись (principal)
jane с доступом к root
(instance). Она основана на пользователе с таким же именем, как
и идентификатор, что принято Kerberos по умолчанию;
<principal>.<instance> в форме
<username>.root
позволяет использовать &man.su.1; для доступа к
root, если соответствующие записи находятся
в файле .klogin домашнего каталога
root:
&prompt.root; cat /root/.klogin
jane.root@EXAMPLE.COMПодобно этому, если в файле .klogin
из домашнего каталога пользователя есть строки в форме:&prompt.user; cat ~/.klogin
jane@EXAMPLE.COM
jack@EXAMPLE.COMэто позволит любому с идентификатором
EXAMPLE.COM, кто аутентифицировался как
jane или jack
(с помощью команды kinit, см. выше)
получить доступ к учётной записи пользователя jane
или файлам этой системы (grunt) через
&man.rlogin.1;, &man.rsh.1; или &man.rcp.1;.Например, jane может входить в другую систему
используя Kerberos:&prompt.user; kinit
MIT Project Athena (grunt.example.com)
Password:
&prompt.user; rlogin grunt
Last login: Mon May 1 21:14:47 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995Или jack входит в учётную запись
jane's на этом же компьютере
(файл .kloginjane
настроен как показано выше, и в Kerberos настроена учётная
запись jack):&prompt.user; kinit
&prompt.user; rlogin grunt -l jane
MIT Project Athena (grunt.example.com)
Password:
Last login: Mon May 1 21:16:55 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995TillmanHodgsonПредоставил MarkMurrayОригинальный материал предоставил Kerberos5Все релизы &os; после &os;-5.1 включают поддержку только
Kerberos5. Таким образом,
Kerberos5 это единственная включаемая в
поставку версия и его конфигурация похожа на
KerberosIV во многих аспектах. Эта
информация применима только к Kerberos5
из релизов после &os;-5.0. Пользователи, желающие использовать
пакет KerberosIV, могут установить его из
порта security/krb4.Kerberos это дополнительная сетевая
система/протокол, позволяющая пользователям авторизоваться через
защищенные сервисы на защищенном сервере. Такие сервисы как
удаленный вход, удаленное копирование, защищенное копирование файлов
между системами и другие задачи с высоким риском становятся
допустимо безопасными и более контролируемыми.Kerberos может быть описана как
прокси система идентификации-проверки. Она также может быть описана
как защищенная внешняя система аутентификации.
Kerberos предоставляет только одну функцию
— защищенную аутентификацию пользователей сети.
Он не предоставляет функций авторизации (что разрешено делать
пользователям) или функций аудита (какой пользователь что делает).
После того, как клиент и сервер использовали
Kerberos для идентификации, они могут
зашифровать все соединения для гарантирования собственной безопасности и
целостности данных.Следовательно крайне рекомендуется использовать
Kerberos с другими методами безопасности,
предоставляющими сервисы авторизации и аудита.Последующие инструкции могут использоваться в качестве руководства
по настройке Kerberos, поставляемого с &os;.
Тем не менее, вам потребуется обратиться к соответствующим страницам
справочника за полным описанием.В целях демонстрации установки Kerberos,
будут применены следующие обозначения:DNS домен (зона)
example.org.Уникальный идентификатор Kerberos
EXAMPLE.ORG.Используйте действующие имена доменов при настройке
Kerberos даже если вы будете использовать
его во внутренней сети. Это позволит избежать проблем с
DNS и гарантирует возможность связи с
Kerberos под другими
идентификаторами.ИсторияKerberos5историяKerberos был создан
MIT в качестве решения проблем с безопасностью
сети. Протокол Kerberos использует
стойкую криптографию, так что клиент может идентифицироваться на
сервере (и обратно) через незащищенное сетевое соединение.Kerberos это и имя сетевого протокола
аутентификации и общий термин для описания программ, где он
реализован (например, Kerberos telnet).
Текущая версия протокола 5 описана в
RFC 1510.Доступно несколько свободных реализаций этого протокола,
работающих на множестве операционных систем. Massachusetts
Institute of Technology (MIT), где
Kerberos был первоначально разработан,
продолжает разрабатывать собственный пакет
Kerberos. Он обычно использовался
в США как криптографический продукт,
и в этом качестве попадал под действие ограничений на экспорт.
MIT Kerberos
доступен в виде порта (security/krb5). Heimdal
Kerberos это другая реализация версии
5, которая разрабатывалась исключительно вне США
для обхода экспортных ограничений (и поэтому часто включалась в
некоммерческие реализации &unix;). Heimdal
Kerberos доступен в виде порта
(security/heimdal),
его минимальный комплект включен в базовую установку &os;.В целях получения наибольшей аудитории, в этих инструкциях
предполагается использование Heimdal включаемого в &os;.Настройка Heimdal KDCKerberos5центр распространения ключейЦентр распространения ключей (Key Distribution Center,
KDC) это централизованный сервис аутентификации,
предоставляемый Kerberos —
это компьютер, который предоставляет доступ через
Kerberos. KDC
считается доверяемым всеми другими компьютерами с определенным
идентификатором Kerberos и поэтому
к нему предъявляются высокие требования безопасности.Имейте ввиду, что хотя работа сервера
Kerberos требует очень немного
вычислительных ресурсов, из соображений безопасности для него
рекомендуется отдельный компьютер, работающий только в качестве
KDC.Перед началом настройки KDC, убедитесь что в
файле /etc/rc.conf содержатся правильные
настройки для работы в качестве KDC (вам может
потребоваться изменить пути в соответствии с собственной
системой):kerberos5_server_enable="YES"
-kadmind5_server_enable="YES"
-kerberos_stash="YES"
-
-
- Параметр существует только в
- &os; 4.X.
-
+kadmind5_server_enable="YES"
Затем приступим к редактированию файла настройки
Kerberos,
/etc/krb5.conf:[libdefaults]
default_realm = EXAMPLE.ORG
[realms]
EXAMPLE.ORG = {
kdc = kerberos.example.org
admin_server = kerberos.example.org
}
[domain_realm]
.example.org = EXAMPLE.ORGОбратите внимание что в файле /etc/krb5.conf
подразумевается наличие у KDC полного имени
kerberos.example.org. Вам потребуется
добавить CNAME (синоним) к файлу зоны, если у
KDC другое имя.Для больших сетей с правильно настроенным сервером
BIND DNS пример выше
может быть урезан до:[libdefaults]
default_realm = EXAMPLE.ORGСо следующими строками, добавленными в файл зоны
example.org:_kerberos._udp IN SRV 01 00 88 kerberos.example.org.
_kerberos._tcp IN SRV 01 00 88 kerberos.example.org.
_kpasswd._udp IN SRV 01 00 464 kerberos.example.org.
_kerberos-adm._tcp IN SRV 01 00 749 kerberos.example.org.
_kerberos IN TXT EXAMPLE.ORGЧтобы клиенты могли найти сервисы
Kerberos,
необходимо наличие или полностью
настроенного /etc/krb5.conf или минимально
настроенного /etc/krb5.confи правильно настроенного DNS
сервера.Создадим теперь базу данных Kerberos.
Эта база данных содержит ключи всех основных хостов, зашифрованных
с помощью главного пароля. Вам не требуется помнить этот пароль,
он хранится в файле (/var/heimdal/m-key).
Для создания главного ключа запустите kstash
и введите пароль.Как только будет создан главный ключ, вы можете инициализировать
базу данных с помощью программы kadmin с ключом
-l (означающим local). Этот
ключ сообщает kadmin обращаться к файлам базы
данных непосредственно вместо использования сетевого сервиса
kadmind. Это помогает решить проблему
курицы и яйца, когда обращение идет к еще не созданной базе
данных. Как только вы увидите приглашение kadmin,
используйте команду init для создания базы
данных идентификаторов.Наконец, оставаясь в приглашении kadmin,
создайте первую запись с помощью команды add.
Оставьте неизменными параметры по умолчанию, вы всегда сможете
изменить их позже с помощью команды modify.
Обратите внимание, что вы всегда можете использовать команду
? для просмотра доступных параметров.Пример создания базы данных показан ниже:&prompt.root; kstash
Master key: xxxxxxxx
Verifying password - Master key: xxxxxxxx
&prompt.root; kadmin -l
kadmin> init EXAMPLE.ORG
Realm max ticket life [unlimited]:
kadmin> add tillman
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Attributes []:
Password: xxxxxxxx
Verifying password - Password: xxxxxxxxТеперь пришло время запустить сервисы KDC.
Выполните команды /etc/rc.d/kerberos start и
/etc/rc.d/kadmind start для запуска сервисов.
Заметьте, что ни один из поддерживающих
Kerberos
даемонов на этот момент запущен не будет, но у вас должна быть
возможность убедиться в том, что KDC функционирует
путем получения списка доступа для пользователя, которого вы только
что самостоятельно создали из командной строки самого
KDC:&prompt.user; k5init tillman
tillman@EXAMPLE.ORG's Password:
&prompt.user; k5list
Credentials cache: FILE:/tmp/krb5cc_500
Principal: tillman@EXAMPLE.ORG
Issued Expires Principal
Aug 27 15:37:58 Aug 28 01:37:58 krbtgt/EXAMPLE.ORG@EXAMPLE.ORGСервер Kerberos с сервисами
HeimdalKerberos5включение сервисовДля начала нам потребуется копия файла настройки
Kerberos,
/etc/krb5.conf.
Просто скопируйте его с KDC на клиентский
компьютер безопасным способом (используя сетевые утилиты, такие
как &man.scp.1;, или физически, с помощью дискеты).Затем вам понадобится файл /etc/krb5.keytab.
Это основное различие между сервером, поддерживающим
Kerberos и рабочими станциями —
на сервере должен быть файл keytab.
В этом файле находится центральный ключ сервера, который позволяет
KDC проверять все другие идентификаторы. Он
должен быть помещен на сервер безопасным способом, поскольку
безопасность сервера может быть нарушена, если ключ станет
общедоступен. Это означает, что его передача через прозрачный
канал, такой как FTP — очень плохая
идея.Обычно перенос файла keytab на сервер
производится с помощью программы kadmin.
Это удобно, поскольку вам потребуется также создать запись хоста
(KDC часть krb5.keytab)
с помощью kadmin.Обратите внимание, что должны быть уже зарегистрированы в
системе и необходимо наличие прав на использование интерфейса
kadmin в файле kadmind.acl.
Обратитесь к разделу Remote administration в info
страницах Heimdal (info heimdal) за деталями по
составлению списка доступа. Если вы не хотите включать удаленный
доступ kadmin, можете просто подключиться к
KDC через защищенное соединение (локальную
консоль, &man.ssh.1; или Kerberos
&man.telnet.1;) и выполнять администрирование локально с помощью
kadmin -l.После добавления файла /etc/krb5.conf,
вы можете использовать kadmin с сервера
Kerberos. Команда
add --random-key позволит вам добавить запись
для сервера, а команда ext позволит перенести
эту запись в собственный keytab файл сервера. Например:&prompt.root; kadmin
kadmin> add --random-key host/myserver.example.org
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Attributes []:
kadmin> ext host/myserver.example.org
kadmin> exitОбратите внимание, что команда ext
(сокращение от extract) сохраняет полученный ключ в
файле /etc/krb5.keytab по умолчанию.Если на KDC не запущен
kadmind (возможно по соображениям безопасности)
и вы не можете получить доступ к kadmin
удаленно, возможно добавление записи хоста
(host/myserver.EXAMPLE.ORG) непосредственно
на KDC с последующим извлечением ее во временный
файл (и перезаписью /etc/krb5.keytab на
KDC) примерно так:&prompt.root; kadmin
kadmin> ext --keytab=/tmp/example.keytab host/myserver.example.org
kadmin> exitЗатем вы можете скопировать keytab на сервер защищенным способом
(например, используя scp или дискету).
Убедитесь, что используемое имя keytab не совпадает с именем
по умолчанию во избежание перезаписывания keytab на
KDC.Теперь ваш сервер может связываться с KDC
(добавлен файл krb5.conf) и идентифицировать
себя (добавлен файл krb5.keytab). Теперь вы
готовы к включению некоторых сервисов
Kerberos. В этом примере мы включим
сервис telnet, поместив в
/etc/inetd.conf нижеприведенную строку и
перезапустив сервис &man.inetd.8; командой
/etc/rc.d/inetd restart:telnet stream tcp nowait root /usr/libexec/telnetd telnetd -a userОчень важно установить ключ -a (тип
аутентификации) в user. Обратитесь к странице справочника
&man.telnetd.8; за подробной информацией.Клиент Kerberos с HeimdalKerberos5настройка клиентовНастройка клиентского компьютера почти тривиально проста.
Как только настройка Kerberos закончена,
вам потребуется только файл настройки
Kerberos,
/etc/krb5.conf. Просто скопируйте его
безопасным способом на клиентский компьютер с
KDC.Протестируйте клиентский компьютер, попытавшись использовать
kinit, klist, и
kdestroy для получения, отображения и удаления
списка доступа. Соединитесь с Kerberos
севером используя клиент Kerberos, если
соединение не работает и получение доступа является проблемой,
это скорее всего проблема сервера, а не клиента или
KDC.При тестировании приложения вроде telnet,
попробуйте использовать программу перехвата пакетов (такую
как &man.tcpdump.1;), чтобы убедиться, что ваш пароль не передается
незашифрованным. Попробуйте использовать telnet
с параметром -x, чтобы зашифровать весь поток
данных (подобно ssh).Основные клиентские приложения
Kerberos (традиционно называющиеся
kinit, klist,
kdestroy, и
kpasswd) находятся в базовой установке &os;.
Обратите внимание, что в &os; версий до 5.0 они были переименованы
в k5init, k5list,
k5destroy, k5passwd, и
k5stash (хотя их обычно использовали лишь
однократно).Различные неосновные клиентские приложения
Kerberos также устанавливаются по
умолчанию. Здесь проявляется минимальность
базовой установки Heimdal: telnet это
единственное приложение, поддерживающее
Kerberos.Порт Heimdal добавляет некоторые отсутствующие клиентские
приложения: поддерживающие
Kerberos версии
ftp, rsh,
rcp, rlogin, и некоторые
другие реже используемые программы. Порт MIT
также содержит полный пакет клиентских приложений
Kerberos.Пользовательские файлы настройки: .k5login
и .k5users.k5login.k5usersУчётные записи пользователя в
Kerberos (например
tillman@EXAMPLE.ORG) обычно связаны с
локальными учётными записями (например с локальной учётной записью6
tillman). Клиентские приложения, такие как
telnet, обычно не требуют указания имени
пользователя или учётной записи.Тем не менее, время от времени вам может потребоваться дать
доступ к локальной учётной записи кому-то, у кого нет
соответствующей учётной записи Kerberos.
Например, пользователю tillman@EXAMPLE.ORG
может потребоваться доступ к локальной учётной записи
webdevelopers. Другим учётным записям
также может потребоваться доступ к этой локальной учётной
записи.Файлы .k5login и
.k5users, помещенные в домашний каталог
пользователя, могут быть использованы подобно действенной
комбинации .hosts и
.rhosts для решения этой проблемы.
Например, файл .k5login
со следующим содержанием:tillman@example.org
jdoe@example.orgпомещен в домашний каталог локального пользователя
webdevelopers, то обе упомянутые учётные
записи получат доступ к этой учётной записи без необходимости
наличия общего пароля.Рекомендуется прочитать страницу справочника по этим командам.
Обратите внимание, что страница справочника о
ksu содержит информацию по
.k5users.Подсказки, советы и решение проблем с
KerberosKerberos5решение проблемПри использовании портов как Heimdal так и
MIT Kerberos
убедитесь, что в PATH версии
Kerberos клиентов указаны перед
их версиями в базовой системе.Все ли компьютеры в пределах данного realm
синхронизированы по времени? Если нет, аутентификация может
завершиться неудачно. описывает
как синхронизировать часы с использованием
NTP.MIT и Heimdal успешно взаимодействуют.
За исключением kadmin, протокол для которого
не стандартизован.Если вы изменяете hostname, потребуется также изменить
учётную запись host/ и обновить keytab.
Это также необходимо для специальных записей в keytab, таких
как www/ запись модуля Apache
www/mod_auth_kerb.Все хосты под общим идентификатором должны разрешаться
DNS (прямое и обратное разрешение), или
как минимум через /etc/hosts. Записи
CNAME будут работать, но записи A и PTR должны быть корректны
и находиться на своем месте. Сообщение об ошибке не всегда
интуитивно понятно:
Kerberos5 refuses authentication because Read req
failed: Key table entry not found.Некоторые операционные системы, способные работать в качестве
клиентов KDC не устанавливают права
для ksu в setuid root.
Это означает, что ksu не работает, что хорошо
является хорошей идеей для безопасности, но неудобно. Это не
ошибка KDC.С MIT
Kerberos, если вы хотите продлить
действие доступа до значения большего, чем десять часов по
умолчанию, используйте команду
modify_principal в
kadmin для изменения maxlife доступа к самой
учётной записи и к учётной записи krbtgt.
Затем возможно использование kinit
с параметром -l для запроса доступа с большим
временем действия.Если вы запускаете перехватчик пакетов на
KDC для разрешения проблем, а затем
запускаете kinit с рабочей станции, то
увидите, что TGT посылается непосредственно
при запуске kinit — даже до того, как
вы введете пароль! Объяснение в том, что сервер
Kerberos свободно распространяет
TGT (Ticket Granting Ticket) на каждый
неавторизованный запрос; однако, каждый TGT
зашифрован ключом, полученным из пароля пользователя.
Следовательно, когда пользователь вводит свой пароль, он не
отправляется на KDC, а используется для
расшифровка TGT, который уже получен
kinit. Если в процессе расшифровки
получается правильный билет с правильным значением времени,
у пользователя есть действующее удостоверение.
Это удостоверение содержит ключ сессии для установления
безопасного соединения с сервером
Kerberos, как и действующий
TGT, зашифрованный ключом сервера
Kerberos. Второй уровень шифрования
недоступен пользователю, но позволяет серверу
Kerberos проверять правильность
каждого TGT.Если вы хотите установить большое время жизни доступа
(например, неделю), и используете
OpenSSH для соединения с компьютером,
где хранится билет, убедитесь, что параметр
Kerberos
установлен в
no в файле sshd_config,
или билеты будут уничтожены при выходе из сеанса.Запомните, что время жизни билетов хостов больше.
Если время жизни билета для учётной записи пользователя
составляет неделю, а время жизни учётной записи хоста, к
которому вы подсоединяетесь девять часов, учётная запись хоста
в кэше устареет и кэш билетов будет работать не так, как
ожидается.При настройке файла krb5.dict на
предотвращение использования определенных плохих паролей
(страница справочника для kadmind кратко
рассказывает об этом), запомните, что это применимо только
к учётным записям, для которых действует политика паролей.
Формат файла krb5.dict прост: одно слово
на строку. Может помочь создание символической ссылки на
/usr/share/dict/words.Отличия от порта MITОсновное различие между установками MIT и
Heimdal относится к программе kadmin,
которая имеет другой (но эквивалентный) набор команд и
использует другой протокол. Если ваш KDC
работает на MIT, вы не сможете использовать
kadmin для удаленного администрирования
KDC (и наоборот, по этой же причине).Опции командной строки клиентов также могут немного отличаться
для одинаковых задач. Рекомендуется следование инструкциям
на MIT Kerberos
Web-сайте ().
Будьте внимательны при определении PATH:
порт MIT устанавливается по умолчанию в
/usr/local/, и если в PATH
вначале указаны системные каталоги, вместо приложений
MIT могут быть запущены системные
приложения.С портом MIT
security/krb5, предоставляемым
&os;, убедитесь что файл
/usr/local/share/doc/krb5/README.FreeBSD
установлен портом, если вы хотите понять почему вход через
telnetd и klogind
иногда происходит так странно. Наиболее важно, исправление
incorrect permissions on cache file требует
использования бинарного файла login.krb5
для аутентификации, чтобы права на переданное удостоверение
передавались правильно.Преодоление ограничений, обнаруженных в
KerberosKerberos5ограничения и недостаткиKerberos это все или ничегоКаждый сервис, работающий в сети, должен быть модифицирован
для работы с Kerberos (или другим
способом защищен от атак по сети) или удостоверения пользователей
могут быть украдены или использованы повторно. В качестве примера
может быть приведено использование
Kerberos версий
оболочек для удаленной работы (например через
rsh и telnet), при
наличии POP3 сервера, получающего пароли в
незашифрованном виде.Kerberos предназначен для
однопользовательских рабочих станцийВ многопользовательской среде
Kerberos менее безопасен.
Это потому, что он хранит билеты в каталоге
/tmp, которая доступна для чтения всем.
Если пользователь работает с несколькими другими пользователями
одновременно на одном компьютере (т.е. в многопользовательской
среде), возможна кража (копирование) билета другим
пользователем.Решить проблему можно с помощью параметра командной
строки -c или (предпочтительно) с помощью
переменной окружения KRB5CCNAME, но это делается
редко. Для преодоления ограничения достаточно сохранять билет
в домашнем каталоге пользователя и использовать простые
ограничения на доступ к файлам.От KDC зависит вся системаАрхитектура системы такова, что KDC должен
быть максимально защищен, поскольку главный пароль базы данных
содержится в нем. На KDC не должно быть
запущено никаких других сервисов и он должен быть защищен
физически. Опасность велика, поскольку
Kerberos хранит все пароли
зашифрованными одним ключом (главным ключом),
который хранится в файле на KDC.Хорошей новостью является то, что кража главного ключа
не станет такой проблемой, как может показаться. Главный ключ
используется только для шифрования базы данных
Kerberos и в качестве seed для
генератора случайных чисел. Поскольку доступ к
KDC защищен, атакующий мало что сможет сделать
с главным ключом.Кроме того, если KDC станет недоступен
(возможно по причине атак DoS или проблем в сети) сетевые сервисы
будет невозможно использовать, поскольку аутентификация не
может быть выполнена.
Уменьшить последствия можно при наличии нескольких
KDC (один главный и один или несколько
резервных) и с аккуратно реализованной резервной аутентификацией
(отлично подойдет PAM).Недостатки KerberosKerberos позволяет пользователям,
хостам и сервисам производить аутентификацию друг друга.
В нем нет механизма аутентификации KDC
для пользователей, хостов или сервисов. Это означает, что
поддельный kinit (например) может записывать
все имена пользователей и паролей. Помочь решить проблему может
security/tripwire или
другой инструмент проверки целостности файловой системы.Ресурсы и информация для дальнейшего изученияKerberos5внешние ресурсыKerberos FAQРазработка
системы аутентификации: диалог в четырех сценахRFC 1510,
Kerberos Network Authentication Service
(V5)Домашняя страница
MIT
KerberosДомашняя страница
Heimdal KerberosTomRhodesНаписал: OpenSSLбезопасностьOpenSSLОдной из программ, требующих особого внимания пользователей,
является набор программ OpenSSL,
включенный в &os;. OpenSSL предоставляет
уровень шифрования поверх обычных уровней соединения; следовательно,
он может быть использован многими сетевыми приложениями и
сервисами.OpenSSL может использоваться для
шифрования соединений почтовых клиентов, транзакций через интернет,
например для кредитных карт, и многого другого. Многие порты,
такие как www/apache13-ssl и
mail/sylpheed-claws собираются
с OpenSSL.В большинстве случаев в Коллекции Портов будет сделана попытка
построения порта security/openssl,
если только переменная WITH_OPENSSL_BASE
не установлена явно в yes.Версия OpenSSL, включаемая
в &os;, поддерживает сетевые протоколы безопасности
Secure Sockets Layer v2/v3 (SSLv2/SSLv3),
Transport Layer Security v1 (TLSv1) и может быть использована
в качестве основной криптографической библиотеки.Хотя OpenSSL поддерживает алгоритм
IDEA, по умолчанию он отключен из-за патентных
ограничений Соединенных Штатов. Для его использования необходимо
ознакомиться с лицензией, и, если ограничения приемлемы,
установить в make.conf переменную
MAKE_IDEA.Наиболее часто OpenSSL
используется для создания сертификатов, используемых программными
пакетами. Эти сертификаты подтверждают, что данные компании
или частного лица верны и не подделаны. Если рассматриваемый
сертификат не был проверен одним из нескольких сертификационных центров
(Certificate Authorities - CA), обычно
выводится предупреждение. Центр сертификации представляет собой
компанию, такую, как
VeriSign, которая подписывает сертификаты для подтверждения
данных частных лиц или компаний. Эта процедура не бесплатна
и не является абсолютно необходимой для использования сертификатов;
однако может успокоить некоторых особо осторожных
пользователей.Генерирование сертификатовOpenSSLгенерирование сертификатовДля генерирования сертификатов доступна следующая
команда:&prompt.root; openssl req -new -nodes -out req.pem -keyout cert.pem
Generating a 1024 bit RSA private key
................++++++
.......................................++++++
writing new private key to 'cert.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:PA
Locality Name (eg, city) []:Pittsburgh
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
Organizational Unit Name (eg, section) []:Systems Administrator
Common Name (eg, YOUR name) []:localhost.example.org
Email Address []:trhodes@FreeBSD.org
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:SOME PASSWORD
An optional company name []:Another NameВвод после приглашения Common Name
содержит имя домена. Здесь вводится имя сервера для
верификации; помещение в это поле чего-либо кроме
этого имени приведет к созданию бесполезного сертификата.
Доступны и другие параметры, например срок действия,
альтернативные алгоритмы шифрования и т.д. Полный список
находится на странице справочного руководства
&man.openssl.1;.В текущем каталоге, из которого была вызвана вышеуказанная
команда, должны появиться два файла. Файл
req.pem с запросом на сертификацию может быть
послан в центр выдачи сертификатов, который проверит введённые вами
подтверждающие данные, подпишет запрос и возвратит сертификат вам.
Второй созданный файл будет иметь название
cert.pem и содержать приватный сертификационный
ключ, который необходимо тщательно защищать; если он попадёт в руки
посторонних лиц, то может быть использован для имитации лично вас (или
вашего сервера).Когда подпись CA не требуется, может
быть создан самоподписанный сертификат. Сначала создайте ключ
RSA:&prompt.root; openssl dsaparam -rand -genkey -out myRSA.key 1024Теперь создайте ключ CA:&prompt.root; openssl gendsa -des3 -out myca.keymyRSA.keyИспользуйте этот ключ при создании сертификата:&prompt.root; openssl req -new -x509 -days 365 -key myca.key -out new.crtВ каталоге должно появиться два новых файла: подпись сертификата,
myca.key и сам сертификат,
new.crt. Они должны быть помещены в каталог,
доступный для чтения только root,
желательно внутри /etc.
Права на каталог можно изменить chmod с параметрами
0700.Использование сертификатов, примерИтак, что могут сделать эти файлы? Хорошим применением
может стать шифрование соединений для
Sendmail MTA.
Это сделает ненужным использование простой текстовой
аутентификации для тех, кто отправляет почту через
локальный MTA.Это не лучшее из возможных использований, поскольку
некоторые MUA выдадут ошибку, если
сертификат не установлен локально. Обратитесь к
поставляемой с программой документации за информацией по
установке сертификата.Следующие строки должны быть помещены в локальный файл
.mc:dnl SSL Options
define(`confCACERT_PATH',`/etc/certs')dnl
define(`confCACERT',`/etc/certs/new.crt')dnl
define(`confSERVER_CERT',`/etc/certs/new.crt')dnl
define(`confSERVER_KEY',`/etc/certs/myca.key')dnl
define(`confTLS_SRV_OPTIONS', `V')dnlГде /etc/certs/
это каталог для локального хранения сертификата и
ключей. После настройки необходимо собрать локальный
файл .cf. Это легко сделать,
набрав makeinstall
в каталоге /etc/mail.
Затем выполните команду makerestart, которая должна запустить
даемон Sendmail.Если все пройдет нормально, в файле
/var/log/maillog не появятся сообщения
об ошибках и запустится процесс
Sendmail.Для проведения простого теста подключитесь к почтовому серверу
программой &man.telnet.1;:&prompt.root; telnet example.com 25
Trying 192.0.34.166...
Connected to example.com.
Escape character is '^]'.
220 example.com ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT)
ehlo example.com
250-example.com Hello example.com [192.0.34.166], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN
250-STARTTLS
250-DELIVERBY
250 HELP
quit
221 2.0.0 example.com closing connection
Connection closed by foreign host.Если в выводе появилась строка STARTTLS,
все работает правильно.NikClaytonnik@FreeBSD.orgНаписал IPsecVPN через IPsecСоздание VPN между двумя сетями, соединенными через интернет,
с использованием шлюзов FreeBSD.Hiten M.Pandyahmp@FreeBSD.orgНаписал Принципы работы IPsecЭтот раздел послужит вам руководством по настройке IPsec и его
использованию в среде FreeBSD и µsoft.windows;
2000/XP, соединяемых безопасным способом.
Для настройки IPsec необходимо ознакомиться с процессом
сборки ядра ().IPsec это протокол, расположенный поверх
слоя Internet Protocol (IP). Он позволяет двум или более хостам
связываться защищенным способом (отсюда и название протокола).
Сетевой стек FreeBSD IPsec основан на
реализации KAME,
поддерживающей оба семейства протоколов, IPv4 и IPv6.
- FreeBSD 5.X содержит аппаратно
+ FreeBSD содержит аппаратно
поддерживаемый стек IPsec, известный как Fast
IPsec, заимствованный из OpenBSD. Для оптимизации
производительности IPsec он задействует криптографическое
оборудование (когда оно доступно) через подсистему &man.crypto.4;.
Это новая подсистема и она не поддерживает всех возможностей,
доступных в KAME версии IPsec. Для включения IPsec с аппаратной
поддержкой необходимо добавить в файл настройки ядра следующий
параметр:параметры ядраFAST_IPSECoptions FAST_IPSEC # new IPsec (cannot define w/ IPSEC)Обратите внимание, что на данный момент невозможно
использовать подсистему Fast IPsec вместе
с KAME реализацией IPsec. Обратитесь к странице справочника
&man.fast.ipsec.4; за дальнейшей информацией.IPsecESPIPsecAHIPsec состоит из двух подпротоколов:Encapsulated Security Payload
(ESP), защищающей данные IP пакета от вмешательства
третьей стороны путем шифрования содержимого с помощью
симметричных криптографических алгоритмов (таких как
Blowfish,3DES).Authentication Header (AH),
защищающий заголовок IP пакета от вмешательства третьей стороны
и подделки путем вычисления криптографической контрольной суммы
и хеширования полей заголовка IP пакета защищенной функцией
хеширования. К пакету добавляется дополнительный заголовок
с хэшем, позволяющий аутентификацию информации пакета.ESP и AH могут быть
использованы вместе или по отдельности, в зависимости от
обстоятельств.VPNвиртуальная частная сетьVPNIPsec может быть использован или для непосредственного шифрования
трафика между двумя хостами (транспортный
режим); или для построения виртуальных
туннелей между двумя подсетями, которые могут быть
использованы для защиты соединений между двумя корпоративными
сетями (туннельный режим). Последний обычно
называют виртуальной частной сетью
(Virtual Private Network, VPN). За детальной информацией о
подсистеме IPsec в FreeBSD обратитесь к странице справочника
&man.ipsec.4;.Для включения поддержки IPsec в ядре, добавьте следующие
параметры к файлу настройки ядра:параметры ядраIPSECпараметры ядраIPSEC_ESPoptions IPSEC #IP security
options IPSEC_ESP #IP security (crypto; define w/ IPSEC)параметры ядраIPSEC_DEBUGЕсли желательна поддержка отладки IPsec, должна быть также
добавлена следующая строка:
options IPSEC_DEBUG #debug for IP security
ПроблемаНе существует стандарта VPN. Они могут быть реализованы
множеством различных технологий, каждая из которых имеет свои
сильные и слабые стороны. Этот раздел представляет
сценарий и стратегию реализации VPN для этого сценария.Сценарий: Две сети, подключенных к интернет, работающие как
однаVPNсозданиеИсходные условия таковы:Существует как минимум две сетиВнутри обеих сетей используется IPОбе сети соединены через интернет через шлюз,
работающий на FreeBSD.У шлюза каждой из сетей есть как минимум один публичный
IP адрес.Внутренние IP адреса двух сетей могут быть публичными или
приватными, не имеет значения. На шлюзе может работать
NAT, если это необходимо.Внутренние IP адреса двух сетей не должны
пересекаться. Хотя вероятно теоретически возможно
использование комбинации VPN технологии и NAT для настройки
такой конфигурации, эта конфигурация будет кошмарна.Если две сети, которые вы пытаетесь соединить, используют один
и тот же диапазон приватных адресов (например, обе используют
192.168.1.x), номера в одной из
сетей необходимо изменить.Топология сети может выглядеть примерно так:Сеть #1 [ Внутренние хосты ] Приватная сеть, 192.168.1.2-254
[ Win9x/NT/2K ]
[ UNIX ]
|
|
.---[fxp1]---. Приватный IP, 192.168.1.1
| FreeBSD |
`---[fxp0]---' Публичный IP, A.B.C.D
|
|
-=-=- Интернет -=-=-
|
|
.---[fxp0]---. Публичный IP, W.X.Y.Z
| FreeBSD |
`---[fxp1]---' Приватный IP, 192.168.2.1
|
|
Сеть #2 [ Внутренние хосты ]
[ Win9x/NT/2K ] Приватная сеть, 192.168.2.2-254
[ UNIX ]Заметьте, что здесь присутствуют два публичных IP-адреса. В
дальнейшем для их обозначения
будут использоваться буквы. Если вы увидите эти буквы, замените
их на свои публичные IP адреса. Также обратите внимание, что
у обеих шлюзов внутренний адрес заканчивается на .1 и диапазоны
приватных адресов двух сетей различны (192.168.1.x и 192.168.2.x соответственно). Все компьютеры
локальных сетей настроены на использование в качестве шлюза по
умолчанию компьютера с адресом, оканчивающимся на
.1.С сетевой точки зрения замысел в том, чтобы каждая сеть
видела компьютеры из другой сети так, как если бы они были
непосредственно подключены к тому же самому маршрутизатору —
хотя и немного медленному маршрутизатору, иногда теряющему
пакеты.Это означает, что (например) компьютер 192.168.1.20 может запуститьping 192.168.2.34и это будет прозрачно работать. Компьютеры с &windows;
должны видеть компьютеры в другой сети, просматривать сетевые
ресурсы, и так далее, точно так же, как и для компьютеров в
локальной сети.И все это безопасным способом. Это означает, что трафик
между сетями зашифрован.Создание VPN между этими двумя сетями это многошаговый
процесс. Этапы создания VPN таковы:Создание виртуального сетевого подключения
между двумя сетями через интернет. Тестирование подключения с
помощью таких инструментов как &man.ping.8;, чтобы убедиться, что
оно работает.Применение политики безопасности чтобы убедиться, что трафик
между двумя сетями прозрачно шифруется и расшифровывается если
необходимо. Тестирование с помощью таких инструментов как
&man.tcpdump.1;, чтобы убедиться, что трафик шифруется.Настройка дополнительных программ на шлюзах &os;,
чтобы компьютеры &windows; из одной сети видели компьютеры
в другой через VPN.Шаг 1: Создание и тестирование виртуального
сетевого подключенияПредположим, что вы работаете на шлюзе сети #1 (с публичным
адресом A.B.C.D, приватным
адресом 192.168.1.1) и запускаете
ping 192.168.2.1, т.е. на приватный адрес
машины с IP адресом W.X.Y.Z.
Что должно произойти, чтобы это сработало?Шлюз должен знать, как достичь 192.168.2.1. Другими словами, у него
должен быть маршрут к 192.168.2.1.Приватные IP адреса, такие как диапазон 192.168.x не адресуются в
интернет. Каждый пакет, отправляемый на
192.168.2.1 должен быть
завернут в другой пакет. Исходным адресом пакета
должен быть A.B.C.D,
а адресом назначения W.X.Y.Z.
Этот процесс называется
инкапсуляцией.Как только этот пакет достигнет W.X.Y.Z, необходимо будет
декапсулировать его и доставить к 192.168.2.1.Как вы можете увидеть, это требует туннеля
между двумя сетями. Два конца туннеля
это IP адреса A.B.C.D и
W.X.Y.Z. Туннель используется для
передачи трафика с приватными IP адресами через интернет.В FreeBSD этот туннель создается с помощью устройства generic
interface, или gif. Как вы можете
догадаться, интерфейс gif на каждом хосте
должен быть настроен с четырьмя IP адресами; два для публичных
IP адресов и два для приватных IP адресов.В ядро обеих компьютеров FreeBSD должна быть встроена
поддержка устройства gif. Вы можете сделать это, добавив
строку:device gifк файлу настройки ядра на обеих компьютерах, с последующей
компиляцией, установкой и перезагрузкой.Настройка туннеля это двухшаговый процесс. Во-первых,
необходимо задать сведения о внешнем (или публичном) IP адресе
- с помощью &man.gifconfig.8;. Затем о приватном IP адресе
+ с помощью &man.ifconfig.8;. Затем о приватном IP адресе, также
с помощью &man.ifconfig.8;.
-
- В &os; 5.X функциональность, предоставляемая утилитой
- &man.gifconfig.8;, была внесена в &man.ifconfig.8;.
-
-
На шлюзе сети #1 для настройки туннеля вам потребуется запустить
следующие две команды.
- gifconfig gif0 A.B.C.D W.X.Y.Z
+ ifconfig gif0 A.B.C.D W.X.Y.Z
ifconfig gif0 inet 192.168.1.1 192.168.2.1 netmask 0xffffffff
На другом шлюзе подобные команды, но с IP адресами в обратном
порядке.
- gifconfig gif0 W.X.Y.Z A.B.C.D
+ ifconfig gif0 W.X.Y.Z A.B.C.D
ifconfig gif0 inet 192.168.2.1 192.168.1.1 netmask 0xffffffff
Затем вы можете запустить:
- gifconfig gif0
+ ifconfig gif0для просмотра настройки. Например, на шлюзе сети #1
вы увидите:
- &prompt.root; gifconfig gif0
+ &prompt.root; ifconfig gif0
gif0: flags=8011<UP,POINTTOPOINT,MULTICAST> mtu 1280
inet 192.168.1.1 --> 192.168.2.1 netmask 0xffffffff
physical address inet A.B.C.D --> W.X.Y.Z
Как вы можете видеть, был создан туннель между физическими
адресами A.B.C.D и
W.X.Y.Z, для туннелирования разрешен
трафик между 192.168.1.1 и 192.168.2.1.Это также добавляет запись к таблице маршрутизации на обеих
машинах, вы можете проверить запись командой netstat
-rn. Вот вывод этой команды на шлюзе сети #1.&prompt.root; netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
...
192.168.2.1 192.168.1.1 UH 0 0 gif0
...
Как показывает значение поля Flags, это маршрут
к хосту, что означает, что каждый шлюз знает, как достичь другого
шлюза, но не знает как достичь остальной части соответствующей сети.
Эта проблема будет быстро решена.Вероятно, на обеих машинах запущен брандмауэр. VPN
должен обходить его. Вы можете разрешить весь трафик между
двумя сетями, или включить правила, защищающие каждый конец
соединения от другого.Это сильно упрощает тестирование настройки брандмауэра,
если вы разрешаете весь трафик через VPN. Вы всегда можете
Вы всегда можете усилить защиту позже. Если вы используете
на шлюзах &man.ipfw.8;, команда вроде этойipfw add 1 allow ip from any to any via gif0разрешит весь трафик между двумя концами VPN без влияния на
другие правила брандмауэра. Очевидно, вам потребуется
запустить эту команду на обеих шлюзах.Этого достаточно для включения ping с одного шлюза на другой.
На 192.168.1.1, вы сможете
запуститьping 192.168.2.1и получить ответ, и аналогично на другом шлюзе.Однако, машины в другой сети пока недоступны. Это из-за
маршрутизации — хотя шлюзы знают, как связаться друг с
другом, они не знают, как связаться с сетью за другим шлюзом.Для решения этой проблемы вы должны добавить статический маршрут
на каждом шлюзе. Команда на первом шлюзе будет выглядеть так:route add 192.168.2.0 192.168.2.1 netmask 0xffffff00
Она говорит Для достижения хостов в сети
192.168.2.0, отправляйте пакеты
хосту 192.168.2.1. Вам
потребуется запустить похожую команду на другом шлюзе, но с
адресами 192.168.1.x.IP трафик с хостов в одной сети теперь может достичь хосты в
другой сети.Теперь создано две трети VPN между двумя сетями, поскольку
это виртуальная (virtual)сеть (network).
Она еще не приватная (private). Вы можете протестировать ее
с помощью &man.ping.8; и &man.tcpdump.1;. Войдите на шлюз и
запуститеtcpdump dst host 192.168.2.1В другой сессии на этом же хосте запуститеping 192.168.2.1Вы увидите примерно такие строки:
16:10:24.018080 192.168.1.1 > 192.168.2.1: icmp: echo request
16:10:24.018109 192.168.1.1 > 192.168.2.1: icmp: echo reply
16:10:25.018814 192.168.1.1 > 192.168.2.1: icmp: echo request
16:10:25.018847 192.168.1.1 > 192.168.2.1: icmp: echo reply
16:10:26.028896 192.168.1.1 > 192.168.2.1: icmp: echo request
16:10:26.029112 192.168.1.1 > 192.168.2.1: icmp: echo reply
Как вы видите, ICMP сообщения пересылаются вперед и назад
незашифрованными. Если вы использовали с &man.tcpdump.1; параметр
для получения большего объема данных пакета,
то увидите больше информации.Конечно же это неприемлемо. В следующем разделе мы обсудим
защиту соединения между двумя сетями, так что весь трафик будет
автоматически шифроваться.Резюме:Настройте оба ядра с device gif.Отредактируйте /etc/rc.conf на шлюзе
#1 и добавьте следующие строки (подставляя IP адреса где
необходимо).gifconfig_gif0="A.B.C.D W.X.Y.Z"
ifconfig_gif0="inet 192.168.1.1 192.168.2.1 netmask 0xffffffff"
static_routes="vpn"
route_vpn="192.168.2.0 192.168.2.1 netmask 0xffffff00"
Отредактируйте скрипт брандмауэра
(/etc/rc.firewall, или подобный) на обеих
хостах и добавьтеipfw add 1 allow ip from any to any via gif0Выполните соответствующие изменения в
/etc/rc.conf на шлюзе #2,
меняя порядок IP адресов.Шаг 2: Защита соединенияДля защиты соединения мы будем использовать IPsec. IPsec
предоставляет хостам механизм определения ключа для шифрования
и для последующего использования этого ключа для шифрования
данных между двумя хостами.Здесь будут рассмотрены два аспекта настройки.У хостов должен быть способ согласования используемого
алгоритма шифрования. Как только хосты договорятся об этом,
можно говорить об установленном между ними
безопасном соединении.Должен быть механизм определения, какой трафик необходимо
шифровать. Конечно, вам не требуется шифровать весь исходящий
трафик — достаточно шифровать только трафик, идущий
через VPN. Правила, определяющие то, какой трафик необходимо
шифровать, называются политикой безопасности.Безопасное соединение и политика безопасности поддерживаются
ядром, и могут быть изменены программами пользователя. Однако
перед тем, как вы сможете сделать это, необходимо настроить
поддержку протоколов IPsec и Encapsulated Security Payload (ESP) в
ядре. Это делается добавлением в настройку ядра параметров:параметры ядраIPSECoptions IPSEC
options IPSEC_ESPс последующим перекомпилированием, переустановкой и
перезагрузкой. Как и прежде вам потребуется сделать это с ядрами на
обеих шлюзах.IKEПри настройке параметров безопасности (security associations)
у вас есть два варианта. Вы можете настроить их вручную для обеих
хостов, задав алгоритм шифрования, ключи для шифрования и так далее,
или использовать даемоны, реализующие Internet Key Exchange protocol
(IKE), который сделает это за вас.Рекомендуется последнее. Помимо прочего, этот способ более
прост.IPsecполитики безопасностиsetkeyРедактирование и отображение политики безопасности выполняется
с помощью &man.setkey.8;. По аналогии, setkey
используется для настройки таблиц политики безопасности ядра так же,
как &man.route.8; используется для настройки таблиц маршрутизации
ядра. setkey также может отображать текущие
параметры безопасности, и продолжая аналогию дальше, это
соответствует netstat -r.Существует множество даемонов для управления параметрами
безопасности в FreeBSD. Здесь будет описано использование одного из
них, racoon — он доступен в составе порта security/ipsec-tools в Коллекции
Портов &os;.racoonДаемон racoon
должен работать на обеих шлюзах. На каждом из хостов
он настраивается с IP адресом другого конца VPN, и секретным
ключом (по вашему выбору, должен быть одним и тем же на обеих
шлюзах).Эти два даемона подключаются друг к другу, подтверждают, что они
именно те, за кого себя выдают (используя секретный ключ, заданный
вами). Затем даемоны генерируют новый секретный ключ и используют
его для шифрования трафика через VPN. Они периодически изменяют
этот ключ, так что даже если атакующий сломает один из ключей
(что теоретически почти невозможно) это не даст ему слишком много
— он сломал ключ, который два даемона уже сменили на
другой.Настройки racoon сохраняются в файле
${PREFIX}/etc/racoon. Этот файл не требует
слишком больших изменений. Другим компонентом настройки
racoon, который потребуется изменить, является предварительный
ключ.В настройке по умолчанию racoon ищет его в файле
${PREFIX}/etc/racoon/psk.txt. Необходимо
отметить, что предварительный ключ не
используется для шифрования трафика через VPN соединение
это просто маркер, позволяющий управляющим ключами даемонам
доверять друг другу.psk.txt содержит строку для каждого
удаленного сервера, с которым происходит соединение. В этом примере
два сервера, каждый файл psk.txt будет
содержать одну строку (каждый конец VPN общается только с другим
концом.На шлюзе #1 эта строка будет выглядеть примерно так:W.X.Y.Z secretТо есть публичный IP-адрес противоположной
стороны, пробел и текстовая строка c секретной фразой. Конечно, вам
не стоит использовать в качестве ключевой фразы слово
secret -- здесь применяются обычные правила
выбора паролей.На шлюзе #2 строка будет выглядеть примерно так:A.B.C.D secretТо есть публичный IP адрес удаленной стороны и та же
секретная фраза. Перед запуском racoon режим доступа к файлу
psk.txt должен быть установлен в
0600 (т.е. запись и чтение только для
root).Вы должны запустить racoon на обоих шлюзах. Вам также
потребуется добавить правила для включения IKE трафика,
передающегося по UDP через порт ISAKMP (Internet Security Association
Key Management Protocol). Опять же, они должны быть
расположены насколько возможно ближе к началу набора правил.ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp
ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp
Как только racoon будет запущен, вы можете попробовать
выполнить ping с одного шлюза на другой. Соединение все еще не
зашифровано, но racoon установит параметры безопасности между
двумя хостами — это может занять время и вы можете заметить
небольшую задержку перед началом ответа команды ping.Как только параметры безопасности установлены, вы можете
просмотреть их используя &man.setkey.8;. Запуститеsetkey -Dна любом из хостов для просмотра информации о параметрах
безопасности.Это одна сторона проблемы. Другая сторона это настройка
политики безопасности.Для создания разумной политики безопасности давайте вспомним,
что уже было настроено. Это рассмотрение относится к обеим
концам соединения.Каждый отправляемый IP пакет имеет заголовок, содержащий информацию
о пакете. Заголовок включает IP адреса источника и назначения.
Как мы уже знаем, приватные IP адреса, такие как 192.168.x.y, не могут появиться в
интернет. Они должны быть сначала включены внутрь другого
пакета. В этом пакете приватные IP адреса источника и назначения
заменяются публичными IP адресами.То есть исходящий пакет, который выглядит примерно так:
.----------------------------.
| Src: 192.168.1.1 |
| Dst: 192.168.2.1 |
| <другие данные заголовка> |
+----------------------------+
| <данные пакета> |
`----------------------------'будет инкапсулирован в другой пакет, выглядящий примерно
так:
.--------------------------------.
| Src: A.B.C.D |
| Dst: W.X.Y.Z |
| <другие данные заголовка> |
+--------------------------------+
| .----------------------------. |
| | Src: 192.168.1.1 | |
| | Dst: 192.168.2.1 | |
| | <другие данные заголовка> | |
| +----------------------------+ |
| | <данные пакета> | |
| `----------------------------' |
`--------------------------------'Этой инкапсуляцией занимается устройство
gif. Как вы можете видеть, теперь
у пакета есть реальный IP адрес, исходный пакет был включен
в этот пакет в виде данных, которые передаются через
интернет.Конечно, мы хотим зашифровать весь трафик между VPN.
Вы можете сформулировать это на словах так:Если пакет отправляется с A.B.C.D, и предназначен для W.X.Y.Z, расшифровать его, используя
необходимые параметры безопасности.Если пакет отправляется с W.X.Y.Z, и предназначен для A.B.C.D, расшифровать его, используя
необходимые параметры безопасности.Это похоже на желаемое, но не совсем то. Если вы сделаете
это, весь трафик от и к W.X.Y.Z,
даже если он не является частью VPN, будет зашифрован. Правильная
политика такова:Если пакет отправляется с A.B.C.D, в нем инкапсулирован другой пакет
и адрес назначения W.X.Y.Z,
зашифровать его, используя необходимые параметры
безопасности.Если пакет отправляется с W.X.Y.Z, в нем инкапсулирован другой пакет
и адрес назначения A.B.C.D,
зашифровать его, используя необходимые параметры
безопасности.Тонкое, но необходимое различие.Политика безопасности также устанавливается с использованием
&man.setkey.8;. В &man.setkey.8; предусмотрен язык определения
политики &man.setkey.8;. Вы можете или ввести инструкции
по настройке со стандартного ввода, или использовать параметр
для задания файла, содержащего эти
инструкции.Настройка на шлюзе #1 (где есть публичный IP адрес
A.B.C.D) для включения шифрования
всего предназначенного W.X.Y.Z
трафика:
spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;
Поместите эти команды в файл (например,
/etc/ipsec.conf) и запустите&prompt.root; setkey -f /etc/ipsec.conf указывает &man.setkey.8; добавить
правило к базе данных политики безопасности. Остальная часть
строки указывает какие пакеты будут соответствовать политике.
A.B.C.D/32 и W.X.Y.Z/32 это IP адреса и сетевые маски,
определяющие сети или хосты, к которым будет применяться данная
политика. В данном случае мы хотим применить их к трафику между
этими двумя хостами. Параметр сообщает
ядру, что эта политика должна применяться только к пакетам,
инкапсулирующим другие пакеты. Параметр
сообщает, что эта политика применяется к исходящим пакетам, и
— то, что пакеты будут
зашифрованы.Оставшаяся часть строки определяет, как эти пакеты будут
зашифрованы. Будет использоваться протокол ,
а параметр показывает, что пакет в дальнейшем
будет инкапсулирован в IPsec пакет. Повторное использование
A.B.C.D и W.X.Y.Z предназначено для выбора
используемых параметров безопасности, и наконец параметр
разрешает шифрование пакетов, попадающих
под это правило.Это правило соответствует только исходящим пакетам. Вам
потребуется похожее правило, соответствующее входящим пакетам.spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require;Обратите внимание, что вместо используется
и IP адреса переставлены.Другому шлюзу (с публичным IP адресом
W.X.Y.Z) потребуются похожие
правила.spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require;
spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;Наконец, вам потребуется добавить правила к брандмауэру
для включения прохождения пакетов ESP и IPENCAP в обе стороны.
На обеих хостах потребуется добавить следующие правила:ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z
ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D
ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z
ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.D
Поскольку правила симметричны, можно использовать их без
изменения на обеих хостах
Исходящие пакеты теперь будут выглядеть примерно так:
.------------------------------. --------------------------.
| Src: A.B.C.D | |
| Dst: W.X.Y.Z | |
| <other header info> | | Encrypted
+------------------------------+ | packet.
| .--------------------------. | -------------. | contents
| | Src: A.B.C.D | | | | are
| | Dst: W.X.Y.Z | | | | completely
| | <other header info> | | | |- secure
| +--------------------------+ | | Encap'd | from third
| | .----------------------. | | -. | packet | party
| | | Src: 192.168.1.1 | | | | Original |- with real | snooping
| | | Dst: 192.168.2.1 | | | | packet, | IP addr |
| | | <other header info> | | | |- private | |
| | +----------------------+ | | | IP addr | |
| | | <packet data> | | | | | |
| | `----------------------' | | -' | |
| `--------------------------' | -------------' |
`------------------------------' --------------------------'
Когда эти пакеты будут получены на удаленном конце VPN
соединения, они будут расшифрованы (используя параметры
безопасности, о которых договорился racoon). Затем они будут
переданы интерфейсу gif, который
развернет второй слой, оставив пакет с внутренними
адресами, который сможет попасть во внутреннюю сеть.Вы можете проверить безопасность тем же &man.ping.8;, который
использовался ранее. Сначала войдите на шлюз A.B.C.D и запустите:tcpdump dst host 192.168.2.1В другой сессии на том же хосте запуститеping 192.168.2.1В этот момент вы должны увидеть примерно это:XXX tcpdump outputТеперь, как видите, &man.tcpdump.1; показывает ESP пакеты. Если
вы попытаетесь просмотреть их с параметром ,
то вероятно увидите нечто непонятное, поскольку применяется
шифрование.Поздравляем. Вы только что настроили VPN между двумя удаленными
сетями.РезюмеНастройте оба ядра с:options IPSEC
options IPSEC_ESP
Установите security/ipsec-tools. Отредактируйте
${PREFIX}/etc/racoon/psk.txt на обеих
шлюзах, добавив запись для каждого IP адреса удаленного хоста
и секретный ключ, который будет известен им обеим. Убедитесь,
что режим доступа к файлу 0600.Добавьте к
/etc/rc.conf на каждом хосте следующие
строки:ipsec_enable="YES"
ipsec_file="/etc/ipsec.conf"
Создайте /etc/ipsec.conf на каждом
хосте с необходимыми строками spdadd. На шлюзе #1 он будет
таким:
spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec
esp/tunnel/A.B.C.D-W.X.Y.Z/require;
spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec
esp/tunnel/W.X.Y.Z-A.B.C.D/require;
А на шлюзе #2 таким:
spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec
esp/tunnel/W.X.Y.Z-A.B.C.D/require;
spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec
esp/tunnel/A.B.C.D-W.X.Y.Z/require;
Добавьте правила к брандмауэрам обеих хостов для
включения IKE, ESP и IPENCAP трафика:
ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp
ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp
ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z
ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D
ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z
ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.D
Двух приведенных шагов должно быть достаточно для настройки
и включения VPN. Машины в каждой сети смогут обращаться друг к
другу по IP адресам, и весь трафик через соединение будет
автоматически надежно зашифрован.ChernLeeПредоставил OpenSSHOpenSSHбезопасностьOpenSSHOpenSSH это набор сетевых инструментов,
используемых для защищенного доступа к удаленным компьютерам.
Он может быть использован в качестве непосредственной замены
rlogin, rsh,
rcp и telnet.
Кроме того, через SSH могут быть безопасно туннелированы и/или
перенаправлены произвольные TCP/IP соединения.
OpenSSH шифрует весь трафик, эффективно
предотвращая кражу данных, перехват соединения и другие сетевые
атаки.OpenSSH поддерживается проектом
OpenBSD, он основан на SSH v1.2.12 со всеми последними исправлениями
- и обновлениями, совместим с протоколами SSH версий 1 и 2.
- OpenSSH включен в базовую систему
- начиная с FreeBSD 4.0.
+ и обновлениями, совместим с протоколами SSH версий 1 и 2.
Преимущества использования OpenSSHОбычно при использовании &man.telnet.1; или &man.rlogin.1;
данные пересылаются по сети в незашифрованной форме. Перехватчик
пакетов в любой точке сети между клиентом и сервером может
похитить информацию о пользователе/пароле или данные, передаваемые
через соединение. Для предотвращения этого
OpenSSH предлагает различные методы
шифрования.Включение sshdOpenSSHвключение
- В &os; версии 4.X даемон sshd
- запускается по умолчанию; начиная с версий 5.X &os; он должен
+ В &os; даемон sshd должен
быть разрешен в процессе инсталляции. За запуск ответственна
следующая строка в файле rc.conf:sshd_enable="YES"При следующей загрузке системы будет запущен &man.sshd.8;, даемон для
OpenSSH. Вы можете также воспользоваться
скриптом /etc/rc.d/sshd системы &man.rc.8;
для запуска OpenSSH:/etc/rc.d/sshd startSSH клиентOpenSSHклиентУтилита &man.ssh.1; работает подобно &man.rlogin.1;.&prompt.root; ssh user@example.com
Host key not found from the list of known hosts.
Are you sure you want to continue connecting (yes/no)? yes
Host 'example.com' added to the list of known hosts.
user@example.com's password: *******Вход продолжится так же, как если бы сессия была инициирована
с использованием rlogin или
telnet. SSH использует систему опознавательных
ключей для проверки подлинности сервера при подключении клиента.
Пользователю предлагается yes только при первом
подключении. Дальнейшие попытки входа предваряются проверкой
сохраненного ключа сервера. SSH клиент сообщит вам, если сохраненный
ключ будет отличаться от только что полученного. Ключи серверов
сохраняются в ~/.ssh/known_hosts, или в
~/.ssh/known_hosts2 для SSH v2.По умолчанию современные серверы OpenSSH
настроены на приём только соединений SSH v2. Клиент будет
использовать версию 2 там, где это возможно, а затем версию 1.
Также, клиент можно заставить использовать конкретную версию при помощи
опций и для указания
соответствующей версии протокола. Версия 1 поддерживается ради
совместимости со старыми серверами.Безопасное копированиеOpenSSHбезопасное копированиеscpКоманда &man.scp.1; работает подобно &man.rcp.1;; она копирует
файл с удаленного компьютера, но делает это безопасным
способом.&prompt.root; scp user@example.com:/COPYRIGHT COPYRIGHT
user@example.com's password: *******
COPYRIGHT 100% |*****************************| 4735 00:00
&prompt.root;Поскольку в предыдущем примере ключ сервера уже был сохранен,
в этом примере он проверяется при использовании &man.scp.1;.Параметры, передаваемые &man.scp.1;, похожи на параметры
&man.cp.1;, с файлом или файлами в качестве первого аргумента и
приемником копирования во втором. Поскольку файлы файлы передаются
по сети через SSH, один или более аргументов принимают форму
.НастройкаOpenSSHнастройкаСистемные файлы настройки для даемона и клиента
OpenSSH расположены в каталоге
/etc/ssh.Файл ssh_config используется для настройки
клиента, а sshd_config для даемона.Кроме того, параметры
(по умолчанию /usr/sbin/sshd), и
rc.conf
дают дополнительные возможности настройки.ssh-keygenВместо использования паролей, с помощью &man.ssh-keygen.1;
можно создать ключи DSA или RSA, которыми
пользователи могут аутентифицироваться:&prompt.user; ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_dsa):
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_dsa.
Your public key has been saved in /home/user/.ssh/id_dsa.pub.
The key fingerprint is:
bb:48:db:f2:93:57:80:b6:aa:bc:f5:d5:ba:8f:79:17 user@host.example.com
&man.ssh-keygen.1; создаст пару публичного и приватного
ключей, используемых для аутентификации. Приватный ключ сохраняется
в ~/.ssh/id_dsa или
~/.ssh/id_rsa, а публичный в
~/.ssh/id_dsa.pub или
~/.ssh/id_rsa.pub (для ключей DSA и RSA
соответственно). Для включения
аутентификации по ключам публичный ключ должен
быть помещен в файл ~/.ssh/authorized_keys
на удаленном компьютере.Это позволяет соединяться с удаленным компьютером с помощью
SSH-ключей вместо паролей.Если при генерации ключей был использован пароль, каждый раз
для при использовании приватного ключа он будет запрашиваться
у пользователя. Для того, чтобы избежать непрерывного набора
кодовой фразы, можно использовать утилиту &man.ssh-agent.1;,
как описано в разделе
ниже.Параметры и имена файлов могут различаться для разных
версий OpenSSH, установленных в системе,
для решения проблем обратитесь к странице справочника
&man.ssh-keygen.1;.Утилиты ssh-agent и ssh-addУтилиты &man.ssh-agent.1; и &man.ssh-add.1; позволяют
сохранять ключи SSH в памяти, чтобы
не набирать кодовые фразы при каждом использовании ключа.Утилита &man.ssh-agent.1; обеспечивает процесс аутентификации
загруженными в нее секретными ключами; для этого утилита
&man.ssh-agent.1; должна запустить внешний процесс. В самом простом
случае это может быть шелл-процесс; в чуть более продвинутом —
оконный менеджер.Для использования &man.ssh-agent.1; совместно с шеллом,
&man.ssh-agent.1; должен быть запущен с именем этого шелла
в качестве аргумента. После этого в его память при помощи
утилиты &man.ssh-add.1; могут быть добавлены необходимые ключи;
при этом будут запрошены соответствующие кодовые фразы.
Добавленные ключи могут затем использоваться для &man.ssh.1;
на машины, на которых установлены соответствующие публичные
ключи:&prompt.user; ssh-agent csh
&prompt.user; ssh-add
Enter passphrase for /home/user/.ssh/id_dsa:
Identity added: /home/user/.ssh/id_dsa (/home/user/.ssh/id_dsa)
&prompt.user;Для того чтобы использовать &man.ssh-agent.1; в X11,
вызов &man.ssh-agent.1;должен быть помещен в файл
~/.xinitrc. Это обеспечит поддержкой
&man.ssh-agent.1; все программы, запущенные в X11. Файл
~/.xinitrc может выглядеть, например,
так:exec ssh-agent startxfce4При этом будет запущен &man.ssh-agent.1;, который, в свою
очередь, вызовет запуск XFCE, при каждом
старте X11. После запуска X11, выполните команду &man.ssh-add.1;
для добавления ваших SSH-ключей.Туннелирование SSHOpenSSHтуннелированиеOpenSSH поддерживает возможность
создания туннеля для пропуска соединения по другому протоколу
через защищенную сессию.Следующая команда указывает &man.ssh.1; создать туннель для
telnet:&prompt.user; ssh -2 -N -f -L 5023:localhost:23 user@foo.example.com
&prompt.user;Команда ssh используется со следующими
параметрами:Указывает ssh использовать версию
2 протокола (не используйте этот параметр, если работаете
со старыми SSH серверами).Означает использование в не-командном режиме, только для
туннелирования. Если этот параметр опущен,
ssh запустит обычную сессию.Указывает ssh запускаться в фоновом
режиме.Означает локальный туннель в стиле
localport:remotehost:remoteport.Удаленный сервер SSH.Туннель SSH создается путем создания прослушивающего сокета
на определенном порту localhost. Затем все
принятые на локальном хосту/порту соединения переправляются на
через SSH на определенный удаленный хост и порт.В этом примере, порт 5023 на
localhost перенаправляется на порт
23 на localhost
удаленного компьютера. Поскольку 23
это порт telnet, будет создано защищенное
соединение telnet через туннель
SSH.Этот метод можно использовать для любого числа небезопасных
протоколов, таких как SMTP, POP3, FTP, и так далее.Использование SSH для создания защищенного туннеля на
SMTP&prompt.user; ssh -2 -N -f -L 5025:localhost:25 user@mailserver.example.com
user@mailserver.example.com's password: *****
&prompt.user; telnet localhost 5025
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mailserver.example.com ESMTPЭтот метод можно использовать вместе с &man.ssh-keygen.1;
и дополнительными пользовательскими учётными записями для
создания более удобного автоматического SSH туннелирования.
Ключи могут быть использованы вместо паролей, и туннели
могут запускаться от отдельных пользователей.Практические примеры SSH туннелированияЗащищенный доступ к серверу POP3На работе находится SSH сервер, принимающий соединения
снаружи. В этой же офисной сети находится почтовый сервер,
поддерживающий протокол POP3. Сеть или сетевое соединение
между вашим домом и офисом могут быть или не быть полностью
доверяемыми. По этой причине вам потребуется проверять
почту через защищенное соединение. Решение состоит в создании
SSH соединения к офисному серверу SSH и туннелирование
через него к почтовому серверу.&prompt.user; ssh -2 -N -f -L 2110:mail.example.com:110 user@ssh-server.example.com
user@ssh-server.example.com's password: ******Когда туннель включен и работает, вы можете настроить
почтовый клиент для отправки запросов POP3 на
localhost, порт 2110. Соединение будет
безопасно переправлено через туннель на
mail.example.com.Прохождение через Драконовский БрандмауэрНекоторые сетевые администраторы устанавливают
на брандмауэрах драконовские правила,
фильтруя не только входящие соединения, но и исходящие.
Вам может быть разрешен доступ к удаленным компьютерам только
по портам 22 и 80, для SSH и просмотра сайтов.Вам может потребоваться доступ к другому (возможно, не
относящемуся к работе) сервису, такому как Ogg Vorbis
для прослушивания музыки. Если этот сервер Ogg Vorbis
выдает поток не с портов 22 или 80, вы не сможете получить
к нему доступ.Решение состоит в создании SSH соединения с компьютером
вне брандмауэра и использование его для туннелирования
сервера Ogg Vorbis.&prompt.user; ssh -2 -N -f -L 8888:music.example.com:8000 user@unfirewalled-system.example.org
user@unfirewalled-system.example.org's password: *******Клиентскую программу теперь можно настроить на
localhost порт 8888, который будет перенаправлен
на music.example.com порт 8000, успешно
обойдя брандмауэр.Параметр ограничения пользователей
AllowUsersЗачастую хорошие результаты даёт ограничение того, какие
именно пользователи и откуда могут регистрироваться в системе.
Задание параметра AllowUsers является хорошим
способом добиться этого. К примеру, для разрешения регистрации только
пользователю root с машины 192.168.1.32, в файле
/etc/ssh/sshd_config нужно указать нечто вроде
следующего:AllowUsers root@192.168.1.32Для разрешения регистрации пользователя admin
из любой точки, просто укажите имя пользователя:AllowUsers adminНесколько пользователей должны перечислять в одной строке, как
здесь:AllowUsers root@192.168.1.32 adminВажно, чтобы бы перечислили всех пользователей, которые должны
регистрироваться на этой машине; в противном случае они будут
заблокированы.После внесения изменений в
/etc/ssh/sshd_config вы должны указать
&man.sshd.8; на повторную загрузку конфигурационных файлов, выполнив
следующую команду:&prompt.root; /etc/rc.d/sshd reloadДополнительная литератураOpenSSH&man.ssh.1; &man.scp.1; &man.ssh-keygen.1;
&man.ssh-agent.1; &man.ssh-add.1; &man.ssh.config.5;&man.sshd.8; &man.sftp-server.8; &man.sshd.config.5;TomRhodesПредоставил ACLСписки контроля доступа файловой системы (ACL)В дополнение к другим расширениям файловой системы, таким как
снимки (snapshots), FreeBSD 5.0 и более поздние версии системы
предлагают защиту с помощью списков контроля доступа файловой системы
(File System Access Control Lists, ACLs).Списки контроля доступа расширяют стандартную модель прав &unix;
высоко совместимым (&posix;.1e) способом. Эта возможность позволяет
администратору получить преимущество от использования более
интеллектуальной модели безопасности.Для включения поддержки ACL в файловой
системе UFS, следующая строка:options UFS_ACLдолжна быть добавлена в файл настройки ядра. Если параметр не
добавлен, при попытке монтирования систем, поддерживающих
ACL, появится предупреждающее сообщение.
Этот параметр включен в ядро GENERIC.
ACL основывается на дополнительных атрибутах,
встроенных в файловую систему. Дополнительные атрибуты
поддерживаются по умолчанию следующим поколением файловых систем
&unix;, UFS2.Для включения дополнительных атрибутов в
UFS1 требуется больше усилий по сравнению с
UFS2. Производительность дополнительных
атрибутов в UFS2 также существенно выше.
По этим причинам для работы с списками контроля доступа
предпочтительно использование UFS2ACL включаются во время монтирования флагом
, который добавляется к
/etc/fstab. Этот флаг также можно сделать
постоянным с помощью &man.tunefs.8;, изменив флаг
ACL в заголовке файловой системы. Вообще говоря,
использование флага в суперблоке предпочтительно по нескольким
причинам:Постоянный ACL флаг не может быть изменен
путем перемонтирования системы (&man.mount.8; ),
а только через &man.umount.8; и &man.mount.8;. Это означает,
что ACL нельзя включить на корневой файловой
системе после загрузки. Это также означает, что вы не можете
изменить флаг на используемой файловой системе.Установка флага в суперблоке приводит к постоянному монтированию
файловой системы с включенным ACL, даже если
нет записи в fstab или при смене порядка
устройств. Это предотвращает случайное монтирование файловой
системы без ACL, которое может повлечь за
собой проблемы с безопасностью.Мы можем изменить поведение ACL для
включения флага без полного перемонтирования, но считаем, что
желательно исключить случайное монтирование без
ACL, поскольку вы можете попасть в неприятную
ситуацию, если включите ACL, затем выключите
их, затем опять включите без сброса расширенных атрибутов.
Обычно, как только вы включили ACL в файловой
системе, они не должны быть выключены, поскольку получающаяся
защита файлов может быть не совместима с той, что применяется
пользователями системы, и повторное включение ACL
может подключить предыдущие списки контроля доступа к файлам,
права на которые изменены, что приведет к непредсказуемому
поведению.Файловые системы с включенными ACLs показывают
знак + при просмотре прав на файлы.
Например:drwx------ 2 robert robert 512 Dec 27 11:54 private
drwxrwx---+ 2 robert robert 512 Dec 23 10:57 directory1
drwxrwx---+ 2 robert robert 512 Dec 22 10:20 directory2
drwxrwx---+ 2 robert robert 512 Dec 27 11:57 directory3
drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_htmlЗдесь мы видим, что каталоги directory1,
directory2, и directory3
используют преимущества ACL. Каталог
public_html их не использует.Использование ACLACL файловой системы можно просмотреть
с помощью утилиты &man.getfacl.1;. Например, для просмотра
настроек ACL файла
test, может использоваться команда:&prompt.user; getfacl test
#file:test
#owner:1001
#group:1001
user::rw-
group::r--
other::r--Для изменения ACL этого файла,
вызовите утилиту &man.setfacl.1;. Выполните:&prompt.user; setfacl -k testПараметр удалит все установленные
на данный момент ACL из файла или файловой
системы. Более предпочтительный метод это использование
параметра , который оставит необходимые
для работы ACL поля.&prompt.user; setfacl -m u:trhodes:rwx,group:web:r--,o::--- testВ вышеприведенной команде параметр
использован для изменения записей ACL
по умолчанию. Поскольку предустановленных записей не было (они были
удалены предыдущей командой), эта команда восстановит параметры
по умолчанию и задаст приведенные параметры. Имейте ввиду,
при добавлении пользователя или группы, которых нет в системе,
на stdout будет выведена ошибка
Invalid argument.ТомРодесТекст предоставил PortauditМониторинг вопросов безопасности в ПО сторонних
разработчиковВ последние годы в области информационной безопасности произошло
много улучшений, касающихся выработки оценки уязвимости. Угроза
проникновения в систему увеличивается вместе с установкой и настройкой
утилит сторонних разработчиков, какой бы современной операционной
системы это ни касалось.Оценка уязвимости является ключевым фактором обеспечения защиты, и
хотя для базового комплекта &os; выпускаются бюллетени безопасности, но
делать это для каждой сторонней утилиты выше возможностей участников
Проекта &os;. Существует способ смягчения уязвимостей программного
обеспечения сторонних разработчиков и предупреждения администраторов об
известных проблемах с безопасностью. Во &os; существует утилита под
названием Portaudit, которая служит
исключительно этой цели.Порт security/portaudit обращается
к базе данных, обновляемой и поддерживаемой Группой информационной
безопасности &os; и разработчиками портов, для получения информации об
известных проблемах с защитой.Для того, чтобы приступить к использованию
Portaudit, необходимо установить его из
Коллекции Портов:&prompt.root; cd /usr/ports/security/portaudit && make install cleanВ процессе установки будут обновлены конфигурационные файлы для
&man.periodic.8;, в которые будет добавлена выдача
Portaudit при ежедневном её запуске.
Проверьте, что ежедневные сообщения электронной почты, касающиеся
безопасности, которые посылаются на адрес root,
прочитываются. Другой дополнительной настройки больше не
понадобится.После установки администратор может обновить базу данных
и посмотреть список известных уязвимостей в установленных пакетах
при помощи команды&prompt.root; portaudit -FdaБаза данных будет автоматически обновлена при запуске
&man.periodic.8;; таким образом, предыдущая команду можно полностью
опустить. Она требуется только для следующих примеров.Для аудита утилит сторонних разработчиков, установленных как часть
Коллекции Портов, администратору достаточно запускать только следующую
команду:&prompt.root; portaudit -aУтилита portaudit выдаст примерно
следующее:Affected package: cups-base-1.1.22.0_1
Type of problem: cups-base -- HPGL buffer overflow vulnerability.
Reference: <http://www.FreeBSD.org/ports/portaudit/40a3bca2-6809-11d9-a9e7-0001020eed82.html>
1 problem(s) in your installed packages found.
You are advised to update or deinstall the affected package(s) immediately.Перейдя в Web-браузере по показанному URL,
администратор может получить более подробную информацию о показанной
уязвимости. В неё войдёт перечисление версий, затронутых
соответствующей версией порта &os;, а также другие Web-сайты, которые
могут содержать бюллетени безопасности.Если описывать вкратце, то Portaudit
является мощной и, при использовании вместе с портом
Portupgrade, чрезвычайно полезной
утилитой.TomRhodesПредоставил Сообщения безопасности FreeBSDСообщения безопасности &os;Как многие и высококачественные операционные системы, &os;
публикует Сообщения безопасности (Security
Advisories). Эти сообщения обычно отправляются по почте
в списки рассылки, посвященные безопасности и публикуются
в списке проблем только после выхода исправлений к соответствующим
релизам. В этом разделе разъясняется, что такое сообщения безопасности,
как их читать и какие меры принимать для исправления системы.Как выглядит сообщение?Сообщение безопасности &os; выглядит подобно сообщению ниже,
взятому из списка рассылки &a.security-notifications.name;.=============================================================================
&os;-SA-XX:XX.UTIL Security Advisory
The &os; Project
Topic: denial of service due to some problem
Category: core
Module: sys
Announced: 2003-09-23
Credits: Person@EMAIL-ADDRESS
Affects: All releases of &os;
&os; 4-STABLE prior to the correction date
Corrected: 2003-09-23 16:42:59 UTC (RELENG_4, 4.9-PRERELEASE)
2003-09-23 20:08:42 UTC (RELENG_5_1, 5.1-RELEASE-p6)
2003-09-23 20:07:06 UTC (RELENG_5_0, 5.0-RELEASE-p15)
2003-09-23 16:44:58 UTC (RELENG_4_8, 4.8-RELEASE-p8)
2003-09-23 16:47:34 UTC (RELENG_4_7, 4.7-RELEASE-p18)
2003-09-23 16:49:46 UTC (RELENG_4_6, 4.6-RELEASE-p21)
2003-09-23 16:51:24 UTC (RELENG_4_5, 4.5-RELEASE-p33)
2003-09-23 16:52:45 UTC (RELENG_4_4, 4.4-RELEASE-p43)
2003-09-23 16:54:39 UTC (RELENG_4_3, 4.3-RELEASE-p39)
CVE Name: CVE-XXXX-XXXX
For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the
following sections, please visit
http://www.FreeBSD.org/security/.
I. Background
II. Problem Description
III. Impact
IV. Workaround
V. Solution
VI. Correction details
VII. ReferencesПоле Topic показывает в чем именно
заключается проблема. Это обычно введение в сообщение
безопасности, упоминающее утилиту, в которой возникла
ошибка.Поле Category относится к затронутой части
системы и может быть выбрана из core,
contrib, или ports.
Категория core означает, что
уязвимость затрагивает основной компонент операционной системы
&os;. Категория contrib означает, что
уязвимость затрагивает программы, предоставленные проекту
&os;, например sendmail. Наконец,
категория ports означает, что уязвимость
затрагивает программное обеспечение, доступное из Коллекции
Портов.Поле Module указывает на местоположение
компонента, например sys. В этом примере
мы видим, что затронут модуль sys,
следовательно, эта уязвимость относится к компоненту,
используемому в ядре.Поле Announced отражает дату публикации
сообщения безопасности, или его анонсирования. Это означает,
что команда обеспечения безопасности убедилась, что проблема
существует и что патч помещён в хранилище исходных текстов
&os;.Поле Credits упоминает частное лицо или
организацию, обнаружившую уязвимость и сообщившую о ней.Поле Affects дает информацию о релизах
&os;, к которым относится данная уязвимость. Для базовой
системы, просмотр вывода команды ident
для файлов, затронутых уязвимостью, поможет определить
ревизию. Номер версии портов приведен после имени порта
в каталоге /var/db/pkg. Если система
не синхронизируется с CVS-хранилищем
&os; и не пересобирается ежедневно, высок шанс, что
она затронута уязвимостью.Поле Corrected показывает дату, время,
смещение во времени и релиз, в котором исправлена ошибка.Зарезервировано для идентификации уязвимости в общей базе
данных CVD (Common Vulnerabilities Database).Поле Background дает информацию именно
о той утилите, для которой выпущено сообщение. Как правило
информация о том, зачем утилита присутствует в &os;, для
чего она используется, и немного информации о том, как
появилась эта утилита.Поле Problem Description дает более
глубокие разъяснения возникшей проблемы. Оно может включать
информацию об ошибочном коде, или даже о том, как утилита
может быть использована для создания бреши в системе
безопасности.Поле Impact описывает тип воздействия,
который проблема может оказать на систему. Это может быть
все, что угодно, от атаки на отказ в обслуживании до
получения пользователями дополнительных привилегий, или
даже получения атакующим прав суперпользователя.Поле Workaround предлагает тем,
системным администраторам, которые не могут обновить систему,
обходной путь решения проблемы. Он может пригодиться при
недостатке времени, отсутствии подключения к сети или по
массе других причин. В любом случае, к безопасности нельзя
относиться несерьезно, и необходимо либо применить указанный
обходной путь, либо исправить систему.Поле Solution предлагает инструкции по
исправлению затронутой системы. Это пошаговое руководство,
протестированный метод восстановления безопасности системы.Поле Correction Details показывает
ветвь CVS (имя релиза с точками, замененными
на символы подчеркивания). Здесь также показан номер ревизии
каждого файла из каждой ветви.Поле References обычно упоминает
другие источники информации. Это могут быть Web-страницы,
книги, списки рассылки и группы новостей.ТомРодесТекст предоставил Учёт используемых ресурсовУчёт используемых ресурсовУчёт используемых процессами ресурсов представляет собой метод
защиты, при котором администратор может отслеживать использование
системных ресурсов и их распределение между пользователями для нужд
системного мониторинга и минимального отслеживания команд
пользователей.На самом деле здесь есть свои положительный и отрицательные моменты.
Положительной стороной является то, что проникновение может быть
отслежено до первоначальной точки входа. Отрицательной стороной
является объём протоколов, который генерируется при мониторинге, и
соответствующие требования к дисковому пространству. В этом разделе
администратору даются основы учёта ресурсов процессов.Активация и использование учёта ресурсовПрежде чем использовать систему учёта ресурсов, её необходимо
активировать. Для этого выполните следующие команды:&prompt.root; touch /var/account/acct
&prompt.root; accton /var/account/acct
&prompt.root; echo 'accounting_enable="YES"' >> /etc/rc.confПосле активации система учёта ресурсов начнёт отслеживать
статистику CPU, команд и так далее. Все протоколы
учёта ведутся в формате, недоступном для чтения человеком, и могут
просматриваться при помощи утилиты &man.sa.8;. Запущенная без
параметров, sa выдаст информацию, относящуюся к
количеству вызовов в расчёте на каждого пользователя, общее
затраченное время в минутах, общее время CPU и
пользователя в минутах, среднее количество операций ввода/вывода и
так далее.Для просмотра информации о запущенных командах, необходимо
воспользоваться утилитой &man.lastcomm.1;. Команду
lastcomm можно использовать, например, для выдачи
списка директив, выданных пользователями определённого терминала
&man.ttys.5;:&prompt.root; lastcomm ls trhodes ttyp1Эта команда выдаст все зафиксированные использования команды
ls пользователем trhodes на
терминале ttyp1.Существует многие другие полезные параметры, которые описаны на
соответствующих справочных страницах &man.lastcomm.1;, &man.acct.5; и
&man.sa.8;.
diff --git a/ru_RU.KOI8-R/books/handbook/serialcomms/chapter.sgml b/ru_RU.KOI8-R/books/handbook/serialcomms/chapter.sgml
index ae8b8ab03f..6c9bacd8e9 100644
--- a/ru_RU.KOI8-R/books/handbook/serialcomms/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/serialcomms/chapter.sgml
@@ -1,2982 +1,2907 @@
ДенисПеплинПеревод на русский язык: Последовательные соединенияКраткое описаниепоследовательные соединенияВ &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, напрямую, а другие
заворачивает. Например, контакт
Transmitted Data на одном конце соединяется с контактом
Received Data на другом.Вы можете сделать
собственный кабель для использования с терминалами. Эта таблица
показывает названия
сигналов RS-232C
и номера контактов на разъеме DB-25. Заметим, что стандарт
описывает соединение контактов номер 1 как сигнал
Protective Ground, но его часто не делают.
Некоторым терминалам достаточно сигналов на контактах 2, 3 и 7;
другим требуется большее число сигналов, как показано на примерах
ниже:
Для соединения одного контакта с одной стороны с двумя
контактами на другой обычно пару контактов на одной стороне
соединяют коротким проводом, а затем один из них —
длинным с единственным контактом на дальней стороне.Приведенные диаграммы описывают наиболее популярные схемы
распайки. В других вариантах (описанных в книге RS-232
Made Easy) SG соединяется с SG, TD соединяется с RD, RTS
и CTS соединяются с DCD, DTR соединяется с DSR, и наоборот.Стандартные кабели 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/cuadN.
Они обычно используются не для терминалов, а только для
модемов. Вы можете использовать эти порты если
последовательный кабель или терминал не поддерживает сигнал
DCD.Call-out порты в &os; 5.X и ранее именуются
/dev/cuaaN.
Если вы соединили терминал с первым последовательным портом
(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, изменив файл
/boot/device.hints. Вы можете также
закомментировать или вовсе удалить строки, относящиеся к
отсутствующим у вас устройствам.
- В случае 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
-
Обратитесь к странице справочника
&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/cuadN
(устройства исходящих вызовов, call-out).
FreeBSD предоставляет также устройства инициализации
(/dev/ttydN.init и
/dev/cuadN.init
в случае &os; 6.X,
/dev/ttyidN и
/dev/cuaiaN для
- &os; 5.X и раньше),
+ &os; 5.X),
устройства блокировки
(/dev/ttydN.lock и
/dev/cuadN.lock
в случае &os; 6.X,
/dev/ttyldN и
/dev/cualaN для
- &os; 5.X и раньше).
+ &os; 5.X).
Первые используются для инициализации параметров порта при
каждом его открытии (таких как crtscts
для модемов, использующих сигналы RTS/CTS
для управления потоком). Устройства блокировки используются
для установки флага блокировки на порт и предотвращения
изменения определенных параметров пользователями или
программами; обратитесь к страницам справочника &man.termios.4;,
&man.sio.4; и &man.stty.1; соответственно за информацией о
параметрах терминала, блокировании и инициализации устройств и
настройке терминала.
-
-
- Создание специальных файлов устройств
-
- FreeBSD 5.0 включает файловую систему
- &man.devfs.5;, которая автоматически создает файлы
- устройств по мере необходимости. Если вы работаете
- с версией FreeBSD, поддерживающей devfs
- просто пропустите этот раздел.
-
- В каталоге /dev находится shell скрипт,
- называющийся MAKEDEV, который управляет
- специальными файлами устройств. Чтобы использовать
- MAKEDEV для создания специальных файлов
- устройств исходящих соединений для порта
- COM1 (порт 0), зайдите
- (cd) в каталог /dev и
- выполните команду MAKEDEV ttyd0.
- Точно так же, для создания специальных файлов устройств
- исходящих соединений для порта COM2
- (порт 1), используйте MAKEDEV ttyd1.
-
- MAKEDEV создаст не только специальный файл
- устройства
- /dev/ttydN
- но также
- /dev/cuaaN,
- /dev/cuaiaN,
- /dev/cualaN,
- /dev/ttyldN,
- и
- /dev/ttyidN.
-
-
- После создания специальных файлов устройств, обязательно
- проверьте права на файлы (особенно на файлы
- /dev/cua*), чтобы убедиться, что только те
- пользователи, которым дан доступ на эти файлы, могут читать и писать
- в них — возможно, вы не хотите, чтобы обычные пользователи
- использовали модемы для звонков. Права по умолчанию на
- /dev/cua* должны подойти:
-
- crw-rw---- 1 uucp dialer 28, 129 Feb 15 14:38 /dev/cuaa1
-crw-rw---- 1 uucp dialer 28, 161 Feb 15 14:38 /dev/cuaia1
-crw-rw---- 1 uucp dialer 28, 193 Feb 15 14:38 /dev/cuala1
-
- Эти права позволяют пользователю uucp и
- пользователям из группы dialer использовать
- устройства исходящих вызовов.
- Настройка последовательных портовttydcuadУстройство ttydN
(или
cuadN) это обычное
устройство, которое потребуется открыть для приложений. Когда процесс
открывает устройство применяются настройки ввода/вывода терминала по
умолчанию. Вы можете посмотреть эти настройки с помощью команды&prompt.root; stty -a -f /dev/ttyd1Если вы измените настройки устройства, они будут действовать до его
закрытия. После повторного открытия, оно вернется к настройкам по
умолчанию. Для изменения настроек по умолчанию, вы можете открыть и
изменить установки начального состояния устройства.
Например, для включения по умолчанию режима ,
8-битного соединения и контроля передачи для
ttyd5, выполните:&prompt.root; stty -f /dev/ttyd5.init clocal cs8 ixon ixoffrc filesrc.serialИнициализация последовательных устройств контролируется
файлом /etc/rc.d/serial. Этот файл
определяет настройки последовательных устройств по
умолчанию.
-
- В &os; версий 4.X инициализацией последовательных устройств
- занимается скрипт /etc/rc.serial.
-
-
Для предотвращения изменения программами отдельных установок,
настройте состояние блокировки устройства.
Например, для установки значения скорости
ttyd5 в 57600 bps, выполните:&prompt.root; stty -f /dev/ttyd5.lock 57600Теперь приложение, открывающее ttyd5 и
пытающееся изменить скорость порта, получит скорость
57600 bps.
-
- MAKEDEV
- И конечно, сделайте запись начальных значений и состояния
блокировки устройств доступной только учетной записи
root.SeanKellyПредоставил ТерминалытерминалыТерминалы предоставляют удобный и дешевый способ доступа к
системе FreeBSD, когда вы не сидите за консолью компьютера и
не подключены к сети. Этот раздел описывает использование
терминалов в FreeBSD.Пользователи и типы терминаловВ первых системах &unix; не было консолей. Вместо этого,
пользователи входили и запускали программы через терминалы, которые
были подключены к последовательным портам компьютеров. Это очень
похоже на использование модема и программного обеспечения терминала
для дозвона до удаленной системы и выполнения только-текстовой
работы.Консоли современных PC поддерживают высококачественную графику,
но возможность входа по последовательному порту на сегодняшний
день все еще доступна почти в каждой &unix; подобной операционной
системе; FreeBSD не исключение. Используя терминал, подключенный к
неиспользуемому последовательному порту, вы можете войти и запустить
текстовую программу, которую обычно запускаете в текстовой консоли
или в окне xterm системы X Window.Для корпоративных пользователей, вы можете подсоединить множество
терминалов к системе FreeBSD и поставить их на столы пользователей.
Для домашнего пользователя, устаревший IBM PC или &macintosh; может
быть подключен в качестве терминала к более мощному компьютеру
под управлением FreeBSD. Вы можете превратить однопользовательский
компьютер в мощную многопользовательскую систему.В FreeBSD три вида терминалов:Простые (dumb) терминалыPC, работающие в качестве терминаловX терминалыВ оставшейся части раздела описывается каждый вид.Простые терминалыПростые терминалы это специализированное оборудование,
позволяющее соединять компьютеры через последовательные
линии. Они называются простыми, поскольку
их вычислительных возможностей хватает только для
отображения, отправки и получения текста. Вы не сможете
запустить на них никаких программ. Компьютер, к которому
подсоединяется терминал, предоставляет все возможности
для запуска текстовых редакторов, компиляторов, почтовых
программ, игр и так далее.Есть сотни видов простых терминалов, изготовленных
различными производителями, включая DEC VT-100 и
Wyse WY-75. Почти любой терминал может работать с
FreeBSD. Некоторые high-end терминалы даже могут отображать
графику, но только отдельные программные пакеты могут
получить преимущество от этих расширенных возможностей.Простые терминалы популярны в рабочей среде, где не требуется
доступ к графическим приложениям, например тем, которые
предоставляет система X Window.PC, работающие в качестве терминаловЕсли простые терминалы могут
только отображать, отправлять и получать текст, возможностей
абсолютно любого персонального компьютера хватит для работы
в роли простого терминала. Все, что вам потребуется, это
подходящий кабель и какая-нибудь программа эмулятора
терминала.Это популярная домашняя конфигурация. Например, когда ваша
вторая половина занята работой на системной консоли FreeBSD,
вы можете одновременно выполнять только-текстовую работу
с менее мощного персонального компьютера, подключенного к
системе FreeBSD.X терминалыX терминалы это наиболее сложный тип существующих терминалов.
Вместо подключения к последовательному порту, они обычно
подключаются к сети, например Ethernet. Вместо работы только с
текстовыми приложениями, они могут отображать любое X
приложение.Мы представляем X терминалы только ради полноты описания.
Тем не менее, эта глава не охватывает
установку, настройку или использование X терминалов.НастройкаЭтот раздел описывает, что нужно сделать для настройки системы
FreeBSD и включения входа в систему через терминал.
Предполагается, что вы уже подключили терминал и настроили ядро
для включения поддержки последовательного порта, к которому он
подключен.Обратитесь к главе за информацией о
процессе init, отвечающем за контроль над
всеми процессами и за инициализацию системы во время загрузки.
Одна из задач, выполняемых init —
чтение файла /etc/ttys и запуск процесса
getty на доступных терминалах. Процесс
getty отвечает за чтение имени пользователя
и запуск программы login.Таким образом, для настройки терминалов в системе FreeBSD
необходимо выполнить следующие действия под
root:Добавить строку к /etc/ttys для файла
из каталога /dev, представляющего
последовательный порт, если этой строки еще нет.Настроить запуск команды /usr/libexec/getty
на этом порту и указать соответствующий тип
getty в файле
/etc/gettytab.Указать тип терминала по умолчанию.Переключить порт в состояние on
(включен)Указать, должен ли порт быть
secure (безопасным)Заставить init перечитать файл
/etc/ttys.Опционально, вы можете настроить свой тип
getty для использования на шаге 2,
добавив описание в файл /etc/gettytab.
За описанием обратитесь к страницам справочника
&man.gettytab.5; и &man.getty.8;.Добавление строки в /etc/ttysВ файле /etc/ttys находится список всех
портов системы FreeBSD, на которые возможен вход. Например, там
находится первая виртуальная консоль ttyv0.
Вы можете войти на консоль с помощью этой записи.
Файл содержит записи и для других виртуальных консолей,
последовательных портов, и псевдо-терминалов. Название файла
последовательного порта из каталога /dev
приводится без префикса /dev (например,
устройство /dev/ttyv0 будет записано
как ttyv0).Установка FreeBSD по умолчанию включает файл
/etc/ttys с поддержкой первых четырех
последовательных портов: от ttyd0 до
ttyd3. Если вы подключаете терминал
к одному из этих портов, добавлять записи терминалов не
потребуется.Добавление записей терминалов в
/etc/ttysПредположим, вы хотите подключить два терминала к
системе: Wyse-50 и старый 286 IBM PC с эмулятором
терминала VT-100. Мы подключаем Wyse к второму
последовательному порту и 286 к шестому последовательному
порту (порт на мультипортовой карте). Соответствующие
строки в /etc/ttys будут выглядеть
так:ttyd1 "/usr/libexec/getty std.38400" wy50 on insecure
ttyd5 "/usr/libexec/getty std.19200" vt100 on insecure
Первое поле, как правило, указывает имя специального
файла терминала, в соответствии с его именем в
/dev.Второе поле — это команда, исполняемая для этого
терминала, обычно &man.getty.8;. getty
инициализирует и открывает линию, устанавливает ее
скорость, приглашает пользователя к вводу
имени пользователя, а затем выполняет программу
&man.login.1;.Программа getty принимает один
(опциональный) параметр в командной строке, тип
getty. Тип
getty определяет характеристики
терминальной линии, такие как значение bps и четность.
Программа getty считывает эти характеристики
из файла /etc/gettytab.Файл /etc/gettytab содержит
множество записей для терминалов, как для старых так и для
новых. Почти во всех случаях запись, начинающаяся с
текста std, предназначена для работы
с аппаратными терминалами. Эти записи игнорируют четность.
Запись std есть для каждого значения
bps от 110 до 115200. Конечно, вы можете добавить
собственные записи в этот файл. Страница справочника
&man.gettytab.5; содержит дополнительную информацию.При установке типа getty
в файле /etc/ttys убедитесь в наличии
соответствующей записи терминала.Например, Wyse-50 не использует четность и соединяется на
38400 bps. 286 PC не использует четность и
соединяется на 19200 bps.Третье поле определяет тип терминала, обычно
подключаемого к этой линии tty. Для портов входящих
соединений обычно используется значение
unknown или dialup,
поскольку пользователь может подключить практически
любой тип терминала или программу. Для аппаратных
терминалов тип не меняется, поэтому вы можете поместить
в это поле определенный тип терминала из базы данных
&man.termcap.5;.Например, Wyse-50 использует реальный тип терминала,
а 286 PC, работающий с Procomm,
настроен на эмуляцию VT-100.Четвертое поле определяет должен ли порт быть включен.
Размещение здесь on укажет процессу
init запустить программу, указанную
во втором поле, getty. Если вы
поместите off в это поле, команда
getty не будет запущена и вход
на этот порт станет невозможен.Последнее поле используется, чтобы указать, является
ли порт безопасным. Пометка порта безопасным означает,
что вы доверяете ему достаточно для того, чтобы разрешить
учетной записи root (или любой
учетной записи с UID 0) входить с этого порта. Небезопасные
порты не разрешат вход root.
На небезопасном порту пользователи должны войти с
через непривилегированную учетную запись, а затем
использовать &man.su.1; или подобный механизм для
получения привилегий суперпользователя.Настоятельно рекомендуется использовать
insecure даже для терминалов, находящихся за
закрытыми дверями. Довольно легко использовать
su после входа, если вам потребуются
привилегии суперпользователя.Заставьте init перечитать
/etc/ttysПосле выполнения необходимых изменений в файле
/etc/ttys, вам потребуется отправить сигнал
SIGHUP (hangup) процессу init, чтобы заставить
его перечитать его файл настройки. Например:&prompt.root; kill -HUP 1init это всегда первый из запущенных в
в системе процессов, поэтому его PID всегда 1.Если все установлено правильно, все кабели на месте и
терминалы включены, процесс getty должен
быть запущен на каждом терминале и вы увидите приглашение
ко входу на каждом терминале.Решение проблем с соединениемДаже при самом внимательном отношении к деталям, при настройке
терминала все же могут возникнуть проблемы. В этом разделе
приведен список симптомов и предлагается несколько решений.Не появляется приглашение ко входуУбедитесь, что терминал подключен и его питание включено.
Убедитесь, что эмулятор терминала запущен на соответствующем
порту.Убедитесь, что кабель хорошо подключен и к терминалу и к
компьютеру с FreeBSD. Убедитесь, что правильно выбран тип
кабеля.Убедитесь, что терминал и FreeBSD имеют одинаковые установки
значения bps и четности. Если у вас видео терминал, убедитесь,
что контраст и яркость включены. Если это принт-терминал,
убедитесь, что бумага и чернила в порядке.Убедитесь, что процесс getty запущен
и обслуживает терминал. Например, для получения списка запущенных
процессов getty с помощью ps,
выполните:&prompt.root; ps -axww|grep gettyВы должны увидеть строку для соответствующего терминала.
Например, если getty запущена на втором
последовательном порту ttyd1 и использует
запись std.38400 из файла
/etc/gettytab, отобразится следующее:22189 d1 Is+ 0:00.03 /usr/libexec/getty std.38400 ttyd1Если процесс getty не запущен, убедитесь,
что вы включили порт в /etc/ttys. Не забудьте
также запустить kill -HUP 1 после
изменения файла ttys.Если процесс getty запущен, но на терминале
по-прежнему не отображается приглашение ко входу, или если
приглашение отображается, но войти невозможно, терминал
или кабель, возможно, не поддерживают квитирование связи.
Попробуйте изменить поле в /etc/ttys
с std.38400 на 3wire.38400.
Запись 3wire похожа на
std, но игнорирует квитирование связи.
Вам может потребоваться уменьшить скорость соединения или
включить программный контроль передачи при использовании
3wire для предотвращения переполнений
буфера.Вместо приглашения ко входу на экране появляется
мусорУбедитесь, что терминал и FreeBSD имеют одинаковые установки
значения bps и четности. Проверьте процесс
getty, чтобы убедиться, что используется
подходящий тип getty. Если это не так,
отредактируйте /etc/ttys и запустите
kill -HUP 1.Символы появляются дважды, пароль отображается при
вводеПереключите терминал (или программу эмулятора терминала)
с half duplex или local echo на
full duplex.GuyHelmerПредоставил SeanKellyДополнил Входящие соединения по модемувходящие соединенияНастройка системы FreeBSD для поддержки входящих соединений
очень похожа на подсоединение терминалов за исключением того,
что вы работаете с модемами вместо терминалов.Внешние и внутренние модемыВнешние модемы более удобны для дозвона, поскольку легко могут
быть настроены с помощью параметров, сохраняемых в энергонезависимой
памяти. На них обычно есть индикаторы, отображающие состояние
основных RS-232 сигналов. Мигающие индикаторы впечатляют,
но кроме того они также очень полезны для индикации правильной
работы модема.Внутренние модемы обычно не снабжаются энергонезависимой
памятью, поэтому их настройка может ограничиваться установкой
DIP переключателей. Если на внутреннем модеме есть индикаторы,
их обычно сложно увидеть при закрытой крышке корпуса.Модемы и кабелимодемЕсли вы используете внешний модем, несомненно потребуется
подходящий кабель. Стандартный RS-232C кабель должен подойти, если
подключены все обычные сигналы:
Наименования сигналовСокращениеНаименованиеНазначениеRDReceived DataПринимаемые данныеTDTransmitted DataПередаваемые данныеDTRData Terminal ReadyГотовность терминалаDSRData Set ReadyГотовность данныхDCDData Carrier DetectНаличие несущейSGSignal GroundСигнальная земляRTSRequest to SendЗапрос на посылкуCTSClear to SendГотовность к приему
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.d/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.d/serialфайлы rcrc.serialДля высокоскоростных модемов, таких как V.32, V.32bis и V.34,
требуется использование аппаратного контроля передачи
(RTS/CTS). Вы можете добавить команды
stty к файлу /etc/rc.d/serial
для установки флага аппаратного контроля передачи в ядре
FreeBSD для модемных портов.
Например, для установки флага termioscrtscts на последовательном порту номер 1
(COM2) при инициализации устройств
для входящей и исходящей связи, в
/etc/rc.d/serialдолжны быть добавлены
следующие строки:# Serial port initial configuration
stty -f /dev/ttyd1.init crtscts
stty -f /dev/cuad1.init 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/cuad0, добавьте следующую строку:cuad0:dv=/dev/cuad0:br#19200:pa=noneИспользуйте для br наибольшее значение bps, поддерживаемое
модемом. Для подключения к модему выполните
tip cuad0.Или используйте cu под
root так:&prompt.root; cu -lline -sspeedline это последовательный порт
(например /dev/cuad0), а
speed это скорость
(например 57600). После ввода команд AT
наберите ~. для выхода.Знак @ не работает для pn!Знак @ в телефонном номере указывает
tip взять телефонный номер из
/etc/phones. Но знак @
это также специальный символ в таких файлах как
/etc/remote. Экранируйте его с помощью
обратной косой черты:pn=\@Как я могу позвонить по телефонному номеру из командной
строки?Поместите так называемую generic запись в файл
/etc/remote. Например:tip115200|Dial any phone number at 115200 bps:\
:dv=/dev/cuad0:br#115200:at=hayes:pa=none:du:
tip57600|Dial any phone number at 57600 bps:\
:dv=/dev/cuad0: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/cuad1: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/cuad2: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/cuad3: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 и управляющий
терминал.Для того, чтобы сообщения в процессе загрузки выводились
в последовательную консоль, выполните от имени суперпользователя
команду&prompt.root; echo 'console="comconsole"' >> /boot/loader.confОтредактируйте /etc/ttys и измените
off на on и
dialup на vt100 для записи
ttyd0. В противном случае для входа с
последовательной консоли не будет требоваться пароль, что
может являться проблемой с точки зрения безопасности.Перезагрузите систему и убедитесь, что последовательная
консоль активировалась.Если вам требуется иная конфигурация, обратитесь к более
подробному описанию в разделе
.Настройка последовательной консолиПодготовьте кабель.нуль-модемный кабельВам потребуется нуль-модемный или стандартный
последовательный кабель и нуль-модемный адаптер. Обратитесь к
, где рассматриваются
последовательные кабели.Отключите клавиатуру.Большинство систем PC тестируют клавиатуру во время включения
(POST) и выдают ошибку если клавиатура не обнаружена. Некоторые
системы при отсутствии клавиатуры выдают звуковой сигнал и не
загружаются пока клавиатура не будет подключена.Если компьютер сообщает об ошибке, но все же загружается,
вам не потребуется делать что-то еще. (Некоторые компьютеры
с Phoenix BIOS просто сообщают Keyboard
failed и продолжают загрузку).Если компьютер не загружается без клавиатуры, вам потребуется
настроить BIOS так, чтобы отсутствие клавиатуры игнорировалось
(если это возможно). Обратитесь к руководству по материнской
плате за деталями о том, как это сделать.Установите параметр клавиатуры в настройках BIOS в значение
Not installed. При этом вы сможете продолжать
использовать клавиатуру. Все, что делает этот
параметр — указывает 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Включает поддержку консоли на устройстве (если нет
другой консоли с более высоким приоритетом), независимо
от наличия описываемой ниже опции .
Флаг 0x20 должен использоваться вместе
с флагом .0x40Резервирует это устройство (совместно с флагом
0x10) и делает устройство недоступным
для обычной работы. Вы не должны использовать
этот флаг для устройства последовательного порта,
которое будет использоваться в качестве последовательной
консоли. Используйте этот флаг только если устройство
предназначено для удаленной отладки ядра. Обратитесь
к Руководству
для разработчиков за дополнительной информацией
по удаленной отладке.
-
-
- В FreeBSD 4.0 или выше семантика флага
- 0x40 немного другая и для удаленной
- отладки используется другой флаг.
- Пример:device sio0 at isa? port IO_COM1 flags 0x10 irq 4Обратитесь к странице справочника &man.sio.4; за подробностями.Если флаги не были установлены, вам потребуется запустить
UserConfig (на другой консоли) или пересобрать ядро.Создайте boot.config в корневом каталоге
раздела a на загрузочном диске.Этот файл сообщит загрузочному блоку способ загрузки системы.
Для активации последовательной консоли вам потребуется одна или
несколько следующих опций — несколько опций могут быть
указаны на одной строке:Переключает внутреннюю и последовательную консоль. Вы
можете использовать ее для переключения устройств консоли.
Например, при загрузке с внутренней (видео) консоли, вы
можете использовать для запуска
загрузчика и ядра с использованием последовательного порта
в качестве устройства консоли. При загрузке с
последовательной консоли, вы можете использовать опцию
для указания загрузчику и ядру
использовать в качестве консоли видео дисплей.Переключает одно- и двухконсольную конфигурации. В
одноконсольной конфигурации консоль может быть либо
внутренней (видео дисплей), либо последовательным портом,
в зависимости от состояния опции .
В двухконсольной конфигурации и видео дисплей и
последовательный порт станут консолями одновременно,
независимо от состояния опции .
Имейте ввиду, что конфигурация с двумя консолями работает
только во время работы загрузочного блока. Как только
управление переходит к загрузчику, остается только одна
консоль, указанная опцией .Указывает загрузочному блоку протестировать клавиатуру.
Если клавиатура не найдена, автоматически устанавливаются
параметры и
.По причине ограничений на размер в существующей
версии загрузочного блока, опция
может протестировать только расширенные клавиатуры.
Клавиатуры с менее чем 101 клавишами (и без клавиш F11
и F12) могут быть не обнаружены. Клавиатуры некоторых
лэптопов могут быть не найдены из-за этого ограничения.
Если это случилось, вы не сможете использовать опцию
. К сожалению, не существует
обходного пути решения этой проблемы.Используйте или опцию для автоматического
выбора консоли, или опцию для активации
последовательной консоли.Вы можете включить также другие опции, описанные в
&man.boot.8;.Опции, за исключением , будут переданы
загрузчику (/boot/loader). Загрузчик
определит будет ли консолью внутреннее видео устройство или
последовательный порт, проверив только состояние опции
. Это означает, что если вы включите в
/boot.config опцию , но
не , то сможете использовать консоль только
во время работы загрузочного блока; загрузчик будет использовать
внутреннее видео устройство в качестве консоли.Загрузите компьютер.Когда вы включите компьютер FreeBSD, загрузочный блок выведет
содержимое /boot.config на консоль.
Например:/boot.config: -P
Keyboard: noВторая строка появится только если вы поместите
в /boot.config и
отражает наличие/отсутствие клавиатуры. Эти сообщения
выводятся либо на последовательную, либо на внутреннюю
консоль, или на обе, в зависимости от параметров в
/boot.config.ОпцииСообщения выводятся нанетвнутренняя консольпоследовательная консольпоследовательная и внутренняя консолипоследовательная и внутренняя консоли, клавиатура присутствуетвнутренняя консоль, клавиатура отсутствуетпоследовательная консольПосле вывода вышеприведенных сообщений, происходит небольшая
пауза перед тем, как запускается загрузчик и на консоли
появляются следующие сообщения. В нормальной ситуации вам не
потребуется прерывать загрузку в этот момент, но это можно
сделать, чтобы убедиться, что все настроено правильно.Нажмите на консоли любую клавишу кроме
Enter для прерывания процесса загрузки.
Загрузочный блок выдаст приглашение к дальнейшим действиям.
Оно выглядит примерно так:>> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/boot/loader
boot:Убедитесь, что сообщение выше появилось на последовательной,
внутренней консоли или на обеих, в зависимости от опций в
/boot.config. Если сообщение появилось там,
где должно было появиться, нажмите Enter для
продолжения процесса загрузки.Если вам нужна последовательная консоль, но на терминале не
видно приглашения, это означает проблемы с настройками. Введите
и нажмите Enter/Return (если это возможно) для
указания загрузочному блоку (а также загрузчику и ядру) выбрать
последовательный порт в качестве консоли. Когда система
загрузится, проверьте настройки еще раз и определите, что было
сделано неправильно.После запуска загрузчика и перехода в третью стадию процесса
загрузки вы все еще можете переключиться между внутренней консолью
и последовательной консолью путем установки соответствующих
переменных окружения в загрузчике. Обращайтесь к разделу
.ИтогиЗдесь приведены краткие итоги по различным настройкам,
рассмотренным в этом разделе и выбираемым в соответствии с
ними консолям.Вариант 1: вы устанавливаете для
sio0 флаги 0x10device sio0 at isa? port IO_COM1 flags 0x10 irq 4Параметры в /boot.configКонсоль для загрузочного блокаКонсоль для загрузчикаКонсоль для ядранетвнутренняявнутренняявнутренняяпоследовательнаяпоследовательнаяпоследовательнаяпоследовательная и внутренняявнутренняявнутренняяпоследовательная и внутренняяпоследовательнаяпоследовательная, клавиатура присутствуетвнутренняявнутренняявнутренняя, клавиатура отсутствуетпоследовательная и внутренняяпоследовательнаяпоследовательнаяВариант 2: вы устанавливаете для
sio0 флаги 0x30device sio0 at isa? port IO_COM1 flags 0x30 irq 4Параметры в /boot.configКонсоль для загрузочного блокаКонсоль для загрузчикаКонсоль для ядранетвнутренняявнутренняяпоследовательнаяпоследовательнаяпоследовательнаяпоследовательнаяпоследовательная и внутренняявнутренняяпоследовательнаяпоследовательная и внутренняяпоследовательнаяпоследовательная, клавиатура присутствуетвнутренняявнутренняяпоследовательная, клавиатура отсутствуетпоследовательная и внутренняяпоследовательнаяпоследовательнаяПриемы работы с последовательной консольюУстановка более высокой скорости портаПо умолчанию, последовательный порт настроен так: 9600 бит/с,
8 бит, без четности, 1 стоп бит. Если вам необходимо изменить
скорость, потребуется перекомпиляция как минимум загрузочных
блоков. Добавьте следующую строку к
/etc/make.conf и скомпилируйте новый
загрузочный блок:BOOT_COMCONSOLE_SPEED=19200Обратитесь к за
подробными инструкциями по сборке и установке новых загрузочных
блоков.Если последовательная консоль настраивается не путем установки
параметра , или последовательная консоль,
используемая ядром, отличается от той, что используется загрузочным
блоком, потребуется добавить следующие опции к файлу настройки ядра
и собрать новое ядро:options CONSPEED=19200Использование для консоли другого последовательного порта
вместо sio0Использование другого последовательного порта вместо
sio0 для консоли потребует кое-какой
перекомпиляции. Если вы по каким-либо причинам хотите использовать
другой последовательный порт, перекомпилируйте загрузочный блок,
загрузчик и ядро согласно приведенной ниже инструкции.Получите исходные тексты ядра (глава
)Отредактируйте /etc/make.conf и
установите BOOT_COMCONSOLE_PORT в
соответствии с адресом порта, который вы хотите использовать
(0x3F8, 0x2F8, 0x3E8 или 0x2E8). Могут быть использованы
только устройства от sio0 до
sio3 (от COM1
до COM4); мультипортовые
последовательные карты не будут работать. Установка
прерываний не требуется.Создайте файл настройки ядра и добавьте соответствующие
флаги для порта, который планируется использовать. Например,
если вы хотите использовать для консоли
sio1
(COM2):device sio1 at isa? port IO_COM2 flags 0x10 irq 3илиdevice sio1 at isa? port IO_COM2 flags 0x30 irq 3Флаги для других последовательных устройств не
устанавливайте.Соберите и установите загрузочный блок и
загрузчик:&prompt.root; cd /sys/boot
&prompt.root; make clean
&prompt.root; make
&prompt.root; make installСоберите и установите ядро.Запишите загрузочный блок на загрузочный диск с помощью
- &man.disklabel.8; и загрузитесь с новым ядром.
+ &man.bsdlabel.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 74b06bfa66..e90106e015 100644
--- a/ru_RU.KOI8-R/books/handbook/users/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/users/chapter.sgml
@@ -1,1154 +1,1076 @@
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 и
www.учетные записи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
+ Добавление пользователя в &os;&prompt.root; adduser
Username: jru
Full name: J. Random User
Uid (Leave empty for default):
Login group [jru]:
Login group is jru. Invite jru into other groups? []: wheel
Login class [default]:
Shell (sh csh tcsh zsh nologin) [sh]: zsh
Home directory [/home/jru]:
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username : jru
Password : ****
Full Name : J. Random User
Uid : 1001
Class :
Groups : jru wheel
Home : /home/jru
Shell : /usr/local/bin/zsh
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (jru) to the user database.
Add another user? (yes/no): no
Goodbye!
&prompt.root;rmuserrmuserучетные записиудалениеДля полного удаления пользователя из системы вы можете
использовать &man.rmuser.8;. Эта программа выполняет следующие
действия:Удаление записи пользователя из &man.crontab.1; (если
она присутствует).Удаляет задачи &man.at.1;, принадлежащие
пользователю.Уничтожает все процессы, принадлежащие пользователю.Удаляет пользователя из локального файла паролей.Удаляет домашний каталог пользователя (если он принадлежит
пользователю).Удаляет принадлежащую пользователю входящую почту из
/var/mail.Удаляет все файлы, принадлежащие пользователю, из каталогов
с временными файлами, например /tmp.Наконец, удаляет имя пользователя из всех групп, которым оно
принадлежит, в /etc/group.
Если после этого удаления группа остается пустой и
имя группы совпадает с именем пользователя, она удаляется;
Это необходимо для удаления пользовательских уникальных
групп, создаваемых &man.adduser.8;.&man.rmuser.8; не может использоваться для удаления учетной
записи суперпользователя, поскольку это почти всегда означает
разрушение системы.По умолчанию используется интерактивный режим, программа
пытается убедиться, что вы уверены в своих действиях.Интерактивное удаление учетной записи с помощью
rmuser&prompt.root; rmuser jru
Matching password entry:
jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh
Is this the entry you wish to remove? y
Remove user's home directory (/home/jru)? y
Updating password file, updating databases, done.
Updating group file: trusted (removing group jru -- personal group is empty) done.
Removing user's incoming mail file /var/mail/jru: done.
Removing files belonging to jru from /tmp: done.
Removing files belonging to jru from /var/tmp: done.
Removing files belonging to jru from /var/tmp/vi.recover: done.
&prompt.root;chpasschpass&man.chpass.1; изменяет информацию в базе данных пользователей:
пароли, оболочки, персональную информацию.Только системные администраторы с правами суперпользователя
могут изменять информацию и пароли других пользователей с помощью
&man.chpass.1;.При запуске без параметров (кроме опционального имени
пользователя), &man.chpass.1; вызывает редактор, содержащий
информацию о пользователе. Когда пользователь выходит из редактора,
база данных пользователей обновляется этой информацией.
- В &os; 5.X, после выхода из редактора будет запрошен
- пароль (если вы не суперпользователь.
+ После выхода из редактора будет запрошен
+ пароль (если вы не суперпользователь).Интерактивная работа с chpass
суперпользователя#Changing user database information for jru.
Login: jru
Password: *
Uid [#]: 1001
Gid [# or name]: 1001
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /home/jru
Shell: /usr/local/bin/zsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:Обычные пользователи могут изменять лишь небольшую часть этой
информации, и только для своей учетной записи.Интерактивная работа с chpass обычного
пользователя#Changing user database information for jru.
Shell: /usr/local/bin/zsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:&man.chfn.1; и &man.chsh.1; это всего лишь ссылки на
&man.chpass.1;, как и &man.ypchpass.1;, &man.ypchfn.1; и
&man.ypchsh.1;. NIS поддерживается автоматически, так что
указание yp перед командой не обязательно.
Если это непонятно, не беспокойтесь, NIS будет рассмотрен в
.passwdpasswdучетные записиизменение пароля&man.passwd.1; это обычный способ изменения собственного пароля
пользователя, или пароля другого пользователя
суперпользователем.Для предотвращения случайного или неавторизованного изменения,
перед установкой нового пароля необходимо ввести старый.Изменение пароля&prompt.user; passwd
Changing local password for jru.
Old password:
New password:
Retype new password:
passwd: updating the database...
passwd: doneИзменение пароля другого пользователя
суперпользователем&prompt.root; passwd jru
Changing local password for jru.
New password:
Retype new password:
passwd: updating the database...
passwd: doneКак и с &man.chpass.1;, &man.yppasswd.1; это всего лишь
ссылка на &man.passwd.1;, так что NIS работает с обеими
командами.pwpw&man.pw.8; это утилита командной строки для создания, удаления,
модифицирования и отображения пользователей и групп. Она
функционирует как внешний интерфейс к системным файлам пользователей
и групп. У &man.pw.8; очень мощный набор параметров командной строки,
что делает это программу подходящей для использования в shell
скриптах, но новым пользователям она может показаться более сложной,
чем другие представленные здесь команды.Ограничение пользователейограничение пользователейучетные записиограничениеЕсли у вас есть пользователи, может появиться мысль о возможности
ограничения нагрузки на систему. FreeBSD предоставляет
администратору несколько способов ограничения объема
занимаемых пользователями системных ресурсов. Существует два вида
ограничений: дисковые квоты и другие ограничения ресурсов.квотыограничение пользователейквотыдисковые квотыДисковые квоты ограничивают объем пространства, занимаемого
пользователями, это способ быстрой проверки объема без вычисления
его каждый раз. Квоты обсуждаются в .Другие ограничения ресурсов включают способы ограничения
использования CPU, памяти и других ресурсов, которые могут потребляться
пользователем. Ограничения накладываются с помощью классов учетных
записей и обсуждаются в этом разделе./etc/login.confКлассы учетных записей определяются в
/etc/login.conf. Описание полной семантики
выходит за пределы обсуждаемого здесь материала, она детально
описана в странице справочника &man.login.conf.5;. Достаточно
сказать, что каждому пользователю присвоен класс
(default по умолчанию), и каждому классу присвоен
набор характеристик. Характеристика определяется в виде пары
имя=значение,
где имя это определенный идентификатор,
а значение это произвольная строка,
обрабатываемая в зависимости от имени. Настройка классов и
характеристик довольно проста и также описана в
&man.login.conf.5;.Система, как правило, не читает настройки в
/etc/login.conf непосредственно, она обращается
к файлу базы данных /etc/login.conf.db для
ускорения доступа к данным.
Для создания /etc/login.conf.db из
/etc/login.conf, выполните следующую
команду:&prompt.root; cap_mkdb /etc/login.confОграничения на ресурсы отличаются от обычных характеристик:
во-первых, для каждого ограничения существует мягкое
(текущее) и жесткое ограничение. Мягкое ограничение
может настраиваться пользователем или приложением, но не может
превышать жесткое ограничение. Последнее может быть уменьшено
пользователем, но никогда не увеличено. Во-вторых, большинство
ограничений ресурсов применяются к процессам определенного пользователя,
а не к пользователю вообще. Обратите внимание, что эти различия
реализуются специфической обработкой ограничений, а не реализацией
структуры характеристик учетных записей (т.е. это не
настоящий специальный случай характеристик).Ниже приведен список наиболее часто используемых ограничений
на ресурсы (остальные, вместе с другими характеристиками
можно найти в &man.login.conf.5;).coredumpsizecoredumpsizeограничение пользователейcoredumpsizeОграничение на размер файла core, генерируемого программой,
по очевидным причинам подчиняющееся другим ограничениям
на используемое дисковое пространство (например,
filesize, или дисковые квоты).
Тем не менее, оно часто используется как менее строгий
метод контролирования потребления дискового пространства:
поскольку пользователь не создает файлы core самостоятельно,
и зачастую не удаляет их, установка этого параметра может
предохранить его от выхода за пределы дисковых квот, если
большая программа (например, emacs)
создаст core файл.cputimecputimeограничение пользователейcputimeЭто максимальное количество времени CPU, потребляемого
пользователем. Превысившие это время процессы будут уничтожены
ядром.
Это ограничение потребляемого
времени CPU, а не процентов использования
CPU, которые отображаются в некоторых полях &man.top.1;
и &man.ps.1;. Ограничения на них на время написания этого
материала невозможны и такие ограничения практически
бесполезны: компилятор — вполне законное приложение
— иногда может легко использовать почти 100%
CPU.filesizefilesizeограничение пользователейfilesizeЭто максимальный размер файла, который может обрабатываться
пользователем. В отличие от дисковых
квот, это ограничение применяется к отдельным файлам,
а не ко всему набору принадлежащих пользователю файлов.maxprocmaxprocограничение пользователейmaxprocЭто максимальное число процессов, которые могут быть
запущены пользователем. В это число включаются и консольные
и фоновые процессы. По очевидным причинам, они не могут быть
больше, чем системное ограничение, указываемое через
переменную &man.sysctl.8; kern.maxproc.
Имейте ввиду, что установка слишком жестких ограничений может
стать помехой работе пользователя: зачастую полезно входить
в систему с нескольких консолей или использовать каналы.
Некоторые задачи, такие как компиляция большой программы,
также порождают множество процессов (например, &man.make.1;,
&man.cc.1; и другие препроцессоры).memorylockedmemorylockedограничение пользователейmemorylockedЭто максимальный объем памяти, блокировка которого
может быть запрошена процессом (см. например
&man.mlock.2;). Некоторые критически важные для системы
программы, такие как &man.amd.8;, блокируют память так,
что при выгрузке они не создают системе дополнительных
проблем.memoryusememoryuseограничение пользователейmemoryuseЭто максимальный объем памяти, которая может быть занята
процессами. Он включает основную память и
использование подкачки. Это ограничение не снимает все вопросы,
связанные с использованием памяти, но для начала это подходящее
ограничение.openfilesopenfilesограничение пользователейopenfilesЭто максимальное количество файлов, которые могут быть
открыты процессами. В FreeBSD, файлы также используются для
представления сокетов и каналов IPC; не устанавливайте слишком
маленькое значение. Ограничение этого параметра, устанавливаемое
для всей системы, определяется переменной &man.sysctl.8;
kern.maxfiles.sbsizesbsizeограничение пользователейsbsizeЭто ограничение потребляемого пользователем объема сетевой
памяти, т.е. mbufs. Оно было введено как ответ на старые
DoS атаки, при которых создавалось множество сокетов,
но обычно может быть использовано и для ограничения
сетевых соединений.stacksizestacksizeограничение пользователейstacksizeЭто максимальный размер, до которого может вырасти стек
процесса. Сам по себе этот параметр не может ограничить
размер используемой программой памяти, следовательно,
его необходимо использовать вместе с другими ограничениями.Существуют несколько других аспектов, которые необходимо учитывать
при установке ограничений ресурсов. Ниже приведены некоторые общие
подсказки, советы и различные комментарии.Процессам, загружаемым при старте системы скриптами
/etc/rc присваивается класс
daemon.Хотя /etc/login.conf, поставляемый с
системой, это хороший источник подходящих значений для большинства
ограничений, только вы, администратор, можете знать подходящие
значения для вашей системы. Установка слишком слабых ограничений
может повлечь злоупотребления системой, а установка слишком
сильных ограничений может стать помехой производительности.Пользователи X Window System (X11) возможно должны получить
больше ресурсов, чем другие пользователи. X11 сама по себе
потребляет много ресурсов, а также провоцирует пользователей
на одновременный запуск большего количества программ.Помните, что многие ограничения применяются к отдельным
процессам, а не к пользователю вообще. Например, установка
openfiles в 50 означает, что каждый
процесс, запущенный пользователем, может открывать до 50
файлов. Таким образом, общее количество файлов, которые могут
быть открыты пользователем, вычисляется как
openfiles, помноженное на
maxproc. Это также применимо к потребляемой
памяти.За дальнейшей информацией по ограничениям на ресурсы, классам
учетных записей и характеристикам, обращайтесь к соответствующим
страницам справочника.Группыгруппы/etc/groupsучетные записигруппыГруппа это просто список пользователей. Группа идентифицируется
по имени и GID (Group ID, идентификатор группы). В FreeBSD
(и большинстве других &unix;-подобных системах) ядро для определения
прав процесса использует два фактора: его ID пользователя и
список групп, которым он принадлежит. Когда вы слышите что-то о
group ID пользователя или процесса, это обычно означает
только первую группу из списка.Имена групп связываются с ID групп в файле
/etc/group. Это текстовый файл с четырьмя
разделенными двоеточием полями. Первое поле это имя группы,
второе это зашифрованный пароль, третье это ID группы, а четвертое
это разделенный запятыми список членов группы. Этот файл может
быть безопасно отредактирован вручную (предполагается, конечно,
что вы не сделаете синтаксических ошибок!). За более полным описанием
синтаксиса обратитесь к странице справочника &man.group.5;.Если вы не хотите редактировать /etc/group
вручную, используйте команду &man.pw.8; для добавления и
редактирования групп. Например, для добавления группы,
называемой teamtwo, и проверки ее существования
вы можете использовать:Добавление группы с использованием &man.pw.8;&prompt.root; pw groupadd teamtwo
&prompt.root; pw groupshow teamtwo
teamtwo:*:1100:Число 1100 это ID группы
teamtwo. На данный момент в,
teamtwo нет членов, и поэтому она практически
бесполезна. Давайте изменим эту ситуацию, добавив
jru в группу teamtwo.Добавление пользователя в группу с использованием
&man.pw.8;&prompt.root; pw groupmod teamtwo -M jru
&prompt.root; pw groupshow teamtwo
teamtwo:*:1100:jruАргумент к параметру это разделенный
запятыми список пользователей, являющихся членами группы. Из предыдущих
разделов мы знаем, что файл паролей также указывает группу для
каждого пользователя. Пользователь автоматически добавляется системой
к списку групп; пользователь не будет показан как член группы при
использовании &man.pw.8; , но эта
информация будет показана при использовании &man.id.1; или похожего
инструмента. Другими словами, с этим параметром программа &man.pw.8;
работает только с файлом /etc/group; она никогда
не будет пытаться получить дополнительную информацию из файла
/etc/passwd.Использование &man.id.1; для определения принадлежности к
группам&prompt.user; id jru
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)Как вы можете видеть, jru является членом
групп jru и
teamtwo.За дальнейшей информацией о &man.pw.8;, обратитесь к ее странице
справочника, а за дополнительной информацией о формате файла
/etc/group к странице справочника
&man.group.5;.
diff --git a/ru_RU.KOI8-R/books/handbook/vinum/chapter.sgml b/ru_RU.KOI8-R/books/handbook/vinum/chapter.sgml
index 486d22cc80..9e391ef1c5 100644
--- a/ru_RU.KOI8-R/books/handbook/vinum/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/vinum/chapter.sgml
@@ -1,1402 +1,1402 @@
GregLeheyИзначально написано ДмитрийМорозовскийПеревод на русский язык: Менеджер дискового пространства VinumКраткая аннотацияКакие бы диски у вас ни были, они всегда будут подвержены
ограничениям:Слишком маленькиеСлишком медленныеНедостаточно надежныеДля того, чтобы обойти эти ограничения, можно использовать
несколько (и, возможно, избыточное число) дисков.В дополнение к поддержке разнообразных контроллеров RAID, базовая
система FreeBSD включает Менеджер дискового пространства
Vinum — драйвер, реализующий поддержку виртуальных дисков.
Vinum позволяет более гибко оперировать дисковым пространством,
повысить производительность и надежность дисковой подсистемы за счет
реализации моделей RAID-0, RAID-1 и RAID-5, а также их комбинаций.
В данной главе кратко рассматриваются потенциальные проблемы
традиционной системы хранения данных и методы их решения при помощи
Vinum.
Начиная с версии 5 &os;, подсистема Vinum была переписана для
того, чтобы стать совместимой с архитектурой GEOM (см.
), при сохранении исходных идей, терминологии
и формата хранимых на диске метаданных. Новая подсистема называется
gvinum (сокращение от GEOM
vinum). Дальнейший текст обычно использует термин
Vinum как абстрактное название, вне зависимости
от варианта реализации. Все реальные команды должны использовать
gvinum, а имя модуля ядра сменено с
vinum.ko на geom_vinum.ko;
файлы устройств располагаются в каталоге
/dev/gvinum, а не /dev/vinum.
Начиная с &os; 6, старая реализация Vinum удалена из дерева исходных
текстов.Диски слишком малыVinumRAIDsoftwareVinum (произносится Винум,
с ударением на первом слоге) — так называемый
Менеджер дисковых томов — представляет
собой виртуальный дисковый драйвер, призванный решить три вышеописанные
проблемы. Взглянем на них более подробно. Предлагаются
(и реализованы) следующие пути:Объемы дисков растут, тем не менее, растут и требования к объемам
систем хранения данных. Вы запросто можете оказаться в ситуации, когда
требуемый объем файловой системы превышает размеры доступных
дисков. Надо признать, что в настоящее время данная проблема стоит не
так остро, как 10 лет назад, но тем не менее она существует. Некоторые
системы выходят из этого тупика посредством создания мета-устройств,
распределяющих хранящиеся данные по нескольким дискам.Ограниченная пропускная способностьСовременным системам часто необходим одновременный доступ ко многим
данным. В частности, крупный FTP или HTTP-сервер может обслуживать
тысячи одновременных соединений, поступающих по нескольким
100 Mbit/s каналам во внешний мир, что ощутимо превышает скорость
передачи данных большинства дисков.Современные диски могут передавать данные со скоростями до
70 MB/s; однако, эти цифры труднодостижимы в случае, когда к диску
обращается большое число независимых процессов, каждый из которых
может получить лишь часть этого значения. Интересным будет
взглянуть на проблему с точки зрения дисковой подсистемы: важным
параметром в нашем случае будет загрузка подсистемы фактом передачи
фрагмента данных, а именно время, в течение которого диски, участвующие в
передаче, будут заняты.При любом запросе диск сначала должен спозиционировать головки,
дождаться подхода к головкам первого сектора из необходимых, и лишь затем
выполнить обращение. Данная операция может рассматриваться как
атомарная: нет никакого смысла ее прерывать.
Рассмотрим типичный запрос на передачу 10 kB информации. Современные
высокопроизводительные диски подводят головки в нужную позицию в среднем
за 3.5 миллисекунды. Самые быстрые диски вращаются со скоростью
15000 об/мин, так что среднее время на подход первого сектора к
головке (rotational latency, половина времени одного оборота) составит
еще 2 миллисекунды. При линейной скорости передачи данных в
70 MB/s собственно чтение/запись займет около
150 микросекунд — исчезающе мало по сравнению с временем
позиционирования. В нашем случае, эффективная скорость передачи данных
падает почти до 1 MB/s и, очевидно, сильно зависит от размера
передаваемого блока.Традиционным и очевидным решением этой проблемы является принцип
больше шпинделей: вместо использования одного большого
диска можно применить несколько дисков меньшего размера. Диски
позиционируют головки и передают данные независимо, так что эффективная
пропускная способность возрастает примерно во столько раз, сколько дисков
мы применяем.Точная цифра, разумеется, будет несколько ниже: диски могут передавать
данные параллельно, но у нас нет средства обеспечить строго равномерное
распределение нагрузки по всем дискам. Нагрузка на один диск неизбежно
будет больше чем на другой.disk concatenationVinumсцепленные диски (concatenation)Равномерность распределения нагрузки на диски серьезно зависит от
способа распределения по ним данных. В терминах дальнейшего обсуждения,
будет удобно представить пространство хранения набором большого
количества секторов с данными, которые адресуются по номеру, подобно
страницам в книге. Наиболее очевидным методом будет поделить виртуальный
диск на группы расположенных последовательно секторов размером с
физический диск (которые будут подобны разделам книги). Этот метод
называется конкатенацией или сцеплением
(concatenation); его преимуществом является то, что он не
налагает никаких ограничений на размеры применяемых дисков. Конкатенация
эффективна, если нагрузка на дисковое пространство распределена
равномерно. В случае концентрации нагрузки в малой области диска
увеличение производительности не будет заметно. Организация секторов на
сцепленных единицах хранения показана на .Организация сцепленных дисковdisk stripingVinumstriping (перемежение)RAIDАльтернативным подходом будет разделение адресного пространства на
компоненты одного, сравнительно небольшого размера, и расположение их
последовательно на разных устройствах. Например, первая группа из 256
секторов будет расположены на первом физическом диске,
вторая — на следующем и т.д. n+1-я группа попадает на первый
диск вслед за первой. Такое расположение называется
перемежающимся (striping) или
RAID-0.
RAID — сокращение от термина
Redundant Array of Inexpensive Disks (массив недорогих дисков с
резервированием); различные виды RAID
предоставляют разные формы защиты от сбоев. RAID-0,
вообще говоря, не является RAID, поскольку не
обеспечивает резервирования..
Перемежение требует дополнительных усилий для нахождения нужного блока
данных и может приводить к дополнительным нагрузкам на подсистемы
ввода-вывода, если передаваемый блок пересекает границу stripe (тем самым
попадая на разные диски), зато обеспечивает более равномерное
распределение нагрузки по физическим дискам. Распределение блоков по
физическим дискам в случае striping иллюстрируется
.Организация с перемежениемЦелостность данныхНаконец, слабым местом современных дисков является их ограниченная
надежность. Несмотря на то, что за последние несколько лет она ощутимо
выросла, из всех компонентов сервера отказ дисков наиболее вероятен.
Отказ может привести к катастрофическим
результатам: замена отказавшего диска и восстановление данных может
занять несколько дней.disk mirroringVinumзеркалирование (mirroring)RAID-1Традиционным путем решения проблемы надежности является
зеркалирование (mirroring), обеспечивающее
хранение всей информации в двух копиях на различных физических
носителях. С момента изобретения аббревиатуры RAID
эту технику также называют RAID уровня 1 или просто
RAID-1. Любой запрос на запись в таком томе
приводит к записи в оба подтома, чтение может производиться из любой
половины, так что данные остаются доступны в случае отказа одного из
дисков.Зеркалирование имеет два слабых места:Цена: требуется вдвое больше дисков.Проблемы с производительностью: запись производится на оба
диска, требуя вдвое большей пропускной способности шины.
Производительность чтения не уменьшается, более того, часто
увеличивается.RAID-5Альтернативным решением является хранение контрольных сумм
(четности), реализованное в RAID уровней
2, 3, 4 и 5. Наиболее интересен RAID-5. В
реализации Vinum, это вариант организации тома с перемежением, при
котором один из блоков в страйпе выделяется для хранения четности
остальных n-1 блоков. Как требует спецификация
RAID-5, положение блока четности меняется от страйпа
к страйпу.Организация RAID-5По сравнению с зеркалированием преимуществом RAID-5
является гораздо меньшее требование к объему дисков. Скорость чтения
сравнима с чтением в случае томов с перемежением, а вот запись
происходит ощутимо медленнее (примерно вчетверо медленнее чтения). При
отказе одного из дисков массив продолжает работать в "деградировавшем"
режиме: запросы на чтение с оставшихся дисков производятся обычным
образом, а блоки с отказавшего диска перевычисляются из данных
остальных блоков страйпа.
Объекты VinumДля обеспечения необходимой функциональности Vinum использует
четырехуровневую иерархию объектов:"Видимая снаружи" сущность — виртуальный диск,
называемый томом (volume). Тома в основном
аналогичны дискам &unix;, хотя имеются и мелкие различия. На тома
нет ограничений по размеру.Тома образуются из наборов (plex), каждый
из которых представляет полное адресное пространство тома. Данный
уровень иерархии, таким образом, реализует избыточность. Наборы
являются аналогами отдельных дисков в зеркалированном массиве;
содержимое наборов идентично.Поскольку Vinum работает в среде подсистемы хранения данных
&unix;, многодисковые наборы можно было бы реализовать на базе
дисковых разделов &unix;. На практике, подобная реализация
недостаточно гибка (диски &unix; могут иметь весьма ограниченное
число разделов). Вместо этого Vinum вводит еще один
уровень абстракции: единый дисковый раздел &unix;
(drive в терминах Vinum) делится на
непрерывные области, называемые поддисками
(subdisk), которые и будут "строительным материалом" для
наборов.Поддиски, как уже упоминалось, располагаются внутри
приводов (drive) Vinum, существующих
дисковых разделов &unix;. Привод может содержать неограниченное
количество поддисков. Небольшая область в начале привода
зарезервирована под хранение информации о конфигурации и состоянии
Vinum; все остальное пространство пригодно для хранения
данных.Сейчас мы опишем, как эта иерархия обеспечивает необходимую
функциональность для Vinum.Размер томаНаборы могут состоять из большого количества поддисков,
распределенных по разным приводам Vinum. Стало быть, размеры отдельных
дисков не ограничивают размер набора, а следовательно, и тома.ИзбыточностьVinum реализует избыточность посредством связывания с томом
нескольких наборов. Содержимое каждого набора является полной копией
содержимого тома. Количество наборов в томе может быть от одного до
восьми.Хотя набор представляет данные тома целиком, отдельные части
содержимого тома могут быть представлены не всеми наборами.
Во-первых, для некоторых частей набора поддиски могут быть не
определены; во-вторых, часть набора может быть потеряна из-за отказа
диска. До тех пор, пока хотя бы один набор может обеспечить данные для
полного адресного пространства тома, том полностью функционален.ПроизводительностьVinum поддерживает как конкатенацию, так и перемежение на уровне
наборов:Сцепленный набор использует пространство
поддисков последовательно, склеивая их "встык".Набор с перемежением разбивает данные по
поддискам в соответствии с размером страйпа. Поддисков должно быть
по меньшей мере два (чтобы отличить набор от сцепленного), и все
они должны быть одинакового размера.Организация наборов: что выбрать?Vinum, распространяемый с FreeBSD версии &rel.current; поддерживает
два вида организации наборов:Сцепленные наборы наиболее гибки в использовании: они могут
содержать любое количество поддисков произвольного размера. Такой
набор может быть расширен "на лету" путем добавления дополнительных
поддисков. Поддержка сцепленных наборов требует меньших затрат
процессорного времени, чем поддержка наборов с перемежением (хотя
различие вряд ли поддается измерению).
С другой стороны, они наиболее чувствительны к концентрации
нагрузки в одной области тома, при которой один из дисков принимает
на себя всю нагрузку, а остальные бездействуют.Основным преимуществом наборов с перемежением
(RAID-0) является распределение "горячих точек"
нагрузки; вы можете даже полностью уравнять ее, выбрав оптимальный
размер страйпа (около 256 kB). Недостатки такой
организации — более сложный код и ограничения на поддиски:
все они должны быть строго одного размера. Кроме того, процесс
добавления поддиска в набор с перемежением "на ходу" является
настолько нетривиальной задачей, что в настоящее время Vinum не
поддерживает эту операцию. Дополнительное (тривиальное)
ограничение состоит в том, что набор с перемежением должен
содержать как минимум два поддиска, иначе он будет неотличим от
сцепленного.Преимущества и недостатки различных методов организации наборов
описаны в .
Методы организации наборов VinumТип набораПоддисков, мин.Расширяется "на лету"Поддиски строго одного размераПрименениесцепленный (concatenated)1данетКрупные системы хранения, требующие максимальной
гибкости и умеренной производительностис перемежением (striped)2нетдаВысокая производительность, в том числе в случае
параллельного доступа к данным
Несколько примеровVinum ведет базу данных конфигурации, в которой
описаны все объекты Vinum в отдельной системе. Начальная конфигурация
создается пользователем при помощи системной утилиты &man.gvinum.8; из
одного или нескольких конфигурационных файлов. Копия конфигурации
хранится в начале каждого дискового раздела (привода) Vinum. Все копии
обновляются при изменении состояния томов, поэтому после перезапуска
состояние объектов Vinum восстанавливается.Конфигурационный файлКонфигурационный файл описывает объекты Vinum. Описание простого
тома может быть таким:
drive a device /dev/da3h
volume myvol
plex org concat
sd length 512m drive aЗдесь описываются четыре объекта Vinum:Строка drive объявляет дисковый раздел
(привод) и его местоположение на физическом
диске. Приводу дано символьное имя a.
Разделение символьных имен и имен устройств дает возможность
перемещать физические диски (например, по разным контроллерам, или
менять их местами) без изменения конфигурации.Строка volume описывает том.
Единственным требуемым параметром является имя тома
myvol.Строка plex определяет набор.
Единственный обязательный параметр — метод организации
набора, в нашем случае concat (сцепленный).
Давать набору имя в явном виде не обязательно: Vinum автоматически
сгенерирует имя набора из имени тома и суффикса
.px, где
x — номер набора в томе. В нашем
случае набор будет называться myvol.p0.Наконец, строка sd описывает поддиск.
Минимальными требованиями к его описанию являются имя
привода, на котором он будет располагаться, и
его размер. Как и в случае набора, имя указывать не обязательно:
имя поддиска будет построено добавлением
.sx к имени набора, где
x будет номером поддиска в наборе. Наш
поддиск получит имя myvol.p0.s0.В результате обработки такого конфигурационного файла &man.gvinum.8;
выдаст нам следующее:
&prompt.root; gvinum -> create config1
Configuration summary
Drives: 1 (4 configured)
Volumes: 1 (4 configured)
Plexes: 1 (8 configured)
Subdisks: 1 (16 configured)
D a State: up Device /dev/da3h Avail: 2061/2573 MB (80%)
V myvol State: up Plexes: 1 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MBНа этом кратком листинге показан формат вывода &man.gvinum.8;.
Графически созданный нами том представлен на
.Простой том VinumЭтот и последующие рисунки изображают том, содержащий один или
несколько наборов, каждый из которых, в свою очередь, состоит из одного
или нескольких поддисков. В первом тривиальном примере том состоит из
одного набора, представленного одним поддиском.Построенный нами только что том не имеет никаких преимуществ перед
обычным дисковым разделом. Он содержит единственный набор, так что не
обеспечивает избыточность; набор состоит из одного поддиска, поэтому
методика распределения дисковых блоков ничем не отличается от дискового
раздела. В последующих параграфах мы рассмотрим более интересные
конфигурации.Повышаем надежность: зеркалированиеНадежность тома может быть повышена при помощи зеркалирования.
Планируя зеркалированный том, важно не забыть о том, чтобы поддиски
каждого набора располагались на разных физических дисках, чтобы отказ
одного из них не привел к выходу из строя более чем одного набора. Вот
конфигурация, определяющая зеркалированный том:
drive b device /dev/da4h
volume mirror
plex org concat
sd length 512m drive a
plex org concat
sd length 512m drive bКак мы видим, нет необходимости вновь описывать привод
a, поскольку Vinum сохраняет состояние уже
сконфигурированных объектов. После обработки этих определений
конфигурация будет выглядеть так:
Drives: 2 (4 configured)
Volumes: 2 (4 configured)
Plexes: 3 (8 configured)
Subdisks: 3 (16 configured)
D a State: up Device /dev/da3h Avail: 1549/2573 MB (60%)
D b State: up Device /dev/da4h Avail: 2061/2573 MB (80%)
V myvol State: up Plexes: 1 Size: 512 MB
V mirror State: up Plexes: 2 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB иллюстрирует структуру
полученного тома.Зеркалированный том VinumВ данном примере каждый набор содержит все 512 MB адресного
пространства тома. Как и в предыдущем случае, каждый набор состоит
из одного поддиска.Оптимизируем производительностьЗеркалированный том из предыдущего примера гораздо более
отказоустойчив, чем обычный том, но его производительность ниже:
каждый запрос на запись выливается в две операции физической записи,
что вдвое увеличивает необходимую пропускную способность шины дисковой
подсистемы. Увеличение производительности требует иного подхода:
вместо зеркалирования данные распределяются (перемежением) по
максимальному количеству физических дисков. Следующий пример
конфигурации создает том с перемежением на четырех дисках:
drive c device /dev/da5h
drive d device /dev/da6h
volume stripe
plex org striped 512k
sd length 128m drive a
sd length 128m drive b
sd length 128m drive c
sd length 128m drive dКак и ранее, нет необходимости переопределять уже
сконфигурированные приводы. Общий вид базы конфигурации Vinum после
создания нового тома будет таким:
Drives: 4 (4 configured)
Volumes: 3 (4 configured)
Plexes: 4 (8 configured)
Subdisks: 7 (16 configured)
D a State: up Device /dev/da3h Avail: 1421/2573 MB (55%)
D b State: up Device /dev/da4h Avail: 1933/2573 MB (75%)
D c State: up Device /dev/da5h Avail: 2445/2573 MB (95%)
D d State: up Device /dev/da6h Avail: 2445/2573 MB (95%)
V myvol State: up Plexes: 1 Size: 512 MB
V mirror State: up Plexes: 2 Size: 512 MB
V striped State: up Plexes: 1 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB
P striped.p1 State: up Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB
S striped.p0.s0 State: up PO: 0 B Size: 128 MB
S striped.p0.s1 State: up PO: 512 kB Size: 128 MB
S striped.p0.s2 State: up PO: 1024 kB Size: 128 MB
S striped.p0.s3 State: up PO: 1536 kB Size: 128 MBТом с перемежениемНовосозданный том представлен на
. Плотность заштрихованных участков
показывает расположение страйпов в адресном пространстве набора (от
светлых к темным).Отказоустойчивость и производительность одновременно
При наличии достаточного количества дисков можно создать том,
сочетающий повышенную отказоустойчивость и высокую производительность
по сравнению со стандартными дисковыми разделами &unix;. Типичная
конфигурация может быть такой:
volume raid10
plex org striped 512k
sd length 102480k drive a
sd length 102480k drive b
sd length 102480k drive c
sd length 102480k drive d
sd length 102480k drive e
plex org striped 512k
sd length 102480k drive c
sd length 102480k drive d
sd length 102480k drive e
sd length 102480k drive a
sd length 102480k drive bКак вы можете заметить, поддиски второго набора смещены на два
привода относительно поддисков первого. В результате даже при запросе
на запись, пересекающем границы страйпа, не возникнет двух обращений к
одному физическому диску. отражает структуру нового
тома.Зеркалированный том с перемежениемПравила именования объектовКак уже было описано, Vinum автоматически именует создаваемые
наборы и поддиски, хотя эти имена и могут быть переопределены. На самом
деле, мы не рекомендовали бы переопределять стандартные имена: опыт с
дисковым менеджером VERITAS показал, что гибкость в именовании объектов
не дает ощутимого преимущества, а запутать пользователя может.Имена объектов могут состоять из любых непробельных символов.
Впрочем, рекомендуем ограничиться буквами, цифрами и подчеркиваниями.
Имена томов, наборов и поддисков могут быть до 64 символов длиной;
максимальная длина имени привода — 32 символа.Для объектов Vinum в иерархии /dev/gvinum
создаются файлы устройств. Приведенный выше пример конфигурации создаст
следующий набор устройств:Данный список относится только к ранней реализации
Vinum.Управляющие устройства
/dev/vinum/control и
/dev/vinum/controld, используемые системной
утилитой &man.gvinum.8; и даемоном Vinum соответственно.Устройства для каждого из томов.
Основные устройства, используемые Vinum'ом.
Таким образом, вышеописанная конфигурация
будет включать блоковые устройства
/dev/gvinum/myvol,
/dev/gvinum/mirror,
/dev/gvinum/striped,
/dev/gvinum/raid5 и
/dev/gvinum/raid10.Данный список относится только к ранней реализации
Vinum.Каталог /dev/vinum/drive
с записями для каждого привода. В реальности, каждая запись является
символьной ссылкой на соответствующий файл дискового
устройства.Записи для томов располагаются в каталоге
/dev/gvinum.Каталоги
/dev/gvinum/plex и
/dev/gvinum/sd
содержащие устройства для наборов и
для каждого из поддисков.Например, для конфигурации, описываемой как
drive drive1 device /dev/sd1h
drive drive2 device /dev/sd2h
drive drive3 device /dev/sd3h
drive drive4 device /dev/sd4h
volume s64 setupstate
plex org striped 64k
sd length 100m drive drive1
sd length 100m drive drive2
sd length 100m drive drive3
sd length 100m drive drive4после обработки &man.gvinum.8;, созданный набор устройств в каталоге
/dev/gvinum будет таким:
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 plex
crwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 s64
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 sd
/dev/vinum/plex:
total 0
crwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0
/dev/vinum/sd:
total 0
crwxr-xr-- 1 root wheel 91, 0x20000002 Apr 13 16:46 s64.p0.s0
crwxr-xr-- 1 root wheel 91, 0x20100002 Apr 13 16:46 s64.p0.s1
crwxr-xr-- 1 root wheel 91, 0x20200002 Apr 13 16:46 s64.p0.s2
crwxr-xr-- 1 root wheel 91, 0x20300002 Apr 13 16:46 s64.p0.s3Заметим, что, несмотря на то что наборы и поддиски не рекомендуется
называть каким-либо специальным образом, приводы Vinum должны быть
поименованы. Именование позволяет отвязать приводы от физических
устройств, и при этом обеспечить их автоматическое распознавание. Имена
приводов могут достигать длины в 32 символа.Создание файловых системТома с точки зрения системы аналогичны дискам, за одним малым
исключением: в отличие от дисков &unix;, тома Vinum не содержат таблиц
разделов. В результате
потребовалось модифицировать некоторые утилиты работы с дисками, в
первую очередь &man.newfs.8;, которая ранее использовала последний
символ имени тома для определения идентификатора раздела. Например,
дисковое устройство может именоваться
/dev/ad0a — первый раздел
(a) первого (0) IDE-диска
(ad) — или
/dev/da2h — восьмой раздел
(h) третьего (2) диска SCSI
(da). Том Vinum может называться, например,
/dev/gvinum/concat — как легко
видеть, имя тома никак не связано с именем раздела.Обычно &man.newfs.8; пытается интерпретировать имя раздела и
сообщает об ошибке при невозможности такой интерпретации:&prompt.root; newfs /dev/gvinum/concat
newfs: /dev/gvinum/concat: can't figure out file system partitionДля создания файловых систем на томе Vinum следует использовать
команду &man.newfs.8;:&prompt.root; newfs /dev/gvinum/concatДля &os; версий до 5.0 необходимо использовать флаг
и старую схему именования устройств:&prompt.root; newfs -v /dev/vinum/concatСоздание конфигурации VinumСтандартное (GENERIC) ядро FreeBSD не включает
Vinum. Хотя и можно собрать специальное ядро с включенной поддержкой
Vinum, этот вариант не рекомендуется. Обычный способ активизации
Vinum — загрузка модуля для ядра (kld). При
этом, явно использовать команду &man.kldload.8; нет необходимости: при
старте утилита &man.gvinum.8; проверит наличие поддержки Vinum в ядре и
при необходимости загрузит модуль автоматически.АктивацияVinum хранит конфигурационную информацию на дисковых разделах
в той же форме, что используется в файлах конфигурации при создании
объектов. Впрочем, в них применяются некоторые ключевые слова, не
разрешенные в файлах конфигурации. Например, хранимая на диске база
может выглядеть так:volume myvol state up
volume bigraid state down
plex name myvol.p0 state up org concat vol myvol
plex name myvol.p1 state up org concat vol myvol
plex name myvol.p2 state init org striped 512b vol myvol
plex name bigraid.p0 state initializing org raid5 512b vol bigraid
sd name myvol.p0.s0 drive a plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 0b
sd name myvol.p0.s1 drive b plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 1048576b
sd name myvol.p1.s0 drive c plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 0b
sd name myvol.p1.s1 drive d plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 1048576b
sd name myvol.p2.s0 drive a plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 0b
sd name myvol.p2.s1 drive b plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 524288b
sd name myvol.p2.s2 drive c plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1048576b
sd name myvol.p2.s3 drive d plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1572864b
sd name bigraid.p0.s0 drive a plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 0b
sd name bigraid.p0.s1 drive b plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 4194304b
sd name bigraid.p0.s2 drive c plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 8388608b
sd name bigraid.p0.s3 drive d plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 12582912b
sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 16777216bВидно, что каждый объект имеет явно описанное имя, а поддиски
еще и явное положение на приводе (и то и другое может, хотя это и не
рекомендуется, устанавливаться пользователем). Помимо этого, для
каждого объекта хранится его состояние (и установка состояния
напрямую пользователю недоступна). Vinum не хранит в
конфигурационных базах информацию о приводах: она создается при
сканировании дисковых разделов, помеченных как Vinum. Это дает
возможность Vinum правильно идентифицировать диски при смене имени
устройства.Автоматическая активацияДанная информация относится к исторической реализации.
Gvinum обеспечивает автоматическую активацию
при условии загрузки модуля ядра.Для автоматического старта Vinum при загрузке системы добавьте
следующую строку в файл конфигурации системы
/etc/rc.conf:start_vinum="YES" # set to YES to start vinumЕсли в вашей системе нет файла
/etc/rc.conf, создайте его с таким содержимым.
Данная строка вызовет активацию kld модуля Vinum
при загрузке, а также старт всех объектов, упомянутых в конфигурации
Vinum. Активация Vinum происходит до монтирования файловых систем,
так что возможны автоматическая проверка (&man.fsck.8;) и
монтирование файловых систем на томах Vinum.При старте с помощью команды vinum start,
Vinum читает базы конфигурации с одного из приводов. В нормальной
ситуации все приводы содержат идентичную информацию о конфигурации,
так что не имеет значения, какой именно диск будет читаться. В
случае краха Vinum определяет, какая копия является наиболее свежей,
в дальнейшем использует ее, а также обновляет ее на оставшихся
приводах.Vinum для корневой файловой системыСервер, все информационные файловые системы которого дублированы,
хотелось бы оснастить и зеркалированной корневой файловой системой.
Создание такой конфигурации не вполне тривиально по сравнению с
зеркалированием прочих файловых систем:Корневая файловая система должна быть доступна для чтения
в самом начале процесса загрузки, так что инфраструктура Vinum
должна к этому моменту уже работать.Том с корневой файловой системой содержит, помимо прочего,
системный загрузчик и ядро, которые должны читаться "родными"
(native) утилитами компьютера (BIOS для машин архитектуры PC);
обеспечить поддержку ими тонкостей Vinum зачастую невозможно.
В данном разделе термин корневой том означает
том Vinum, содержащий корневую файловую систему. Неплохой идеей является
назвать такой том "root", хотя это, разумеется, и
необязательно. Все наши примеры, впрочем, будут использовать именно это
имя. Активизация Vinum на ранней стадии процесса загрузкиДля обеспечения этого необходимо следующее:Vinum должен быть доступен ядру еще на этапе загрузки.
Метод, описанный в ,
неприменим; на самом деле, параметр start_vinumне должен быть установлен. Одним из вариантов
является сборка ядра с поддержкой Vinum, что возможно, но, как
правило, нежелательно. Более удобный вариант — загрузка
модуля ядра Vinum при помощи /boot/loader
(), для чего в файл
/boot/loader.conf следует добавить
строкуgeom_vinum_load="YES"В случае Gvinum, все стартовые
процедуры производятся автоматически, при загрузке модуля ядра.
Дальнейший текст описывает поведение исторической реализации
Vinum для старых систем.Vinum должен быть активирован достаточно рано, поскольку
требуется предоставить том для корневой файловой системы. По
умолчанию Vinum в ядре не начинает поиск приводов, содержащих
информацию о томах Vinum, до команды администратора (или одного из
стартовых скриптов) vinum start.Данный раздел описывает необходимые действия для FreeBSD
версии 5.X и старше. Шаги, необходимые в случае FreeBSD версии 4.X,
описаны ниже: .Строкаvinum.autostart="YES"в файле /boot/loader.conf, указывает
Vinum автоматически просканировать все диски
для сбора информации о томах в процессе загрузки ядра.Обращаем ваше внимание, что нет необходимости как-либо
специально сообщать ядру, где находится корневая файловая система.
Загрузчик (/boot/loader) найдет необходимое
имя устройства в
/etc/fstab и передаст его ядру. В момент
монтирования корневой файловой системы ядро передаст имя устройства
соответствующему драйверу для декодирования (трансляции в пару
идентификаторов устройств — major/minor device
number).Загрузчик должен прочесть корневой том VinumВ настоящее время начальный загрузчик FreeBSD ограничен размером
всего в 7.5 KB, и этот размер фактически исчерпан (загрузчик должен
уметь прочесть файл /boot/loader с файловой
системы формата UFS и передать ему управление). Невозможно разместить
в загрузчике внутренние структуры Vinum, чтобы он мог считать настройку
Vinum и самостоятельно определить элементы загрузочного тома.
Поэтому, для создания у
загрузчика иллюзии, что загрузка происходит со стандартного раздела
"a" требуются некоторые дополнительные
ухищрения.Для того, чтобы такая загрузка вообще была возможной, корневой том
должен отвечать следующим требованиям:быть только зеркалированным (ни перемежение, ни RAID5
невозможны);содержать ровно один поддиск на каждом из наборов.Заметим, что возможно (и является, вообще говоря, основной целью),
чтобы корневой том содержал несколько наборов, каждый с копией корневой
файловой системы. В процессе загрузки, впрочем, используется только
одна из копий (на этапе поиска начального загрузчика и его
конфигурационных файлов, ядра, модулей и т.п. до момента монтирования
корневой файловой системы). Для обеспечения возможности загрузки
поддиск каждого из наборов должен быть отображен в псевдо-раздел
"a". Вообще говоря, эти псевдо-разделы не обязаны
находиться на одних и тех же местах дисков; тем не менее, во избежание
излишней путаницы, рекомендуется создавать тома с одинаково устроенными
дисками для зеркалирования.Для создания псевдо-разделов "a" необходимо
для каждого из дисков, содержащих копию корневого тома, проделать
следующее:Определить положение (смещение от начала устройства) и размер
поддиска, являющегося частью корневого тома:&prompt.root; gvinum l -rv rootОтметим, что все размеры и смещения в терминах Vinum указаны
в байтах. Для получения номеров блоков, используемых в утилите
- disklabel, все числа надо поделить
+ bsdlabel, все числа надо поделить
на 512.Выполнить команду
- &prompt.root; disklabel -e devname
+ &prompt.root; bsdlabel -e devnameдля каждого из дисков, на котором будет расположен корневой
том. devname будет или именем диска
(например, da0) для дисков без таблицы
слайсов, или именем слайса (ad0s1).Если на устройстве уже есть раздел "a"
(скорее всего, это предыдущая инкарнация корневой файловой
системы), он должен быть переименован (чтобы быть доступным в
будущем, на всякий случай; при этом стартовый загрузчик больше не
должен выбирать его по умолчанию). Не забудьте, что активный
(например, смонтированный) раздел не может быть переименован, так
что переименование нужно производить или загрузившись с диска
Fixit, или в два шага (для конфигурации с
зеркалированием сначала переименовать раздел на втором диске,
затем, после перезагрузки, на первом).Затем, адрес начала нового раздела "a"
вычисляется как сумма начального смещения раздела Vinum и
подсчитанного выше адреса поддиска внутри привода. Совместно с
вычисленным размером эти значения вносятся в поля
"offset" и "size" строки
- "a" &man.disklabel.8;; Поле
+ "a" &man.bsdlabel.8;; Поле
"fstype" должно быть 4.2BSD.
Значения полей "fsize",
"bsize" и "cpg" желательно
заполнить в соответствии с имеющейся файловой системой, хотя
в обсуждаемом контексте это и не строго обязательно.Как можно заметить, новосозданный раздел
"a" располагается внутри раздела Vinum. Утилита
- disklabel разрешает разделам пересекаться только
+ bsdlabel разрешает разделам пересекаться только
в случае, если один из них корректно описан как имеющий тип
"vinum".Готово! Сконструированный псевдо-раздел
"a" создан на каждом из устройств, содержащих
реплики корневого тома. Крайне важно проверить результат
еще раз, выполнив команду&prompt.root; fsck -n /dev/devnameaСледует помнить, что все файлы, содержащие загрузочную
конфигурацию, должны быть построены в соответствии с новой корневой
файловой системой; скорее всего, эта информация не будет соответствовать текущему
положению вещей. В особенности, следует обратить внимание на
содержимое файлов /etc/fstab и
/boot/loader.conf.После перезагрузки начальный загрузчик должен определить данные
новой корневой файловой системы на основе Vinum и действовать в
соответствии с ними. В завершение процесса инициализации ядра, после
упоминания всех определившихся устройств, должно появиться сообщение
вида:Mounting root from ufs:/dev/gvinum/rootПример конфигурации корневой файловой системы на базе VinumПосле создания корневого тома, вывод команды
gvinum l -rv root будет примерно таким:
...
Subdisk root.p0.s0:
Size: 125829120 bytes (120 MB)
State: up
Plex root.p0 at offset 0 (0 B)
Drive disk0 (/dev/da0h) at offset 135680 (132 kB)
Subdisk root.p1.s0:
Size: 125829120 bytes (120 MB)
State: up
Plex root.p1 at offset 0 (0 B)
Drive disk1 (/dev/da1h) at offset 135680 (132 kB)
Из этой информации нас более всего интересует смещение в
135680 байт относительно раздела
/dev/da0h. После деления на 512 получим 265
- дисковых блоков для утилиты disklabel. Аналогичным
+ дисковых блоков для утилиты bsdlabel. Аналогичным
образом, размер тома составит 245760 512-байтных блоков. Так же
устроена реплика тома на диске
/dev/da1h.
- Разметка разделов (disklabel) будет выглядеть примерно так:
+ Разметка разделов (bsdlabel) будет выглядеть примерно так:
...
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 245760 281 4.2BSD 2048 16384 0 # (Cyl. 0*- 15*)
c: 71771688 0 unused 0 0 # (Cyl. 0 - 4467*)
h: 71771672 16 vinum # (Cyl. 0*- 4467*)
Как уже отмечалось, размер ("size")
псевдо-раздела "a" соответствует значению,
вычисленному ранее; смещение ("offset") равно сумме
смещения поддиска внутри раздела Vinum ("h") и
смещения самого этого раздела относительно начала диска (слайса). Так
мы избегаем проблем, описанных ниже (). Заметим также, что раздел
"a" целиком размещен внутри раздела
"h", описывающего все данные Vinum на этом
диске.Заметим, что в описанном примере все дисковое пространство отдано
Vinum. Корневого раздела, существовавшего до настройки Vinum, нет,
поскольку это вновь установленный диск, предназначенный для
использования исключительно в Vinum.Проблемы и их устранениеЕсли что-то пошло не так, должен быть путь для восстановления
доступа к информации. Далее описаны некоторые известные проблемные
ситуации и способы их устранения.Загрузчик работает, но система не грузитсяЕсли по каким-то причинам система не может завершить загрузку,
загрузчик может быть прерван нажатием пробела в течение первых 10 (по
умолчанию) секунд. Вы можете посмотреть переменные загрузчика (такие
как vinum.autostart) при помощи команды
show и изменить их содержимое командами
set и unset.Если единственной проблемой было отсутствие загруженного
модуля ядра Vinum, поможет просто команда
load geom_vinum.Процесс загрузки должен быть продолжен командой
boot -as. Параметры заставят
ядро спросить о корневой файловой системе (параметр
) и остановить процесс загрузки в
однопользовательском (параметр ) режиме. При этом
корневая файловая система будет смонтирована в режиме "только для
чтения" (read-only). В результате, даже если будет смонтирован лишь
один набор из многонаборного тома, риска рассинхронизации наборов
нет.Ответом на приглашение ввести адрес корневой файловой системы
может быть имя любого устройства, указывающего на файловую систему,
пригодную для загрузки. При корректно построенной карте файловых
систем (/etc/fstab) значением по умолчанию
должно быть что-то вроде ufs:/dev/gvinum/root.
Распространенной альтернативой будет, например,
ufs:da0d (раздел, содержащий корневую файловую
систему в эпоху "до Vinum"). Будьте осторожны, монтируя в качестве
корневой файловой системы раздел "a", ссылающийся
внутрь привода Vinum. В зеркалированном томе смонтируется только
часть файловой системы. Если вам потребуется изменить ее
содержимое, необходимо будет также удалить и создать заново остальные
наборы тома в конфигурации Vinum, иначе они будут содержать
несинхронизированные данные.Работает только основной загрузчикЕсли /boot/loader не загружается,
а основной загрузчик все еще пригоден к работе (в
начале процесса загрузки появляется одиночный минус в первой колонке экрана),
можно попытаться прервать основной загрузчик нажатием пробела в этот
момент. При этом загрузка будет остановлена на второй стадии
(см. ). Можно
попробовать загрузиться с другого раздела, например, содержащего
предыдущую копию корневой файловой системы (бывший раздел
"a", см. выше).Ничего не грузится, загрузчик падаетЭто происходит, когда загрузчик на диске затерт Vinum'ом.
К сожалению, Vinum оставляет лишь 4 KB в начале своего раздела
до записи своих управляющих блоков. Две стадии первоначального
- загрузчика в совокупности с меткой диска BSD (disklabel) требуют
+ загрузчика в совокупности с меткой диска BSD (bsdlabel) требуют
8 KB. Так что попытка создать раздел Vinum по смещению 0 диска
или слайса, который должен быть загруженным, затрет загрузчик.Что хуже, попытка разрешить описанную ситуацию посредством
загрузки с диска Fixit и перезаписи начального
- загрузчика при помощи команды disklabel -B (как
+ загрузчика при помощи команды bsdlabel -B (как
описано в ) приведет к тому, что
загрузчик затрет управляющий заголовок Vinum, и тот не сможет найти
свой диск. Хотя собственно конфигурация Vinum при этом не
потеряется, и все данные могут быть восстановлены посредством
создания объектов на их предыдущих местах, очень сложно окончательно
исправить ситуацию. Весь раздел Vinum должен быть смещен по
крайней мере на 4 KB, так чтобы загрузчики и заголовок Vinum
более не пересекались.Отличия для FreeBSD версий 4.XВ системах под управлением FreeBSD 4.X отсутствуют некоторые
функции ядра, необходимые для автоматического сканирования дисков
Vinum'ом; кроме того, код, определяющий номера устройств корневой
файловой системы, недостаточно продвинут для того, чтобы понимать
конструкции вида /dev/vinum/root. Требуется
приложение дополнительных усилий.Во-первых, в файле /boot/loader.conf должен
быть явно указан список дисков, которые Vinum будет сканировать:vinum.drives="/dev/da0 /dev/da1"Важно, чтобы были описаны все приводы, на которых могут встретиться
данные Vinum. Не произойдет ничего плохого, если будет описано
больше дисков, чем необходимо. Также, нет нужды
описывать все слайсы и/или разделы (Vinum сканирует их
автоматически).Поскольку подпрограммы разбора имени корневой файловой системы
и определения номеров устройств воспринимают только
классические имена, такие как
/dev/ad0s1a, для них не подходят имена типа
/dev/vinum/root. Имя корневого тома должно
быть сообщено Vinum отдельно. Для этого служит переменная загрузчика
vinum.root. Соответствующая строка в файле
/boot/loader.conf будет выглядеть так:vinum.root="root"Процедура инициализации ядра выглядит так: перед определением
корневого устройства для загрузки проверяется, не установил ли
какой-либо модуль соответствующий параметр ядра. В случае
положительного ответа и при совпадении основного
(major) номера устройства драйвера и установленной файловой системы
автоопределение прекращается, что дает возможность передать продолжение
процесса загрузки и монтирование корневого тома Vinum.Следует отметить, впрочем, что обработчик ответа на запрос имени
корневой файловой системы (boot -a) не может
разобрать имя тома Vinum. Можно ввести имя устройства, отличное от
устройства Vinum (в этом случае произойдет стандартная процедура
разбора, так что можно указать, например,
ufs:da0d). Имена же, подобные
ufs:vinum/root не могут быть распознаны.
Единственным выходом из этой ситуации будет перезагрузка и введение
имени устройства заново (префикс /dev/ в
ответе на запрос askroot всегда можно опустить).
diff --git a/ru_RU.KOI8-R/books/handbook/x11/chapter.sgml b/ru_RU.KOI8-R/books/handbook/x11/chapter.sgml
index e986ca0f32..4944e0db9c 100644
--- a/ru_RU.KOI8-R/books/handbook/x11/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/x11/chapter.sgml
@@ -1,1794 +1,1768 @@
KenTomОбновили для сервера X.Org X11 MarcFonvieilleАндрейЗахватовПеревод на русский язык: X Window SystemОбзорFreeBSD использует X11 для того, чтобы дать пользователям мощный
графический интерфейс. X11 является открытой реализацией
X Window System, включая &xorg; и
&xfree86;. В версиях &os; до и включая
- &os; 4.11-RELEASE и &os; 5.2.1-RELEASE сервером X11
+ &os; 5.2.1-RELEASE сервером X11
по умолчанию был &xfree86;, выпускаемый
The &xfree86; Project, Inc. Начиная с &os; 5.3-RELEASE,
официальной версией X11 по умолчанию стал
&xorg;, разработанный
X.Org Foundation.Эта глава посвящена установке и настройке
X11 в системе FreeBSD, с акцентом на
&xorg;.За дополнительной информацией по видео оборудованию, поддерживаемому
X11, обратитесь к веб сайтам
&xorg; или
&xfree86;.После чтения этой главы вы будете знать:Как установить и настроить X11.О различных компонентах X Window System и их
взаимодействии.Как установить и использовать различные оконные менеджеры.Как использовать шрифты &truetype; в X11.Как настроить вашу систему на графический интерфейс входа
(XDM).Перед чтением этой главы вам потребуется:Узнать, как устанавливать дополнительное программное обеспечение
сторонних разработчиков ().В этой главе описана установка и настройка серверов X11:
&xorg; и
&xfree86;. По большей части
файлы настройки, команды и синтаксис идентичны.
Там, где есть различия, приводится синтаксис и
&xorg; и
&xfree86;.Основы XПервое знакомство с X может оказаться чем-то вроде шока для тех, кто
работал с другими графическими системами, такими, как µsoft.windows;
или &macos;.Хотя нет необходимости вникать во все детали различных компонентов X и
их взаимодействия, некоторые базовые знания делают возможным
использование сильных сторон X.Почему именно X?X не является первой оконной системой для &unix;, но она
самая популярная из них. До работы над X команда ее разработчиков трудилась
над другой оконной системой. Та система называлась W
(от Window). X была просто следующей
буквой в романском алфавите.X можно называть X, X Window System,
X11 и множеством других терминов. Факт использования названия
X Windows для X11 может задеть интересы некоторых
людей; дополнительную информацию по этому поводу можно найти на
странице справочной системы &man.X.7;.Модель клиент/сервер в XX изначально разрабатывалась, чтобы быть системой, ориентированной
на работу в сети с использованием модели
клиент-сервер.В модели работы X X-сервер работает на компьютере с
клавиатурой, монитором и мышью. Область ответственности сервера
включает управление
дисплеем, обработку ввода с клавиатуры и мыши и так далее. Каждое
X-приложение (например, XTerm или
&netscape;) является
клиентом. Клиент посылает сообщения серверу, такие,
как Пожалуйста, нарисуй окно со следующими координатами,
а сервер посылает в ответ сообщения типа Пользователь только что
щёлкнул мышью на кнопке OK.В случае
использования дома или в офисе, сервер и клиенты X как правило будут работать на
том же самом компьютере. Однако реально возможно запускать X-сервер
на менее мощном настольном компьютере, а приложения X (клиенты) на,
скажем, мощной и дорогой машине, обслуживающей целый офис. В этом
сценарии X-клиент и сервер общаются через сеть.Некоторых это вводит в заблуждение, потому что терминология X
в точности обратна тому, что они ожидают. Они полагают, что
X-сервер будет большой мощной машиной, стоящей на полу,
а X-клиентом является машина, стоящая на их
столах.Важно помнить, что X-сервером является машина с монитором и
клавиатурой, а X-клиенты являются программами, выводящими окна.В протоколе нет ничего, что заставляет машины клиента и сервера
работать под управлением одной и той же операционной системы, или
даже быть одним и тем же типом компьютера. Определённо возможно
запускать X-сервер в µsoft.windows; или &macos; от Apple, и есть
множество свободно распространяемых и коммерческих приложений, которые
это реализуют.Начиная с &os; 5.3-RELEASE, X-сервер, поставляемый с FreeBSD, называется
&xorg;, и он распространяется свободно
под лицензией, очень похожей на условия распространения FreeBSD.
Имеются и коммерческие X-серверы для FreeBSD.Оконный менеджерФилософия построения X очень похожа на философию построения &unix;,
инструменты, не политика. Это значит, что X не пытаются
диктовать то, как должна быть выполнена работа. Вместо этого
пользователю предоставляются инструменты, а за пользователем остается
принятие решения о том, как использовать эти инструменты.Этот подход расширен в X тем, что не задается, как окна должны
выглядеть на экране, как их двигать мышью, какие комбинации клавиш
должны использоваться для переключения между окнами (то есть
AltTab, в случае использования µsoft.windows;), как должны
выглядеть заголовки окон, должны ли в них быть кнопки для закрытия, и
прочее.Вместо этого X делегирует ответственность за это приложению,
которое называется Window Manager (Менеджер Окон). Есть
десятки оконных менеджеров для X: AfterStep,
Blackbox, ctwm,
Enlightenment,
fvwm, Sawfish,
twm,
WindowMaker и другие. Каждый из этих
оконных менеджеров предоставляет различные внешние виды и удобства;
некоторые из них поддерживают виртуальные рабочие столы;
некоторые из них позволяют изменять назначения комбинаций
клавиш, используемых для управления рабочим столом; в некоторых есть
кнопка Start или нечто подобное; некоторые поддерживают
темы, позволяя изменять внешний вид, поменяв тему.
Эти оконные менеджеры, а также множество
других, находятся в категории x11-wm коллекции
портов.Кроме того, оболочки KDE и
GNOME имеют собственные оконные
менеджеры, которые интегрированы в оболочку.Каждый оконный менеджер также имеет собственный механизм настройки;
некоторые предполагают наличие вручную созданного конфигурационного
файла; некоторые предоставляют графические инструменты для выполнения
большинства работ по настройке; по крайней мере один
(Sawfish) имеет конфигурационный файл,
написанный на диалекте языка Lisp.Политика фокусированияДругой особенностью, за которую отвечает оконный менеджер,
является политика фокусирования мыши. Каждая оконная
система должна иметь некоторый способ выбора окна для активации
получения нажатий клавиш, а также визуальную индикацию того, какое
окно активно.Широко известная политика фокусировки называется
щелчок-для-фокуса (click-to-focus).
Эта модель используется в
µsoft.windows;, когда окно становится активным после получения
щелчка мыши.X не поддерживает никакой конкретной политики фокусирования.
Вместо этого менеджер окон управляет тем, какое окно владеет фокусом
в каждый конкретный момент времени. Различные оконные менеджеры
поддерживают разные методы фокусирования. Все они поддерживают метод
щелчка для фокусирования, и большинство из них поддерживают некоторые
другие методы.Самыми популярными политики фокусирования являются:фокус следует за мышью (focus-follows-mouse)Фокусом владеет то окно, что находится под
указателем мыши. Это не обязательно будет окно, которое
находится поверх всех остальных. Фокус меняется при
указании на другое окно, при этом также нет нужды щёлкать на
нём.нечеткий фокус (sloppy-focus)С политикой focus-follows-mouse если мышь помещается
поверх корневого окна (или заднего фона), то никакое окно
фокус не получает, а нажатия клавиш просто пропадают.
При использовании политики нечёткого фокуса он меняется
только когда курсор попадает на новое окно, но не когда
уходит с текущего окна.щелчок для выбора фокуса (click-to-focus)Активное окно выбирается щелчком мыши. Затем окно
может быть поднято и появится поверх всех
других окон. Все нажатия клавиш теперь будут направляться
в это окно, даже если курсор переместится к другому.Многие оконные менеджеры поддерживают и другие политики, а также
вариации перечисленных. Обязательно обращайтесь к документации по
оконному менеджеру.ВиджетыПодход X, заключающийся в предоставлении инструментов, а не
политики, распространяется и на виджеты, которые располагаются на
экране в каждом приложении.Виджет (widget) является термином для всего в
пользовательском интерфейсе, на чём можно
щёлкать или каким-то образом управлять; кнопки, зависимые (radio
buttons) и независимые (check boxes) опции, иконки, списки и так
далее. В µsoft.windows; это называется элементами
управления (controls).µsoft.windows; и &macos; от Apple имеют очень жёсткую
политику относительно виджетов. Предполагается, что разрабатываемые
приложения обязательно должны иметь похожий внешний вид. Что касается
X, то было решено, что не нужно требовать обязательного использования
какого-то определённого графического стиля или набора виджетов.В результате не стоит ожидать от X-приложений
похожести во внешнем виде. Существует несколько популярных наборов
виджетов и их разновидностей, включая оригинальный набор виджетов
Athena от MIT, &motif; (по
образу которого был разработан набор виджетов в µsoft.windows;,
все эти скошенные углы и три разновидности серого цвета),
OpenLook и другие.В большинстве появляющихся в настоящее время приложений для X будет
использоваться современно выглядящий набор виджетов, либо Qt,
используемый в KDE, либо
GTK+, используемый проектом
GNOME. В этом отношении наблюдается
унификация внешнего вида рабочего стола в &unix;, что определённо
облегчает жизнь начинающему пользователю.Установка X11На &os; могут быть установлены &xorg;
или &xfree86;. Начиная с
&os; 5.3-RELEASE, версией X11 по умолчанию для &os; является
&xorg;. &xorg;
это сервер X дистрибутива открытой реализации X Window System,
выпущенной X.Org Foundation. &xorg; основан на коде
&xfree86 4.4RC2 и X11R6.6.
X.Org Foundation выпустила X11R6.7 в апреле 2004 года, а
X11R6.8.2 в феврале 2005; эта версия доступна из Коллекции
портов &os;.Для сборки и установки &xorg; из
Коллекции портов, выполните:&prompt.root; cd /usr/ports/x11/xorg
&prompt.root; make install cleanПеред сборкой полной версии &xorg;
удостоверьтесь в наличии хотя бы 4 GB свободного места.Для сборки и установки &xfree86;
из Коллекции портов:&prompt.root; cd /usr/ports/x11/XFree86-4
&prompt.root; make install cleanКроме того, X11 может быть установлен непосредственно из
пакетов. Бинарные пакеты, устанавливаемые &man.pkg.add.1;,
доступны и для X11. Когда &man.pkg.add.1; используется для удаленной
загрузки пакетов, номер версии пакета необходимо удалить.
&man.pkg.add.1; автоматически установит последнюю версию
приложения.Таким образом, для загрузки и установки пакета
&xorg;, просто наберите:&prompt.root; pkg_add -r xorgПакет &xfree86; 4.X может быть
установлен командой:&prompt.root; pkg_add -r XFree86В примерах выше будет установлен полный дистрибутив
X11, включая серверы, клиенты, шрифты
и так далее. Также доступны и отдельные пакеты и порты для
различных частей X11.В оставшейся части главы будет рассказано о том, как сконфигурировать
X11 и настроить рабочее окружение.Замена &xfree86; на
&xorg;Как и с любым портом, вам необходимо проверить файл
/usr/ports/UPDATING на наличие изменений.
Инструкции по переходу с &xfree86;
на &xorg; включены в этот
файл.Используйте CVSup для обновления
дерева портов перед любой переустановкой. Для замены
X11 вам также потребуется установить sysutils/portupgrade.В файл /etc/make.conf необходимо
добавить переменную X_WINDOW_SYSTEM=xorg.
Это необходимо, чтобы система знала, какой X11 используется.
Старая переменная XFREE86_VERSION не используется,
она заменена переменной X_WINDOW_SYSTEM.Затем используйте следующие команды:&prompt.root; pkg_delete -f /var/db/pkg/imake-4* /var/db/pkg/XFree86-*
&prompt.root; cd /usr/ports/x11/xorg
&prompt.root; make install clean
&prompt.root; pkgdb -FКоманда &man.pkgdb.1; является частью программы
portupgrade, она обновит
различные зависимости пакетов.Перед сборкой полной версии &xorg;
удостоверьтесь в наличии хотя бы 4 GB свободного места.ChristopherShumwayТекст предоставил Конфигурация X11&xfree86; 4.X&xfree86;&xorg;X11Перед тем, как начатьПеред настройкой X11
необходима следующая информация о конфигурируемой системе:Характеристики монитораНабор микросхем, используемый в видеоадаптереОбъём видеопамятичастота горизонтальной разверткичастота вертикальной разверткиХарактеристики монитора используются в
X11 для определения рабочего
разрешения и частоты. Эти характеристики обычно могут быть получены из
документации, которая прилагается к монитору или с сайта производителя.
Тут нужны два диапазона значений, для частоты горизонтальной развёртки
и для частоты вертикальной синхронизации.Набор микросхем графического адаптера определяет, модуль какого
драйвера использует X11 для работы с
графическим оборудованием.
Для большинства типов микросхем это может быть определено
автоматически, но все же его полезно знать на тот случай, когда
автоматическое определение не работает правильно.Объём видеопамяти графического адаптера определяет разрешение и
глубину цвета, с которым может работать система. Это важно, чтобы
пользователь знал ограничения системы.Конфигурирование X11Процесс настройки X11 является
многошаговым. Первый шаг заключается в построении начального
конфигурационного файла. Работая с правами суперпользователя,
просто запустите:&prompt.root; Xorg -configureДля &xfree86; запустите:&prompt.root; XFree86 -configureПри этом в каталоге /root будет создан скелет
конфигурационного файла X11 под именем
xorg.conf.new (там, куда после &man.su.1; или
непосредственного входа будет указывать переменная
$HOME). Для &xfree86;,
этот файл называется XF86Config.new. Программа
X11 сделает попытку распознать графическое оборудование системы и
запишет конфигурационный файл, загружающий правильные драйверы для
обнаруженного оборудования в системе.Следующим шагом является тестирование существующей конфигурации для
проверки того, что &xorg; может работать
с графическим оборудованием в настраиваемой системе. Для этого
выполните:&prompt.root; Xorg -config xorg.conf.newПользователям &xfree86; необходимо
выполнить:&prompt.root; XFree86 -xf86config XF86Config.newЕсли появилась чёрно-белая сетка и курсор мыши в виде
X, то настройка была выполнена успешно. Для завершения тестирования
просто нажмите одновременно
CtrlAltBackspace.Если мышь не работает, ее необходимо настроить.
Обратитесь к в главе об установке
&os;.Тонкая настройка X11Теперь выполните тонкую настройку в файле
xorg.conf.new по своему вкусу (или
XF86Config.new, если вы работаете с
&xfree86;).
Откройте файл в текстовом редакторе, таком, как &man.emacs.1; или
&man.ee.1;. Сначала задайте частоты для
монитора. Они обычно обозначаются как частоты горизонтальной и
вертикальной синхронизации. Эти значения добавляются в файл
XF86Config.new в
раздел "Monitor":Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 30-107
VertRefresh 48-120
EndSectionКлючевых слов HorizSync и
VertRefresh может и не оказаться в
файле конфигурации. Если их нет, то они должны быть добавлены, с
указанием корректных значений горизонтальной частоты синхронизации
после ключевого слова HorizSync и вертикальной
частоты синхронизации после ключевого слова
VertRefresh. В примере выше были введены частоты
монитора настраиваемой системы.X позволяет использовать возможности технологии DPMS (Energy Star)
с поддерживающими её мониторами. Программа &man.xset.1; управляет
временными задержками и может явно задавать режимы ожидания, останова
и выключения. Если вы хотите включить использование возможностей
DPMS вашего монитора, вы должны добавить следующую строку в раздел,
описывающий монитор:Option "DPMS"xorg.confXF86ConfigПока файл конфигурации xorg.conf.new
(или XF86Config.new) открыт
в редакторе, выберите желаемые разрешение и глубину цвета, которые
будут использоваться по умолчанию. Они задаются в разделе
"Screen":Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768"
EndSubSection
EndSectionКлючевое слово DefaultDepth описывает
глубину цвета, с которой будет работа по умолчанию. Это значение
может быть переопределено при помощи параметра командной строки
для &man.Xorg.1; (или &man.XFree86.1;).
Ключевое слово
Modes описывает разрешение, с которым нужно
работать при данной глубине цвета. Заметьте, что поддерживаются
только те стандартные режимы VESA, что определены графическим
оборудованием настраиваемой системы. В примере выше глубина цвета по
умолчанию равна двадцати четырём битам на пиксел. При такой глубине
цвета принимается разрешение в 1024 на 768 точек.Наконец, запишите конфигурационный файл и
протестируйте его при помощи тестового режима, описанного выше.При решении проблем могут помочь лог файлы X11, в которых
находится информация по каждому устройству, к которому
подключен сервер X11. Лог файлам
&xorg; названия даются в формате
/var/log/Xorg.0.log (лог файлам
&xfree86; названия даются в формате
XFree86.0.log). Имена лог файлам
могут даваться от Xorg.0.log до
Xorg.8.log и так далее.Если все в порядке, то конфигурационный файл нужно установить в
общедоступное место, где его сможет найти &man.Xorg.1; (или
&man.XFree86.1;).
Обычно это /etc/X11/xorg.conf или
/usr/X11R6/etc/X11/xorg.conf
(для &xfree86; это
/etc/X11/XF86Config или
/usr/X11R6/etc/X11/XF86Config).&prompt.root; cp xorg.conf.new /etc/X11/xorg.confДля &xfree86;:&prompt.root; cp XF86Config.new /etc/X11/XF86ConfigТеперь процесс настройки X11 завершен. Для запуска
&xfree86; 4.X посредством &man.startx.1;
установите порт x11/wrapper.
В &xorg; уже включен код wrapper, и
установка его из порта не требуется. X11 можно также запустить через
&man.xdm.1;.Имеется также графический инструмент для настройки,
&man.xorgcfg.1; (&man.xf86cfg.1; для
&xfree86;), который включён в
дистрибутив X11. Он позволяет выполнить
настройку в интерактивном режиме посредством выбора соответствующих
драйверов и настроек. Эта программа может быть запущена в консоли
командой xorgcfg -textmode. Для получения более
полной информации обратитесь к странице справочной системы
&man.xorgcfg.1; или &man.xf86cfg.1;.Кроме того, существует программа настройки &man.xorgconfig.1;
(&man.xf86config.1; для &xfree86;),
это консольная утилита, которая менее дружественна к пользователю,
но может работать в ситуациях, в которых другие утилиты не
работают.Тонкие вопросы настройкиКонфигурирование при работе с графическими чипсетами &intel;
i810графический чипсет Intel i810Конфигурирование при работе с интегрированными наборами микросхем
&intel; i810 требует наличия agpgart,
программного интерфейса AGP, посредством которого
- X11 будет управлять адаптером.
- Драйвер &man.agp.4; присутствует в ядре GENERIC
- с момента выпуска 4.8-RELEASE и 5.0-RELEASE. Для предшествующих
- релизов вам нужно добавлять такую строку:
-
- device agp
-
- в конфигурационный файл вашего ядра и перестраивать новое ядро.
- Однако вместо этого вы можете подгружать модуль ядра
- agp.ko автоматически во время загрузки системы
- при помощи &man.loader.8;. Для этого просто добавьте следующую
- строку в файл /boot/loader.conf:
-
- agp_load="YES"
-
- Затем, в случае использования FreeBSD 4.X или более ранних
- её версий, для программного интерфейса должен быть создан файл
- устройств. Для создания файла устройств для AGP запустите
- &man.MAKEDEV.8; в каталоге /dev:
-
- &prompt.root; cd /dev
-&prompt.root; sh MAKEDEV agpgart
-
-
- Во FreeBSD 5.X и более поздних версиях будет
- использоваться &man.devfs.5; для выделения файлов устройств в
- прозрачном режиме, поэтому шаг с &man.MAKEDEV.8; не нужен.
-
+ X11 будет управлять адаптером. Подробности смотрите на странице
+ справочника &man.agp.4;.
Это позволит конфигурировать графическое оборудование точно так
же, как и любой другой графический адаптер. Заметьте, что для
систем, у которых драйвер &man.agp.4; в ядро не вкомпилирован,
попытка погрузить модуль с помощью &man.kldload.8; окончится
неудачно. Этот драйвер должен оказаться в ядре во время загрузки,
либо вкомпилированным, либо подгруженным посредством
/boot/loader.conf.Если вы используете &xfree86; 4.1.0
(или более позднюю версию), и выдаются сообщения о неразрешённых
ссылках типа fbPictureInit, попробуйте добавить
такую строчку после Driver "i810" в
конфигурационном файле X11:Option "NoDDC"MurrayStokelyТекст предоставил Использование шрифтов в X11Шрифты Type1Шрифты, используемые по умолчанию и распространяемые вместе с
X11, вряд ли можно назвать идеально
подходящими для применения в обычных издательских приложениях. Большие
презентационные шрифты выглядят рвано и непрофессионально, а мелкие
шрифты в &netscape; вообще невозможно
разобрать. Однако есть некоторое количество свободно распространяемых
высококачественных шрифтов Type1 (&postscript;), которые можно без
изменений использовать с X11. К примеру, в наборе шрифтов URW
(x11-fonts/urwfonts) имеются
высококачественные версии стандартных шрифтов type1 (Times Roman, Helvetica, Palatino и другие). В набор Freefonts
(x11-fonts/freefonts) включено ещё
больше шрифтов, однако большинство из них предназначено для
использования в программном обеспечении для работы с графикой,
например, Gimp, и они не вполне пригодны
для использования в качестве
экранных шрифтов. Кроме того, X11 с
минимальными усилиями может быть настроена на использование шрифтов
&truetype;. Более детальная информация находится на странице
справочной системы &man.X.7; и в разделе о
шрифтах &truetype; ниже.Для установки вышеупомянутых коллекций шрифтов Type1 из коллекции
портов выполните следующие команды:&prompt.root; cd /usr/ports/x11-fonts/urwfonts
&prompt.root; make install cleanТо же самое нужно будет сделать для коллекции freefont и других.
Чтобы X-сервер обнаруживал
этих шрифты, добавьте соответствующую строку в
файл настройки X сервера /etc/X11/
(xorg.conf для
&xorg; и
XF86Config для
&xfree86;),
которая должна выглядеть так:FontPath "/usr/X11R6/lib/X11/fonts/URW/"Либо из командной строки при работе с X выполните:&prompt.user; xset fp+ /usr/X11R6/lib/X11/fonts/URW
&prompt.user; xset fp rehashЭто сработает, но будет потеряно, когда сеанс работы с X будет
закрыт, если эта команда не будет добавлена в начальный файл
(~/.xinitrc в случае обычного сеанса через
startx
или ~/.xsession при входе через графический
менеджер типа XDM). Третий способ
заключается в использовании нового файла
/usr/X11R6/etc/fonts/local.conf: посмотрите
раздел об антиалиасинге.Шрифты &truetype;Шрифты TrueTypeшрифтыTrueTypeКак в &xfree86; 4.X, так и в
&xorg; имеется встроенная
поддержка шрифтов &truetype;. Имеются два модуля, которые могут
обеспечить эту функциональность. В нашем примере используется модуль
freetype, потому что он в большей степени похож на другие механизмы
для работы с шрифтами. Для включения модуля freetype достаточно в
раздел "Module" файла
/etc/X11/xorg.conf или
/etc/X11/XF86Config добавить следующую
строчку.Load "freetype"В случае &xfree86; 3.3.X требуется
отдельный сервер шрифтов &truetype;. Для этого обычно
используется Xfstt. Для установки
Xfstt просто установите порт
x11-servers/Xfstt.Теперь создайте каталог для шрифтов &truetype;
(к примеру, /usr/X11R6/lib/X11/fonts/TrueType) и
скопируйте все шрифты &truetype; в этот каталог. Имейте в виду,
что напрямую использовать шрифты &truetype; с &macintosh; нельзя;
для использования с X11 они должны
быть в формате &unix;/&ms-dos;/&windows;. После того, как файлы будут
скопированы в этот каталог, воспользуйтесь утилитой
ttmkfdir для создания файла
fonts.dir, который укажет подсистеме вывода
шрифтов X на местоположение этих новых файлов.
ttmkfdir имеется в Коллекции Портов FreeBSD:
x11-fonts/ttmkfdir.&prompt.root; cd /usr/X11R6/lib/X11/fonts/TrueType
&prompt.root; ttmkfdir > fonts.dirПосле этого добавьте каталог со шрифтами &truetype;
к маршруту поиска шрифтов. Это делается точно также, как описано выше
для шрифтов Type1, то есть
выполните&prompt.user; xset fp+ /usr/X11R6/lib/X11/fonts/TrueType
&prompt.user; xset fp rehashили добавьте строку в файл
xorg.conf (или
XF86Config).Это всё. Теперь &netscape;,
Gimp,
&staroffice; и все остальные X-приложения
должны увидеть установленные шрифты &truetype;. Очень маленькие (как
текст веб-страницы на дисплее с высоким разрешением) и очень большие (в
&staroffice;) шрифты будут теперь выглядеть
гораздо лучше.Joe MarcusClarkeОбновление выполнил Антиалиасинг шрифтовшрифты с антиалиасингомшрифтыантиалиасингАнтиалиасинг присутствует в X11 начиная с
&xfree86;,
версии 4.0.2. Однако настройка шрифтов была довольно
громоздка вплоть до появления &xfree86;
4.3.0. Начиная с версии &xfree86; 4.3.0,
все шрифты, расположенные в каталогах
/usr/X11R6/lib/X11/fonts/ и
~/.fonts/, автоматически становятся доступными для
применения антиалиасинга в приложениях, использующих Xft. Не все
приложения могут использовать Xft, но во многих его поддержка
присутствует. Примерами приложений, использующих Xft, является Qt
версий 2.3 и более поздних (это инструментальный пакет для оболочки
KDE), GTK+ версий 2.0 и более поздних (это
инструментальный пакет для оболочки GNOME),
а также Mozilla версий 1.2 и более
поздних.Для применения к шрифтам антиалиасинга, а также
для настройки параметров антиалиасинга, создайте (или отредактируйте,
если он уже существует) файл
/usr/X11R6/etc/fonts/local.conf. Некоторые мощные
возможности системы шрифтов Xft могут быть настроены при помощи этого
файла; в этом разделе описаны лишь некоторые простые возможности. Для
выяснения всех деталей, пожалуйста, обратитесь к
&man.fonts-conf.5;.XMLЭтот файл должен быть сформирован в формате XML. Обратите особое
внимание на регистр символов, и удостоверьтесь, что все тэги корректно
закрыты. Файл начинается обычным заголовком XML, за которым следуют
DOCTYPE и
тэг <fontconfig>:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
Как и говорилось ранее, все шрифты из каталога
/usr/X11R6/lib/X11/fonts/, а также
~/.fonts/ уже доступны для приложений,
использующих Xft. Если вы хотите добавить каталог, отличный от этих
двух, добавьте строчку, подобную следующей, в файл
/usr/X11R6/etc/fonts/local.conf:<dir>/path/to/my/fonts</dir>После добавления новых шрифтов, и особенно новых каталогов со
шрифтами, вы должны выполнить следующую команду для перестроения
кэшей шрифтов:&prompt.root; fc-cache -fАнтиалиасинг делает границы несколько размытыми, что делает очень
мелкий текст более читабельным и удаляет лесенки из
текста большого размера, но может вызвать нечёткость при применении к
тексту обычного размера. Для исключения размеров шрифтов, меньших 14, из
антиалиасинга, добавьте такие строки: <match target="font">
<test name="size" compare="less">
<double>14</double>
</test>
<edit name="antialias" mode="assign">
<bool>false</bool>
</edit>
</match>
<match target="font">
<test name="pixelsize" compare="less" qual="any">
<double>14</double>
</test>
<edit mode="assign" name="antialias">
<bool>false</bool>
</edit>
</match>шрифтымежсимвольное расстояниеДля некоторых моноширинных шрифтов антиалиасинг может также
оказаться неприменимым при определении межсимвольного интервала. В
частности, эта проблема возникает с KDE.
Одним из возможных решений для этого
является жесткое задание межсимвольного интервала в 100. Добавьте
следующие строки: <match target="pattern" name="family">
<test qual="any" name="family">
<string>fixed</string>
</test>
<edit name="family" mode="assign">
<string>mono</string>
</edit>
</match>
<match target="pattern" name="family">
<test qual="any" name="family">
<string>console</string>
</test>
<edit name="family" mode="assign">
<string>mono</string>
</edit>
</match>(это создаст алиасы "mono" для других
общеупотребительных имён шрифтов фиксированного размера), а затем
добавьте: <match target="pattern" name="family">
<test qual="any" name="family">
<string>mono</string>
</test>
<edit name="spacing" mode="assign">
<int>100</int>
</edit>
</match> С некоторыми шрифтами, такими, как Helvetica, при антиалиасинге
могут возникнуть проблемы . Обычно это проявляется в виде шрифта,
который наполовину вертикально обрезан. Хуже того, это может
привести к сбоям таких приложений, как
Mozilla. Во избежание этого следует
добавить следующее в файл local.conf: <match target="pattern" name="family">
<test qual="any" name="family">
<string>Helvetica</string>
</test>
<edit name="family" mode="assign">
<string>sans-serif</string>
</edit>
</match> После того, как вы закончите редактирование
local.conf, удостоверьтесь, что файл завершен
тэгом </fontconfig>. Если этого не сделать,
ваши изменения будут проигнорированы.Набор шрифтов по умолчанию, поставляемый с
X11, не очень подходит, если
включается антиалиасинг. Гораздо лучший набор шрифтов, используемых
по умолчанию, можно найти в порте
x11-fonts/bitstream-vera. Этот
порт установит файл
/usr/X11R6/etc/fonts/local.conf, если такого ещё
не существует. Если файл существует, то порт создаст файл
/usr/X11R6/etc/fonts/local.conf-vera. Перенесите
содержимое этого файла в
/usr/X11R6/etc/fonts/local.conf, и шрифты
Bitstream автоматически заменят используемые по умолчанию в
X11 шрифты Serif, Sans Serif и
Monospaced.Наконец, пользователи могут добавлять собственные наборы
посредством персональных файлов .fonts.conf.
Для этого каждый пользователь должен просто создать файл
~/.fonts.conf. Этот файл также должен быть в
формате XML.LCD-дисплейШрифтыLCD-дисплейИ последнее замечание: при использовании дисплея LCD может
понадобиться включение разбиения точек. При этом компоненты красного,
зелёного и голубого цветов (разделяемые по горизонтали),
рассматриваются как отдельные точки для улучшения разрешения экрана
по горизонтали; результат может оказаться потрясающим. Для включения
этого механизма добавьте такую строчку где-нибудь в файле
local.conf:
<match target="font">
<test qual="all" name="rgba">
<const>unknown</const>
</test>
<edit name="rgba" mode="assign">
<const>rgb</const>
</edit>
</match>
В зависимости от типа дисплея, rgb может
потребоваться заменить на bgr,
vrgb или vbgr: пробуйте и
смотрите, что работает лучше.Mozillaотключение шрифтов с антиалиасингомАнтиалиасинг должен быть включен при следующем запуске X-сервера.
Однако программы должны знать, как использовать его преимущества.
В настоящее время инструментальный пакет Qt умеет ими пользоваться,
так что вся оболочка KDE может
использовать шрифты с антиалиасингом.
GTK+ и GNOME
также можно заставить использовать антиалиасинг посредством капплета
Font (обратитесь к для выяснения всех подробностей).
По умолчанию Mozilla версий 1.2 и выше
будет автоматически использовать антиалиасинг. Для отмены
использования антиалиасинга
перестройте Mozilla с флагом
-DWITHOUT_XFT.SethKingsleyТекст предоставил Менеджеры экранов (Display Managers) XВступлениеX Display ManagerМенеджер Экранов X (XDM) это
необязательный компонент
X Window System, который используется для управления входом
пользователей в систему.
Это полезно в ряде ситуаций, например для минимальных
X Терминалов,
десктопов, больших сетевых серверов экранов. Так как X Window System
не зависит от сетей и протоколов, то существует множество различных
конфигураций для X клиентов и серверов, запущенных на различных
компьютерах, подключенных к сети. XDM
предоставляет графический
интерфейс для выбора сервера, к которому вы желаете подключится, и
введения информации, авторизующей пользователя, например комбинации
логина и пароля.XDM можно рассматривать как аналог
программы &man.getty.8;, предоставляющий такие же возможности
для пользователей
(смотрите для подробной информации).
И это именно так, XDM производит вход в
систему для подключенного
пользователя и запускает управляющую сессию для пользователя (обычно
это менеджер окон X). После этого XDM
ожидает завершения
приложения, означающее завершение пользователем работы и
отключает управляющую сессию. Затем
XDM может снова вывести
приглашение к входу в систему и ожидать входа другого пользователя.
Использование XDMПрограммой даемона XDM является
/usr/X11R6/bin/xdm. Эта программа может быть
запущена от пользователя root в любой момент, и
она начнёт управлять дисплеем X на локальной машине.
Если XDM нужно запускать
в фоновом режиме каждый раз при запуске компьютера, то наиболее
правильный способ — это добавить новую запись в
/etc/ttys. Для более подробной информации о
формате и использовании этого файла смотрите . Вот строка, которую необходимо добавить
в файл /etc/ttys для того, чтобы запустить
даемон XDM на виртуальном терминале:ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secureПо умолчанию эта запись отключена; для её включения
нужно заменить пятое поле с off на
on и перезапустить &man.init.8;, используя метод,
описанный в . Первое поле это название
терминала, которым будет управлять программа, ttyv8.
Это означает, что XDM будет запущен на 9ом
виртуальном терминале.Конфигурирование XDMКонфигурационные файлы XDM находятся в
каталоге
/usr/X11R6/lib/X11/xdm. В нём размещаются
насколько файлов, которые используются для изменения
поведения и внешнего вида XDM.
Обычно это следующие файлы:ФайлОписаниеXaccessПравила авторизации клиентов.XresourcesЗначения ресурсов X по умолчанию.XserversСписок локальных и удаленных экранов.XsessionСценарий сессии по умолчанию.Xsetup_*Скрипт для запуска приложений до появления приглашения
к входу в систему.xdm-configГлобальный конфигурационный файл для всех экранов
запущенных на локальной машинеxdm-errorsОшибки сгенерированные серверной программой.xdm-pidID процесса запущенного XDM.В этом каталоге также находятся несколько командных сценариев
и программ, используемых для настройки рабочего стола (desktop)
при запуске XDM. Назначение
каждого из этих файлов будет вкратце описано. Точный синтаксис и
информация по их использованию находятся в &man.xdm.1;.В конфигурации по умолчанию выводится простое прямоугольное окно
приглашения ко входу в систему с именем компьютера, написанным
сверху большим шрифтом, и строками ввода Login: и
Password: внизу. Это хорошая отправная точка
для изменения внешнего вида экранов
XDM.XaccessПротокол, по которому происходит подключение дисплеев,
управляемых XDM, называется X Display
Manager Connection
Protocol (XDMCP). Этот файл представляет собой
набор правил для управления XDMCP соединениями с
удалёнными машинами. Он игнорируется, пока
стандартный файл xdm-config не содержит
указаний по обслуживанию удалённых соединений.XresourcesЭто файл содержит установки по умолчанию для
приложений, запущенных в экране выбора серверов и экране
приглашения к входу в систему. Именно здесь может быть
изменён вид программы входа в систему. Формат этого файла
идентичен файлу app-defaults, описанному
в документации к X11.XserversЭто список удаленных экранов, которые XDM должен предоставить
как варианты для входа в систему.XsessionЭтот файл представляет из себя командный сценарий по умолчанию
для пользователей, вошедших в систему с использованием
XDM.
Обычно каждый пользователь имеет собственный сценарий входа в файле
~/.xsession, который используется
вместо этого сценария.Xsetup_*Они запускаются автоматически перед тем, как показывается экран
выбора сервера или экран входа в систему. Для каждого экрана
(display) есть свой сценарий с именем Xsetup_,
за которым следует локальный номер экрана (например,
Xsetup_0).
Обычно эти сценарии запускают одну или две программы в
фоновом режиме, например xconsole.xdm-configЗдесь содержатся настройки в формате app-defaults,
которые применимы ко всем экранам данного компьютера.xdm-errorsЗдесь находится выдача X серверов, которые
XDM пытается запустить. Если экран,
который XDM пытается
открыть, отключается по некоторым причинам, то это хорошее
место для поиска сообщений об ошибках. Эти сообщения также
записываются в пользовательский файл
~/.xsession-errors для каждого сеанса.Использование сетевого сервера дисплеевДля того, чтобы позволить другим клиентам подключаться к серверу
дисплеев, отредактируйте правила
контроля доступа и включите обслуживание сетевых соединений.
По умолчанию они выключены, что является хорошим решением
с точки зрения обеспечения безопасности. Для того, чтобы
позволить XDM принимать сетевые соединения,
в первую очередь
закомментируйте строку в файле xdm-config:! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with xdm
DisplayManager.requestPort: 0и потом перезапустите XDM. Помните,
что комментарии в файлах app-defaults начинаются с символа
!, а не как обычно, #. Может
потребоваться более жёсткий контроль доступа. Взгляните на примеры из
Xaccess и почитайте справочник о
&man.xdm.1;.Замены для XDMСуществует несколько программ, заменяющих
XDM. Одна из них,
kdm (поставляемая вместе с
KDE), описана далее в этой главе. В
kdm имеется много визуальных и
косметических улучшений, а также функциональность, позволяющая
пользователям выбирать собственные оконные менеджеры во время
входа в систему.ValentinoVaschettoТекст предоставил Графические оболочкиВ этом разделе описываются различные графические оболочки, доступные
в X для FreeBSD. Термин графическая оболочка может
использоваться для чего угодно, от простого менеджера окон до
полнофункционального набора приложений для рабочего стола, типа
KDE или
GNOME.GNOMEО GNOMEGNOMEGNOME является дружественной к
пользователю графической
оболочкой, позволяющей пользователям легко использовать и настраивать
свои компьютеры. В GNOME имеется панель
(для запуска приложений и
отображения их состояния), рабочий стол (где могут быть размещены
данные и приложения), набор стандартных инструментов и приложений для
рабочего стола, а также набор соглашений, облегчающих совместную
работу и согласованность приложений. Пользователи других
операционных систем или оболочек при использовании такой мощной
графической оболочки, какую обеспечивает
GNOME, должны чувствовать
себя в родной среде. Дополнительную информацию относительно
GNOME во FreeBSD можно найти на сайте
FreeBSD GNOME
Project. Web сайт также содержит достаточно исчерпывающие
FAQ'и, касающиеся установки, конфигурирования и управления
GNOME.Установка GNOMEЛегче всего установить GNOME через
меню Desktop Configuration в ходе процесса установки
FreeBSD, как описано в
Главы 2. Её также легко установить из пакета или Коллекции
Портов:Для установки пакета GNOME из сети,
просто наберите:&prompt.root; pkg_add -r gnome2Для построения GNOME из
исходных текстов используйте дерево портов:&prompt.root; cd /usr/ports/x11/gnome2
&prompt.root; make install cleanПосле установки GNOME нужно указать
X-серверу на запуск GNOME вместо
стандартного оконного менеджера.Самый простой путь запустить
GNOME - это использовать
GDM (GNOME Display Manager).
GDM, который устанавливается, как
часть GNOME (но отключен по умолчанию),
может быть включён путём добавления gdm_enable="YES"
в /etc/rc.conf. После перезагрузки,
GNOME запустится автоматически
после того, как вы зарегистрируйтесь в системе. Никакой
дополнительной конфигурации не требуется.GNOME может также быть запущен
из командной строки с помощью конфигурирования файла
.xinitrc. Если файл
.xinitrc уже откорректирован, то просто
замените строку, в которой запускается используемый менеджер окон,
на ту, что вызовет
/usr/X11R6/bin/gnome-session.
Если в конфигурационном файле нет ничего особенного, то будет
достаточно просто набрать:&prompt.user; echo "/usr/X11R6/bin/gnome-session" > ~/.xinitrcТеперь наберите startx, и будет запущена
графическая оболочка GNOME.Если используется более старый менеджер дисплеев типа
XDM, то это не сработает. Вместо этого
создайте выполнимый файл .xsession с той
же самой командой в нём. Для этого отредактируйте файл,
заменив существующую команду запуска оконного
менеджера на
/usr/X11R6/bin/gnome-session:&prompt.user; echo "#!/bin/sh" > ~/.xsession
&prompt.user; echo "/usr/X11R6/bin/gnome-session" >> ~/.xsession
&prompt.user; chmod +x ~/.xsessionЕщё одним вариантом является настройка менеджера дисплеев таким
образом, чтобы он позволял выбирать оконный менеджер во время входа в
систему; в разделе о KDE2 в
подробностях описывается, как сделать это для
kdm, менеджера дисплеев из
KDE.Шрифты с антиалиасингом и GNOMEGNOMEантиалиасинг шрифтовX11 поддерживает антиалиасинг посредством своего расширения
RENDER. GTK+ 2.0 и более поздние версии (это
инструментальный пакет, используемый
GNOME) могут использовать такую
функциональность. Настройка антиалиасинга описана в
. Таким образом, при наличии современного
GNOME, возможно использование
антиалиасинга. Просто перейдите в
ApplicationsDesktop PreferencesFont
и выберите либо
Best shapes,
Best contrast, либо
Subpixel smoothing (LCDs). Для приложений
GTK+, которые не являются частью оболочки
GNOME, задайте в качестве значения
переменной окружения GDK_USE_XFT1 перед запуском программы.KDEKDEО KDEKDE является простой в использовании
современной графической оболочкой. Вот лишь некоторые из
преимуществ, которые
даёт пользователю KDE:Прекрасный современный рабочий столРабочий стол, полностью прозрачный для работы в сетиИнтегрированная система помощи, обеспечивающая удобный и
согласованный доступ к системе помощи по использованию рабочего
стола KDE и его приложенийЕдинообразный внешний вид и управление во всех приложениях
KDEСтандартизированные меню и панели инструментов, комбинации
клавиш, цветовые схемы и так далее.Интернационализация: в KDE
поддерживается более 40 языковЦентрализованное единообразное конфигурирование рабочего
стола в диалоговом режимеБольшое количество полезных приложений для
KDEСовместно с KDE
поставляется веб-браузер под
названием Konqueror, который
является серьезным соперником другим браузерам для &unix;-систем.
Дополнительную информацию о KDE можно
найти на веб-сайте
KDE. Для получения информации и информационных ресурсов,
специфичных для KDE во FreeBSD, обратитесь
к сайту команды FreeBSD-KDE
team.Установка KDEКак и в случае с GNOME или любой
другой графической оболочкой, легче всего установить
KDE через меню Desktop
Configuration во время установки FreeBSD, как это описано в
Главы 2. Повторимся ещё
раз, что программное обеспечение можно легко установить из пакета
или из Коллекции Портов:Для установки пакета KDE из сети,
просто наберите:&prompt.root; pkg_add -r kde&man.pkg.add.1; автоматически загрузит самую последнюю версию
приложения.Для построения KDE из исходных
текстов воспользуйтесь деревом портов:&prompt.root; cd /usr/ports/x11/kde3
&prompt.root; make install cleanПосле установки KDE нужно
указать X-серверу на запуск этого приложения вместо оконного
менеджера, используемого по умолчанию. Это достигается
редактированием файла .xinitrc:&prompt.user; echo "exec startkde" > ~/.xinitrcТеперь при вызове X Window System по команде
startx в качестве оболочки будет использоваться
KDE.При использовании менеджера дисплеев типа
XDM настройка несколько отличается.
Вместо этого нужно отредактировать файл
.xsession. Указания для
kdm описаны далее в этой главе.Более подробно о KDEТеперь, когда KDE установлена в
системе, можно узнать много нового из её справочных страниц или просто
указанием и щелканьем по различным меню. Пользователи &windows; или
&mac; будут чувствовать себя как дома.Лучшим справочником по KDE является
онлайновая документация. KDE
поставляется с собственным веб-браузером, который называется
Konqueror,
десятками полезных приложений и подробной документацией. В оставшейся
части этого раздела обсуждаются технические вопросы, трудные для
понимания при случайном исследовании.Менеджер дисплеев KDEKDEменеджер дисплеевАдминистратору многопользовательской системы может
потребоваться графический экран для входа пользователей
в систему. Вы можете использовать XDM, как это описано
ранее. Однако в KDE имеется
альтернативный менеджер kdm, который был
разработан более привлекательным и с
большим количеством настраиваемых опций для входа в систему. В
частности, пользователи могут легко выбирать (посредством меню),
какую оболочку (KDE,
GNOME или что-то ещё) запускать после
входа в систему.Для того, чтобы разрешить запуск kdm,
измените в файле /etc/ttys строку, относящуюся
к консоли ttyv8:ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secureXFceО XFceXFce является графической оболочкой,
построенной на основе инструментального пакета GTK+, используемого в
GNOME, но она гораздо легче и предназначена
для тех, кому нужен простой, эффективно работающий рабочий стол,
который легко использовать и настраивать. Визуально он выглядит
очень похоже на CDE, который есть в
коммерческих &unix;-системах. Вот некоторые из достоинств
XFce:Простой, лёгкий в обращении рабочий столПолностью настраиваемый при помощи мыши, с
интерфейсом drag and drop и так далееГлавная панель похожа на CDE, с
меню, апплетами и возможностями по быстрому запуску
приложенийИнтегрированный оконный менеджер, менеджер файлов,
управление звуком, модуль совместимости с
GNOME и прочееВозможность использования тем (так как использует
GTK+)Быстрый, легкий и эффективный: идеален для
устаревших/слабых машин или для машин с ограниченной
памятьюДополнительную информацию о XFce
можно найти на сайте
XFce.Установка XFceДля XFce имеется (на момент написания
этого текста) бинарный пакет. Для его установки просто
наберите:&prompt.root; pkg_add -r xfce4Либо, в случае построения из исходных текстов, используйте
Коллекцию Портов: &prompt.root; cd /usr/ports/x11-wm/xfce4
&prompt.root; make install cleanТеперь укажите X-серверу на запуск
XFce при следующем
запуске X. Просто наберите:&prompt.user; echo "/usr/X11R6/bin/startxfce4" > ~/.xinitrcПри следующем запуске X в качестве рабочего стола
будет использоваться XFce.
Как сказано выше, если используется
менеджер дисплеев, такой, как XDM, создайте
файл .xsession так, как это
описано в разделе о GNOME, но
с командой /usr/X11R6/bin/startxfce4, либо
настройте менеджер дисплеев так, чтобы он разрешил выбор рабочего
стола во время входа в систему, как это описано в разделе о kdm.