Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
Русификация FreeDOS
Metro Ethernet
оглавление
С 24 июня по 3 августа 2004 года на страницах популяр- вы разместите свое сообщение, тем больше пользовате-
ного каталога программного обеспечения SOFT@Mail.Ru лей его прочитает и тем больше у вас шансов победить.
(http://soft.mail.ru) проводится конкурс «Сисадмин – тоже Итоги конкурса будут подведены 3 августа. Системно-
человек», посвященный Международному дню системно- го администратора, чье сообщение будет пользоваться
го администратора (30 июля). Конкурс организован ком- наибольшим вниманием пользователей и авторов откры-
панией SoftLine и интернет-холдингом Mail.Ru. ток, ждет главный приз от генерального спонсора конкур-
Конкурс посвящен вам, уважаемые сисадмины, и ва- са «Сисадмин – тоже человек» – Учебного Центра SoftLine
шему нелегкому труду, и не только нелегкому, но еще и (http://softline.ru/edu). Это программа подготовки Microsoft
нервному, а иногда и просто вредному. Для здоровья, ко- Certified Systems Administrator (MCSA 2003). Программа
нечно, а не для пользователей. Вознаграждать этот труд представляет собой трек продолжительностью 17 дней,
обычно некому: для пользователя сисадмин – работник состоящий из набора полезных курсов:
«невидимого фронта», чем незаметней, тем лучше, да и ! управление и поддержка среды Windows Server 2003;
сами сисадмины по природе обычно скромные и сдержан- ! установка, настройка и администрирование Windows
ные. Работа обязывает. XP Professional;
Сисадмин в России часто отвечает за работу, не име- ! внедрение сетевой инфраструктуры Windows Server
ющую прямого отношения к его профессиональным обя- 2003: сетевые узы;
занностям. Более половины сисадминов официально не ! внедрение, управление и сопровождение сетевой ин-
называются системными администраторами. Поэтому к фраструктуры Windows Server 2003: сетевые службы;
участию в этом летнем творческом конкурсе приглаша- ! установка и управление Microsoft Internet Security and
ются также веб-мастера, администраторы баз данных и Acceleration Server 2000.
служб электронной почты, системные программисты, ад-
министраторы телефонных сетей и систем голосовой по- Победитель может заменить входящие в трек MCSA
чты и других служб. 2003 курсы на аналогичные по стоимости и длительности
Конкурс «Сисадмин – тоже человек» будет способство- курсы Microsoft. Сисадминов-победителей ждут фирмен-
вать мягкой психологической реабилитации работников ные призы от Mail.Ru, а также бесплатная подписка на
системного администрирования: вам, уважаемые сисад- второе полугодие 2004 года на журнал «Системный ад-
мины, предлагается поделиться своими размышлениями министратор» от редакции журнала. Авторы лучших от-
о работе, пользователях, компьютерах и жизни в целом. крыток получат ценные призы от интернет-магазина
Рассказав о трудностях (а может, и радостях) сисадминс- Allsoft.ru (http://www.allsoft.ru) компании SoftLine, главный
кой жизни, изложив всю правду о «юзерах» и почитав со- из которых – графический планшет Wacom. А 30 июля – в
общения ваших коллег, вы снимете напряжение, рас- Международный день сисадмина – всех участников кон-
слабитесь, выскажетесь и … улыбнетесь. Ваши оригиналь- курса ждет приятный сюрприз.
ные рассказы, жалобы, истории вдохновят пользователей Официальная страничка конкурса в Интернете – http://
на создание открыток в честь дня сисадмина. Создание soft.mail.ru/competitions/sysadmin.
открыток для сисадминов составит вторую часть конкур- По адресу info@soft.mail.ru вы можете задать любые
са под кодовым названием «Утешить сисадмина». вопросы, связанные с проведением конкурса, а также при-
Открытки разместятся на сайте Открытки@Mail.Ru слать ваши предложения и пожелания.
(http://cards.mail.ru). С этого сайта все желающие смогут С уважением организаторы конкурса – компании SoftLine
послать поздравления своим знакомым сисадминам. Каж- и Mail.Ru.
дая открытка будет создаваться автором в честь одного
из сисадминов, оставивших свое сообщение в книге жа-
лоб. Победитель среди сисадминов будет определяться
по числу размещенных в его честь открыток. Чем раньше
ЕСТЬ ТАКАЯ
ПРОФЕССИЯ
АЛЕКСЕЙ КОРШУНОВ
В последнее время профессия системного администра-
тора стала крайне популярной, особенно среди молодых
людей. Практически в любой компании есть специалисты
такого профиля. Кто эти люди, и какое у них как специа-
листов будущее?
Так как официально профессии «системный админист-
ратор» не существует, количество её трактовок неимовер-
но велико, каких только не приходилось мне слышать. От
ужасно вычурных до откровенно «забавных», но в одном
сходятся все – это человек, настраивающий и следящий за
работой «компьютерного хозяйства» компании. Будь то Любой специалист-сисадмин на пальцах разложит и
мощные сервера и сотни пользовательских станций или докажет, что такое утверждение не верно в принципе.
десяток пользовательских компьютеров и одиннадцатый Но так ли это? Работа многих и многих системных ад-
в «качестве сервера». министраторов заключается (разумеется, не всегда, но
Из-за неразберихи с определением, а значит, и обя- чаще всего) в следовании некоторым схемам. «Настроил,
занностями системных администраторов, большинство следишь за работой, избегаешь нештатных ситуаций, если
бизнесменов и начальников слабо представляют, чем че- таковые возникают, исправляешь последствия». По боль-
ловек с такой специальностью должен заниматься. Очень шому счету схему работы среднего системного админис-
часто приходится слышать, как сисадмина называют по- тратора небольшой компании можно было бы описать в
свойски «компьютерщик». Я неспроста привел этот тер- одной не самой толстой книжке. Даже места для карти-
мин. Дело в том, что довольно давно, когда он появился, у нок хватило бы. «А как же искусство?» – спросите вы. «Как
людей в голове сложилась картина этакого «маньяка кла- же решение нестандартных проблем и задач?» Полнос-
виатуры», который, грубо говоря, просто хорошо разби- тью с вами согласен – для решения действительно нетри-
рается в компьютерах. Следовательно, этот человек мо- виальных и сложных задач (проблем) нужен достаточный
жет разобраться и в серверах, и в компьютерах пользова- опыт и просто элементарное знание основ плюс голова
телей и… может настроить мини-АТС, починить ксерокс, на плечах. Но, господа хорошие, поймите, что работода-
поменять бумагу в факсе. Ведь начальство действитель- телей устраивает «работа по схеме». Поэтому совсем не
но свято верит, что все это оборудование напрямую отно- удивительно, что они предпочитают взять на работу сту-
сится к «компьютерному хозяйству» компании, а значит, дента-недоучку за маленькие деньги вместо матерого и
в ведении системного администратора. Другими слова- опытного специалиста на весьма и весьма хорошие день-
ми, круг обязанностей системного администратора может ги. Более того, ситуация не стоит на месте, и многие уже
оказаться весьма широк. пришли к тому, что можно и настоящего специалиста взять
Возросшая популярность профессии привела к пони- за копейки, дописав ему количество обязанностей, кото-
жению общего уровня зарплат и уровня востребованнос- рые в принципе не способен выполнять один и тот же че-
ти системных администраторов. Я говорю о тех толпах сту- ловек по причине отсутствия трех голов и восьми рук. Но
дентов и просто безработных молодых людей, которые по кого это интересует? Реально – никого, кроме самих «оби-
какой-то причине вообразили, что они могут работать си- женных» системных администраторов. Для работающих
стемными администраторами. Давайте посмотрим на си- на данный момент специалистов назрела проблема – как
туацию честно и непредвзято. Для большинства (относи- быть дальше. Куда развиваться, где искать заработок нор-
тельно количественной, а не качественной массы) ныне мального уровня. Причин возникновения данной ситуации
существующих системных администраторов эта специаль- существует немало, и если вдаваться в детали и тонко-
ность есть способ заткнуть дыру своей незанятости как сти, то получится как минимум хорошая курсовая для ка-
работающего человека. «Я нигде не работаю, но знаю ком- кого-нибудь студента. Давайте лучше подумаем, как вый-
пьютеры (это «знаю» заслуживает отдельного длинного ти из этого положения.
обсуждения, ну да бог с ним) – значит, я могу работать Первое, что приходит в голову, – это повышение про-
системным администратором». Правильно? И да, и нет. фессионального уровня. Прохождение курсов и получе-
4
IMHO
ние сертификатов помогают найти высокооплачиваемую (от момента «смены профиля») он добился желаемого ре-
работу по специальности. К слову сказать, некоторые сер- зультата и, насколько я знаю, весьма им (как результа-
тификаты можно получить, не посещая курсы, а лишь со- том, так и профилем) доволен.
вершенствуя свои познания в нужной области с последу- Другой пример не связан с поиском места работы «вок-
ющей сдачей экзаменов. руг себя», однако имеет прямое отношение к профессии
Настоящие системные администраторы-профессиона- системного администратора. Так как многие достаточно
лы не сидят на месте и не имеют возможности «зависать» долго работающие в данной специальности люди имеют
на форумах и в чатах целыми днями. У них слишком мало свои «рабочие» схемы и способы анализа как задач, так
времени и слишком много дел, за которые они и получа- и различных внештатных ситуаций (другими словами, ис-
ют достойную оплату. пользуют системный подход), не удивительно, что анали-
Также возможен последующий переход на новые сту- тическая часть ума у этих людей развита превосходно.
пени. Известны случаи, когда администратор-професси- Поэтому лично я ничуть не удивился, когда узнал, что два
онал перерастал в руководителя крупного IT-отдела боль- моих знакомых стали аналитиками в достаточно крупных
шой компании или же вовсе начинал собственное дело. компаниях. Разумеется, эта работа гораздо более инте-
Но скажите честно, все ли вы действительно собирае- ресна для них, так как не зациклена на чем-то одном (ком-
тесь всю жизнь работать системными администраторами, пьютеры, сервера и проч.), а охватывает несоизмеримо
пусть даже в надежде стать начальниками IT-отдела? Не больший круг вопросов.
та это специальность, которая способствует постоянному Другими словами, примеров смены основного профи-
профессиональному росту и радует душу будущими зо- ля масса. Зачастую они сделаны с учетом тех сильных
лотыми горами. (Исключаем из рассмотрения места в ком- сторон человека, которые были выявлены в процессе ра-
паниях, где данное утверждение не верно по причине боль- боты в должности системного администратора. Какая-то
шого размера компании и широчайших возможностей часть людей находит интересную для себя работу в том
карьерного роста – такая ситуация не настолько типична, же офисе, где они обслуживали компьютерную сеть. Как
как многим хотелось бы.) правило, все вопросы, связанные с аналитическими, так-
Если представить, что вы уже прошли тот период, ког- тическими сторонами работы, достаточно легко даются
да вам «срочно нужны деньги на пиво» и предположить человеку, работавшему системным администратором.
смещение приоритетов в более серьезную сторону, то Видимо, причина в типе мышления людей, выбирающих
представляется весьма неплохая картина для смены ос- эту специальность.
новной специализации. Работа у вас уже есть, нехватки Так в чем же дело? Может быть, пора перестать де-
свободного времени (как правило) нет, какие-никакие лать большие круглые глазки, встречая очередное объяв-
деньги компания ежемесячно вам «отслюнявит». Что ме- ление о поиске «человека-комбайна» и вплотную занять-
шает прекратить ныть о тяжести судьбы и начать менять ся своим будущим? Я понимаю, что возможность целыми
ситуацию хотя бы относительного себя самого? Думаю, днями фактически ничего не делать, а только сидеть на
что только лень. форумах и в чатах, для многих притягательна, но пора за-
Кем может быть человек, проработавший какое-то вре- думаться о том, чем это обернется в будущем. Огляни-
мя системным администратором? Да кем угодно! Более тесь вокруг, может быть, «ваша» специальность скрыва-
того, у системных администраторов зачастую даже боль- ется за соседним столом менеджера по работе с корпора-
ше возможностей найти специальность «под себя», так тивными клиентами.
как по воле работы им зачастую приходится поверхност- Мне приходилось слышать уверения вроде «я больше
но вникать в аспекты работы многих сотрудников. ничего делать не умею». Думаю, нетрудно вспомнить, что
Примером смены основного профиля может послужить когда-то вы и UNIX не смогли бы установить. Или вы ро-
ситуация, когда люди в процессе работы понимали, что дились, зная, как работать в шелле? Сомневаюсь.
общая деятельность компании им как минимум интерес- Специальность системного администрирования нельзя
на. Обычно впоследствии эти люди получали соответству- сравнивать со сферой коммунальных услуг, все-таки она
ющее их интересам образование (как вариант, если это требует некоторого интеллектуального труда, а не слепо-
возможно, прохождение нужных курсов) и, случалось, что го следования инструкциям. Но и рассматривать ее как
меняли род деятельности на совершенно иной. Так, на- постоянную специальность для состоявшегося человека,
пример, один мой знакомый, работавший в компании, за- мне кажется, не совсем правильно, так как эта профес-
нимающейся продажей мото- и автотехники, захотел быть сия не может дать достойного развития и карьерного рос-
руководителем отдела продаж (там и заработки выше, и та (повторюсь – за исключением редких случаев, рассмат-
работа много интересней, не говоря уже о различных пер- ривать которые я не берусь особенно в свете глобальной
спективах «полезных знакомств»). Получил образование, популяризации этой специальности) для действительно
прошел курсы менеджмента и сообщил своему началь- умного сотрудника.
ству о желании работать в новом качестве. Разумеется, Начальство зачастую и не подозревает, какие ценные
никто не назначил новоиспеченного менеджера руково- кадры скрыты в их компании до тех пор, пока вы сами это
дителем уже состоявшегося отдела в тот же миг, и ему им не покажете.
пришлось какое-то время работать, доказывая свою со- Может быть, уже пришло время активных действий,
стоятельность как исполнителя, так и руководителя. Од- чтобы не было мучительно больно за впустую потрачен-
нако для нас гораздо важнее то, что спустя всего полгода ные годы лет так через десять?
ВСЕВОЛОД СТАХОВ
6
администрирование
В этой статье пойдет речь о создании эффективного по- первых, надо очень четко представлять порядок сборки
чтового сервера на базе MTA exim. Первый вопрос, кото- различных компонентов. Во-вторых, необходимо разби-
рый, конечно же, приходит в голову – «Почему именно раться в куче опций для связки различных библиотек. В-
exim?». Отвечают на этот вопрос по-разному, поэтому я третьих, надо четко представлять себе все пути и знать,
скажу, что меня так привлекает в exim: каких пользователей надо добавлять. Ну и в-четвертых,
! логичная схема обработки почты; это дело очень сложно обновлять. Потому мы воспользу-
! высокая скорость работы; емся услугами системы портов (если у вас, например,
! удобный формат конфигурационного файла; Debian GNU Linux, то нужный пакет называется exim4-
! широчайшие возможности по поиску каких-либо зна- daemon-heavy).
чений в файлах, СУБД, LDAP; Для этого ставим следующие порты:
! встроенная поддержка smtp-аутентификации;
! небольшое число найденных уязвимостей (фактичес- databases/pogstgresql7
mail/exim
ки я знаю только об одной, найденной недавно, она ка-
салась версий exim до 4.20 включительно); при компиляции необходимо указать следующие опции:
! очень большое количество возможностей, а также
чрезвычайная гибкость; make WITH_PGSQL=yo
mail/p5-Mail-SpamAssassin
! возможность полной замены sendmail (т.е. можно сде- security/clamav
лать): mail/courier-imap
На мой взгляд, exim является весьма и весьма удач- make WITH_CRAM=yo WITH_POSTGRESQL=yo
mail/squirrelmail
ным продуктом, не зря он используется по умолчанию в
ОС Debian GNU Linux. Два больших минуса exim состоят в После сборки всего нужного переходим к стадии на-
том, что отсутствует качественная документация на рус- стройки. Тут придется затратить порядочное количество вре-
ском языке (этот недостаток я, возможно, постараюсь в мени на настройку всех компонентов почтовой системы, и
скором времени исправить написанием книги, посвящен- целью этой статьи является минимизация этого времени.
ной целиком и полностью этому замечательному MTA) и Итак, начнем с настройки СУБД PostgreSQL, как осно-
необходимость правки Makefile для включения тех или вы для построения почтовой системы. Во-первых, Postgre
иных возможностей exim. SQL работает с правами системного пользователя pgsql
Итак, для начала подумаем, что должна содержать (обратите внимание, этот пользователь имеет реальный
«идеальная» с точки зрения удобства администрирования shell и домашний каталог – /usr/local/pgsql). Поэтому для
и использования почтовая система. Сформулируем ряд начала задаем пароль для данного пользователя:
требований к почтовой системе:
! простота управления пользователями; # passwd pgsql
! возможность предоставления доступа для отправки по-
чты пользователям локальной сети и мобильным поль- Далее делаем su pgsql и начинаем создание базы дан-
зователям (при помощи smtp-аутентификации); ных:
! максимальная защита от хакерских атак, вирусов и спа-
ма. # su pgsql
% psql
Базовой системой для установки MTA явилась FreeBSD Вводим пароль пользователя pgsql и попадаем в ко-
5.2.1, что обусловило определенные особенности установ- мандную строку SQL-запросов. Для подробного ознаком-
ки. Перечислю весь набор программного обеспечения для ления с возможностями СУБД советую обратиться к ру-
организации mail-сервера: ководству или же одной из книг. Создаем БД:
! exim-4.34;
! MTA (mail transfer agent – агент передачи почты); CREATE DATABASE users;
! courier-3.0.4 – imap-сервер для доступа к почте поль-
зователей, не имеющих локальных пользовательских Присоединяемся к данной БД:
учетных записей (виртуальные пользователи);
! ClamAV – для поиска вирусов; \c users
! SpamAssasin – для поиска спамерских писем;
! PostgreSQL-7.4.2 – для хранения всех данных о пользо- Создаем таблицу пользовательских аккаунтов, а так-
вателях почтовой системы; же constraint для нее:
! SquirrelMail – просто приятный веб-интерфейс для по-
чты (требует веб-сервер и php). CREATE TABLE accounts (
uid serial NOT NULL,
login character varying(128),
Конечно, можно собрать все вышеперечисленные ком- "password" character varying(128),
maildir character varying(255),
поненты и вручную, но я не поклонник такого подхода. Во- gecos character varying(255),
8
администрирование
который обрабатывает exim. Тогда все строковые и дру- Заметьте необходимость замены пробелов на %20, как
гие константы тоже заключаются в фигурные скобки.То того требует стандарт. Более подробно обо всем этом
есть вышеприведенный пример можно рассматривать как: можно узнать на http://www.exim.org/exim-html-4.30/doc/
html/spec_9.html#CHAP9. Думаю, для дальнейшего пони-
$ñïèñîê -> ${lookup ñïèñîê} -> ${lookup {$var_to_search} ↵ мания статьи этого вполне достаточно.
driver{driver_arguments}}
Итак, собственно конфигурационный файл exim. Кое-
При этом сам файл, в котором осуществляется поиск, где я добавил свои комментарии, чтобы улучшить пони-
должен выглядеть так: мание различных директив.
10
администрирование
allow_fail server.\n\
allow_defer This means, that your mailbox is 75% full. If you would \n\
data = ${lookup pgsql{select alias from aliases where ↵ override this limit new mail would not be delivered ↵
mail ='$local_part@$domain'}{$value}fail} to you!\n"
user = mailnull quota_warn_threshold = 75%
group = mail
file_transport = address_file # Òðàíñïîðò, îñóùåñòâëÿþùèé äîñòàâêó â pipe
pipe_transport = address_pipe address_pipe:
driver = pipe
# Äëÿ ëîêàëüíûõ ïîëüçîâàòåëåé òàêæå ñîçäàåì âîçìîæíîñòü return_output
# ïåðåíàïðàâëåíèÿ ïî÷òû ÷åðåç ~/.forward-ôàéë. Åñëè âêëþ÷åíà
# äèðåêòèâà allow_filter, òî â .forward-ôàéëå ìîæíî # Òðàíñïîðò, îñóùåñòâëÿþùèé äîñòàâêó ïðÿìî â ôàéë
# èñïîëüçîâàòü ÿçûê sieve-ôèëüòðîâ. Äëÿ ïîäðîáíîñòåé address_file:
# ñì. äîêóìåíòàöèþ íà www.exim.org, ò.ê. íà ðàññìîòðåíèå driver = appendfile
# ýòîé òåìû óéäåò ñëèøêîì ìíîãî âðåìåíè delivery_date_add
userforward: envelope_to_add
driver = redirect return_path_add
check_local_user
file = $home/.forward # Ýòîò òðàíñïîðò èñïîëüçóåòñÿ äëÿ àâòîìàòè÷åñêîãî îòâåòà íà
no_verify # ñîîáùåíèÿ îá îøèáêàõ
no_expn address_reply:
check_ancestor driver = autoreply
# allow_filter
file_transport = address_file
pipe_transport = address_pipe ##########################################################
reply_transport = address_reply # RETRY CONFIGURATION #
condition = ${if exists{$home/.forward} {yes} {no} } ##########################################################
# Ëîêàëüíàÿ äîñòàâêà, åñëè äàííûé ïîëüçîâàòåëü íàéäåí â áàçå begin retry
localuser: # Íàñòðîéêè ïî óìîë÷àíèþ, êîòîðûå ÿ íå òðîãàë, óïðàâëÿþò
driver = accept # èíòåðâàëîì ïîâòîðíîé ïåðåäà÷è ñîîáùåíèé
condition = ${lookup pgsql {select uid from accounts where ↵
login = '$local_part@$domain'}{yes}{no}} # This single retry rule applies to all domains and all
transport = local_delivery # errors. It specifies retries every 15 minutes for 2 hours,
cannot_route_message = Unknown user # then increasing retry intervals, starting at 1 hour and
# increasing each time by a factor of 1.5, up to 16 hours,
# then retries every 6 hours until 4 days have passed since
########################################################## # the first failed delivery.
# TRANSPORTS CONFIGURATION #
###################################################################### # Address or Domain Error Retries
# ORDER DOES NOT MATTER # # ----------------- ----- -------
#Only one appropriate transport is called for each delivery.#
###################################################################### * * F,2h,15m; G,16h,1h,1.5; F,4d,6h
begin transports
##########################################################
# Äðàéâåð äëÿ äîñòàâêè ÷åðåç ñîåäèíåíèÿ ñ óäàëåííûìè # REWRITE CONFIGURATION #
# smtp-ñåðâåðàìè ##########################################################
remote_smtp:
driver = smtp begin rewrite
# Ýòîò òðàíñïîðò äîñòàâëÿåò ïî÷òó â ëîêàëüíûå maildir. Ïóòü # Ñîçäàåì ïðàâèëî ïî ïåðåïèñûâàíèþ çàãîëîâêà To: ñ *@test.ru
# ê maildir õðàíèòñÿ îïÿòü æå â òàáëèöå accounts. Ðàçðåøåíèÿ # íà ëîêàëüíûé smart-host - @unona.test.ru. Ýòî áûëî ñäåëàíî
# íà äèðåêòîðèþ 0700 äëÿ âîçìîæíîñòè ðàáîòû ñ äàííûìè # äëÿ ëîêàëüíûõ ïîëüçîâàòåëåé, ïî èäåå ñ õðàíåíèåì
# äèðåêòîðèÿìè imap-ñåðâåðà. Ïðè ýòîì âëàäåëüöåì ÿâëÿåòñÿ # ïîëüçîâàòåëåé â postgres óæå íå íóæíî, ïîêàçàíî äëÿ ïðèìåðà.
# ãðóïïà è ïîëüçîâàòåëü èç accounts (ïîòîìó ïðè âêëþ÷åíèè *@test.ru $1@unona.test.ru T
# çàïèñåé â ýòó òàáëèöó íàäî íà÷èíàòü çíà÷åíèÿ uid
# ñ äîñòàòî÷íî áîëüøîãî ÷èñëà, íàïðèìåð, 2000 è ïåðåñåêàòüñÿ
# ñ ðåàëüíûìè ïîëüçîâàòåëÿìè îíî äîëæíî, òîëüêî åñëè ðåàëüíîìó ##########################################################
# ïîëüçîâàòåëþ íóæåí ëîêàëüíûé äîñòóï ê maildir). # AUTHENTICATION CONFIGURATION #
# Òàêæå èç òàáëèöû accounts èçâëåêàþòñÿ äàííûå î ðàçìåðå ##########################################################
# êâîòû, è óñòàíàâëèâàåòñÿ ïîðîã â 75% îò êâîòû, êîãäà
# ïîëüçîâàòåëþ ïîñûëàåòñÿ óêàçàííîå ïðåäóïðåæäåíèå îá ïîäõîäå # Îïèñàíèÿ àóòåíòèôèêàöèè
# ê ïîðîãó êâîòû
local_delivery: begin authenticators
driver = appendfile # CRAM-MD5-àóòåíòèôèêàöèÿ, òðåáóåò íàëè÷èÿ ïàðîëÿ â îòêðûòîì
directory = ${lookup pgsql{select maildir from accounts ↵ # âèäå, èìÿ ïîëüçîâàòåëÿ äîëæíî áûòü â ôîðìàòå user@domain,
where login = '$local_part@$domain'}{$value}fail} # êàê îíî õðàíèòñÿ â òàáëèöå accounts
create_directory lookup_cram:
directory_mode = 0770 driver = cram_md5
maildir_format public_name = CRAM-MD5
delivery_date_add server_secret = ${lookup pgsql {select password from ↵
envelope_to_add accounts where login='$1'}{$value}fail}
return_path_add server_set_id = $1
group = ${lookup pgsql{select gid from accounts where ↵ # LOGIN-àóòåíòèôèêàöèÿ - íå òðåáóåò õðàíåíèÿ ïàðîëÿ
login = '$local_part@$domain'}{$value}fail} # â îòêðûòîì âèäå, îäíàêî, ïî ñåòè ïàðîëü ïåðåäàåòñÿ
user = ${lookup pgsql{select uid from accounts where ↵ # â îòêðûòîì âèäå - òðåáóåòñÿ ëèøü âûïîëíåíèå óñëîâèÿ
login = '$local_part@$domain'}{$value}fail} # server_condition - $1 - èìÿ ïîëüçîâàòåëÿ, à $2 - ïàðîëü.
mode = 0660 # LOGIN áåçîïàñåí òîëüêî ïðè óñòàíîâëåíèè ssl-ñîåäèíåíèÿ.
no_mode_fail_narrower login:
quota = ${lookup pgsql{select mailquota from accounts ↵ driver = plaintext
where login = '$local_part@$domain'}{$value}fail}M public_name = LOGIN
quota_warn_message = "\ server_prompts = Username:: : Password::
To: $local_part@domain\n\ server_condition = ${lookup pgsql {select login from ↵
From: postmaster@test.ru\n\ accounts where login='$1' and password='$2'}{yes}{no}}
Subject: Your maildir is going full\n\ server_set_id = $1
This message is automaticaly gnerated by your mail ↵
sendmail_enable="NONE"
exim_enable="YES"
# À òàêæå äëÿ spamassasin è clamav:
clamav_clamd_enable="YES"
spamd_enable="YES"
Перейдем к следующей части – настройка courier. Этот
Затем настраиваем доставку почты для локальных при- imap-сервер для своей работы использует несколько про-
ложений через exim, для чего файл /etc/mail/mailer.conf у цессов, которые, в свою очередь, настраиваются из раз-
нас должен выглядеть следующим образом: личных конфигурационных файлов. В моем примере за-
пущено 3 процесса – authdaemon, courier-imapd и courier-
sendmail /usr/local/sbin/exim imapd-ssl. Причем во внешний мир открыт только courier-
send-mail /usr/local/sbin/exim
mailq /usr/local/sbin/exim imapd-ssl. Для начала создадим сертификат для imapd-ssl
newaliases /usr/local/sbin/exim и для TLS-соединений с imapd: правим файл /usr/local/etc/
hoststat /usr/local/sbin/exim
purgestat /usr/local/sbin/exim couier-imap/imapd.cnf на предмет своего dn для сертифи-
ката, для чего в части req_dn прописываем свои настрой-
После этого перейдем к настройке ClamAV: заходим в ки (не забудьте, что cn должен совпадать с FQDN imap-
/usr/local/etc/ и копируем clamav.conf.sample в clamav.conf сервера):
и правим его таким образом, чтобы он принимал соеди-
нения через tcp/ip, а не через локальный сокет, для чего в [ req_dn ]
clamav.conf нужны следующие строки: C=RU
ST=Moskow region
TCPSocket 3310 L=Moskow
TCPAddr 127.0.0.1 O=Tehnopark
OU=Internet technologies
CN=test.ru
Далее копируем freshclam.conf.sample в freshclam.conf. emailAddress=postmaster@test.ru
12
администрирование
Далее генерируем сертификат специальным скриптом: или из-под непосредственно DocumentRoot самого apache.
Вот в принципе, и все.
cd /usr/local/share/courier-imap/
./mkimapdcert
cd /usr/local/etc/courier-imap/
cp authdaemonrc.dist authdaemonrc
authmodulelist="authpgsql"
Сначала устанавливаем все необходимые пакеты из [root@mosqit /]# createdb -U postgres mails
репозитария:
[root@mosqit /]# apt-get install postfix postfix-pgsql ↵ База данных mails создана. Далее создаем в ней таб-
postgresql postgresql-server dovecot amavisd ↵
clamav spamassasin лицы. Есть 2 способа: писать SQL-команды руками в кли-
енте postgresql или приготовить файл с SQL-запросом, а
Далее переходим к конфигурированию нашей почтовой потом создать структуру таблиц, выполнив этот самый
системы. Создаем пользователя, от имени которого бу- запрос.Я выбираю последний способ. Создаем файл
дет работать наша почтовая система: createtables.sql:
14
администрирование
grant select on users to mailuser; queue_directory = /var/spool/postfix
mail_owner = postfix
CREATE TABLE "public"."aliases" ( # Ýòîò ïàðàìåòð îòíîñèòñÿ ê Amavisd
"alias" VARCHAR(128) NOT NULL, # Ïîêà êîììåíòèðóåì, ÷òîáû ìîæíî áûëî ïðîâåðèòü
"dest" VARCHAR(128) NOT NULL, # ðàáîòîñïîñîáíîñòü postfix.
"comment" TEXT DEFAULT ''::text #content_filter=smtp-amavis:[127.0.0.1]:10024
) WITH OIDS;
grant select on aliases to mailuser;
Остальные параметры по умолчанию, но их можно из-
менить по собственному усмотрению.
Структура таблиц создана: Далее редактируем конфигурационный файл master.cf:
Запускаем PostgreSQL:
Postfix
Переходим к правке конфигурационного файла main.cf,
который находится в /etc/postfix.main.cf. Он хорошо коммен-
тирован, поэтому внимательно вчитываемся в описание и
настраиваем согласно своим требованиям. У меня main.cf
выглядит так:
main.cf:
# Çàäàåì èìÿ íàøåãî ïî÷òîâîãî óçëà
myhostname = testdomain.ru
# Èìÿ íàøåãî äîìåíà, åñëè íå óêàçûâàòü, òî ïî óìîë÷àíèþ
# âûñòàâèòñÿ ìèíóñ ïåðâûé êîìïîíåíò èìåíè óçëà
mydomain = testdomain.ru
myorigin = $myhostname
# RECEIVING MAIL # äàëåå îòíîñèòñÿ ê Amavisd
# Çäåñü çàäàåì, íà êàêèõ ñåòåâûõ èíòåðôåéñàõ áóäåò ðàáîòàòü
# Postfix, â ìîåì ñëó÷àå íà âñåõ
inet_interfaces = all -o smtp_data_done_timeout=1200
# Ñïèñîê äîìåíîâ, íà êîòîðûå áóäåò îñóùåñòâëÿòüñÿ äîñòàâêà -o smtp_send_xforward_command=yes
# ÷åðåç local transport -o disable_dns_lookups=yes
mydestination = localhost, $myhostname, ↵
localhost.$mydomain, $config_directory/mydestination
-o content_filter=
# REJECTING MAIL FOR UNKNOWN LOCAL USERS -o relay_recipient_maps=
# Çäåñü ìû óêàçûâàåì, ÷òî ïîëüçîâàòåëåé testdomain.ru íóæíî -o smtpd_restriction_classes=
# ïðîñìàòðèâàòü â $virtual_maibox_maps -o smtpd_client_restrictions=
local_recipient_maps = $virtual_maibox_maps -o smtpd_helo_restrictions=
unknown_local_recipient_reject_code = 550 -o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
# TRUST AND RELAY CONTROL -o mynetworks=127.0.0.0/8
# çäåñü óêàçûâàåì, êîìó ðàçðåøåí relay, ò.å. ïîëüçîâàòåëÿì -o strict_rfc821_envelopes=yes
# îáñëóæèâàåìîé ñåòè -o smtpd_error_sleep_time=0
mynetworks = 127.0.0.0/8, 10.70.1.0/24 -o smtpd_soft_error_limit=1001
# Çàäàåì äèðåêòîðèþ, ãäå áóäåò õðàíèòüñÿ ïî÷òà -o smtpd_hard_error_limit=1000
mail_spool_directory = /var/spool/mail
mailbox_command = /usr/bin/procmail -a $DOMAIN -d $LOGNAME
# Íàø ïî÷òîâûé ñåðâåð òðåáóåò ñíà÷àëà êîììàíäó helo И соответственно создаем файлы aliases.pgsql,
smtpd_helo_required = yes maibox.pgsql, transport.cf:
transport_maps = hash:/etc/postfix/transport.cf
# Çàäàåì äèðåêòîðèþ, ãäå áóäåò õðàíèòüñÿ ïî÷òà aliases.pgsql:
# èç âèðòóàëüíûõ äîìåíîâ hosts = localhost
virtual_mailbox_base = /var/spool/mail/ user = mailuser
# Ïðîñìîòð òàáëèö ñ öåëüþ ïðîâåðêè äåéñòâèòåëüíîñòè àäðåñà password = topsecret
virtual_mailbox_maps = pgsql:/etc/postfix/mailbox.pgsql dbname = mails
virtual_alias_maps = pgsql:/etc/postfix/aliases.pgsql table = aliases
# Èñïîëüçóþ ñòàòè÷åñêèå uid & gid; 5000 – ýòî mailuser select_field = dest
virtual_uid_maps = static:5000 where_field = alias
virtual_gid_maps = static:5000
virtual_minimum_uid = 5000 mailbox.pgsql:
hosts = localhost
# INSTALL-TIME CONFIGURATION INFORMATION user = mailuser
readme_directory = /etc/postfix/README_FILES password = topsecret
sample_directory = /etc/postfix/samples dbname = mails
sendmail_path = /usr/sbin/sendmail table = users
setgid_group = postdrop select_field = home
command_directory = /usr/sbin where_field = userid
manpage_directory = /usr/share/man
daemon_directory = /usr/lib/postfix transport.cf:
newaliases_path = /usr/bin/newaliases testdomain.ru virtual:
mailq_path = /usr/bin/mailq another.domain.ru virtual:
echo "Ââåäèòå e-mail, êîòîðûé õîòèòå óäàëèòü â âèäå name@domain" Обращаю внимание на точку c новой строки после test
16
администрирование
message, это означает, что передача данных завершена. auth_user = root
Далее идем в каталог /var/spool/mail/testdomain/test и
смотрим содержимое файла inbox, в нем и должно нахо- После этого нам требуется сгенерировать SSL-сер-
диться наше сообщение. Если файл пуст, то опять же смот- тификат, т.к. у нас заявлены протоколы imaps и pop3s
рим лог-файл (maillog). (s – secure).
Для этого правим файл /etc/dovecot/dovecot-openssl.cnf:
ClamAV
Идем в /etc/clamav.conf и находим строчку ScanMail и рас- [ req ]
default_bits = 1024
комментируем ее, для того чтобы антивирус проверял encrypt_key = yes
файлы формата mailbox. Запускаем ClamAV: distinguished_name = req_dn
x509_extensions = cert_type
prompt = no
[root@mosqit /]# service clamd start
[ req_dn ]
# country (2 letter code)
C=RU
Amavisd-new # State or Province Name (full name)
Далее настраиваем /etc/amavis/amavisd.conf по своему ST=Bashkortostan
усмотрению, конечно же, перед этим прочитав докумен- # Locality Name (eg. city)
тацию. Лично я ничего не изменял, но скорее всего со вре- L=Ufa
менем придется внести коррективы. # Organization (eg. company)
Запускаем Amavisd-new: O=Home Organizations.
# E-mail contact
[root@mosqit /]# telnet 127.0.0.1 10024 emailAddress=master@testdomain.ru
[ cert_type ]
nsCertType = server
Раскомментируем строчку: filter=smtp-amavis:[127.0.0.1]:
10024 в файле main.cf. Перезапускаем Postfix, запускаем Запускаем скрипт для генерации сертификата.
ClamaV, Amavisd:
[root@mosqit /]# /usr/share/dovecot/mkcert.sh
[root@mosqit /]# service postfix restart
Правим файл /etc/dovecot/pgsql.conf, в котором указы-
Как и ранее, проверяем с помощью telnet работоспо- ваем, как Dovecot будет подключаться и забирать данные.
собность postfix. Если все нормально, то переходим к на-
стройке Dovecot. connect = host = localhost dbname = mails user = mailuser ↵
password = secret
default_pass_scheme = PLAIN
Dovecot password_query = SELECT password FROM users WHERE userid = '%u'
user_query = SELECT '/var/spool/mail/'|| home, uid, gid ↵
Далее редактируем файл настроек dovecot /etc/dovecot.conf. FROM users WHERE userid = '%u'
Так же внимательно вчитываемся в комментарии к пара-
метрам. Все настройки произведены, можно испытать работо-
способность нашего pop3-сервера:
dovecot.conf:
# Ïðîòîêîëû, êîòîðûå ìû èñïîëüçóåì [root@mosqit /]# service dovecot start
protocols = imap imaps pop3 pop3s
## IMAP login process
login = imap
Настраиваем наш почтовый клиент и проверяем, дос-
## POP3 login process тавляется почта или нет. Имя пользователя указывается
login = pop3
полное, т.е. test@testdomain.ru, а не test.
## Mail processes Если же не получается, то заглядываем в /var/log/
first_valid_uid = 5000 messages и устраняем причину (довольно часто причиной
# Ïóòü ê äèðåêòîðèè, ãäå õðàíèòñÿ ïî÷òà, ãäå %d – бывает банальная опечатка при редактировании конфи-
# èìÿ äîìåíà, %n – èìÿ ïîëüçîâàòåëÿ
default_mail_env = mbox:/var/spool/mail/%d/%n/: ↵ гурационных файлов).
INDEX=/var/spool/mail/%d/%n
«КТО СТУЧИТСЯ
В ДВЕРЬ КО МНЕ…»
ОБЗОР СИСТЕМЫ ПОДДЕРЖКИ
СПИСКОВ РАССЫЛОК GNU MAILMAN
АНДРЕЙ МАРКЕЛОВ
Нет, это, конечно, не милиция (надеюсь, вы не использу- момент написания статьи была 2.1.5. Конечно, можно было
ете знания, полученные со страниц журнала, в целях, про- бы найти и поставить Mailman из rpm-файла. Так было бы
тиворечащих вашему местному законодательству). Речь проще, но, учитывая, что не все читатели используют си-
пойдет об открытом программном продукте, предназна- стемы на основе менеджера пакетов rpm, рассмотрим ус-
ченном для создания собственных списков рассылки – тановку из исходных текстов. Разархивируем скачанный
Mailman (в переводе с англ. – почтальон). Сей продукт файл в каталог /tmp.
расположился в глобальной паутине по адресу http://
www.list.org. Mailman распространяется в соответствии с gunzip mailman.tar.gz
tar –xvf mailman.tar
General Public License. Используется в своих рассылках
такими маститыми IT-компаниями, как Red Hat, Apple Для дальнейших действий требуются полномочия су-
Computer, Dell Computers и большим числом GNU-проек- первизора. Создаем пользователя mailman, являющего-
тов, включая The XFree86 Project, Samba, Exim, XEmacs. ся членом группы mailman.
Со списком сайтов, где используется рассматриваемый В дистрибутивах, основывающихся на Red Hat Linux
продукт, можно ознакомиться по ссылке http://www.list.org/ это делается одной командой:
inthenews.html.
Программа обладает обширным списком возможнос- useradd mailman
тей. Вот некоторые из них:
! Управление списками, подпиской и пользовательской Теперь создаем директорию, в которую будет установ-
конфигурацией через веб-интерфейс. лен Mailman и даем на нее права:
! Модерирование рассылок, поддержка открытых и зак-
рытых списков рассылки, фильтров. mkdir /usr/local/mailman
chgrp mailman /usr/local/mailman
! Поддержка архивов списков рассылки. chmod a+rx,g+ws /usr/local/mailman
! Автоответчик.
Далее заходим в систему как пользователь mailman или
Прежде чем приступить к установке, ознакомимся с другой пользователь, которого вы предварительно вклю-
требованиями к системе, на которую ставится Mailman: чили в группу mailman. Важно, чтобы эти шаги выполня-
! Естественно, должен присутствовать почтовый сервис. лись не от лица суперпользователя:
Mailman работает с Sendmail, Postfix, Exim и qmail. На
моей тестовой системе стоял Sendmail, поэтому на него cd /tmp/mailman-2.1.5/
./configure --with-cgi-gid=apache --with-mail-gid=mail
и буду ориентироваться в описании. make install
! Веб-сервер с поддержкой CGI/1.1 API.
! GCC 2.8.1 или выше. Теперь проверим корректность разрешений на файлы
! Интерпретатор Python, на котором, собственно, и на- при помощи специального скрипта, входящего в пакет:
писана система (с небольшими кусочками кода на C).
Поддерживаются версии 2.1 и выше. cd /usr/local/mailman
./bin/check_perms
Я проверял установку системы на дистрибутиве White Скрипт должен выдать сообщение о том, что проблем
Box Enterprise Linux 3 (http://www.whiteboxlinux.org/), который с правами не обнаружено.
является версией Red Hat Enterprise Linux 3, заново собран- Далее, даем команду exit, и уже под пользователем root
ной из свободно доступных исходников. правим httpd.conf, добавив туда строчки:
В моем случае интеграция «почтальона» производилась
с веб-сервером Apache. Далее в статье будет дан необхо- ScriptAlias /mailman/ /usr/local/mailman/cgi-bin/
Alias /pipermail/ /usr/local/mailman/archives/public
димый минимум сведений, достаточный для установки
Mailman и создания своего собственного списка рассылки. <Directory “/usr/local/mailman/archives/public/”>
AddDefaultCharset Off
</Directory>
Установка
Скачиваем с сайта проекта либо с одного из зеркал ар- Таким образом, мы предписываем Apache, что из ука-
хив mailman.tar.gz. Последняя версия «почтальона» на занного каталога разрешается выполнять CGI-скрипты, со-
18
администрирование
здаем алиас для /archives/public/ и выключаем для этого чанию). Шаблон содержит практически все настройки си-
каталога кодировку «по умолчанию». стемы, и хорошо задокументирован. При первой, тесто-
Потом копируем логотипы Mailman, Python, GNU Logo вой установке я предлагаю его не изменять, так как с на-
в доступное вашему веб-серверу место, и не забываем стройками можно «поиграться» и через веб-интерфейс.
перезапустить сам веб-сервер: Так будет намного нагляднее.
Создаем служебный «site-wide»-список под названи- Теперь задаем пароль администратора сайта. Он по-
ем mailman: надобится для создания публичных списков рассылки.
По запросу вводим mail ведущего список и пароль (на Если в процессе конфигурирования у вас что-то пой-
этот адрес будет выслано письмо с подтверждением и дет не очень гладко, рекомендую просмотреть FAQ по ад-
указанным паролем). ресу: http://www.python.org/cgi-bin/faqw-mm.py?req=index.
Теперь, согласно инструкциям, выданным после отра- Также обратите внимание на логи «почтальона», ведущи-
ботки команды, добавляем в /etc/aliases псевдонимы (в еся в каталоге /usr/local/mailman/logs/, и возможные бло-
качестве примера был создан список под именем test): кировки в /usr/local/mailman/loсks/.
cd /usr/local/mailman/cron
crontab –u mailman crontab.in
cd ..
./bin/mailmanctl start
cp scripts/mailman /etc/init.d/mailman
chkconfig –add mailman
Проверьте правильность выставленных значений пере- Протестировать новый список, предварительно подпи-
менных DEFAULT_EMAIL_HOST и DEFAULT_URL_HOST в савшись на него, можно, отправив письмо на адрес имя_
файле ./Mailman/Defaults.py. Они должны содержать пол- списка@сервер.домен.ru.
ное имя вашего почтового и веб-сервера. Я не буду подробно описывать интерфейс администра-
Далее применяем шаблон сайта (его можно было пред- тора и настройки списков, поскольку все параметры снаб-
варительно отредактировать, но мы все оставим по умол- жены вполне понятными описаниями на русском языке.
ПАВЕЛ ЗАКЛЯКОВ
В предыдущей статье о пиринге [2] я специально не зат- рее научная, малоприменимая на практике, то вопрос с
рагивал технических вопросов, неизбежно возникающих трафиком более чем насущен для большинства сетей и
при раздельной тарификации. Сейчас я хотел бы в двух на практике очень актуален. С философской точки зре-
словах рассказать, что такое маркировка, зачем она нуж- ния получается интересная ситуация, когда конечным
на, когда и где может пригодиться. А также поделиться пользователям не очень интересен вопрос с маркиров-
опытом подсчёта маркированного трафика. кой. Что и говорить, если кругозор большинства пользо-
Подобно тому, как биологи и химики в своих химичес- вателей обычно не распространяется дальше, чем IP-
ких реакциях используют помеченные атомы (нуклиды, а адрес их компьютера, а их компьютеру, использующему
точнее, изотопы1) для выяснения в подробностях, какие в большинстве случаев ОС Windows, вообще не ведомо
именно из них участвуют в реакции, и в какие вещества такое понятие, как маркировка. Но в то же время, эти же
они переходят, в сети используют аналогичную схему с пользователи являются зависимыми от маркировки и
маркировкой с целью выяснения маршрутов и разделе- маршрутизации, так как большинство из них привыкло
ния различных видов трафика. экономить, а цена и другие параметры трафика напря-
Если выяснение перемещения атомов – задача ско- мую зависят от маршрута.
20
администрирование
Любой уважающий себя владелец сети, желая повы- следует понимать изменение значений определённых би-
сить её надёжность, как только появляется такая возмож- тов в пакетах в соответствии с принятыми договорённос-
ность, создаёт резервные каналы на ответственных учас- тями. По идее можно менять что угодно, как угодно и где
тках. В графе сети появляются петли, а это означает, что угодно, однако в большинстве случаев это негативно ска-
на этих участках уже не существует однозначного марш- жется на правильной работе тех или иных уже существу-
рута между двумя узлами. Проблема появляется в тот ющих протоколов, поэтому согласно RFC791 (Internet
момент, когда выясняется, что себестоимость доставки Protocol) было решено использовать для целей маркиров-
трафика по различным граням графа оказывается раз- ки только один, второй байт в заголовке IP-пакетов, име-
ной. Помимо стоимости у граней (маршрутов) имеются и нуемый ToS, сокращённо от Type of Service, изменения в
другие важные характеристики. Вот некоторые из них: рамках которого должны пониматься всеми корректно.
задержка, надёжность передачи, пропускная способность.
Можно точно сказать, что пиринг неразрывно связан с
поставленной проблемой. Допустим, имеется две сети с
реальными адресами в двух соседних микрорайонах, об-
служиваемых различными провайдерами. Для прохода
пакетов из одной сети в другую пакеты уходят к одному Ðèñóíîê 1. Çàãîëîâîê IP-ïàêåòà. Êðàñíûì âûäåëåíî ïîëå, îáû÷íî
провайдеру, передаются другому и попадают в соседнюю èñïîëüçóåìîå äëÿ ìàðêèðîâêè ïàêåòîâ
сеть. Пользователи двух сетей понимают, что даже если Согласно тому же самому RFC791 выделенное крас-
между провайдерами заключены пиринговые соглашения ным цветом поле ToS подразделяется на несколько под-
и трафик обходится в копейки, то канал между сетями, полей, которые имеют следующее предназначение для
какой бы он быстрый не был, так или иначе будет узким используемых в них битах.
местом. В попытках расширить это узкое место создаёт-
ся дополнительный канал и с этого момента трафик меж-
ду сетями может ходить по разным маршрутам. Ðèñóíîê 2. Ðàçäåëåíèå ïîëÿ ToS íà áèòû ñîãëàñíî RFC791
Если в данном примере между провайдерами нет пи- Первые три бита с 0 по 2 – это поле Precedence. Всего
ринговых соглашений, то одни и те же пользователи мо- может быть 8 комбинаций значений этих битов:
гут быть готовы к обмену файлами через бесплатный ка- ! 111 – Network Control
нал, а через платные каналы провайдеров – нет. Как же ! 110 – Internetwork Control
быть в этой ситуации? Когда-то бесплатный шлюз между ! 101 – CRITIC/ECP
сетями работает, а когда-то нет. Открыть свой ftp для ска- ! 100 – Flash Override
чивания и закачивания адресам другой сети – значит при- ! 011 – Flash
влечь к себе дополнительный трафик в те моменты, ког- ! 010 – Immediate
да шлюз между сетями по каким-то причинам не работа- ! 001 – Priority
ет или находится на профилактике. Не разрешать доступ ! 000 – Routine
к открытому ftp из другой сети – лишить себя возможнос-
ти получить новые файлы. Несмотря на то что согласно рекомендации поле
На уровне провайдеров проблемы нет, так как его ос- Precedence входит в состав поля ToS, иногда под полем ToS
новные маршрутизаторы, принимая трафик, всегда видят подразумевают всё, что идёт после поля Precedence, не
откуда (с какого интерфейса) он был получен, поэтому и включая его и зарезервированные 2 бита, а встречающие-
могут его правильно подсчитывать. Проблемы начинаются ся далее в нём биты имеют следующее предназначение.
у пользователей, которые, наоборот, не знают по какой цене Бит 3 (буква D (Delay) на рис. 2) отвечает за задержку тра-
им учитывать те или иные пакеты. Тут однозначно работа- фика и рекомендует в случае, если в этом поле стоит 1
ет придуманное мной правило (из разряда следствий зако- минимизировать задержку (0 = Normal Delay, 1 = Low Delay).
на Мёрфи): «меньше знаешь – больше платишь». Бит 4 (буква T (Throughput) на рис. 2) отвечает за пропуск-
Узнав, откуда приходит трафик, можно нежелательный ную способность: 0 – обычная (Normal Throughput), 1 – по
ограничить и платить меньше. возможности, повышенная (High Throughput). Бит 5 отве-
Логичным и давно используемым решением данной чает за надёжность передачи: 0 – обычная надёжность
проблемы служит маркировка трафика. Под маркировкой (Normal Reliability), 1 – повышенная (High Reliability). Биты 6 и
1
Изотопы: (от изо... и греч. topos – место ), разновидности одного химического элемента, занимающее одно место в
периодической системе элементов Менделеева, но отличающиеся массами атомов. Химические свойства атомов, т.е.
принадлежность атома к тому или иному химическому элементу, зависят от числа электронов и их расположения в
электронной оболочке атома. Место химического элемента в периодической системе элементов определяется его по-
рядковым номером Z, равным числу электронов в оболочке атома или, что то же самое, числу протонов, содержащихся
в атомном ядре. Кроме протонов, в ядро атома входят нейтроны, масса каждого их которых приблизительно равна массе
протона. Количество нейтронов N в ядре атома с данным Z может быть различным, но в определённых пределах... От
соотношения чисел протонов и нейтронов в ядре зависят различные свойства атомов. Атомы с одинаковым Z, но с
различным числом нейтронов N обладают идентичными химическими свойствами... и также называются изотопами.
Большая Советская Энциклопедия, том 10, М.: Издательство «Советская энциклопедия»,1972, стр 109.
Ðèñóíîê 3. Ðàçäåëåíèå ïîëÿ ToS íà áèòû ñîãëàñíî RFC 1122 Маркировка и подсчёт различных видов
Чуть позже, когда назначение сети Интернет смести- трафика на практике
лось в коммерческую область, да и многие другие вещи Насколько мне известно, провайдеров, использующих раз-
стали замещаться денежными эквивалентами, в 1992 году дельную тарификацию, мало [2], а использующих марки-
к вопросу о маркировке пакетов вышло дополнение – RFC ровку – вообще один – ИМТЦ «МГУ». Помимо маркиров-
1349 (Type of Service in the Internet Protocol Suite), соглас- ки существуют и другие способы решения проблемы раз-
но которому у поля ToS был отобран последний бит, и оно дельной тарификации. Например, упомянутая мной в [2]
получило следующую трактовку битов. сеть gagarino.net, как было недавно выяснено, не исполь-
зует маркировку трафика для абонентов, а использует
списки доступа [3]. При этом договорённость с вышестоя-
Ðèñóíîê 4. Ðàçäåëåíèå ïîëÿ ToS íà áèòû ñîãëàñíî RFC 1349 щим провайдером у них близка по политике к провайдеру
По сравнению с предыдущей редакцией из двух после- Zenon N.S.P., когда не важно, как пришли пакеты, если
дних неиспользуемых битов (6-го и 7-го) только 6-му биту они из сети, принадлежащей списку [3], то тогда они счи-
было дано новое определение – минимизация возможной таются российскими. Такая система разделения трафи-
стоимости передачи трафика. Если 6-й бит равен 1, то сле- ка, с точки зрения конечных пользователей наиболее бла-
дует выбирать более дешёвые маршруты. гоприятна, конечно после полностью безлимитного Интер-
В 1993 году вышел RFC 1455, который предлагал ва- нета. Даже не смотря на частичную безлимитность, поль-
риант использования поля TOS (биты 3-6) для задания зователь, поставивший скачиваться десяток-другой филь-
гарантированного уровня безопасности соединений. мов на ночь из российского сегмента сети, может спать
С появлением IP-телефонии и других сервисов, став- спокойно. Если вдруг на каких-то участках сети нарушит-
ших доступными в сети, в декабре 1998 года вышел RFC ся связанность и пакеты начнут приходить из-за рубежа,
2474 (Definition of the Differentiated Services Field (DS Field) то на тарификации это не отразится.
in the IPv4 and IPv6 Headers), согласно которому значение Подсчёт скачанного трафика в этом случае с помощью
поля ToS целиком должно быть заменено полем DS (for iptables осуществляется следующим образом. Создают-
differentiated services). После чего значения поля ToS, от- ся цепочки, каждая отвечающая за ту или иную российс-
меченного на рис. 1, приобрели следующие значения. кую сеть и осуществляющая пометку принадлежащего ей
трафика как российского, например семёркой.
До прохождения правил весь трафик также метится,
Ðèñóíîê 5. Ðàçäåëåíèå ïîëÿ DS (áûâø. ToS) íà áèòû ñîãëàñíî RFC 2474
DSCP: differentiated services codepoint допустим шестёркой. Пакет, прошедший через все пра-
CU: currently unused вила, либо изменит маркировку на российскую, либо так
Cвято место пусто не бывает, через месяц, в январе и останется зарубежным.
1999-го, неиспользуемые два бита CU изменили своё на- Например, если российскими из всего списка [3] будут
звание на ECN и получили другое назначение, которое только две сети 217.26.176.0/20 и 217.146.192.0/20, а вхо-
стал определять документ RFC 2481 (A Proposal to add дящим интерфейсом будет eth0, то вышесказанное на
Explicit Congestion Notification (ECN) to IP). языке iptables будет выглядеть так:
22
администрирование
iptables -A PREROUTING -t mangle -i eth0 -s 217.146.192.0/20 ↵ пользователю, тут есть своя логика. Несомненно, более
-j MARK --set-mark 7 правильно при такой схеме дополнительно для удобства
Естественно, цель MARK должна поддерживаться яд- пользователей маркировать, например, зарубежный тра-
ром. фик. ИМТЦ «МГУ» маркирует трафик в поле Precedence
установкой 1-го и 2-го битов (Flash)(ToS=0x60) [4].
24
администрирование
документация, подготовленная автором модуля (Don даемое, хотя и не очень удобна в том плане, что сравни-
Cohen) и поставляемая в комплекте очень слаба, поэтому ваемое значение приходится окружать большим количе-
лучше воспользоваться руководством, написанным William ством нулей. Куда разумнее оба сравниваемых значения
Steams [7]. сдвинуть на 2 байта (16 бит) вправо, тогда лишних нулей
Краткий формат написания правил для u32 таков: можно будет избежать, при этом правило для iptables бо-
лее элегантно можно будет записать так:
iptables ... -m u32 --u32 "Start&Mask=Range"
iptables -A FORWARD -m u32 --u32 "0&0x00600000>>16=0x60" ↵
-d 192.168.0.5
где Start – это то, что будет сравниваться, Mask – маска
тех битов, которые будут сравниваться, Range – сравни- Логично догадаться, что если у вас маркируются другие
ваемое значение, если оно совпадёт с тем что будет в па- биты, то поменять значения в правиле не очень сложно.
кете, то правило «сработает». Замечание 1. Вадимом Беркгаутом было обнаружено,
Из-за особенностей реализации u32 в Start указывает- что маршрутизаторы Cisco (в частности 7206) помечают не
ся не абсолютное значение байта в пакете, начиная с нуле- все пакеты в поле DSCP. Почему-то не помечаются пакеты
вого, а относительное, смещённое на -3 байта от его ре- с установленными флагами SYN или FIN и иногда некото-
ального месторасположения. Например, если вы хотите рые пакеты, идущие перед последним. Также не всегда по-
фильтровать пакеты с TTL<4, то глядя на рис. 1, вы опреде- мечаются и ICMP-пакеты. Если на счёт SYN- и FIN-пакетов
ляете, что полю TTL в заголовке соответствует 8-й байт есть некоторые соображения, то по поводу случайной не
пакета (вначале пакета идёт заголовок). После чего можно маркировки некоторых ICMP-пакетов сделать выводы слож-
подсчитать (8-3=5), что в поле Start следует указать число но. В частности, есть предположение, что существуют те
5. Для сравнения следует учитывать все биты, поэтому ис- или иные RFC, которые рекомендуют так поступать. Напри-
пользуемая маска будет 1111 1111 (0xFF). Значения мень- мер, RFC 2873 (TCP Processing of the IPv4 Precedence Field),
ше 4 – это те, что принадлежат отрезку значений [0, 3]. указывающий, что во время установки соединения поле
Полученное таким образом правило будет выглядеть так: precedence должно игнорироваться обеими сторонами. Это
значит, что Cisco может думать так: «а зачем маркировать
iptables ... -m u32 --u32 "5&0xFF=0:3" пакеты, если поле всё равно игнорируется». Возможно, что
это особенности конкретного экземпляра, если кто-то из
при этом оно будет аналогично правилу: читателей знает, почему так происходит и как ведут себя
другие маршрутизаторы, буду рад услышать ваше мнение.
iptables ... -m ttl --ttl-lt 4 Замечание 2. Если поле ToS (DSСP+ECN по современ-
ной трактовке) никак не используется в сети и не обнуля-
Так как переменная Start не может быть меньше 0, то ется на межсетевом экране, а при этом есть возможность
получить вышеописанным образом доступ к первым трём свободному выходу определённых пакетов из сети (в сеть),
байтам не получится. Для доступа к ним используется бо- то создаётся хорошая лазейка для скрытной передачи ин-
лее сложная конструкция со сдвигом. Подробнее об этом формации. Много передать по такому каналу не получит-
можно прочитать в [7]. Так как маркируемые биты нахо- ся, но можно без особых усилий отправлять небольшие
дятся во втором байте заголовка (2-3=-1), то простым об- сообщения, не привлекая к происходящему процессу вни-
разом обратиться к ним не получится. Конструкция мания.
Start&Mask позволяет считать первые 4 байта сразу без Спасибо Павлу Янченко за ответы на некоторые мои
сдвига с помощью «0&0xFFFFFFFF», конструкция, считы- вопросы по теме данной статьи.
вающая второй по счёту (первый по нумерации, начиная
с нуля) байт выглядит так «0&0x00FF0000». Фактически Литература, ссылки:
это то, что нам нужно. Уже сейчас можно написать аналог 1. Список документов RFC: http://www.rfc-editor.org/rfc-
применяемого нами ранее правила: index.html
2. Закляков П. Пиринг. – Журнал «Системный админист-
iptables -A FORWARD -d 192.168.0.5 -m dscp --dscp 0x18 ратор» №6(19), июнь 2003 г. – 82-87 с.
3. IP-адреса Российских сетей по данным gagariono.net:
который будет выглядеть так: http://www.gagarino.net/ips.txt
4. ИМТЦ «МГУ» тарифы и маркировка трафика: http://
iptables -A FORWARD -m u32 --u32 "0&0x00FF0000=0x00600000" ↵ www.direct.ru/internet/index_line.html
-d 192.168.0.5
5. Classifying packets with filters: http://www.tldp.org/
Это правило полностью аналогично, то есть оно содер- HOWTO/Adv-Routing-HOWTO/lartc.qdisc.filters.html
жит все те недостатки, что были обсуждены ранее. Однако 6. Расширение u32 для iptables: http://www.iptables.org/
теперь их можно исправить, используя для сравнения не все patch-o-matic/pom-base.html#pom-base-u32
биты, а только те, которые нас интересуют 0110000 (0x60). 7. William Steams IPTables U32 Match Tutorial: http://
www.sans.org/rr/special/iptables_u32.pdf
iptables -A FORWARD -m u32 --u32 "0&0x00600000=0x00600000" ↵ 8. Страница со ссылками для скачивания iptables и patch-
-d 192.168.0.5
o-matic: http://www.iptables.org/downloads.html
Такая конструкция полностью делает всё от неё ожи- 9. Сайт проекта sing: http://sourceforge.net/projects/sing
СЕРГЕЙ СУПРУНОВ
Все примеры в данной статье приведены для FreeBSD 5.2 PostgreSQL, те категории задач, для которых эта СУБД
и PostgreSQL 7.4.2, однако в принципиальном отношении более эффективна.
все изложенное остается верным и для других актуаль- Прежде всего следует отметить различия в организа-
ных сегодня операционных систем и версий. Статья но- ции данных. Если в MySQL каждая таблица заносится в
сит обзорный характер и предназначена прежде всего ад- собственный файл (для большинства типов БД), то Postgre
министраторам, желающим познакомиться с этой СУБД SQL организует единую файловую структуру, в которой
и оценить ее возможности для решения тех или иных за- отдельные файлы не соответствуют непосредственно таб-
дач. Предполагается, что читатель знаком с такими ве- лицам или другим объектам базы данных. То есть в MySQL
щами, как реляционная база данных, СУБД, а также с ба- вы можете создать резервную копию лишь части БД, со-
зовыми понятиями и операторами языка SQL. хранив соответствующие файлы. Для PostgreSQL такой
PostgreSQL – это объектно-реляционная система уп- номер пройдет только для всей структуры, включающей в
равления базами данных, работающая как клиент-сервер- себя все обслуживаемые сервером БД базы. Как след-
ная система. Основываясь на базовых понятиях реляци- ствие – MySQL полагается при организации БД на файло-
онных БД, PostgreSQL поддерживает и ряд «объектных» вую систему ОС, в то время как PostgreSQL зависит от нее
операций, например наследование. PostgreSQL соответ- меньше, но требует дополнительного обслуживания – пе-
ствует базовой спецификации SQL99 и поддерживает боль- риодической дефрагментации базы данных командой
шое число возможностей, описанных стандартом SQL92. VACUUM.
Может возникнуть вопрос – почему именно PostgreSQL? Далее эти две СУБД используют различную реализа-
Лучше всего ответить на него, сравнив этот продукт с не цию нескольких подключений. PostgreSQL имеет более
менее популярным и, пожалуй, более известным – MySQL. широкие возможности, как для обработки данных, так и
Моей целью не является доказательство, что один из них для администрирования, но это, в свою очередь, несколь-
лучше другого – это несколько разные продукты, области ко повышает сложность работы с этой СУБД. Наиболее
применения которых во многом пересекаются, но отнюдь характерные различия сведены в таблицу, после которой
не совпадают, и сравнением я хочу определить нишу приведены некоторые комментарии-выводы.
26
администрирование
раторов и т. д. Что, впрочем, не мешает использовать эту
СУБД и для веб-приложений, например, форума или га-
лереи изображений.
Типовая установка
Для установки PostgreSQL во FreeBSD лучше всего вос-
пользоваться системой портов (/usr/ports/databases/
postgresql7 или другая актуальная версия). Однако в дан-
ном случае установка по умолчанию, скорее всего, вас
не устроит, поскольку в ней отсутствует поддержка рас-
ширенных кодировок, а следовательно, операции сорти-
ровки данных, хранимых в кириллической кодировке (на-
пример, KOI8-r), будут работать неправильно.
Прежде всего нужно собрать PostgreSQL с поддержкой
расширенных кодировок. Для этого добавьте в файл Makefile,
Существуют также различия в реализации некоторых размещенный в директории порта, следующие строки пос-
SQL-функций (PostgreSQL лучше соответствует стандар- ле первого упоминания переменной CONFIGURE_ARGS:
там), в наборе типов данных и т. д. Как видно из таблицы,
разработчики MySQL делают акцент на наилучшую ско- CONFIGURE_ARGS+= --enable-locale --enable-multibyte=KOI8 ↵
--enable-recode
рость чтения (выборки) данных, чем и объясняется попу-
лярность этой СУБД в среде веб-разработчиков, где вы- Параметр --enable-locale необходим для поддержки
борка – основная операция. Достигается это отсутствием специфических для страны настроек (так называемой ло-
транзакций (они реализованы только для некоторых ти- кали), --enable-recode включает поддержку перекодиров-
пов таблиц, например InnoDB, BerkleyDB) и многопоточ- ки (данный параметр для описываемого варианта, в кото-
ной работой, однако это же и является причиной несколь- ром везде используется только KOI8-r, необязателен, но
ко меньшей надежности данной СУБД. В плане прав дос- зачастую может быть весьма полезен). Параметр --enable-
тупа MySQL несколько превосходит PostgreSQL, позволяя multibyte собственно и включает поддержку кодировки
задавать права доступа не только на уровне таблицы, но KOI8-r. Если вы предпочитаете работать с другой кодо-
и на уровне столбца, однако в PostgreSQL это с лихвой вой таблицей, укажите ее в качестве аргумента. Параметр,
компенсируется возможностью создавать пользователь- заданный без аргумента, включит поддержку всех муль-
ские представления («view»). тибайтовых кодировок.
Наиболее острый вопрос, вызывающий нескончаемые Таким же образом вы можете добавить другие нуж-
споры, – сравнение скоростных характеристик этих двух ные вам опции или изменить поведение СУБД по умолча-
пакетов. Результаты тестов, доступные в Интернете, весь- нию. Например, изменить номер порта, который
ма противоречивы, что говорит об отсутствии явного ли- PostgreSQL будет прослушивать в ожидании запросов,
дерства той или иной СУБД. Кроме того, результаты бу- можно с помощью параметра --with-pgport=NUM (по умол-
дут сильно зависеть от конкретной реализации теста, пре- чанию – 5432). А ключ --with-perl позволит в дальнейшем
обладания тех или иных операций и нагрузки на систему. использовать процедурный язык PL/Perl для разработки
В одних случаях первенство будет за MySQL, в других – хранимых процедур в дополнение к PL/pgSQL. Для полу-
за PostgreSQL. чения информации по всем ключам запустите configure --
Также PostgreSQL часто сравнивают с коммерческой help.
СУБД Oracle. Oracle несколько превосходит PostgreSQL в После того как в Makefile внесены все нужные парамет-
таких вопросах, как использование индексов, репликация ры конфигурации, установка выполняется как обычно:
и восстановление данных, да и вообще инструменты ад-
министрирования Oracle более развиты (но вместе с тем # make && make install
и более сложны). С другой стороны, PostgreSQL предос-
тавляет возможность использовать в качестве процедур- В ряде случаев может оказаться полезным выполнить
ного языка помимо PL/pgSQL (очень схожего с PL/SQL, регрессионное тестирование, которое позволит убедить-
используемым в Oralce) также PL/Perl, PL/Python, PL/Tcl, ся в полной работоспособности откомпилированных про-
что позволяет разработчику выбрать более привычный грамм и выявить возможные проблемы еще до их инстал-
инструмент. ляции. В этом случае сборку системы нужно выполнить
Таким образом, можно сказать, что место PostgreSQL – со следующей опцией:
базы данных, требующие высокой степени надежности
хранения информации, предъявляющие повышенные тре- # make –DWITH_TESTS
бования к проверке всех изменений, имеющие необходи-
мость в автоматической корректировке большого числа И затем, убедившись в успешности тестирования, вы-
данных при изменении информации в одной из таблиц, а полнить установку:
также задачи, где требуется возможность разработки не-
тривиальных решений, использование нестандартных опе- # make install
или
28
администрирование
Поскольку у нас все работает, как и ожидалось, то хоста localhost без ввода пароля, поскольку этот хост оп-
теперь можно позаботиться об автоматической загрузке ределен как доверенный (trust). Если вы – единственный
сервера PostgreSQL при старте системы. Если вы стави- пользователь, имеющий терминальный доступ к серверу
ли СУБД из коллекции портов, то беспокоиться вам не о (например, PostgreSQL установлена на вашей машине для
чем – в папке /usr/local/etc/rc.d уже есть файл 010.pgsql.sh, изучения), то это можно не менять. Но поскольку никогда
который и будет отвечать за запуск и останов сервера нельзя быть уверенным, что злоумышленник не получит
СУБД. Если же установка выполнялась вручную, то вам доступ к командной оболочке, то лучше не пренебрегать
нужно будет перенести в соответствующий каталог (/etc/ дополнительной защитой.
rc.d, /usr/local/etc/rc.d) сценарий автозапуска, соответ- Поэтому имеет смысл ужесточить права доступа к дан-
ствующий вашей операционной системе, из подкатало- ным. Но об этом речь пойдет чуть ниже, а пока – неболь-
га contrib/start-scripts той папки, куда был распакован ди- шой раздел для тех, кто практически не имеет опыта ра-
стрибутив. боты с базами данных.
Что еще важно иметь в виду: пользователь pgsql явля-
ется администратором СУБД, то есть его полномочия по Пример простой базы данных
отношению к базам PostgreSQL практически ничем не (основам SQL посвящается…)
ограничены. Решим простейшую задачу: создадим телефонный
Кроме того, настоятельно не рекомендуется исполь- справочник, который технически будет реализован как
зовать базы template0 и template1 для работы. Поэтому одна таблица с тремя полями (ФИО, должность, теле-
первое, что нужно сейчас сделать, это создать новую базу фон). Вся работа будет показана как листинг одного
данных и нового пользователя, который будет являться сеанса.
владельцем этой БД. Создаем таблицу с полями person, post и phone:
Для выполнения этих операций, как и всех остальных,
будем использовать терминал psql:
Специфика PostgreSQL
Теперь более подробно рассмотрим конкретные особен-
ности PostgreSQL. Было бы жестоко пытаться втиснуть
весь материал в одну журнальную статью, поэтому этот
раздел будет носить скорее обзорный характер. А наибо-
лее интересным особенностям постараюсь посвятить не-
сколько отдельных статей.
Сперва – о типах данных. Помимо стандартных, соответ-
ствующих SLQ99 и SQL92 (numeric, char, varchar, bool и т. д.),
поддерживается и ряд специфических, например, геомет-
Просматривать можно не всю таблицу, а только ее рические типы данных (point, line, box, circle, polygon), сете-
часть, для чего условие выборки следует указать в пред- вые типы (cidr – спецификация сети IP, inet – IP-адрес,
ложении where: macaddr – MAC-адрес) и т. д. Конечно, дополнительные типы
данных не являются незаменимыми, но в ряде случаев су-
щественно упрощают логику и структуру базы. Например,
геометрические типы могут оказаться весьма полезными
при разработке картографических приложений.
Особо следует отметить специальный тип данных serial.
Изменим поле записи. Обратите внимание, что если Он описывает поле типа integer, значения которого зада-
не указать условие where, то будут изменены соответству- ются автоматически создаваемой последовательностью
ющие поля всех записей: (см. далее) и так же автоматически индексируются. То есть
это, по сути, аналог ограничения AUTO_INCREMENT в
MySQL.
Будучи объектно-реляционной СУБД, PostgreSQL под-
держивает и составные типы данных – массивы. Чтобы
определить поле как массив, его тип дополняется парой
квадратных скобок (например, «char(10)[]»). Массив (как
константа) записывается с помощью фигурных скобок:
Удалим одну из записей. Отсутствие предложения where «’{1,2,3}’», «’{“один”, “два”, “три”, “четыре”}’». Обращение
очистит всю таблицу: к элементу массива, как и в других языках программиро-
вания, выполняется по индексу: arra[2].
Пример:
30
администрирование
32
администрирование
Обратите внимание, что такие операции, как удаление таб-
лицы, внутри транзакции выполнены быть не могут.
Вопросы администрирования
В начале статьи упоминалось, что локальные пользовате-
ли компьютера, на котором запущен сервер postmaster,
могут подключаться к БД под именем любого пользова-
теля без указания пароля. Связано это с тем, что хост
localhost по умолчанию является доверенным. Изменить
это можно в файле pg_hba.conf, находящемся в каталоге
data, инициированном командой initdb. Некоторого пояснения требуют команды назначения и
Синтаксис этого файла хорошо прокомментирован в отмены привилегий (GRANT и REVOKE). Команда GRANT
нем самом. Поле TYPE содержит тип записи, который позволяет давать пользователю или группе следующие
может быть одним из следующих: local (соединение, уста- права (перечислены только основные):
навливаемое с того же компьютера, на котором работает
сервер СУБД; использует сокеты UNIX), host (соединение
TCP/IP) или hostssl (защищенное соединение TCP/IP с
использованием протокола SSL).
Поле METHOD может содержать следующие записи:
! trust – доверенный хост, подключения не требуют па-
роля; Аналогично, команда REVOKE ограничивает соответ-
! reject – отклонить соединение; ствующие права. В качестве объекта, для работы с кото-
! password – требовать соответствия пароля (передает- рым назначаются права, могут выступать таблицы, пред-
ся в открытом виде); ставления пользователя и последовательности. Посмот-
! crypt – требовать соответствия пароля (пароль шиф- реть назначенные привилегии доступа позволяет коман-
руется); да терминала \z.
! krb4, krb5 – аутентификация Kerberos; При необходимости программного доступа к инфор-
! ident – аутентификация по карте соответствия имени мации о пользователях и привилегиях весьма полезны
пользователя PostgreSQL системному имени пользо- служебные таблицы pg_shadow (таблица пользователей)
вателя. Карты соответствия содержатся в файле и pg_class (права доступа к объектам БД).
pg_ident.conf. Для тех, кто клавиатуре предпочитает мышь, разрабо-
тан пакет phpPgAdmin (аналог phpMyAdmin для MySQL),
Назначение остальных полей файла pg_hba.conf пояс- позволяющий работать с СУБД через веб-интерфейс. Для
нений, думаю, не требует. При запросе соединения про- FreeBSD найти его можно в коллекции портов: /usr/ports/
верка условий выполняется с начала файла до обнаруже- databases/phppgadmin.
ния соответствия, после чего выполняется действие, за- Также существует мультиплатформенная графическая
данное полем METHOD. Если соответствие не будет най- оболочка pgAdmin (www.pgadmin.org/pgadmin3), обеспечи-
дено, соединение не будет установлено. Следует заме- вающая доступ ко всем функциям администрирования и
тить, что после внесения изменений в этот файл требует- разработки.
ся перезапустить процесс postmaster, послав ему сигнал
SIGHUP, либо перезагрузить сервер СУБД командой: Заключение
Итак, были рассмотрены основные особенности СУБД
# pg_ctl reload PostgreSQL. Описание получилось несколько расплывча-
тым и отрывочным, но надеюсь, эта статья все же позво-
Чтобы сервер мог обслуживать подключения по прото- лит вам оценить возможности этой системы управления
колу TCP/IP, процесс postmaster должен быть запущен с базами данных и принять принципиальное решение о ее
ключом –i. Для SSL-соединений также требуется ключ –l, использовании (или неиспользовании) для решения сто-
и, кроме того, СУБД должна быть собрана с поддержкой ящих перед вами задач.
SSL (ключ --with-openssl).
Управление базой данных может осуществляться с Дополнительная информация:
помощью SQL-команд. Ряд функций может быть выпол- ! Страницы справочного руководства man (см. каталог
нен внешними программами. Ниже представлена табли- /usr/local/pgsql/man/man1 (программы «обвязки») и
ца, описывающая некоторые полезные команды: man7 (справки по командам SQL));
! Встроенная справка интерактивного терминала (\h –
справочник по SQL-командам, \? – справочник по ко-
мандам терминала);
! Официальный сайт проекта – www.postgresql.org, один
из русскоязычных сайтов – www.linuxshare.ru/docs/
software/SQL/postgresql)
СЕРГЕЙ ЯРЕМЧУК
У UNIX-подобных операционных систем много положи- у которых нет в данный момент доступа к компьютеру с
тельных сторон: безопасность, стабильность и, что осо- установленной UNIX-подобной системой, а стандартные
бенно привлекает внимание многих, – бесплатность. Но сетевые средства Windows не блещут особым выбором
для начинающих системных администраторов настройка необходимых утилит. В этом случае, используя любой веб-
системы может превратиться в настоящий ад. Копание в браузер, поддерживающий таблицы и формы (и JAVA для
конфигурационных файлах, постоянное чтение докумен- некоторых модулей), можно без затруднений в наглядной
тации, к тому же на не для всех понятном английском язы- форме с локального или удаленного компьютера настро-
ке, может отпугнуть любого, привычного к удобному ин- ить пользовательские аккаунты, установить/удалить про-
терфейсу Windows-систем. Да что там отпугнуть, ошибки граммы, настроить Web, mail, DNS-сервер, сервер печа-
в конфигурационных файлах могут привести к серьезным ти, управлять базами данных, организовать совместное
проблемам с безопасностью. Мне часто в письмах прихо- использование файлов, применяя Samba или NFS, настро-
дят просьбы от новичков помочь подобрать дистрибутив ить firewall, синхронизировать время, организовать совме-
для использования в качестве шлюза, но с обязательным стный доступ в Интернет, мониторинг состояния серви-
наличием веб-интерфейса, сегодня попробуем раз и на- сов, осуществить резервное копирование, записать CD-
всегда решить эту проблему. диск, получить доступ к файлам на удаленном компьюте-
Webmin (http://www.webmin.com) представляет собой ре, в том числе документации и прочие бесчисленные за-
веб-интерфейс для системного администрирования UNIX, дачи администрирования, коих не счесть, но требующих
использование которого существенно упрощает процесс определенных умений. При этом Webmin избавит вас от
управления системой. Кроме того, он будет полезен для синтаксических ошибок и неточностей, как сможет пре-
удаленного управления системой тем администраторам, дупредит о потенциально опасных действиях. Но это, прав-
34
администрирование
да, не значит, что совсем не обязательно все знать, и ум-
ная утилита сделает все сама. Иметь некоторые представ-
ления о строении UNIX, значениях тех или иных утилит,
особенностях работы протоколов и сервисов все-таки не-
обходимо. Опытным администраторам также не стоит иг-
норировать наличие такой удобной утилиты, ведь помнить
все параметры в конфигурационных файлах и тонкости
настройки сервисов на различных системах, согласитесь,
довольно тяжело.
Написанный Джейми Камероном (Jamie Cameron) на Еще один момент. Для возможности работы по защи-
языке Perl, Webmin имеет модульную структуру, позво- щенному каналу (а из внешней сети работать нужно толь-
ляющую свободно наращивать требуемую функциональ- ко так, да и во внутренней не будет лишней подстраховка)
ность или, наоборот, убрать все ненужное. В настоящее требуется наличие модуля Net::SSLeay и OpenSSL (http://
время доступно около 200 модулей как входящих в стан- www.openssl.org/). Поэтому при появлении сообщения
дартную поставку, так и доступных для загрузки отдель-
но. Дополнительно ко всему интерфейс переведен на 32
языка, среди которых имеется и русский. На странице загрузите модуль с CPAN и повторите установку, за до-
http://www.webmin.com/support.html найдете список из 35 полнительной информацией обращайтесь по адресу: http:/
UNIX-подобных операционных систем (в том числе и /www.webmin.com/ssl.html. Иначе в строке веб-браузера
Cygwin, Mac OS X), на которых Webmin без проблем бу- набирайте http вместо https. Кстати, удалить Webmin так-
дет работать. Если вашего дистрибутива в нем нет, то же просто. Запускаем скрипт /etc/webmin/uninstall.sh, и его
отчаиваться не стоит, скорее всего, Webmin удастся зас- как не бывало. Дальнейшую настройку можно произво-
тавить работать без трудностей. При этом одним из ос- дить уже через Webmin. Но, например, если вы забыли
новных преимуществ Webmin является то, что он факти- пароль, то локально его изменить можно при помощи
чески подстраивается, в том числе изменяя свой интер- скрипта changepass.pl.
фейс и поведение в соответствии с используемой ОС,
т.е. фактически скрывает от конечного пользователя раз- #/usr/local/webmin-1.140/changepass.pl /etc/webmin ↵
ïîëüçîâàòåëü íîâûé_ïàðîëü
личия между всеми вариантами UNIX. Еще одним преиму-
ществом Webmin является возможность делегировать Также изменить некоторые настройки можно, напря-
часть полномочий по настройке определенных сервисов мую редактируя конфигурационные файлы miniserv.conf
другим пользователям. Установить Webmin проще просто- и config, которые лежат в каталоге с Webmin. В них воз-
го: скачиваем архив размером чуть меньше 7 Мб (доступ- можно изменить значение сетевого порта, включить/вык-
ны и прекомпилированные пакеты), распаковываем его, лючить SSL (опция ssl=0/1), изменить месторасположение
заходим внутрь и даем команду ./setup с указанием ка- рабочих файлов, установить другой язык интерфейса (для
талога, в котором вы хотите видеть установленный русского значение lang должно быть ru_RU (для кодиров-
Webmin. По умолчанию установка будет произведена в ки СР-1251) или ru_SU (koi8-r)). Если планируете часто за-
текущий каталог. После чего необходимо будет ответить ходить с компьютеров, где установлена ОС Windows, вы-
на ряд вопросов о будущем размещении конфигураци- берите лучше вариант с СР-1251, тогда будете реже пе-
онных файлов, нахождении интерпретатора Perl, номе- ренастраивать кодировку в браузере. После изменений
ре порта, на котором Webmin будет ожидать соединения перезапустите webmin.
(по умолчанию 10000), логин и пароль для доступа, ав-
томатический запуск при старте системы. # /etc/webmin/stop && /etc/webmin/start