ПРЕДИСЛОВИЕ
Когда-то UNIX была специализированной операционной системой, использовавшейся в основном в академической и исследовательской средах. Однако в последнее время UNIX нашла множество других применений и под ее управлением работают самые разнообразные приложения. Как операционная система, UNIX активно завоевывает корпоративную среду. Эффективная поддержка сетей, богатый набор инструментов, а также многозадачные и многопользовательские средства обусловили использование UNIX для поддержки самых ответственных приложений. Корпоративные системы, основу которых составляли мейнфреймы, дают дорогу новым, более гибким технологиям. Internet и сети в целом радикально изменили способ нашей работы. Децентрализация повысила эффективность работы и существенно облегчила нам доступ к данным и их обработку. UNIX добавила и, несомненно, еще добавит к этой картине ряд важных штрихов.
Цель данной книги - предоставить основные сведения, необходимые для успешного администрирования UNIX. В наши дни можно найти немало публикаций, посвященных данной операционной системе, но большинство из них затрагивают довольно ограниченный круг вопросов. Ими удобно пользоваться для ознакомления с тем или иным аспектом работы системы, но если вы - новичок в UNIX, вам очень трудно решить, с чего же начать. В этой книге мы попытаемся приоткрыть покров таинственности над UNIX и осветить важнейшие вопросы, касающиеся этой операционной системы, что даст вам возможность представить работу UNIX в целом и разобраться в том, как использовать ее для своих потребностей.
КАК ОРГАНИЗОВАНА ЭТА КНИГА
Часть I. Как работает система UNIX
Эта часть представляет собой введение в операционную систему UNIX и реализуемые ею функции.
В главе 1 вы найдете основные сведения о UNIX. Вы поймете, в чем заключается разница между рабочими станциями и серверами и как модель "клиент-сервер" используется в UNIX для выполнения ряда задач.
В главе 2 обсуждается структура операционной системы UNIX. Вы узнаете, как UNIX использует пространство на диске, как работает файловая система UNIX, познакомитесь с особенностями ядра UNIX и узнаете, как драйверы управляют периферийными устройствами. Кроме того, вы познакомитесь с процессами UNIX и связями между ними.
В главе 3 вы узнаете о том, как модульная структура UNIX может облегчить жизнь системного администратора. Вы познакомитесь с оболочками UNIX и их особенностями, которыми можно воспользоваться для создания программ, повышающих эффективность вашей работы. Мы поговорим о языках сценариев UNIX (например, Awk и Perl) и расскажем о таком мощном средстве, как регулярные выражения, которые можно использовать для повышения универсальности программ. Наконец, мы познакомим вас с рядом самых распространенных команд UNIX и расскажем об их использовании.
Глава 4 является введением в сетевые средства UNIX. Если вы новичок в этой области, обязательно ознакомьтесь с главой 4, поскольку именно в ней содержится описание основных понятий, которые мы будем неоднократно использовать в последующих главах. Здесь обсуждаются основы создания и работа сетей под UNIX, uucp (программа копирования UNIX-UNIX), использование модемов, сетевое оборудование и совместное использование (разделение) ресурсов. Мы также поговорим о сетевых протоколах и аутентификации.
В главе 5 мы продолжим нашу дискуссию о сетях и рассмотрим подробнее протокол TCP/IP. Мы познакомим вас с принципом IP-адресации, расскажем, как сконфигурировать средства IP на ваших UNIX-узлах (сетевых компьютерах), познакомим с основными принципами IP-маршрутизации. Здесь же обсуждаются различные типы IP-трафика и протоколы, которые можно использовать в вашей работе. Наконец, мы познакомим вас с принципом обмена по коммутируемым линиям и поговорим об обеспечении безопасности сетей.
X Window System - мощный механизм, позволяющий реализовать в системе UNIX графический пользовательский интерфейс. В главе 6 вы узнаете, как сконфигурировать и запустить X Window в системе UNIX. Вы узнаете об интерфейсах Motif и Open Look, которые предоставляют в распоряжение пользователя сложные интерактивные элементы. Эти элементы можно использовать для построения приложений. Кроме того, мы покажем, как конфигурировать диспетчеры окон, серверы шрифтов, как можно использовать X Window для выполнения приложений на нескольких узлах сети.
В главе 7 обсуждаются стратегии администрирования, зависящие от того, какие типы услуг предоставляются вашей системой.
Часть II. Ваша система
Эта часть посвящена вопросам инсталляции и настройки системы UNIX.
Даже если ваша система была инсталлирована кем-то заранее, в главе 8 вы найдете полезную информацию, связанную с повышением производительности и планированием загрузки системы. Здесь освещаются вопросы конфигурирования, например планирование файловой системы и раздела подкачки с целью получения максимальной производительности. Вы познакомитесь со структурой файловой системы UNIX и узнаете, как поддерживать файлы, управляющие запуском вашей системы.
В главе 9 мы обсудим вопросы, связанные с сопровождением и поддержкой работы регистрационного сервера UNIX. Мы покажем, как устанавливать и поддерживать учетные записи пользователей, объясним принцип действия механизма регистрации пользователей в системе. Вы научитесь поддерживать работу среды, разберетесь в принципах работы терминалов.
Системы управления базами данных, которые можно встретить во многих системах, обсуждаются в главе 10. Здесь вы познакомитесь с различными типами СУБД, получите ответы на важнейшие вопросы, связанные с конфигурированием и управлением ими.
Часть III. Получение информации и ее обработка
В этой части мы обсудим вопросы, связанные с получением информации о работе системы UNIX.
В главе 11 рассматриваются методы сбора данных. Вы узнаете, как контролировать использование центрального процессора, оперативной и дисковой памяти, среднюю загрузку своей системы, а также действия пользователей. Кроме того, мы научим вас правильно интерпретировать содержимое файлов протоколов и познакомим с принципами управления удаленными системами.
В главе 12 мы обсудим методы представления и анализа собранных вами данных. Мы познакомим читателей с пакетом MRTG, который позволяет преобразовать исходные данные протоколов в удобные для восприятия диаграммы. Мы покажем, как извлечь из этих данных важные статистические результаты и как анализировать их.
В главе 13 приведен ряд конкретных примеров и обсуждаются методы управления системой, призванные помочь вам в выявлении типичных неисправностей. Освоив указанные методы, вы сможете адекватно реагировать на проблемы, возникающие в ходе работы системы.
Часть IV. Администрирование системы
Эта часть призвана дать читателям нашей книги более глубокие знания о задачах, выполнение которых входит в круг обязанностей администратора системы UNIX.
В главе 14 вы познакомитесь с методами управления стандартными средствами UNIX (такими, как вывод на печать и NFS) и их конфигурированием.
Глава 15 научит вас предупреждать катастрофы в системе. Мы обсудим способы нейтрализации последствий этих, в общем то неизбежных, событий и дадим полезные советы по планированию создания резервных копий.
В главе 16 мы обсудим методы, которыми вы сможете воспользоваться для интегрирования своей системы в гетерогенной среде. Здесь же обсуждаются проблемы подключения и совместимости, с которыми приходится сталкиваться при интегрировании вашего UNIX-сервера с другими платформами.
В главе 17 обсуждаются проблемы безопасности системы UNIX. Здесь вы познакомитесь с методами, позволяющими обнаруживать и пресекать попытки несанкционированного доступа в вашу систему.
Часть V. UNIX и Internet
Система UNIX сыграла важную роль в становлении и распространении Internet. В этой части вы узнаете, как управлять серверами Internet.
В главе 18 рассматривается управление электронной почтой и серверами World Wide Web. Кроме того, мы обсудим вопросы, касающиеся производительности системы, и расскажем, как регистрировать действия пользователей.
В главе 19 поясняется принцип работы DNS (Domain Name Service - Служба доменных имен). Этой главой можно пользоваться как руководством по созданию и обслуживанию DNS-сервера для своей сети.
В главе 20 мы расскажем о работе электронной почты. Здесь вы узнаете, как происходит обмен письмами с удаленным узлом и как сконфигурировать универсальную программу отправки сообщений (sendmail).
В главе 21 речь пойдет о пересылке файлов по Internet. В этой главе вы узнаете, как работают такие службы, как FTP и Archie.
Глава 22 познакомит вас с различными способами применения HTTP-серверов. Мы расскажем вам о HTML (Hypertext Markup Language - Язык описания гипертекстовой информации) и обсудим вопросы создания динамических Web-страниц.
В главе 23 представлен обзор Usenet. Речь пойдет о том, как читать новости, устанавливать различные пакеты и поддерживать систему новостей.
В главе 24 все особенности соединения с Internet рассматриваются с точки зрения системного администратора. В частности, мы продемонстрируем способы управления Internet-соединением, покажем, как сделать его полезным и безопасным для каждого пользователя сети.
Глава 25 познакомит вас с рядом коммерческих и бесплатных инструментов, обеспечивающих функции, необходимые для работы предприятия. Если вам приходится иметь дело со сложной сетью компьютеров под управлением UNIX, эта глава послужит неплохим источником информации о том, где найти более совершенные инструменты, и поможет автоматизировать процесс управления системой.
Приложения
В конце книги приведена справочная информация, которая, несомненно, будет полезна вам, как администратору системы UNIX.
В Приложении А перечислены исходные узлы, занимающиеся распространением пакетов, о которых сказано данной книге. Обратившись на указанные узлы, вы найдете новые версии этих пакетов, а также примеры конфигурации, документацию, информацию о соответствующих списках рассылки, дополнительные модули и т.п.
Приложение Б представляет собой удобный справочник по UNIX-эквивалентам самых распространенных команд DOS. Такой справочник может оказаться полезным, если вы знакомы с интерпретатором команд MS-DOS.
Приложение В представляет собой краткий справочник по vi - стандартному текстовому редактору, включаемому практически во все поставки UNIX. Знать vi хотя бы на самом примитивном уровне совершенно необходимо каждому системному администратору. Если вы еще незнакомы с этим редактором, в данном приложении вы получите основные сведения о нем.
ПИКТОГРАММЫ, ИСПОЛЬЗУЕМЫЕ В ДАННОЙ КНИГЕ
На полях этой книги вы найдете пиктограммы, которыми помечены абзацы, содержащие дополнительные сведения или комментарии по рассматриваемым вопросам.
Истоки операционной системы UNIX следует искать в CTSS - универсальной системе с разделением времени, разработанной Ф. Корбато (F. Corbato) в Массачусетском технологическом институте еще в начале 60-х. Осознавая огромные преимущества многопользовательских, многозадачных систем, компании General Electric, AT&T Bell Labs и МТИ предприняли попытку реализовать проект под названием MULTICS (Multiplexed Information and Computing Service - Объединенные информационные и вычислительные услуги). При этом была поставлена задача разработать систему, которая функционировала бы в операционной системе GE635. В феврале 1969 г., когда стало ясно, что график безнадежно нарушен, AT&T решила "выйти из игры", и те сотрудники Bell Labs, которые были задействованы в проекте MULTICS, были привлечены к другим работам.
В конце весны и начале лета 1969 г. Радд Кэнэдей (Rudd Canaday), Дуг Макилрой (Doug McIlroy), Деннис Ритчи (Dennis Ritchie) и Кен Томпсон (Ken Thompson) подробно обсудили, что можно предпринять для "спасения" хотя бы некоторых идей, заложенных в проект MULTICS. В августе того же года, обнаружив пылящийся на складе и никому не нужный компьютер PDP-7 компании DEC, Томпсон написал операционную систему, оболочку, редактор и ассемблер, потратив на каждую из этих программ примерно по неделе. Написав вчерне проект в офисе Кэнэдея, Томпсон реализовал его на PDP-7. Питер Ньюманн (Peter Neumann) назвал эту новую систему UNICS (Uniplexed Information and Computing Service - Разъединенные информационные и вычислительные услуги), подчеркивая этим каламбуром, что речь идет о "выхолощенной" системе MULTICS. Так и осталось неясным, кто же в конце концов заменил название UNICS на UNIX.
Летом 1970 г. Ритчи и Томпсон (с помощью Джо Оссанны (Joe Ossanna) и Ли Макмахона (Lee McMahon)) приобрели PDP-11/20, пообещав создать "систему обработки текстов". Томпсон написал построчный редактор (названный ed). Ритчи написал roff (основанный на runoff Дж. Солтцера (J. Saltzer)). Патентный отдел Bell Labs был в восторге. Спустя несколько месяцев компания выкупила компьютер PDP-11/20 и приобрела дополнительно 11/45 для выполнения исследовательских работ.
С 1970 г. по 1972 г. система претерпела немало изменений. Но использование UNIX было ограничено лишь отделениями AT&T в Нью-Джерси. Это продолжалось до тех пор, пока новый сотрудник компании, Нил Граундвотер (Neil Groundwater), не инсталлировал ее на PDP-11/20 (56 Кбайт оперативной памяти и два диска RK11/05 общей емкостью 2,4 Мбайт) в New York Telephone (Манхэттен). В течение следующего года все больше и больше пользователей узнавали о существовании UNIX - многие высказывали желание работать в этой системе. Однако AT&T была в затруднении, поскольку не могла заниматься бизнесом, не имеющим отношения к телефонии и телеграфии. Поэтому было принято решение продать UNIX по номинальной стоимости университетским исследовательским центрам со следующими условиями:
Это привело к расширению и объединению сообщества пользователей UNIX. В феврале 1973 г. насчитывалось 16 инсталляций UNIX, в октябре того же года была организована первая презентация "Операционной системы UNIX" на симпозиуме ACM (Association for Computing Machinery), посвященном принципам операционных систем. В течение последующих шести месяцев число инсталляций утроилось. В июле 1974 г. в журнале Communications of the ACM появилась статья Ритчи и Томпсона.
В мае 1974 г., еще до появления указанной публикации, Лу Кац (Lou Katz), Мел Ференц (Mel Ferentz) и Рейдар Борнхолт (Reidar Bornholt) организовали первую встречу пользователей UNIX в колледже при Колумбийском университете. Во встрече приняли участие почти два десятка человек из десятка организаций. Вторая встреча, в июне 1975 г., собрала примерно 40 человек из 20 организаций. Число пользователей UNIX продолжало неуклонно расти, несмотря на полное отсутствие поддержки UNIX со стороны AT&T.
Дела не стояли на месте, и в 1971 г. в Нью-Джерси Дуг Макилрой предложил Ритчи и Томпсону написать руководство программиста UNIX. Поскольку система UNIX непрерывно развивалась, появлялись все новые и новые версии системы и соответственно руководства к ним.
Поскольку система была готова к использованию, а AT&T отказалась помогать пользователям, пользователи решили помогать друг другу, причем некоторые из них начали разрабатывать недостающие по их мнению функции. Колыбелью этих разработок стал Калифорнийский университет в Беркли.
Профессор Роберт Фабри (Robert Fabry) в Беркли принимал участие в программе SOSP. На него произвела большое впечатление презентация Томпсона. У него оказалось достаточно средств, чтобы купить PDP-11/45 и в январе 1974 г. инсталлировать UNIX. В 1975 г. Калифорнийский университет приобрел PDP-11/70. В это же время в Беркли приехал Кен Томпсон. Двое выпускников университета, Чак Хейли (Chuck Haley) и Билл Джой (Bill Joy), были в восторге от Pascal-системы, разработанной Томпсоном (эта система работала под UNIX). Джой даже написал строчный редактор с более "дружественным" интерфейсом, чем ed. Этот редактор получил название ex и стал прямым предшественником экранного редактора vi.
В начале 1978 г. появился ряд заказов на разработки, выполненные в Беркли, и это заставило Джоя выпустить дистрибутивную копию программ Беркли (Berkeley Software Distribution). Первая лента (длиной 1200 футов с плотностью записи 800 бит на дюйм и стоимостью $50) содержала Pascal-систему для UNIX и текстовый редактор ex. Было продано примерно 30 экземпляров этой ленты. К концу 1978 г. был выпущен другой дистрибутив - 2BSD и его было продано около 75 экземпляров. Примерно в то же время компания Interactive Systems (Питер Винер (Peter Weiner) и Хайнц Ликлама (Heinz Lycklama)) создала первую коммерческую систему UNIX, а компания Whitesmiths (П. Дж. Плоджер (P. J. Plauger)) выпустила первый клон UNIX - Idris.
Седьмая редакция (или версия 7) UNIX стала первой мобильной (переносимой) операционной системой. Она включала awk, make и uucp; полный С-компилятор Кернигана и Ритчи; оболочку Bourne; find и cpio, и многое другое. Однако производительность этой системы оказалась хуже, чем у системы шестой версии. За дело взялись пользователи, и в январе 1982 г. Том Феррин (Tom Ferrin) объявил о завершении доработок (2.8.1BSD). Версия 7 ознаменовала появление первой 32-битной UNIX и продемонстрировала настоящую мобильность: Ритчи и Стив Джонсон (Steve Johnson) в AT&T перенесли ее в Interdata, а группа разработчиков из Вуллонгонгского университета (Австралия) перенесла ее в Interdata 8.
Совершенно очевидно, что юридический отдел компании AT&T даже представить не мог всех последствий своего отказа от поддержки: пользователи объединились и начали создавать новые программы, а также исправлять те, которые были первоначально разработаны в Bell Labs. Выбор многими пользователями системы UNIX для работы в Internet лишь усугубил эту ситуацию. AT&T разработала Programmer’s Workbench, а затем - System III UNIX. Тем временем в Беркли выпустили 4BSD (октябрь 1980 г.), 4.1BSD (июнь 1981 г.), 4.1а, 4.1b, 4.1c (1982-83) и 4.2BSD (сентябрь 1983 г.). Эта последняя версия представляла собой существенную переработку системы. Версия 4.2 включала сетевые возможности (TCP/IP) и файловую систему с ускоренным доступом.
AT&T уступила права на UNIX своему подразделению UNIX System Laboratories (USL). USL, в свою очередь, продала их компании Novell, которая продала их Santa Cruz Operation (SCO). В момент выхода настоящей книги SCO занимается продажей SVR4 (c рядом дополнений и исправлений). Linux представляет собой клон BSD, разработанный Линусом Торвальдсом (Linus Torvalds) в 1991 г.
Таким образом, существуют два основных (впрочем, не очень различающихся между собой) типа UNIX: те, которые базируются на 4.2, 4.3 или 4.4BSD, и те, которые базируются на SVR3 или SVR4. (SVR4 меньше отличается от 4.4BSD, чем SVR3 от 4.3BSD.) В этой книге речь идет о версиях UNIX, базирующихся как на BSD, так и на System V.
Проще всего определить, к какому типу относится ваша система (AT&T или Беркли), по следующему признаку. Если для вывода на принтер вы пользуетесь командой lp, ваша система базируется на разработках AT&T. Если же вы выводите информацию на печать с помощью команды lpr, ваша система основана на разработках Беркли. (Если вы пользуетесь OSF/1 или HP-UX, работать будут обе команды.)
Постарайтесь не запутаться во всем сказанном. Несмотря на некоторые различия, почти все пользовательские команды во всех версиях идентичны. Чем бы вы ни пользовались - AIX, BSD, Chorus, HP-UX, Irix, Linux, SINIX, Solaris, SunOS, SVR4 или Ultrix, - все это различные реализации UNIX.