Ubuntu Server. Руководство (2012 год) - часть 4

 

  Главная      Книги - Разные     Ubuntu Server. Руководство (2012 год)

 

поиск по сайту            правообладателям  

 

   

 

   

 

содержание      ..     2      3      4      5     ..

 

 

 

Ubuntu Server. Руководство (2012 год) - часть 4

 

 

Сервисы электронной почты
sudo /usr/share/doc/exim4/examples/exim-adduser
Новый файл паролей должен быть защищён от пользователей с помощью
следующих команд:
sudo chown root:Debian-exim /etc/exim4/passwd
sudo chmod 640 /etc/exim4/passwd
В конце обновите настройки Exim4 и перезапустите сервис:
sudo update-exim4.conf
sudo /etc/init.d/exim4 restart
2.4. Настройка SASL
В этом разделе раскрываются подробности настройки saslauthd, чтобы
обеспечить аутентификацию для Exim4.
Для начала установим пакет sasl2-bin. В терминале введите следующее:
sudo apt-get install sasl2-bin
Чтобы настроить saslauthd, отредактируйте файл настройки /etc/default/
saslauthd и замените START=no на:
START=yes
Далее пользователя Debian-exim требуется включить в группу sasl, чтобы
Exim4 мог использовать сервис saslauthd:
sudo adduser Debian-exim sasl
Теперь запустите сервис saslauthd:
sudo /etc/init.d/saslauthd start
Теперь Exim4 настроен на SMTP-AUTH с использованием TLS и SASL
аутентификации.
2.5. Ссылки
• Смотрите exim.org9 для дополнительной информации.
• Также доступна книга Exim4 Book10.
10
281
Сервисы электронной почты
• Ещё один ресурс - страница Exim4 Ubuntu Wiki 11.
11
282
Сервисы электронной почты
3. Dovecot Server
Dovecot - это агент доставки почты, написанный с упором на
безопасность. Он поддерживает основные форматы почтовых ящиков: mbox
или Maildir. Этот раздел рассказывает о том, как настроить его в качестве
сервера imap или pop3.
3.1. Установка
Для установки dovecot выполните следующую команду в терминале:
sudo apt-get install dovecot-imapd dovecot-pop3d
3.2. Конфигурация
Чтобы настроить dovecot, вам потребуется отредактировать файл /etc/
dovecot/dovecot.conf. Вы можете выбрать, какой протокол использовать. Это
может быть pop3, pop3s (безопасный pop3), imap или imaps (безопасный
imap). Описание этих протоколов находится за пределами вопросов,
рассматриваемых в данном руководстве. Для дополнительной информации
обратитесь к статьям Википедии по POP312 и IMAP13.
IMAPS и POP3S более безопасны, чем обычные IMAP и POP3, поскольку
используют SSL-шифрование для соединения. Как только вы выберете
протокол, исправьте следующую строку в файле /etc/dovecot/dovecot.conf:
protocols = pop3 pop3s imap imaps
Далее выберите формат почтового ящика, который вы собираетесь
использовать. Dovecot поддерживает форматы maildir и mbox. Они оба
имеют свои преимущества, которые обсуждаются на сайте Dovecot14.
Выбрав тип почтового ящика, измените в файле /etc/dovecot/dovecot.conf (/
etc/dovecot/conf.d/10-mail.conf) следующую строку:
mail_location = maildir:~/Maildir # (for maildir)
or
mail_location = mbox:~/mail:INBOX=/var/spool/mail/%u # (for mbox)
Вы должны настроить свой почтовый транспортный агент (MTA, Mail
Transport Agent) для передачи входящей почты на почтовый ящик
этого типа, если он отличен от того, который вы уже настроили.
12
13
14
283
Сервисы электронной почты
Настроив dovecot, перезапустите сервис dovecot, чтобы проверить свои
установки:
sudo /etc/init.d/dovecot restart
Если вы разрешили imap или pop3, вы можете попробовать подключиться
с помощью команд telnet localhost pop3 или telnet localhost imap2.
Если вы увидите что-то, похожее на следующий код, установка успешно
завершена:
bhuvan@rainbow:~$ telnet localhost pop3
Пытаемся 127.0.0.1...
Соединился с localhost.localdomain.
Клавиша возврата '^]'.
+OK Dovecot готов.
3.3. Dovecot: Настройка SSL
Чтобы настроить dovecot на использование SSL, вы должны
отредактировать файл /etc/dovecot/dovecot.conf и исправить следующие
строки:
ssl_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
ssl_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
ssl_disable = no
disable_plaintext_auth = no
Вы можете получить SSL сертификат в Центре Сертификации или
создать самоподписанный. Второй вариант является хорошим выбором
для электронной почты, поскольку SMTP-клиенты редко жалуются
на самоподписанные сертификаты. Посмотрите в разделе Раздел 5,
«Сертификаты» [194], как создавать самоподписанный сертификат. Когда
вы создадите сертификат, у вас будет файл ключа и файл сертификата.
Скопируйте их в каталог, указанный в конфигурационном файле /etc/
dovecot/dovecot.conf.
3.4. Настройка брандмауэра для почтового сервера
Для доступа к вашему почтовому серверу с другого компьютера вы должны
настроить брандмауер на разрешение соединений по необходимым портам.
• IMAP - 143
• IMAPS - 993
• POP3 - 110
• POP3S - 995
284
Сервисы электронной почты
3.5. Ссылки
• Смотрите Dovecot website15 для дополнительной информации.
• Также страница Dovecot Ubuntu Wiki16 содержит много подробностей.
15
16
285
Сервисы электронной почты
4. Mailman
Mailman - это программа с открытыми кодами для управления
дискуссиями, ведущимися через электронную почту, и рассылками
электронных новостных сообщений. Многие открытые списки рассылок
(включая все на Ubuntu mailing lists17) используют Mailman в качестве
программы управления почтовыми списками. Это мощное приложение, при
этом его легко установить и поддерживать.
4.1. Установка
Mailman обеспечивает веб-интерфейс для администраторов и
пользователей, использующих внешний почтовый сервер для отправки
и приема почты. Он великолепно работает со следующими почтовыми
серверами:
• Postfix
• Exim
• Sendmail
• Qmail
Мы рассмотрим, как установить и настроить Mailman с веб-сервером
Apache, а также с почтовым сервером Postfix или Exim. Если вы собираетесь
устанавливать Mailman с другим почтовым сервером, обратитесь,
пожалуйста, к разделу Ссылки.
Вам потребуется установить только один почтовый сервер и Postfix
для Ubuntu является вариантом по умолчанию.
4.1.1. Apache2
Чтобы установить apache2, обратитесь к соответствующему разделу
Раздел 1.1, «Установка» [213].
4.1.2. Postfix
Для инструкций по установке и настройке Postfix смотрите раздел Раздел 1,
«Postfix» [271]
4.1.3. Exim4
Для установки Exim4 обратитесь к разделу Раздел 2, «Exim4» [279].
Когда exim4 устанавливается, его файлы настроек сохраняются в каталоге
/etc/exim4. In В Ubuntu по умолчанию файлы настройки exim4 разделены
17
286
Сервисы электронной почты
на несколько файлов. Вы можете это поменять, изменив следующую
переменную в файле /etc/exim4/update-exim4.conf:
dc_use_split_config='true'
4.1.4. Mailman
Чтобы установить Mailman, выполните следующую команду в терминале:
sudo apt-get install mailman
Она скопирует установочные файлы в каталог /var/lib/mailman. Она
также установит CGI-сценарии в каталог /usr/lib/cgi-bin/mailman, создаст
пользователя Linux list и группу list. Процесс mailman будет управляться
этим пользователем.
4.2. Конфигурация
В этом разделе предполагается, что у вас удачно установлены mailman,
apache2, и postfix или exim4. Теперь вам требуется только их настроить.
4.2.1. Apache2
Примерный файл настройки Apache идет вместе с Mailman и помещён в
/etc/mailman/apache.conf. Чтобы Apache смог его использовать, требуется
переместить его в /etc/apache2/sites-available:
sudo cp /etc/mailman/apache.conf /etc/apache2/sites-available/mailman.conf
Это установит новый VirtualHost в Apache для административного сайта
Mailman. Теперь разрешим новую конфигурацию и перезагрузим Apache:
sudo a2ensite mailman.conf
sudo service apache2 restart
Mailman использует apache2 для обработки CGI-сценариев. CGI-сценарии
Mailman устанавливаются в каталог /usr/lib/cgi-bin/mailman. Поэтому
адрес mailman будет http://hostname/cgi-bin/mailman/. Вы можете внести
изменения в файл /etc/apache2/sites-available/mailman.conf, если вы решили
изменить такой адрес.
4.2.2. Postfix
Для интеграции с Postfix мы ассоциируем домен lists.example.com со
списком рассылки. Пожалуйста, замените lists.example.com на домен по
вашему выбору.
287
Сервисы электронной почты
Вы можете использовать команду postconf для добавления необходимых
настроек в /etc/postfix/main.cf:
sudo postconf -e 'relay_domains = lists.example.com'
sudo postconf -e 'transport_maps = hash:/etc/postfix/transport'
sudo postconf -e 'mailman_destination_recipient_limit = 1'
В /etc/postfix/master.cf дважды проверьте, что у вас указан следующий
транспорт:
mailman
unix
-
n
n
-
-
pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}
Он вызывает сценарий postfix-to-mailman.py, когда почта доставлена по
списку.
Ассоциируем домен lists.example.com с транспортом Mailman с помощью
транспортной карты. Отредактируйте файл /etc/postfix/transport:
lists.example.com
mailman:
Теперь дадим Postfix построить транспортную карту, введя следующее в
терминале:
sudo postmap -v /etc/postfix/transport
Затем перезапустите Postfix, чтобы разрешить новые настройки:
sudo /etc/init.d/postfix restart
4.2.3. Exim4
Когда Exim4 установлен, вы можете запустить сервер Exim, используя
следующую команду из терминала:
sudo /etc/init.d/exim4 start
Чтобы mailman мог работать с Exim4, вам потребуется настроить Exim4.
Как было замечено ранее, по умолчанию Exim4 использует множество
файлов настроек различного типа. Для подробностей смотрите сайт Exim18.
Чтобы запустить mailman, нам придётся добавить новый файл настройки к
следующим типам настроек:
18
288
Сервисы электронной почты
• Основное
• Передача почты
• Маршрутизатор
Exim создаёт главный файл настройки, сортируя все эти миниатюрные
конфигурационные файлы. Поэтому последовательность этих
конфигурационных файлов очень важна.
4.2.4. Основное
Все настроечные файлы основного типа хранятся в каталоге /etc/exim4/
conf.d/main/. Создайте новый файл 04_exim4-config_mailman и добавьте в него
следующее:
# start
# Home dir for your Mailman installation -- aka Mailman's prefix
# directory.
# On Ubuntu this should be "/var/lib/mailman"
# This is normally the same as ~mailman
MM_HOME=/var/lib/mailman
#
# User and group for Mailman, should match your --with-mail-gid
# switch to Mailman's configure script. Value is normally "mailman"
MM_UID=list
MM_GID=list
#
# Domains that your lists are in - colon separated list
# you may wish to add these into local_domains as well
domainlist mm_domains=hostname.com
#
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#
# These values are derived from the ones above and should not need
# editing unless you have munged your mailman installation
#
# The path of the Mailman mail wrapper script
MM_WRAP=MM_HOME/mail/mailman
#
# The path of the list config file (used as a required file when
# verifying list addresses)
MM_LISTCHK=MM_HOME/lists/${lc::$local_part}/config.pck
# end
4.2.5. Передача почты
Все настроечные файлы, принадлежащие к типу транспортировка,
хранятся в каталоге /etc/exim4/conf.d/transport/. Создайте новый файл
40_exim4-config_mailman и добавьте в него следующее:
289
Сервисы электронной почты
mailman_transport:
driver = pipe
command = MM_WRAP \
'${if def:local_part_suffix \
{${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} \
{post}}' \
$local_part
current_directory = MM_HOME
home_directory = MM_HOME
user = MM_UID
group = MM_GID
4.2.6. Маршрутизатор
Все настроечные файлы, принадлежащие к типу роутер, хранятся
в каталоге /etc/exim4/conf.d/router/. Создайте новый файл 101_exim4-
config_mailman и добавьте в него следующее:
mailman_router
driver = accept
require_files = MM_HOME/lists/$local_part/config.pck
local_part_suffix_optional
local_part_suffix = -bounces : -bounces+* : \
-confirm+* : -join : -leave : \
-owner : -request : -admin
transport = mailman_transport
Порядок основных и транспортных файлов настроек не важен.
Однако, порядок файлов настроек роутера должен быть сохранён.
Конкретно этот файл по порядку должен быть до файла 200_exim4-
config_primary. Оба этих файла содержат одинаковый тип
информации. Первый из них будет определен как предшественник.
Для получкения более полной информации, обратитесь к разделу
ссылок.
4.2.7. Mailman
После того как установлен mailman, вы можете использовать следующую
команду:
sudo /etc/init.d/mailman start
Поскольку mailman установлен, вы можете создать список рассылки
по умолчанию. Выполните следующую команду, чтобы создать список
рассылки:
sudo /usr/sbin/newlist mailman
290
Сервисы электронной почты
Enter the email address of the person running the list: bhuvan at ubuntu.com
Initial mailman password:
To finish creating your mailing list, you must edit your /etc/aliases (or
equivalent) file by adding the following lines, and possibly running the
`newaliases' program:
mailman: "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join: "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request: "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"
Hit enter to notify mailman owner...
#
Мы настроили как Postfix, так и Exim4 на распознавание всех почтовых
сообщений от mailman. Поэтому нет необходимости создавать
новые записи в /etc/aliases. Если вы делаете какие-либо изменения
в конфигурационных файлах, не забывайте выполнять перезапуск
соответствующих сервисов до перехода к следующей части.
Exim4 не использует псевдонимов (aliases) для перенаправления
почты для Mailman, поскольку он использует метод перебора
discover.Чтобы подавить использование псевдонимов при
создании списка, вам потребуется добавить строку MTA=None в
конфигурационный файл /etc/mailman/mm_cfg.py.
4.3. Администрирование
Мы предполагаем, что у вас установка по умолчанию. Файлы CGI-
сценариев mailman'а расположены в каталоге /usr/lib/cgi-bin/mailman/.
Mailman предоставляет возможность администрирования с помощью веб-
интерфейса. Для доступа к этой странице откройте в своём браузере
следующий адрес:
На этом экране появится список рассылок по умолчанию, mailman. Если
вы щёлкнете мышкой на имени списка рассылки, у вас будет запрошен
пароль. Если вы введёте правильный пароль, у вас появится доступ к
изменению административных настроек списка рассылки. Вы можете
создать новый список рассылки с помощью утилиты командной строки
291
Сервисы электронной почты
(/usr/sbin/newlist). Также вы можете создать новый список рассылки с
помощью веб-интерфейса.
4.4. Пользователи
Mailman предоставляет пользователю веб-интерфейс. Для доступа к этой
странице, перейдите в браузере на следующий URL:
На этом экране появится созданный при установке список рассылки
"mailman". Если щёлкнуть на названии списка рассылки, появится форма
регистрации. Для подписки на этот список можно ввести dаш почтовый
адрес, имя (не обязательно) и пароль. После этого dам будет отправленно
электронной почтой приглашение. Чтобы подписаться на список рассылки,
следуйте инструкциям, содержащимся в этом приглашении.
4.5. Ссылки
GNU Mailman - руководство по установке19
HOWTO - Совместное использование Exim 4 и Mailman 2.120
Также смотрите страницу Mailman Ubuntu Wiki21.
19
20
21
292
Сервисы электронной почты
5. Фильтрация почты
Одной из больших проблем с электронной почтой является проблема
массовой незатребованной почты (Unsolicited Bulk Email - UBE). Такие
сообщения, более известные как СПАМ, могут к тому же содержать вирусы
и другие виды вредоносных программ. Согласно некоторым отчётам, эти
сообщения составляют подавляющую часть от всего трафика почтовых
сообщений в интернете.
В этом разделе рассматривается интеграция Amavisd-new, Spamassassin
и ClamAV с транспортным почтовым агентом (MTA) Postfix. Postfix Postfix
может также проверять легальность почты с помощью передачи её
внешним фильтрам содержания. Эти фильтры могут иногда определить,
что сообщение является спамом без необходимости передачи его более
ресурсоёмким приложениям. Пара таких фильтров - это opendkim и
python-policyd-spf.
• Amavisd-new - это программа-обёртка, которая может вызывать любое
количество программ фильтрации контента для обнаружения спама,
антивирус и т.п.
• Spamassassin использует множество механизмов фильтрования почты на
основе содержимого сообщений.
• ClamAV - антивирусное приложение с открытым кодом.
• opendkim является почтовым фильтром Sendmail для стандарта DKIM
(почты, заверенной доменными ключами).
• python-policyd-spf обеспечивает проверку SPF (структуры политики
отправителя) с Postfix.
А здесь то, как эти части работают вместе:
• Почтовое сообщение принимается Postfix.
• Это сообщение проходит через некоторые внешние фильтры, в том числе
opendkim и python-policyd-spf.
• Затем сообщение обрабатывается Amavisd-new.
• ClamAV используется для проверки сообщения. Если сообщение содержит
вирус, Postfix сбросит сообщение.
• Чистые сообщения затем будут проверены Spamassassin на
принадлежность к спаму. Spamassassin затем добавит строки X-Header,
позволяющие в дальнейшем Amavisd-new управлять сообщением.
Например, если сообщение содержит уровень спама более пятидесяти,
оно будет автоматически выброшено из очереди, чтобы не беспокоить
293
Сервисы электронной почты
получателя. В качестве альтернативы помеченное сообщение доставляется
до почтового агента пользователя (MUA) чтобы пользователь сам
определил насколько оно легальное.
5.1. Установка
Смотрите разделРаздел 1, «Postfix» [271] для установки и настройки Postfix.
Чтобы установить основные приложения, введите следующее в терминале:
sudo apt-get install amavisd-new spamassassin clamav-daemon
sudo apt-get install opendkim postfix-policyd-spf-python
Существуют некоторые общие пакеты, подключаемые к Spamassassin для
лучшего определения спама:
sudo apt-get install pyzor razor
Поскольку основным фильтрующим приложениям требуются утилиты
архивации для обработки прикрепленных файлов:
sudo apt-get install arj cabextract cpio lha nomarch pax rar unrar unzip zip
Если какие-то пакеты не были найдены, проверьте, что хранилище
multiverse разрешено в /etc/apt/sources.list
Если вы внесли изменения в этот файл, убедитесь, что выполнили
sudo apt-get update перед повторной попыткой установки.
5.2. Конфигурация
Теперь настроим, чтобы всё работало и фильтровало почту.
5.2.1. ClamAV
Стандартное поведение ClamAV вполне подходит для наших нужд. Для
дополнительных опций настройки смотрите конфигурационные файлы в /
etc/clamav.
Добавьте пользователя clamav в группу amavis, чтобы Amavisd-new имел
соответствующие права доступа для сканирования файлов:
sudo adduser clamav amavis
sudo adduser amavis clamav
294
Сервисы электронной почты
5.2.2. Spamassassin
Spamassassin автоматически определяет общие компоненты и использует
их, если они присутствуют. Это означает, что нет необходимости
настраивать pyzor и razor.
Отредактируйте /etc/default/spamassassin для активации сервиса
Spamassassin. Измените ENABLED=0 на:
ENABLED=1
Теперь запустим сервис:
sudo /etc/init.d/spamassassin start
5.2.3. Amavisd-new
Сначала активируем проверку на спам и вирусы в Amavisd-new,
отредактировав /etc/amavis/conf.d/15-content_filter_mode:
use strict;
# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.
#
# Default antivirus checking mode
# Uncomment the two lines below to enable it
#
@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
#
# Default SPAM checking mode
# Uncomment the two lines below to enable it
#
@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
1;
# insure a defined return
Возврат спама может быть плохой идеей, поскольку обратный адрес
часто неверный. Подумайте над тем, чтобы изменить в /etc/amavis/
conf.d/20-debian_defaults установку $final_spam_destiny на D_DISCARD вместо
D_BOUNCE, как показано ниже:
295
Сервисы электронной почты
$final_spam_destiny
= D_DISCARD;
Дополнительно вы можете захотеть установить следующие опциональные
флаги для отметки большего количества сообщений как спам:
$sa_tag_level_deflt = -999; # add spam info headers if at, or above that level
$sa_tag2_level_deflt = 6.0; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 21.0; # triggers spam evasive actions
$sa_dsn_cutoff_level = 4; # spam level beyond which a DSN is not sent
Если сетевое имя сервера (hostname) отличается от MX-записи домена,
вам может потребоваться установить вручную опцию $myhostname.
Также, если сервер принимает почту для нескольких доменов, опцию
@local_domains_acl потребуется изменить. Отредактируйте файл /etc/amavis/
conf.d/50-user:
$myhostname = 'mail.example.com';
@local_domains_acl = ( "example.com", "example.org" );
Если вы хотите покрывать несколько доменов, вы можете использовать
следующее в файле /etc/amavis/conf.d/50-user
@local_domains_acl = qw(.);
После настройки Amavisd-new требуется перезапустить:
sudo /etc/init.d/amavis restart
5.2.3.1. Белые списки DKIM
Amavisd-new может быть настроен на автоматическое занесение адресов
в Whitelist из доменов с действительными доменными ключами. Есть
несколько предварительно настроенных доменов в /etc/amavis/conf.d/40-
policy_banks.
Существует несколько вариантов настройки белого списка для домена:
'example.com' => 'WHITELIST',: будет помещён в белый список любой
адрес домена "example.com".
'.example.com' => 'WHITELIST',: будет помещён в белый список любой
адрес любого поддомена "example.com", который имеет действительную
подпись.
'.example.com/@example.com' => 'WHITELIST',: будут помещены в
белый список поддомены "example.com", которые используют подпись
родительского домена example.com.
296
Сервисы электронной почты
'./@example.com' => 'WHITELIST',: добавляет адреса, которые имеют
действительную подпись от "example.com". Это обычно используется для
дискуссионных групп, которые подписывают свои сообщения.
Домен может иметь несколько настроек белого списка. После
редактирования файла перезапустите amavisd-new:
sudo /etc/init.d/amavis restart
В этом контексте, если домен добавлен в белый список, сообщение
не будет передано каким-либо антивирусным или спам фильтрам.
Это может быть как желательным, так и нежелательным
поведением для вашего домена.
5.2.4. Postfix
Для интеграции Postfix, введите следующее в терминале:
sudo postconf -e 'content_filter = smtp-amavis:[127.0.0.1]:10024'
Далее отредактируйте /etc/postfix/master.cf, добавив следующее в конец
файла:
smtp-amavis
unix
-
-
-
-
2
smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20
127.0.0.1:10025 inet
n
-
-
-
-
smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
297
Сервисы электронной почты
Также добавьте следующие две строки непосредственно после
транспортного сервиса "pickup":
-o content_filter=
-o receive_override_options=no_header_body_checks
Это предотвратит от попадания в спам сообщений, созданных в качестве
отчётов о спаме.
Теперь перезапустите Postfix:
sudo /etc/init.d/postfix restart
Фильтрация содержимого с поиском спама и вирусов теперь включена.
5.2.5. Amavisd-new и Spamassassin
При интеграции Amavisd-new со Spamassassin, если вы решили
заблокировать фильтр Байеса, отредактировав /etc/spamassassin/local.cf, и
использовать cron для обновления ночных правил, то это может привести к
ситуации, когда большой объём сообщений об ошибках будет посылаться
пользователю amavis через задание cron amavisd-new.
Существует несколько способов справиться с этой ситуацией:
• Настройте ваш MDA на фильтрацию сообщений, которые вы не желаете
видеть.
• Измените /usr/sbin/amavisd-new-cronjob на проверку, что use_bayes
0. Например, отредактируйте /usr/sbin/amavisd-new-cronjob, добавив
следующее в начало до строк проверки:
egrep -q "^[ \t]*use_bayes[ \t]*0" /etc/spamassassin/local.cf && exit 0
5.3. Тестирование
Для начала проверьте, что Amavisd-new SMTP активен:
telnet localhost 10024
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 [127.0.0.1] ESMTP amavisd-new service ready
^]
В заголовке сообщения, которое проходит через фильтр контента, вы
должны увидеть:
298
Сервисы электронной почты
X-Spam-Level:
X-Virus-Scanned: Debian amavisd-new at example.com
X-Spam-Status: No, hits=-2.3 tagged_above=-1000.0 required=5.0 tests=AWL, BAYES_00
X-Spam-Level:
В вашем случае вывод может отличаться, но важно то, что здесь
есть записи X-Virus-Scanned и X-Spam-Status.
5.4. Устранение проблем
Лучший способ узнать, почему что-то пошло не так - проверить
журнальные файлы.
• Для инструкций по журналам Postfix смотрите раздел Раздел 1.7,
«Устранение проблем» [276].
• Amavisd-new использует Syslog для отправки сообщений в /var/log/
mail.log. Количество деталей можно увеличить, добавив опцию $log_level в
/etc/amavis/conf.d/50-user и задав её значение в диапазоне от 1 до 5.
$log_level = 2;
Когда вывод журнала Amavisd-new увеличивается, то вывод
журнала Spamassassin также увеличивается.
• Уровень журналирования ClamAV может быть увеличен
редактированием/etc/clamav/clamd.conf и установкой следующей опции:
LogVerbose true
По умолчанию ClamAV отправляет сообщения журнала в /var/log/clamav/
clamav.log.
После изменения уровня журналирования не забывайте
перезапускать сервис для активации новых настроек. Также после
установления причины проблем будет хорошей идеей вернуть
уровень журналирования к нормальному значению.
5.5. Ссылки
Для дополнительной информации о фильтрации почты смотрите
следующие ссылки:
Документация Amavisd-new22
Документация ClamAV23 и ClamAV Wiki24
22
23
24
299
Сервисы электронной почты
Spamassassin Wiki25
Домашняя страница Pyzor26
Домашняя страница Razor27
DKIM.org28
Postfix Amavis New29
Также не стесняйтесь задавать вопросы в #ubuntu-server канале IRC на
freenode30.
25
26
27
28
29
30
300
Глава 16. Приложения для
чата
301
Приложения для чата
1. Обзор
В этом разделе мы объясним, как установить и настроить IRC-сервер ircd-
irc2. Мы также обсудим установку и настройку сервера обмена мгновенным
сообщениями Jabber.
302
Приложения для чата
2. IRC-сервер
В репозиториях Ubuntu находится много серверов IRC (Internet Relay Chat). В
этой секции будет рассмотрено, как установить и настроить оригинальный
IRC-сервер ircd-irc2.
2.1. Установка
Для установки ircd-irc2, выполните команду в окне терминала:
sudo apt-get install ircd-irc2
Конфигурационные файлы хранятся в каталоге /etc/ircd. Документация
доступна в каталоге /usr/share/doc/ircd-irc2.
2.2. Конфигурация
Установки IRC могут быть сделаны в конфигурационном файле /etc/ircd/
ircd.conf. Вы можете задать сетевое имя сервера в этом файле, изменив
следующую строку:
M:irc.localhost::Debian ircd default configuration::000A
Пожалуйста, убедитесь, что вы добавили записи DNS для сетевого имени
IRC-сервера. Например, если вы установили в качестве сетевого имени
IRC irc.livecipher.com, убедитесь, что irc.livecipher.com разрешается вашим
DNS-сервером. Сетевое имя IRC не обязательно должно совпадать с общим
сетевым именем.
Информация об администраторе IRC может быть настроена
редактированием следующей строки:
A:Organization, IRC dept.:Daemon <ircd@example.irc.org>:Client Server::IRCnet:
Вы можете добавить отдельные строки для настройки списка
прослушиваемых портов IRC, для настройки информации по Оператору, для
настройки аутентификации клиентов и т.д. За подробностями обратитесь к
примеру файла настройки /usr/share/doc/ircd-irc2/ircd.conf.example.gz.
Заголовок IRC, который будет показан на клиенте IRC при соединении с
сервером, может быть установлен в файле/etc/ircd/ircd.motd.
После внесения необходимых изменений в файл настройки, вам надо
перезапустить сервер IRC, используя следующую команду:
303
Приложения для чата
sudo /etc/init.d/ircd-irc2 restart
2.3. Ссылки
Вам также может быть будет интересно посмотреть на другие IRC-серверы,
доступные в репозитории Ubuntu. Среди них ircd-ircu и ircd-hybrid.
• Смотрите также IRCD FAQ1 для подробностей об IRC-сервере.
304
Приложения для чата
3. Сервер мгновенных сообщений Jabber
Jabber - это популярный протокол мгновенных сообщений, основанный
на XMPP, открытом стандарте мгновенных сообщений, и используется
многими популярными приложениями. Этот раздел посвящен установке
сервера Jabberd 2 для локальной сети. Эта конфигурация может быть
также адаптирована для предоставления сервиса сообщений для
пользователей через интернет.
3.1. Установка
Для установки jabberd2 введите в терминале:
sudo apt-get install jabberd2
3.2. Конфигурация
Пара конфигурационных XML файлов будет использована для настройки
jabberd2 для аутентификации пользователей с использованием Berkeley
DB. Однако jabberd2 может быть настроен на использование LDAP, MySQL,
PostgreSQL и др. для аутентификации пользователей.
Сначала отредактируем /etc/jabberd2/sm.xml, изменив следующее:
<id>jabber.example.com</id>
Замените jabber.example.com на сетевое имя или другой
идентификатор вашего сервера.
Теперь в секции <storage> замените <driver> на:
<driver>db</driver>
Далее редактируем в /etc/jabberd2/c2s.xml секцию <local>:
<id>jabber.example.com</id>
А в секции <authreg> устанавливаем секцию <module>:
<module>db</module>
Наконец перезагружаем jabberd2 для подключения новых настроек:
sudo /etc/init.d/jabberd2 restart
305
Приложения для чата
Теперь вы можете соединиться с сервером, используя Jabber-клиент,
например, Pidgin.
Преимущество использования Berkeley DB заключается в том,
что после настройки не требуется никакого дополнительного
управления. Если вам требуется больше контроля над учётными
записями пользователей и их правами, предпочтительнее
использовать другой метод аутентификации.
3.3. Ссылки
Jabberd2 Web Site2 содержит больше информации по настройкам Jabberd2.
• Для дополнительных опций аутентификации смотрите Jabberd2 Install
Guide3.
• Также страница Setting Up Jabber Server Ubuntu Wiki4 содержит
дополнительную информацию.
306
Глава 17. Система контроля
версий
Контроль версий - это искусство управления изменениями в информации.
Данный инструмент издавна был важен для программистов, которые
обычно вносят небольшие изменения в программы, а затем, на следующий
день, отменяют эти изменения. Однако польза от систем контроля
версий простирается далеко за границы мира разработки программного
обеспечения. Место для систем контроля версий есть везде, где
люди используют компьютеры для управления часто изменяющейся
информацией
307
Система контроля версий
1. Bazaar
Bazaar - это новая система контроля версий, финансируемая Canonical,
коммерческой компанией, стоящей за Ubuntu. В отличие от Subversion и
CVS, которые поддерживают только централизованную модель хранения,
Bazaar также поддерживает распределённый контроль версий, давая
людям возможность взаимодействовать эффективнее. В сущности, Bazaar
разработан для увеличения уровня участия сообщества в проектах с
открытым исходным кодом.
1.1. Установка
Чтобы установить bzr, введите в консоли следующую команду:
sudo apt-get install bzr
1.2. Конфигурация
Чтобы представиться bzr, используйте команду whoami таким образом:
$ bzr whoami 'Joe Doe <joe.doe@gmail.com>'
1.3. Изучение Bazaar
Bazaar поставляется со встроенной документацией, устанавливаемой по
умолчанию в /usr/share/doc/bzr/html. "Руководство" - это наилучший момент
для начала работы. Команда bzr также имеет встроенную справку:
$ bzr help
Чтобы узнать больше о команде foo:
$ bzr help foo
1.4. Взаимодействие с Launchpad
Будучи крайне полезным, как одиночная система, Bazaar имеет хорошую
опциональную возможность интеграции с Launchpad1, системой совместной
разработки, используемой Canonical и широким сообществом открытого
программного обеспечения, чтобы координировать разработку и улучшать
Ubuntu. Информацию о том, как Bazaar может быть использован совместно
308
Система контроля версий
с Launchpad для взаимодействия в рамках проектов с открытым исходным
кодом, смотрите здесь: http://bazaar-vcs.org/LaunchpadIntegration2.
309
Система контроля версий
2. Subversion
Subversion - это система контроля версий с открытым исходным кодом.
Используя Subversion, вы можете сохранять историю изменений файлов и
документов. Дерево файлов и папок хранится в центральном репозитории,
похожем на обыкновенный файловый архив, за исключением того, что
сохраняются любые их модификации.
2.1. Установка
Для доступа к репозиторию Subversion посредством протокола HTTP вы
должны установить и настроить веб-сервер. Apache2 гарантированно
работает с Subversion. Для установки и настройки сервера Apache2
обратитесь к подразделу HTTP раздела Apache2. Для доступа к
репозиторию Subversion посредством протокола HTTPS вы должны
установить и настроить цифровой сертификат в веб-сервере Apache2. Для
установки и настройки цифрового сертификата обратитесь к подразделу
HTTPS раздела Apache2.
Для установки Subversion выполните следующую команду в терминале:
sudo apt-get install subversion libapache2-svn
2.2. Настройка сервера
Данный шаг подразумевает, что вы установили в систему пакеты,
отмеченные выше. Этот раздел объясняет, как создать репозиторий
Subversion и получить доступ к проекту
2.2.1. Создание репозитория Subversion
Репозиторий Subversion можно создать, введя в терминале:
svnadmin create /path/to/repos/project
2.2.2. Импорт файлов
Как только вы создадите репозиторий, вы сможете импортировать в него
файлы. Для импорта каталога введите следующую строку в терминале:
2.3. Методы доступа
Доступ к репозиториям Subversion можно получить многими различными
способами - через локальный диск или с помощью различных сетевых
310
Система контроля версий
протоколов. Однако адрес репозитория всегда URL. Таблица показывает,
как различные схемы URL соответствуют доступным способам доступа.
Таблица 17.1. Методы доступа
Схема
Метод доступа
file://
Прямой доступ к репозиторию (на локальном диске)
Доступ по протоколу WebDAV к вебсерверу Apache2, умеющему
работать с системой Subversion
То же самое, что и http://, но с SSL шифрованием
svn://
Доступ через выборочный протокол к серверу svnserve
svn+ssh://
То же самое, что и svn://, но через SSH тунель
В этом разделе объясняется, как настроить Subversion для всех этих
методов доступа. Здесь мы описываем основы. Для более детального
описания, обратитесь к книге svn3.
2.3.1. Прямой доступ к репозиторию (file://)
Это самый простой из всех методов доступа. Он не требует запуска
никакого процесса сервера Subversion. Этот метод доступа используется
для доступа к Subversion с той же машины. Синтакс команды, введенной в
строке терминала, следующий:
или
svn co file://localhost/path/to/repos/project
Если вы не указали имя хоста, используйте три слэша (///) - два для
протокола (в данном случае - файл), плюс первый слэш в пути. Если
вы указали имя хоста, используйте два слеша (//).
Права доступа к репозиторию зависят от прав доступа к файловой системе.
Если пользователь обладает правами на чтение/запись - он может
производить отладку и вносить изменения в репозиторий
2.3.2. Доступ через протокол WebDAV (http://)
Для доступа к хранилищу Subversion через протокол WebDAV вам
потребуется настроить сервер Apache2. Добавьте следующий фрагмент
между элементами emphasis><VirtualHost>
311
Система контроля версий
<Location /svn>
DAV svn
SVNPath /home/svn
AuthType Basic
AuthName "Your repository name"
AuthUserFile /etc/subversion/passwd
Require valid-user
</Location>
Фрагмент конфигурации выше предполагает, что хранилища
Subversion созданы в каталоге /home/svn/ с использованием команды
svnadmin. Они могут быть доступны по адресу http://hostname/
svn/repos_name.
Для импорта или утверждения файлов в ваш репозиторий Subversion по
протоколу HTTP, репозиторий должен принадлежать пользователю HTTP.
В системах Ubuntu этим пользователем обычно является www-data. Для
смены владельца файлов репозитория введите следующую команду в
терминале:
sudo chown -R www-data:www-data /путь/к/репозиторию
Меняя владельца репозитория на www-data, вы потеряете
способность импортировать или фиксировать файлы в нем,
data, пользователем.
Далее, вы должны создать файл /etc/subversion/passwd, который будет
содержать данные для аутентификации пользователя. Для создания файла
выполните в командной строке следующую команду (которая создаст файл
и добавит первого пользователя):
sudo htpasswd -c /etc/subversion/passwd имя_пользователя
Для добавления дополнительных пользователей не задавайте опцию "-c",
так как она заменяет старый файл на новый. Вместо этого используйте:
sudo htpasswd /etc/subversion/passwd user_name
Команда запросит ввести пароль. Как только пароль будет введён
- пользователь будет добавлен. Теперь, чтобы получить доступ к
репозиторию, вам необходимо выполнить эту команду:
Передача пароля происходит открытым текстом. Если вы не хотите,
чтобы пароль был перехвачен, используйте шифрование трафика
312
Система контроля версий
с применением SSL. Дополнительные сведения вы можете найти в
следующем разделе.
2.3.3. Доступ к протоколу WebDAV с применением SSL (https://)
Доступ к хранилищу Subversion по протоколу WebDAV с SSL шифрованием
(https://) аналогичен http://, за исключением того, что вы должны
установить и настроить цифровой сертификат для вашего сервера Apache2.
Для использования SSL с Subversion добавьте конфигурацию, приведенную
выше, в файл /etc/apache2/sites-available/default-ssl. Для дополнительной
информации по установке Apache2 с SSL смотрите Раздел 1.3, «Настройка
HTTPS» [220].
Вы можете установить цифровой сертификат, выпущенный центром
сертификации. В качестве альтернативы можно использовать
самоподписанный сертификат.
Этот шаг подразумевает, что у вас есть установленный и
сконфигурированный цифровой сертификат в веб-сервере Apache 2.
Для доступа к репозиторию Subversion обязательно ознакомьтесь с
предыдущим разделом! Спобобы доступа такие же, за исключением
протокола. Необходимо использовать https:// для доступа к репозиторию
Subversion.
2.3.4. Доступ с использованием своего протокола (svn://)
Как только репозиторий Subversion будет создан, можно будет
сконфигурировать контроль доступа. Для изменения контроля доступа
измените файл /путь/к/репозиторию/проект/conf/svnserve.conf. Например, для
включения аутентификации уберите комментарий на следующих строчках:
# [general]
# password-db = passwd
Как только вы раскомментируете вышеуказанные строки, вы
можете использовать список пользователей из файла passwd. Итак,
отредактируйте файл passwd , находящийся в том же каталоге, и добавьте
нового пользователя.
username = password
Чтобы получить больше информации, посмотрите файл.
Теперь, чтобы получить доступ к Subversion через протокол svn:// с того
же или с другого компьютера, вы можете запустить сервер Subversion,
используя комманду svnserve. Синтаксис:
$ svnserve -d --foreground -r /путь/к/репозиторию
313
Система контроля версий
# -d -- daemon режим сервиса (невидимый)
# --foreground -- запустить на консоль (полезно для отладки)
# -r -- корень репозитория
Для подробного описания использования команды выполните команду:
$ svnserve --help
После запуска этой команды Subversion будет запущен на порту 3690. Для
того, что бы сменить репозиторий, необходимо выполнить команду:
svn co svn://имяхотса/проект проект --username имя_пользователя
В зависимости настроек сервера, может быть запрошен пароль. После
аутентификации будет проверен код из репозитория Subversion. Для
синхронизации локальной копии и репозитория проекта можно выполнить
подкоманду update. Синтакс введённой команды следующий:
cd каталог_проекта ; svn update
Вы можете обратиться к инструкции пользователя, если вас интересует
детали использования каждой подкоманды Subversion. На пример, что бы
узнать больше про команду "co", введите в терминале следующее:
svn co help
2.3.5. Доступ через нестандартный протокол с поддержкой SSL (svn+ssh://)
Конфигурация и процесс сервера такие же как и в случае с svn://. Более
подробно описано в предыдущей секции. На этом этапе подразумевается,
что вы выполнили предыдущие шаги и запустили сервер Subversion,
используя команду svnserve
Также подразумевается, что на том же компьютере запущен сервер SSH и
на него разрешены входящие соединения. Чтобы проверить, попробуйте
подключиться к этому компьютеру, используя SSH. Если вы зашли в этот
компьютер, значит всё замечательно. Если вы не можете войти в этот
компьютер, решите эту проблему перед тем, как приступать к дальнейшим
шагам.
Протокол svn+ssh:// применяется, если необходимо подключиться к
репозиторию Subversion, используя SSL. В этом случае все передаваемые
данные будут зашифрованы. Для доступа к репозиторию проекта
необходимо использовать следующую команду:
svn co svn+ssh://hostname/var/svn/репозиторий/проект
314
Система контроля версий
Чтобы получить доступ к репозиторию Subversion, используя этот
метод, необходимо ввести полный путь (/путь/к/репозиторию/
проекту).
Если в указано в настройках, будет запрошен пароль. Необходимо ввести
пароль, используемый при подключении через SSH. Если пароль верный,
будет проверен код из репозитория Subversion.
315
Система контроля версий
3. Сервер CVS
CVS - система контроля версий. Её можно использовать для записи
истории исходных файлов.
3.1. Установка
Для установки CVS, выполните следующуюкоманду в терминальном
режиме:
sudo apt-get install cvs
После установки cvs, вы должны установить xinetd для запуска/остановки
cvs сервера. В командной строке введите следующую команду для
установки xinetd:
sudo apt-get install xinetd
3.2. Конфигурация
После установки cvs репозиторий будет автоматически
проинициализирован. По умолчанию хранилище размещется в каталоге /
srv/cvs. Вы можете изменить этот путь следующей командой:
cvs -d /your/new/cvs/repo init
Как только завершится первоначальная настройка репозитория, вы можете
настроить xinetd на запуск CVS сервера, скопировав следующие строки в
файл /etc/xinetd.d/cvspserver.
service cvspserver
{
port = 2401
socket_type = stream
protocol = tcp
user = root
wait = no
type = UNLISTED
server = /usr/bin/cvs
server_args = -f --allow-root /srv/cvs pserver
disable = no
}
Убедитесь, что отредактировали путь до репозитория, если вы
меняли расположение по умолчанию (/srv/cvs).
316
Система контроля версий
После настройки xinetd вы можете запустить cvs сервер следующей
командой:
sudo /etc/init.d/xinetd restart
Для проверки, запущен ли CVS сервер, можно использовать команду:
sudo netstat -tap | grep cvs
После того, как вы запустите эту команду, вы должны увидеть нечто
похожее:
tcp 0 0 *:cvspserver *:* LISTEN
После этого можно добавлять новых пользвателей, новые проекты и
управлять сервером CVS.
CVS позволяет добавлять новых пользователей независимо от
установленной у них операционной системы. Вероятно, самый
простой способ - использовать пользователей Linux для CVS,
хотя при этом существуют потенциальные бреши в безопасности.
Подробнее смотрите в руководстве по CVS.
3.3. Добавление проектов
Этот раздел описывает, как добавить новый проект в репозиторий CVS.
Создайте каталог и добавьте в него необходимые документы и исходные
файлы. Теперь выполните следующую команду для добавления проекта в
репозиторий CVS:
cd your/project
cvs -d :pserver:username@hostname.com:/srv/cvs import -m \
"Importing my project to CVS repository" . new_project start
Вы можете использовать системную переменную CVSROOT,
чтобы сохранить корневую директорию CVS. Этим вы избежите
использования опции -d при выполнении cvs команды.
Строка new_project - это метка производителя, а start - метка выпуска
(релиза). Они не имеют значения в данном контексте, но поскольку CVS
требует их наличия, они должны присутствовать.
Когда вы добавляете новый проект, пользователь CVS должен
иметь доступ на запись в репозиторий CVS (/srv/cvs). По умолчанию
группа src имеет право записи в репозитории CVS. Поэтому вы
317
Система контроля версий
можете добавить пользователя в эту группу и он сможет управлять
проектами в репозитории CVS.
318
Система контроля версий
4. Ссылки
Домашняя страница Bazaar4
Launchpad5
Домашняя страница Subversion6
Книга Subversion7
Руководство по CVS8
Easy Bazaar в Ubuntu Wiki109
Subversion на Ubuntu Wiki1211
10
12
11
319
Глава 18. Сетевое окружение
Windows
Компьютерные сети часто состоят из разнородных систем. В то время как
управление сетью, полностью состоящей из рабочих станций и серверов
Ubuntu - лёгкая задача, некоторые сети должны объединять системы на
основе Ubuntu и Microsoft®Windows®, гармонично сосуществующие друг с
другом. Эта часть Руководства рассматривает принципы и инструменты,
используемые в настройке вашего сервера Ubuntu для взаимодействия с
Windows-компьютерами.
320
Сетевое окружение Windows
1. Введение
Успешное сетевое взаимодействие вашей системы Ubuntu с Windows-
клиентами включает в себя обеспечение и интеграцию со службами,
распространёнными в окружении Windows. Такие службы поддерживают
совместное использование данных и информации о компьютерах и
пользователях сети, и могут относиться к трём основным функциональным
категориям:
Службы доступа к файлам и принтерам. Использование протокола
блока серверных сообщений (SMB) для обеспечения совместного
использования файлов, папок, томов, а также общего доступа к
принтерам через сеть.
Службы каталогов. Распределение важной информации о компьютерах
и пользователях сети с использованием таких технологий, как
облегченный протокол доступа к каталогам (LDAP) и Microsoft Active
Directory®.
Идентификация и доступ. Установление подлинности компьютера
или пользователя сети и определение информации, доступ к которой
разрешается компьютеру или пользователю при помощи прав доступа к
файлам, групповых политик и службы удостоверения Kerberos.
К счастью, ваша система Ubuntu может предоставить все эти возможности
для клиентов Windows и открыть им общий доступ к сетевым ресурсам.
Одним из основных компонентов Ubuntu, предназначенных для работы
с сетями Windows, является пакет Samba, состоящий из серверных
приложений и инструментов SMB.
Этот раздел Руководства по Ubuntu Server познакомит вас с общими
принципами работы с Samba, покажет, как установить и настроить
необходимые пакеты. Дополнительная, более подробная, информация по
Samba может быть найдена на Сайте проекта Samba1.
321
Сетевое окружение Windows
2. Файловый сервер Samba
Один из наиболее часто встречающихся способов объединения в сеть
компьютеров под управлением Ubuntu и Windows - настройка Samba в
качестве файлового сервера. Этот раздел охватывает настройку сервера
Samba для предоставления доступа к файлам для Windows-клиентов.
Сервер будет настроен для предоставления доступа к файлам любому
клиенту сети без запроса пароля. Если вам требуется более строгий
контроль доступа, смотрите Раздел 4, «Защита файлового сервера и
сервера печати на Samba» [327]
2.1. Установка
Первый шаг - установка пакета samba. Наберите в терминале:
sudo apt-get install samba
Эта команда установит всё необходимое. Теперь вы готовы к настройке
Samba для предоставления доступа к файлам.
2.2. Конфигурация
Главный файл настройки Samba находится здесь: /etc/samba/smb.conf.
Настройки по умолчанию содержат значительное количество
комментариев, описывающих различные варианты настройки.
Не все доступные опции включены в файл настроек по умолчанию.
Смотрите страницу руководства man для файла smb.conf или
посетите Коллекцию Samba HOWTO2 для получения дополнительной
информации.
1. Для начала отредактируйте нижеследующие пары ключ/значение в
секции [global] файла /etc/samba/smb.conf:
workgroup = EXAMPLE
security = user
Параметр security находится почти в самом низу секции [global] и по
умолчанию закомментирован. Для большего соответствия реальной
ситуации измените название EXAMPLE.
322
Сетевое окружение Windows
2.
Для предоставления доступа к файлам создайте новую секцию в конце
файла или раскомментируйте один из примеров:
[share]
comment = Ubuntu File Server Share
path = /srv/samba/share
browsable = yes
guest ok = yes
read only = no
create mask = 0755
comment: - краткое описание ресурса. Измените для своих нужд.
path: - путь к каталогу, к которому будет открыт доступ
Этот пример использует /srv/samba/sharename, поскольку в соответствии
со Стандартом иерархии файловой системы (FHS) папка /srv3
предназначена для хранения данных, относящихся к сайту.
Технически ресурсы Samba могут располагаться в любом месте
файловой системы, если для них выставлены правильные права
доступа, но всё-таки рекомендуется придерживаться стандартов.
browsable: позволяет Windows-клиентам просматривать каталог
ресурса с помощью Windows Explorer.
guest ok: позволяет клиентам подключаться к ресурсу без ввода
пароля.
read only: определяет, доступен ли ресурс только для чтения, или
же предоставлены привилегии на запись. Привилегии на запись
доступны только тогда, когда выставлено значение no, как показано
в примере. Если значение равно yes, то ресурс может быть доступен
только для чтения (read only).
create mask: определяет права для вновь создаваемых файлов.
3.
Теперь, когда Samba настроена, необходимо создать каталог и
изменить права доступа. Введите в терминале:
sudo mkdir -p /srv/samba/share
sudo chown nobody.nogroup /srv/samba/share/
Параметр -p указывает mkdir на создание полного дерева папок,
если оно не существует.
4.
Наконец, перезапустите сервис samba, чтобы применить новую
конфигурацию.
323
Сетевое окружение Windows
sudo restart smbd
sudo restart nmbd
Повторим ещё раз, приведенная выше конфигурация даёт полный
доступ любому клиенту в локальной сети. Если вам нужна более
защищённая конфигурация, смотрите Раздел 4, «Защита файлового
сервера и сервера печати на Samba» [327].
Из Windows-клиента у вас теперь есть возможность просматривать
совместно используемые папки Ubuntu Server. Если ваш клиент не
отображает общую папку автоматически, попробуйте получить доступ к
серверу по IP-адресу (например, \\192.168.1.1) в окне проводника Windows.
Чтобы проверить, что всё работает, попробуйте создать папку из под
Windows.
Для создания ещё одного ресурса просто создайте новую секцию [dir] в
файле /etc/samba/smb.conf и перезапустите Samba. Перед этим убедитесь,
что каталог, к которому вы хотите открыть доступ, существует и имеет
правильные права доступа.
Общий каталог "[share]" и путь /srv/samba/share - это просто
примеры. Измените имя совместно используемого ресурса и путь
так, как вам необходимо. Будет хорошей идеей использовать для
ресурса то же имя, что и у соответствующего каталога в файловой
системе. Ещё одним примером может быть имя ресурса [qa] с путём
/srv/samba/qa.
2.3. Ресурсы
• Если вам нужны более сложные примеры конфигураций Samba, смотрите
Samba HOWTO Collection4.
• Данное руководство также доступно в печатном виде5.
• Книга O'Reilly Использование Samba6 - ещё один хороший источник
знаний.
• Страница Ubuntu Wiki Samba 7.
324
Сетевое окружение Windows
3. Сервер печати Samba
Ещё одной распространенной сферой применения Samba является
предоставление доступа к принтерам, установленным на сервере
Ubuntu локально или в сети. Так же, как и Раздел 2, «Файловый сервер
Samba» [322], этот раздел опишет процесс настройки Samba, позволяющий
любому клиенту локальной сети использовать установленный принтер без
необходимости вводить имя пользователя и пароль.
Если вам нужна более защищённая конфигурация, смотрите Раздел 4,
«Защита файлового сервера и сервера печати на Samba» [327].
3.1. Установка
Перед установкой и настройкой Samba неплохо бы иметь уже рабочую
систему CUPS. Для разъяснений обратитесь к разделу Раздел 4, «CUPS -
сервер печати» [266]
Для установки пакета samba введите в терминале:
sudo apt-get install samba
3.2. Конфигурация
После установки Samba отредактируйте /etc/samba/smb.conf. Измените
рабочую группу workgroup согласно вашей сети, и измените security на user:
workgroup = EXAMPLE
security = user
В разделе [printers] измените опцию guest ok на yes:
browsable = yes
guest ok = yes
После редактирования smb.conf перезапустите Samba:
sudo restart smbd
sudo restart nmbd
По умолчанию Samba будет публиковать любые настроенные принтеры.
Просто установите принтер локально на ваших клиентских системах
Windows.
325
Сетевое окружение Windows
3.3. Ресурсы
• Если вам нужны более сложные примеры конфигураций Samba, смотрите
Samba HOWTO Collection8.
• Данное руководство также доступно в печатном виде9.
• Книга O'Reilly Использование Samba10 - ещё один хороший источник
знаний.
• Также посетите Веб-сайт CUPS11, где вы сможете найти больше
информации о настройке CUPS.
• Страница Ubuntu Wiki Samba 12.
10
11
12
326
Сетевое окружение Windows
4. Защита файлового сервера и сервера
печати на Samba
4.1. Режимы безопасности Samba
В протоколе CIFS (Common Internet Filesystem) доступно два уровня
безопасности - уровень пользователей и уровень ресурсов. Реализация
режима безопасности в Samba обеспечивает большую гибкость, поскольку
в ней доступно четыре способа установки защиты на уровне пользователей
и один способ установки защиты на уровне ресурсов:
security = user: будет требовать от клиентов указания имени
пользователя и пароля при подключении к ресурсам. Учётные записи
Samba хранятся отдельно от системных учётных записей, но пакет
libpam-smbpass позволит синхронизировать системных пользователей и
их пароли с базой данных пользователей Samba.
security = domain:. Этот режим позволяет серверу Samba представляться
Windows-клиентам как первичный контроллер домена (PDC), резервный
контроллер домена (BDC) или сервер-участник домена (DMS). Для
подробной информации смотрите Раздел 5, «Samba в качестве
контроллера домена» [333].
security = ADS: позволяет серверу Samba присоединиться к сомену Active
Directory как полноправный участник. Более подробно читайте Раздел 6,
«Интеграция Samba с Active Directory» [338].
security = server:. Этот режим остался с тех пор, когда Samba могла быть
сервером-участником, и по некоторым причинам безопасности не должн
использоваться. Смотрите раздел Безопасность сервера13 руководства
Samba для дальнейшей информации.
security = share: позволяет клиентам подключаться к ресурсу без
указания имени пользователя и пароля.
Выберите тот режим безопасности, который лучше подходит к вашей
ситуации в зависимости от задач, которые выполняет ваш сервер Samba.
4.2. Security = User
В этом разделе мы настроим файловый сервер и сервер печати на Samba,
описанный в Раздел 2, «Файловый сервер Samba» [322] и Раздел 3, «Сервер
печати Samba» [325], таким образом, чтобы он требовал аутентификации.
13
327
Сетевое окружение Windows
Для начала установите пакет libpam-smbpass, который позволит
синхронизировать пользователей системы с базой данных пользователей
Samba.
sudo apt-get install libpam-smbpass
Если вы выберете задачу Samba Server в процессе установки, то
libpam-smbpass будет установлен автоматически.
Отредактируйте /etc/samba/smb.conf, изменив в разделе [share]:
guest ok = no
Наконец, перезапустите Samba, чтобы новые параметры вступили в силу:
sudo restart smbd
sudo restart nmbd
Теперь, при подключении к общим папкам и принтерам вам потребуется
ввести имя пользователя и пароль.
Если вы выбрали подключение сетевого диска к ресурсу, то можете
выбрать флажок «Подключать наново при входе в систему»,
который потребует от вас ввести имя пользователя и пароль один
раз, дол тех пор, пока пароль не будет сменен.
4.3. Безопасность ресурсов
Существует несколько вариантов увеличения безопасности
индивидуальных ресурсов. В этом разделе будет рассмотрены самые
распространённые из них, на примере [share].
4.3.1. Группы
Группы определяют набор компьютеров или пользователей, имеющих
одинаковый уровень доступа к определенным сетевым ресурсам, и
предоставляют средство для структурирования контроля доступа
к ресурсам. Например, если группа qa определена и в нее входят
пользователи freda, danika и rob, а в другую существующую группу support
входят danika, jeremy и vincent, тогда определенный сетевой ресурс,
настроенный для разрешения доступа группе qa, будет доступен для
пользователей freda, danika, и rob, но не для jeremy или vincent. Так как
пользователь danika входит в обе группы, qa и support, она будет иметь
доступ к ресурсам, настроенным для доступа обеих групп, в то же время
все другие пользователи будут иметь доступ только к тем ресурсам,
которые непосредственно доступны для группы, в которую они входят.
328
Сетевое окружение Windows
По умолчанию Samba просматривает локальные системные группы,
описанные в файле /etc/group, чтобы определить, какой пользователь к
какой группе принадлежит. Для более полной информации о том, как
добавить или удалить пользователя из группы, смотрите Раздел 1.2,
«Добавление и удаление пользователей» [173].
При определении групп в файле настроек Samba /etc/samba/smb.conf имя
группы должно начинаться с символа "@". Например, если вы хотите
определить группу sysadmin в определённом разделе файла /etc/samba/
smb.conf, имя группы необходимо указать как @sysadmin.
4.3.2. Права доступа к файлам
Разрешения на файл определяют явно заданные права компьютера или
пользователя использовать определённый каталог, файл или набор
файлов. Для определения этих разрешений необходимо отредактировать
файл /etc/samba/smb.conf и указать конкретные разрешения определенного
ресурса.
Например, если у вас определён ресурс Samba под именем share, и вы
хотите дать разрешения только-чтение группе пользователей qa, но при
этом хотите разрешить запись группе sysadmin и пользователю vincent, то
для этого вы можете отредактировать файл /etc/samba/smb.conf, добавив в
него следующие ниже строки [share]:
read list = @qa
write list = @sysadmin, vincent
Другими возможными разрешениями Samba являются административные
разрешения, котрые могут быть объявлены для определённого ресурса.
Пользователи с административными правами могут читать, записывать или
изменять информацию, хранящуюся на ресурсе, для которого определены
административные права пользователя.
Например, если вы захотите предоставить пользователю melissa права
администратора на ресурс share, отредактируйте файл /etc/samba/smb.conf и
добавьте следующую строку в секции [share]:
admin users = melissa
После изменения /etc/samba/smb.conf, перезапустите Samba, чтобы изменения
вступили в силу:
sudo restart smbd
sudo restart nmbd
329
Сетевое окружение Windows
Для того, чтобы работали списки чтения и списки записи, режим
безопасности Samba не должен быть установлен в security = share
Теперь, когда Samba настроена на ограничение доступа групп
пользователей к ресурсу, необходимо обновить разрешения файловой
системы.
Традиционные разрешения на файлы в Linux не совсем совпадают со
списками контроля доступа (ACL) Windows NT. К счастью, ACL POSIX,
также присутствующие в сервере Ubuntu, обеспечивают более надёжный
контроль. Например, для включения ACL для файла /srv на файловой
системе EXT3, отредактируйте файл /etc/fstab, добавив опцию acl:
UUID=66bcdd2e-8861-4fb0-b7e4-e61c569fe17d /srv ext3
noatime,relatime,acl 0
1
После чего перемонтируйте раздел:
sudo mount -v -o remount /srv
В вышеприведённом примере предполагается, что /srv находится
на отдельном разделе. Если же /srv или ваш собственный путь
к ресурсу входит в корневой раздел /, может потребоваться
перезагрузка компьютера.
Для соответствия вышеуказанной конфигурации Samba, группе sysadmin
будут предоставлены права на чтение, запись и выполнение в /srv/samba/
share, группе qa - на чтение и выполнение, а владельцем файлов будет
являться пользователь melissa. Введите в терминале следующие команды:
sudo chown -R melissa /srv/samba/share/
sudo chgrp -R sysadmin /srv/samba/share/
sudo setfacl -R -m g:qa:rx /srv/samba/share/
Команда setfacl даёт права на выполнение всех файлов в каталоге
/srv/samba/share, что может потребоваться для вашей ситуации или
нет.
Теперь, работая в среде Windows-клиента, вы можете заметить, что к
файлам применились новые разрешения. Смотрите страницы руководства
man программ acl и setfacl для получения большей информации о POSIX
ACL.
4.4. Профиль Samba для AppArmor
Ubuntu поставляется с модулем безопасности для AppArmor, который
обеспечивает мандатный контроль доступа. Встроенный профиль AppArmor
330
Сетевое окружение Windows
для Samba должен буть адаптирован под вашу конфигурацию. Для
получения большей информации по использованию AppArmor смотрите
Раздел 4, «AppArmor» [189].
Есть встроенные профили AppArmor для файлов /usr/sbin/smbd и /usr/sbin/
nmbd, бинарных файлов демонов Samba. Они содержатся в пакете apparmor-
profiles. Для установки этого пакета введите в терминале:
sudo apt-get install apparmor-profiles apparmor-utils
Этот пакет содержит профили для нескольких остальных бинарных
файлов.
По умолчанию, профили для smbd и nmbd находятся в режиме жалоб
(complain), позволяя Samba работать без изменения профиля, записывая
отчёты об ошибках. Для перевода профиля для smbd в принудительный
(enforce) режим, чтобы заставить Samba работать так, как и ожидалось,
профиль должен быть изменён, чтобы это отразилось на любом каталоге
ресурса.
Отредактируйте файл /etc/apparmor.d/usr.sbin.smbd, добавив информацию для
[share] из примера файлового сервера:
/srv/samba/share/ r,
/srv/samba/share/** rwkix,
Теперь переведите профиль в принудительный режим и перезагрузите его:
sudo aa-enforce /usr/sbin/smbd
cat /etc/apparmor.d/usr.sbin.smbd | sudo apparmor_parser -r
Теперь вы сможете читать, записывать и исполнять файлы в разделяемом
каталоге как в обычном, и у приложения smbd binary будет доступ только к
файлам и каталогам. Обязательно добавьте запись для каждого каталога,
настроенного для совместного доступа через Samba. Любые ошибки будут
записываться в /var/log/syslog.
4.5. Ресурсы
• Если вам нужны более сложные примеры конфигураций Samba, смотрите
Samba HOWTO Collection14.
• Данное руководство также доступно в печатном виде15.
14
15
331
Сетевое окружение Windows
• Книга O'Reilly Using Samba16 - хорошее подспорье.
Глава 1817 коллекции HOWTO по Samba посвящена безопасности.
• Для получения большей информации по Samba и ACL смотрите Страница
ACL в Samba18.
• Страница Ubuntu Wiki Samba 19.
16
17
18
19
332
Сетевое окружение Windows
5. Samba в качестве контроллера домена
Несмотря на то, что Samba не может выступать в качестве первичного
контроллера домена Active Directory, сервер может быть сконфигурирован
как контроллер домена Windows NT4. Главным преимуществом этой
конфигурации является возможность централизовать мандаты
пользователей и компьютеров. Samba может хранить информацию о
пользователе во множестве драйверов (бэкэндов).
5.1. Первичный контроллер домена
Этот раздел охватывает настройку Samba в качестве первичного
контроллера домена с использованием встроенного драйвера smbpasswd.
1.
Для начала установите Samba, а также libpam-smbpass для
синхронизации бюджетов пользователей, введя в терминале:
sudo apt-get install samba libpam-smbpass
2.
Затем настройте Samba, отредактировав файл /etc/samba/smb.conf. Режим
security должен быть установлен в user, а строка workgroup должна
соответствовать вашей организации:
workgroup = EXAMPLE
security = user
3.
В закомментированной секции «Domains» добавьте или
раскомментируйте следующее (последняя строка была разделена,
чтобы соответствовать формату этого документа):
domain logons = yes
logon path = \\%N\%U\profile
logon drive = H:
logon home = \\%N\%U
logon script = logon.cmd
add machine script = sudo /usr/sbin/useradd -N -g machines -c Machine -d
/var/lib/samba -s /bin/false %u
Если вы не хотите использовать Перемещаемые профили,
оставьте опции logon home и logon path закомментированными.
domain logons: предоставляет сервис netlogon, заставляющий Samba
работать как контроллер домена.
333
Сетевое окружение Windows
logon path: указывает на расположение профиля пользователя
Windows в его домашнем каталоге. Также возможна настройка секции
[profiles] для хранения всех профилей в одном каталоге.
logon drive: определяет локальный путь к домашнему каталогу.
logon home: определяет расположение домашнего каталога.
logon script: определяет скрипт, который будет выполняться локально
один раз при входе пользователя в систему. Скрипт должен быть
расположен в секции [netlogon].
add machine script: скрипт, который автоматически будет создавать
Machine Trust Account, без которого рабочая станция не может
вступить в домен.
В этом примере группа machines должна быть создана с
использованием утилиты addgroup. Детальнее расписано тут:
Раздел 1.2, «Добавление и удаление пользователей» [173].
4.
Раскомментируйте секцию [homes], чтобы разрешить подключать logon
home.
[homes]
comment = Home Directories
browseable = no
read only = no
create mask = 0700
directory mask = 0700
valid users = %S
5.
Для настройки контроллера домена необходимо настроить секцию
[netlogon]. Для того, чтобы определить ресурс, раскомментируйте:
[netlogon]
comment = Network Logon Service
path = /srv/samba/netlogon
guest ok = yes
read only = yes
share modes = no
Оригинальный путь к ресурсу netlogon - /home/samba/netlogon,
но, согласно Стандарту иерархии файловой системы
(FHS), правильным местом расположения информации,
предоставляемой системой для сайта, является /srv20.
6.
Теперь создайте каталог netlogon и пустой (пока) файл скрипта logon.cmd:
20
334
Сетевое окружение Windows
sudo mkdir -p /srv/samba/netlogon
sudo touch /srv/samba/netlogon/logon.cmd
Вы можете ввести любые скриптовые команды Windows в файле
logon.cmd для настройки окружения клиента.
7.
Перезапустим Samba, чтобы запустить контроллер нового домена:
sudo restart smbd
sudo restart nmbd
8.
Наконец, есть несколько дополнительных команд, необходимых для
настройки соответствующих прав.
Поскольку пользователь root по умолчанию отключен, для вступления
в домен системная группа должна быть отражена на группу Domain
Admins в Windows. Сделайте это с помощью утилиты Domain Admins,
введя в терминале:
sudo net groupmap add ntgroup="Domain Admins" unixgroup=sysadmin rid=512 type=d
Измените sysadmin на любую группу, которую вы предпочитаете.
Кроме того, пользователь, который будет добавлять компьютер
в домен, должен быть членом группы sysadmin и членом
системной группы admin. Группа admin позволяет использовать
sudo.
Если пользователь всё ещё не имеет полномочий Samba, вы
можете добавить их с помощью утилиты smbpasswd, изменяя,
соответственно, имя пользователя sysadmin:
sudo smbpasswd -a sysadmin
Также исключительные права должны быть предоставлены группе
Domain Admins для того, чтобы работал сценарий add machine script
(и другие функции администрирования). Это может быть достигнуто
выполнением:
net rpc rights grant -U sysadmin "EXAMPLE\Domain Admins" SeMachineAccountPrivilege \ SePrintOpe
9.
Теперь вы можете добавить Windows-клиентов в домен так же, как
добавляли их в домен NT4 под управлением сервера Windows.
335
Сетевое окружение Windows
5.2. Резервный контроллер домена
Наряду с первичным контроллером домена (PDC) полезно иметь и
резервный контроллер (BDC). Это позволит клиентам проходить
аутентификацию, даже если PDC недоступен.
При настройке Samba в качестве BDC вам нужен механизм синхронизации
информации об учетных записях с PDC. Существует много способов решить
эту проблему: scp, rsync или использование LDAP в качестве драйвера
passdb.
Использование LDAP - это самый разумный способ синхронизации
информации об учетных записях, поскольку оба контроллера домена могут
использовать одну и ту же информацию в реальном времени. Однако,
настройка сервера LDAP может быть более сложной для небольшого
количества учетных записей пользователей и компьютеров. Для более
подробной информации смотрите Раздел 2, «Samba и LDAP» [135].
1.
Для начала установите samba и libpam-smbpass. Введите в терминале:
sudo apt-get install samba libpam-smbpass
2.
Теперь отредактируйте файл /etc/samba/smb.conf и раскомментируйте
нижеследующее в секции [global]:
workgroup = EXAMPLE
security = user
3.
В закомментированной секции Domains раскомментируйте или
добавьте:
domain logons = yes
domain master = no
4.
Убедитесь, что пользователь имеет права читать файлы в /var/lib/samba.
Например, для того, чтобы разрешить пользователям в группе admin
выполнять команду scp для файлов, введите:
sudo chgrp -R admin /var/lib/samba
5.
Затем синхронизируйте учетные записи пользователей, используя scp,
чтобы скопировать каталог /var/lib/samba с PDC:
sudo scp -r username@pdc:/var/lib/samba /var/lib
336
Сетевое окружение Windows
Замените username на действительное имя пользователя и pdc
на имя компьютера или IP-адрес вашего PDC.
6. Наконец, перезапустите samba:
sudo restart smbd
sudo restart nmbd
Вы можете проверить работу резервного контроллера домена, остановив
демон Samba на PDC, а затем попробовав войти в систему на Windows-
клиенте, входящем в состав домена.
Ещё одна вещь, на которую стоит обратить внимание: если вы настроили
опцию logon home как каталог на PDC, то при недоступном PDC доступ к
пользовательскому диску Home также будет невозможен. Поэтому лучше
всего настраивать logon home на отдельном сервере, а не на PDC или BDC.
5.3. Ресурсы
• Если вам нужны более сложные примеры конфигураций Samba, смотрите
Samba HOWTO Collection21.
• Данное руководство также доступно в печатном виде22.
• Книга O'Reilly Using Samba23 - хорошее подспорье.
Глава 424 коллекции HOWTO Samba описывает настройку первичного
контроллера домена.
Глава 525 коллекции HOWTO Samba описывает настройку резервного
контроллера домена.
• Страница Ubuntu Wiki Samba 26.
21
22
23
24
25
26
337
Сетевое окружение Windows
6. Интеграция Samba с Active Directory
6.1. Доступ к ресурсу Samba
Ещё одной сферой применения Samba является интеграция в
существующую сеть Windows. Как часть домена Active Directory, Samba
может быть файловым сервером и сервером печати.
Самый простой способ подключится к AD домену - использовать
приложениеLikewise-open. Для более подробных инструкций смотрите
Руководство по установке и администрированию Likewise Open27.
Будучи частью домена Active Directory, введите следующие команды в
терминале:
sudo apt-get install samba smbfs smbclient
Затем отредактируйте файл /etc/samba/smb.conf, изменив:
workgroup = EXAMPLE
security = ads
realm = EXAMPLE.COM
idmap backend = lwopen
idmap uid = 50-9999999999
idmap gid = 50-9999999999
Перезапустите samba, чтобы применить новые настройки:
sudo restart smbd
sudo restart nmbd
Теперь у вас должен появиться доступ к любому ресурсу Samba с
Windows-клиента. Однако убедитесь, что вы дали соответствующие права
пользователям и группам из AD на доступ к ресурсу. Для более детальной
информации смотрите Раздел 4, «Защита файлового сервера и сервера
печати на Samba» [327].
6.2. Доступ к ресурсу Windows
Теперь, когда сервер Samba является частью домена Active Directory, вы
можете получить доступ к любому ресурсу сервера Windows.
27
338
Сетевое окружение Windows
• Чтобы примонтировать файловый ресурс Windows, введите в терминале:
mount.cifs //fs01.example.com/share mount_point
Возможен доступ к ресурсам и с компьютеров, не являющихся частью
домена AD, но в этом случае будет запрашиваться имя пользователя и
пароль.
• Для монтирования ресурса в процессе загрузки поместите строчку в файл
/etc/fstab, например:
//192.168.0.5/share /mnt/windows cifs auto,username=steve,password=secret,rw 0
0
• Другим способом скопировать файлы с сервера Windows является
использование утилиты smbclient. Чтобы получить список файлов ресурса
Windows, введите в терминале:
smbclient //fs01.example.com/share -k -c "ls"
• Чтобы скопировать файлы с ресурса, введите:
smbclient //fs01.example.com/share -k -c "get file.txt"
Это скопирует файл file.txt в текущий каталог.
• И чтобы скопировать файл на ресурс:
smbclient //fs01.example.com/share -k -c "put /etc/hosts hosts"
/etc/hosts будет скопирован в //fs01.example.com/share/hosts.
• Опция -c, используемая в примере вверху, позволяет выполнять сразу
все команды приложения smbclient. Это полезно для написания скриптов
и второстепенных файловых операций. Для получения строки smb:
\>, в которой вы можете выполнять команды по работе с файлами и
каталогами, как и в FTP, просто введите:
smbclient //fs01.example.com/share -k
Замените все вхождения fs01.example.com/share, //192.168.0.5/
share, username=steve,password=secret и file.txt на IP-адрес вашего
сервера, имя компьютера, имя файла и реальное имя пользователя/
пароль, соответствующие пользователю с правами доступа к
ресурсу.
339
Сетевое окружение Windows
6.3. Ресурсы
Для дополнительных опций smbclient смотрите инструкции: man
smbclient, которые также доступны в Интернет28.
Инструкция29 mount.cifs полезна для получения более подробной
информации.
Страница Ubuntu Wiki Samba 30.
28
29
30
340
Глава 19. Резервное
копирование
Существует много способов сделать резервную копию системы Ubuntu.
Наиболее важным в резервном копировании является выработка плана
резервного копирования, отражающего что нужно копировать, куда это
нужно копировать и как это восстанавливать.
Следующие разделы рассматривают различные способы решения этих
задач.
341
Резервное копирование
1. Сценарии Shell
Один из простейших вариантов резервного копирования системы -
использование shell script. Например, сценарий может быть использован
для настройки, какие каталоги требуют резервного копирования, и для
передачи этих каталогов в качестве аргументов утилите tar, которая
создаёт архивные файлы. Архивный файл может быть затем перемещён
или скопирован в другое место. Архив также может быть создан на
удалённой файловой системе, такой как NFS.
Утилита tar создаёт один архивный файл из множества файлов и
каталогов.tar может также пропускать файлы через утилиты сжатия,
уменьшая таким образом размер архивного файла.
1.1. Простой Shell сценарий
Следующий shell сценарий использует tar для создания архивного файла на
удалённо смонтированной файловой системе. Имя архива определяется с
помощью дополнительных утилит командной строки.
#!/bin/sh
####################################
#
# Backup to NFS mount script.
#
####################################
# What to backup.
backup_files="/home /var/spool/mail /etc /root /boot /opt"
# Where to backup to.
dest="/mnt/backup"
# Create archive filename.
day=$(date +%A)
hostname=$(hostname -s)
archive_file="$hostname-$day.tgz"
# Print start status message.
echo "Backing up $backup_files to $dest/$archive_file"
date
echo
# Backup the files using tar.
tar czf $dest/$archive_file $backup_files
# Print end status message.
echo
342
Резервное копирование
echo "Backup finished"
date
# Long listing of files in $dest to check file sizes.
ls -lh $dest
$backup_files: переменная для перечисления, какие каталоги вы желаете
сохранять. Список может быть изменён под ваши требования.
$day: переменная, содержащая день недели. Она используется для
создания архивных файлов на каждый день недели, обеспечивая историю
резервного копирования на семь дней. Существуют иные способы
получения такого результата, включая использование утилиты date.
$hostname: переменная, содержащая короткое имя системы.
Использование сетевого имени в имени архива позволяет вам помещать
ежедневные архивы от разных систем в один каталог.
$archive_file: полное имя архива.
$dest: место расположения архивного файла. Каталог должен быть
создан и в данном случае смонтирован до выполнения сценария
резервного копирования. Смотрите раздел Раздел 2, «Сетевая файловая
система (NFS)» [261] для уточнения деталей использования NFS.
status messages: необязательные сообщения, выводимые в консоль с
использованием утилиты echo.
tar czf $dest/$archive_file $backup_files: команда tar, используемая для
создания архивного файла.
c: создание архива.
z: пропускание архива через утилиту сжатия gzip.
f: вывод в архивный файл. В противном случае tar будет посылать
результат в STDOUT.
ls -lh $dest: необязательный оператор, выводящий -l длинный вариант
списка в -h читаемом виде целевого каталога. Это удобно для быстрой
проверки размера архивного файла. Эта проверка не заменяет
тестирования целостности архивного файла.
Это простой пример сценария резервного копирования, однако есть много
опций, которые можно включить в такой сценарий. Смотрите Раздел 1.4,
«Ссылки» [346] для указаний на ресурсы, предоставляющие более
глубокое описание shell сценариев.
343
Резервное копирование
1.2. Выполнение сценария
1.2.1. Выполнение из терминала
Простейший способ выполнить приведенный выше сценарий - это
скопировать его содержимое в файл. Например, backup.sh. Затем ввести в
терминале:
sudo bash backup.sh
Это прекрасный способ проверить сценарий, чтобы убедиться, что всё
работает как задумывалось.
1.2.2. Выполнение с помощью cron
Утилита cron может быть использована для автоматизации выполнения
сценария. Сервис cron позволяет выполнять сценарии или команды в
определенное время.
cron настраивается через записи в файле crontab. Файлы crontab разделяются
на поля:
# m h dom mon dow
command
m: минуты запуска команды, от 0 до 59.
h: час запуска команды, от 0 до 23.
dom: день месяца для выполнения команды.
mon: месяц даты выполнения команды.
dow: день недели для выполнения команды, от 0 до 7. Воскресенье может
быть обозначено как 0 так и 7, оба значения допустимы.
command: выполняемая команда.
Для добавления или изменения записей в файле crontab используется
команда crontab -e. Кроме того, содержимое файла crontab можно
просмотреть с помощью команды crontab -l.
Для выполнения приведенного выше сценария backup.sh с помощью cron,
введите следующее в терминале:
sudo crontab -e
Использование sudo для выполнения команды crontab -e изменяет
файл пользователя root. Это требуется для резервного копирования
каталогов, доступ к которым разрешен только root.
344
Резервное копирование
Добавьте следующую запись в файл crontab: crontab:
# m h dom mon dow
command
0 0 * * * bash /usr/local/bin/backup.sh
Сценарий backup.sh будет теперь выполняться каждый день в полночь.
Сценарий backup.sh требуется скопировать в каталог /usr/local/
bin/, чтобы данная запись выполнялась правильно. Сценарий можно
разместить где угодно в файловой системе, просто соответственно
измените путь к сценарию в crontab.
Для более глубокого изучения опций crontab смотрите секцию Раздел 1.4,
«Ссылки» [346].
1.3. Восстановление из архива
Как только архив создан, важно проверить его. Архив может быть проверен
выводом списка файлов, которые в нем находятся, но лучшей проверкой
будет восстановление файлов из архива.
• Чтобы посмотреть содержимое архива, наберите в терминале:
tar -tzvf /mnt/backup/host-Monday.tgz
• Чтобы восстановить файл из архива в другой каталог, введите:
tar -xzvf /mnt/backup/host-Monday.tgz -C /tmp etc/hosts
Параметр -C команды tar перенаправляет извлекаемые файлы в
указанный каталог. Приведённый пример извлечёт файл /etc/hosts в /
tmp/etc/hosts. tar создаёт заново структуру каталогов для извлекаемых
файлов.
Также обратите внимание на отсутствие лидирующего "/" в пути
извлекаемого файла.
• Чтобы восстановить все файлы из архива, введите следующее:
cd /
sudo tar -xzvf /mnt/backup/host-Monday.tgz
Это перепишет все файлы, находящиеся в файловой системе.
345
Резервное копирование
1.4. Ссылки
• Для дополнительной информации по shell сценариям смотрите
руководство Advanced Bash-Scripting Guide1
• Книга Teach Yourself Shell Programming in 24 Hours2 доступна в сети и
является замечательным ресурсом для создания shell сценариев.
• Страница CronHowto Wiki Page3 содержит подробности по
дополнительным опциям cron.
• Смотрите руководство GNU tar Manual4 для дополнительных параметров
tar.
• Статья Backup Rotation Scheme5 содержит информацию по другим схемам
ротации архивов.
• Shell сценарий использует tar для создания архива, но существует много
других утилит, которые можно использовать. Например:
cpio6: используется для копирования файлов в и из архива.
dd7: часть пакета coreutils. Утилита нижнего уровня, которая может
копировать данные из одного формата в другой.
rsnapshot8: утилита получения снимка файловой системы, используемая
для получения копий всей файловой системы.
rsync9: гибкая утилита, используемая для копирования изменённых
частей файлов (инкрементное копирование).
346
Резервное копирование
2. Ротация архивов
Shell сценарий в разделе Раздел 1, «Сценарии Shell» [342] позволяет
создавать только 7 различных архивов. Для сервера, данные на котором
меняются нечасто, этого может быть достаточно. Если же сервер содержит
большой объем данных, требуется использовать более комплексную схему
ротации архивов.
2.1. Ротация NFS архивов
В этой секции наш shell сценарий будет немного модифицирован с целью
осуществления схемы ротации 'дед-отец-сын' (ежемесячно-еженедельно-
ежедневно):
• ротация будет выполнять ежедневное резервное копирование с
воскресенья по пятницу.
• в субботу будет еженедельное копирование, обеспечивая четыре
недельных архива в месяц.
ежемесячное копирование выполняется в первый день месяца,
обеспечивая ротацию двух ежемесячных архивов, на основе чётности
месяца.
Вот новый сценарий:
#!/bin/bash
####################################
#
# Backup to NFS mount script with
# grandfather-father-son rotation.
#
####################################
# What to backup.
backup_files="/home /var/spool/mail /etc /root /boot /opt"
# Where to backup to.
dest="/mnt/backup"
# Setup variables for the archive filename.
day=$(date +%A)
hostname=$(hostname -s)
# Find which week of the month 1-4 it is.
day_num=$(date +%d)
if (( $day_num <= 7 )); then
week_file="$hostname-week1.tgz"
elif (( $day_num > 7 && $day_num <= 14 )); then
week_file="$hostname-week2.tgz"
347
Резервное копирование
elif (( $day_num > 14 && $day_num <= 21 )); then
week_file="$hostname-week3.tgz"
elif (( $day_num > 21 && $day_num < 32 )); then
week_file="$hostname-week4.tgz"
fi
# Find if the Month is odd or even.
month_num=$(date +%m)
month=$(expr $month_num % 2)
if [ $month -eq 0 ]; then
month_file="$hostname-month2.tgz"
else
month_file="$hostname-month1.tgz"
fi
# Create archive filename.
if [ $day_num == 1 ]; then
archive_file=$month_file
elif [ $day != "Saturday" ]; then
archive_file="$hostname-$day.tgz"
else
archive_file=$week_file
fi
# Print start status message.
echo "Backing up $backup_files to $dest/$archive_file"
date
echo
# Backup the files using tar.
tar czf $dest/$archive_file $backup_files
# Print end status message.
echo
echo "Backup finished"
date
# Long listing of files in $dest to check file sizes.
ls -lh $dest/
Сценарий может запускаться так же, как описано в секции Раздел 1.2,
«Выполнение сценария» [344].
Хорошей практикой является выделять для резервного копирования
удалённый носитель на случай физического уничтожения сервера. В
примере shell сценария носителем для резервной копии является NFS-
ресурс на другом сервере. По всей вероятности, перенос NFS-сервера в
другое место не является целесообразным. В зависимости от скорости
связи, подходящим вариантом может быть копирование архивного файла
через соединение по внешней сети (WAN) на сервер, находящийся на
другой территории.
348
Резервное копирование
Другим вариантом может быть копирование архивного файла на внешний
жёсткий диск, который может отключаться и храниться отдельно.
Поскольку цены на внешние диски продолжают снижаться, использование
пары дисков для каждого уровня архивов может оказаться эффективным
вариантом с точки зрения стоимости. Это позволит вам подключать один
диск к серверу резервного копирования, а второй хранить отдельно.
2.2. Устройства на магнитной ленте
Устройство на магнитной ленте, подключенное к серверу, может
использоваться вместо ресурса NFS. Использование ленточного устройства
упрощает ротацию архивов, а также решает проблему хранения резервного
носителя отдельно от сервера.
При использовании ленточного устройства часть сценария, касающаяся
имени файла, становится ненужной, поскольку данные посылаются
непосредственно на устройство. Однако требуются некоторые команды для
управления лентой. Это достигается использованием утилиты управления
магнитной лентой mt, являющейся частью пакета cpio.
Здесь приведён сценарий, изменённый для использования с ленточным
устройством:
#!/bin/bash
####################################
#
# Backup to tape drive script.
#
####################################
# What to backup.
backup_files="/home /var/spool/mail /etc /root /boot /opt"
# Where to backup to.
dest="/dev/st0"
# Print start status message.
echo "Backing up $backup_files to $dest"
date
echo
# Make sure the tape is rewound.
mt -f $dest rewind
# Backup the files using tar.
tar czf $dest $backup_files
# Rewind and eject the tape.
349
Резервное копирование
mt -f $dest rewoffl
# Print end status message.
echo
echo "Backup finished"
date
По умолчанию именем ленточного SCSI устройства является /dev/st0.
Используйте подходящий путь к устройству для вашей системы.
Восстановление с ленточного устройства в основном такое же, как и из
файла. Просто перемотайте ленту и используйте путь к устройству вместо
пути к файлу. Например, для восстановления файла /etc/hosts в /tmp/etc/
hosts используйте следующее:
mt -f /dev/st0 rewind
tar -xzf /dev/st0 -C /tmp etc/hosts
350
Резервное копирование
3. Bacula
Bacula - это программа резервного копирования, позволяющая вам
сохранять, восстанавливать и проверять данные через вашу сеть. Для
Bacula существуют клиенты под Linux, Windows и Mac OS X, что превращает
её в кросс-платформенное сетевое решение.
3.1. Обзор
Bacula Bacula состоит из нескольких компонентов и сервисов для
управления тем, какие файлы сохранять и где хранить резервные копии:
• Bacula Director: сервис, который управляет всеми операциями резервного
копирования, восстановления, проверки и архивации.
• Bacula Console: приложение, позволяющее взаимодействовать с Director.
Существует три версии Console:
• текстовая версия, основанная на командной строке.
• графический пользовательский интерфейс (GUI) для Gnome,
основанный на GTK+.
• графический интерфейс на базе wxWidgets.
• Bacula File: программа, известная также под названием Bacula Client. Это
приложение устанавливается на компьютерах, на которых производится
резервное копирование, и оно отвечает на данные, отправленные по
запросу Director.
• Bacula Storage: программа, которая выполняет хранение и
восстановление данных на физических носителях.
• Bacula Catalog: отвечает за поддержку файловых индексов и томов баз
данных для всех сохраняемых фалов, допуская быстрое нахождение
и восстановление сохраненных файлов. Catalog поддерживает три
различных базы данных: MySQL, PostgreSQL и SQLite.
• Bacula Monitor: позволяет отслеживать работу Director и сервисов File
и Storage. На данный момент Monitor доступен только в виде GTK+ GUI
приложения.
Эти сервисы и приложения могут быть запущены на разных серверах
и клиентах или их можно установить на одной машине, если требуется
резервное копирование одного диска или тома.
3.2. Установка
При использовании MySQL или PostgreSQL в качестве базы данных,
вам уже должны быть доступны эти сервисы.Bacula не будет
устанавливать их для вас.
351
Резервное копирование
Существует несколько пакетов, содержащих различные компоненты
Bacula. Для установки Bacula введите в терминале:
sudo apt-get install bacula
При установке по умолчанию пакет bacula будет использовать базу данных
MySQL для Catalog. Если вы хотите использовать SQLite или PostgreSQL,
установите соответственно пакет bacula-director-sqlite3 или bacula-director-
pgsql.
В процессе установки у вас спросят данные об администраторе базы
данных и владельце базы данных bacula. Администратор базы данных
требуется для получения необходимых прав на создание базы данных.
Дополнительную информацию смотрите в разделе Раздел 1, «MySQL» [237].
3.3. Конфигурация
Файлы настройки Bacula форматированы на основе ресурсов,
включающихdirectives, обрамлённые фигурными скобками «{}».Каждый
компонент Bacula имеет индивидуальный файл в каталоге /etc/bacula.
Различные компоненты Bacula должны авторизовывать себя друг для
друга. Это решается использованием директивы password. Например,
пароль в ресурсе Storage файла /etc/bacula/bacula-dir.confдолжен
соответствовать паролю ресурса Director файла /etc/bacula/bacula-sd.conf.
По умолчанию настраивается задание резервного копирования
Client1 для архивирования Bacula. Если вы планируете использовать
сервер для резервного копирования более чем на одном клиенте, вам
потребуется изменить имя этого задания на что-то более осмысленное. Для
переименования отредактируйте файл /etc/bacula/bacula-dir.conf:
#
# Define the main nightly save backup job
#
By default, this job will back up to disk in
Job {
Name = "BackupServer"
JobDefs = "DefaultJob"
Write Bootstrap = "/var/lib/bacula/Client1.bsr"
}
В примере имя задания изменено на BackupServer в соответствии
с сетевым именем машины. Можете заменить «BackupServer»
на соответствующее сетевое имя вашего сервера или другое
описательное название.
352
Резервное копирование
Требуется использовать Console для запросов к Director по поводу заданий,
но чтобы non-root мог использовать Console, он должен быть включён в
группу bacula. Чтобы добавить пользователя в группу bacula, введите
следующую команду в терминале:
sudo adduser $username bacula
Замените $username на актуальное имя пользователя. Также, если
вы добавили в группу текущего пользователя, вам придется выйти
из системы и зайти снова, чтобы применились новые права доступа.
3.4. Создание резервной копии локального сервера
Данная секция описывает процесс создания архивной копии единственного
сервера на магнитной ленте.
• Для начала требуется настроить устройство хранения. Отредактируйте /
etc/bacula/bacula-sd.conf, добавив:
Device {
Name = "Tape Drive"
Device Type = tape
Media Type = DDS-4
Archive Device = /dev/st0
Hardware end of medium = No;
AutomaticMount = yes;
# when device opened, read it
AlwaysOpen = Yes;
RemovableMedia = yes;
RandomAccess = no;
Alert Command = "sh -c 'tapeinfo -f %c | grep TapeAlert'"
}
Этот пример для ленточного устройства DDS-4. Измените «Media Type» и
«Archive Device» в соответствии с вашим оборудованием.
Вы также можете раскомментировать в файле один из нескольких других
примеров.
• После редактирования файла /etc/bacula/bacula-sd.conf сервис Storage
требуется перезагрузить:
sudo /etc/init.d/bacula-sd restart
• Теперь добавьте Storage ресурс в /etc/bacula/bacula-dir.conf чтобы
использовать новые устройства:
# Definition of "Tape Drive" storage device
Storage {
353
Резервное копирование
Name = TapeDrive
# Do not use "localhost" here
Address = backupserver
# N.B. Use a fully qualified name here
SDPort = 9103
Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3LT3Cgkiyjc"
Device = "Tape Drive"
Media Type = tape
}
Директива Address должна быть полностью квалифицированным
доменным именем (FQDN) сервера. Замените backupserver на актуальное
сетевое имя.
Так же, убедитесь, что Пароль директивы соответствует паролю строки в
/etc/bacula/bacula-sd.conf.
• Создайте новый Набор файлов, который определит какие директории
добавить для резерного хранения:
# Набор файлов для архивации локального сервера.
FileSet {
Name = "LocalhostFiles"
Include {
Options {
signature = MD5
compression=GZIP
}
File = /etc
File = /home
}
}
Этот FileSet задает резервное копирование для каталогов /etc и /
home. Директивы ресурса Options настраивают FileSet на создание
контрольных сумм MD5 для каждого сохраненного файла и сжатие
файлов с использованием GZIP.
• Далее создайте новое расписание для задачи резервирования
# Расписание архивации локального сервера -- Ежедневно.
Schedule {
Name = "LocalhostDaily"
Run = Full daily at 00:01
}
Задача будет запускаться каждый день в 00:01 или 12:01. Доступно ещё
много опций расписания
• Наконец, создайте Задачу:
354
Резервное копирование
# Архивация локального сервера.
Job {
Name = "LocalhostBackup"
JobDefs = "DefaultJob"
Enabled = yes
Level = Full
FileSet = "LocalhostFiles"
Schedule = "LocalhostDaily"
Storage = TapeDrive
Write Bootstrap = "/var/lib/bacula/LocalhostBackup.bsr"
}
Задача будет делать полное резервное копирование каждый день на
ленточный накопитель.
• На каждую ленту следует установить Метку. Если текущая лента не
имеет метки, Bacula известит вас по электронной почте. Для того, чтобы
пометить ленту, используя Console, введите следующее в терминале:
bconsole
• В командной строке Bacula введите:
метка
• Вам предложат выбрать один из ресурсов Storage:
Автоматически выбран каталог: MyCatalog
Используется каталог "MyCatalog"
Автоматически выбран каталог: MyCatalog
Using Catalog "MyCatalog"
Возможные средства резервного сохранения:
1: Файл
2: Стриммер
Выберите средство резервного сохранения (1-2):2
• Введите новое название Volume:
Введите имя нового тома: Воскресенье
Defined Pools:
1: Default
2: Scratch
Замените Sunday желаемой меткой.
• Теперь выберите Pool:
355
Резервное копирование
Select the Pool (1-2): 1
Connecting to Storage daemon TapeDrive at backupserver:9103 ...
Sending label command for Volume "Sunday" Slot 0 ...
Поздравляем, вы настроили Bacula для резервного копирования localhost на
стриммер.
3.5. Ресурсы
• Подробнее о опциях настройки Bacula смотрите Руководство
пользователя Bacula10
• На домашней странице Bacula11 находятся последние новости и
разработки о проекте Bacula.
• Кроме того, смотрите на этой странице Bacula Ubuntu Wiki12.
10
11
12
356
Глава 20. Виртуализация
Виртуализация подходит для множества разных сред и ситуаций. Если вы
разработчик, виртуализация может дать вам изолированную среду, где
можно спокойно вести практически любые разработки, не боясь разрушить
вашу основную рабочую среду. Если вы системный администратор, вы
можете использовать виртуализацию для более лёгкого разделения служб
и перемещать их повсюду, когда потребуется.
По умолчанию в Ubuntu поддерживается технология виртуализации KVM.
KVM требует наличия процессора с поддержкой технологий аппаратной
виртуализации от Intel или AMD. Xen также поддерживается в Ubuntu. Xen
может использовать преимущества аппаратной виртуализации, если она
доступна, но также может использоваться на оборудовании без аппаратной
виртуализации. Qemu - ещё одно популярное решение для оборудования
без аппаратной виртуализации.
357
Виртуализация
1. Виртуальная библиотека
libvirt - библиотека, используемая как интерфейс к разным технологиям
виртуализации. Прежде чем начать использовать libvirt, стоит узнать,
поддерживает ли ваше оборудование расширения виртуализации для KVM.
Введите следующую команду в консоли:
kvm-ok
Будет выведено сообщение о том, поддерживает или не поддерживает ваш
процессор аппаратную виртуализацию.
На большинстве компьютеров, процессоры которых поддерживают
виртуализацию, необходимо активировать эту возможность в BIOS.
1.1. Виртуальная сеть
Существует несколько различных способов предоставить виртуальной
машине доступ во внешнюю сеть. По умолчанию конфигурация
виртуальной сети - это сеть пользовательского режима, использующая
протокол SLIRP, а трафик передается посредством NAT через интерфейс
хоста во внешнюю сеть.
Чтобы внешние хосты могли иметь прямой доступ к сервисам на
виртуальных машинах, должен быть сконфигурирован мост. Это позволит
виртуальным интерфейсам соединяться с внешней по физическому
интерфейсу, при этом для остальной сети они будут выглядеть обычными
хостами. Для информации по настройке моста смотрите Раздел 1.4,
«Использование моста» [47].
1.2. Установка
Чтобы установить требующиеся пакеты, введите в терминале:
sudo apt-get install kvm libvirt-bin
После установки libvirt-bin потребуется добавить пользователя,
управляющего виртуальными машинами, в группу libvirtd. Это предоставит
пользователю доступ к расширенным сетевым настройкам.
В консоли введите:
sudo adduser $USER libvirtd
358
Виртуализация
Если выбранный пользователь - текущий, потребуется выйти из
системы и войти снова, чтобы новое членство в группе возымело
эффект.
Теперь вы готовы к установке гостевой операционной системы. Установка
на виртуальную машину производится так же, как установка операционной
системы на реальном аппаратном обеспечении. Вам потребуется либо
способ автоматизации установки, либо будут нужны клавиатура и монитор,
подключённые к физической машине.
В случае виртуальной машины графический пользовательский интерфейс
(GUI) аналогичным образом использует физические клавиатуру и мышь.
Вместо установки GUI для подключения к консоли виртуальной машины
с помощью VNC может использоваться приложение virt-viewer. Смотрите
Раздел 1.6, «Средство просмотра виртуальных машин» [362] для большей
информации.
Есть несколько способов, чтобы автоматизировать процесс установки
Ubuntu, например, с помощью preseeds, kickstartи т.д. Обратитесь к
Руководство по установке Ubuntu1 за деталями.
Ещё одним способом установить виртуальную машину Ubuntu является
использование ubuntu-vm-builder. Это приложение позволяет создавать
расширенные разделы, выполнять пользовательские скрипты после
установки и т.д. Детали ищите здесь: Раздел 2, «JeOS и vmbuilder» [364]
Libvirt также может быть настроен для работы с Xen. Подробные сведения
смотрите на странице сообщества Xen в Ubuntu, доступной по приведённой
ниже ссылке.
1.3. virt-install
virt-install является частью пакета virtinst. Для его установки введите в
приглашении терминала:
sudo apt-get install virtinst
Существует несколько настроек, доступных при использовании virt-install.
Например:
sudo virt-install -n web_devel -r 256 \ --disk path=/var/lib/libvirt/images/web_devel.img,bus=virti
-n web_devel: имя новой виртуальной машины в этом примере будет
web_devel
359
Виртуализация
-r 256: указывает объём памяти, выделяемый виртуальной машине, в
мегабайтах.
--disk path=/var/lib/libvirt/images/web_devel.img,size=4: указывает путь
к виртуальному диску, который может быть файлом, разделом или
логическим томом. В этом примере файл называется web_devel.img,
расположен в каталоге /var/lib/libvirt/images/, имеет размер 4 гигабайта и
использует virtio в качестве шины передачи данных.
-c jeos.iso: файл, используемый как виртуальный CD-ROM. Файл может
быть ISO-образом или путём к физическому приводу CD-ROM хоста.
--accelerate: включает технологии ускорения уровня ядра.
--network содержит сведения, относящиеся к виртуальному сетевому
интерфейсу. Здесь используется сеть default, и модель интерфейса
настроена для virtio.
--vnc: экспортирует виртуальную консоль виртуальной машины с
использованием VNC.
--noautoconsole: автоматически не подключит к консоли виртуальной
машины.
-v: создаёт полностью виртуализированный гостевой аккаунт.
После запуска virt-install вы можете подключиться к консоли виртуальной
машины или локально, используя графический интерфейс, или с помощью
утилиты virt-viewer.
1.4. virt-clone
Приложение virt-clone может использоваться для копирования одной
виртуальной машины в другую. Например:
sudo virt-clone -o web_devel -n database_devel -f /path/to/database_devel.img \ --connect=qemu:///s
-o: оригинал виртуальной машины.
-n: имя новой виртуальной машины.
-f: путь к файлу, логическому диску или разделу для использования
виртуальной машиной.
--connect: указывает гипервизор для подключения.
Также используйте опции -d или --debug для помощи в решении проблем с
virt-clone.
Замените web_devel и database_devel на подходящие имена
виртуальных машин.
360
Виртуализация
1.5. Управление виртуальными машинами
1.5.1. virsh
Существует несколько утилит, предназначенных для управления
виртуальными машинами и libvirt. Утилита virsh может использоваться из
командной строки. Некоторые примеры:
• Список запущенных виртуальных машин:
virsh -c qemu:///system list
• Для запуска виртуальной машины:
virsh -c qemu:///system start web_devel
• Подобным образом, для запуска виртуальной машины при загрузке:
virsh -c qemu:///system autostart web_devel
• Перезагрузка виртуальной машины:
virsh -c qemu:///system reboot web_devel
Состояние виртуальных машин может быть сохранено в файл с
возможностью дальнейшего восстановления. Следующая команда
сохранит состояние виртуальной машины в файл, названный в
соответствии с датой:
virsh -c qemu:///system save web_devel web_devel-022708.state
После сохранения виртуальная машина не будет больше запущена.
• Сохранённая виртуальная машина может быть восстановлена с
использованием:
virsh -c qemu:///system restore web_devel-022708.state
• Чтобы закрыть виртуальную машину, выполните:
virsh -c qemu:///system shutdown web_devel
• Устройство CD-ROM может быть примонтировано к вируальной машине
следующей командой:
virsh -c qemu:///system attach-disk web_devel /dev/cdrom /media/cdrom
361
Виртуализация
В предыдущих примерах замените web_devel требуемым именем
виртуальной машины, а web_devel-022708.state понятным именем
файла.
1.5.2. Менеджер виртуальных машин
Пакет virt-manager содержит графическую утилиту для управления
локальными и удаленными виртуальными машинами. Для установки virt-
manager в консоли введите:
sudo apt-get install virt-manager
Так как virt-manager требует среду пользовательского графического
интерфейса (GUI), рекомендуется устанавливать его на рабочую станцию
или тестовую машину, вместо готового сервера. Чтобы подключиться к
локальному сервису libvirt введите:
virt-manager -c qemu:///system
Можно подключиться к сервису libvirt, запущенному на другом хосте, введя
в терминале:
virt-manager -c qemu+ssh://virtnode1.mydomain.com/system
В предыдущем примере предполагается, что связь SSH между
управляющей системой и virtnode1.mydomain.com уже была
настроена и использует ключи SSH для аутентификации. Ключи
SSH необходимы потому, что libvirt посылает запрос пароля другому
процессу. Детально о настройке SSH смотрите Раздел 1, «Сервер
OpenSSH» [94]
1.6. Средство просмотра виртуальных машин
Приложение virt-viewer позволяет вам подключаться к консоли виртуальной
машины. Для взаимодействия с виртуальной машиной virt-viewer требуется
графический пользовательский интерфейс.
Чтобы установить virt-viewer, введите в консоли:
sudo apt-get install virt-viewer
Когда виртуальная машина установлена и запущена, вы можете
подключаться к консоли виртуальной машины, используя:
362
Виртуализация
virt-viewer -c qemu:///system web_devel
Аналогично virt-manager, virt-viewer может подключаться к удалённому
хосту, используя SSH с ключами аутентификации, как:
virt-viewer -c qemu+ssh://virtnode1.mydomain.com/system web_devel
Замените web_devel именем требуемой виртуальной машины.
Если система настроена с поддержкой мостового сетевого интерфейса,
вы может также настроить доступ по SSH к виртуальной машине.
Смотрите Раздел 1, «Сервер OpenSSH» [94] and Раздел 1.4, «Использование
моста» [47] для получения дополнительной информации.
1.7. Ресурсы
• Смотрите домашнюю страницу KVM2 для подробностей.
• Для детальной информации по libvirt смотрите домашнюю страницу
libvirt3
• На сайте Менеджер виртуальной машины4 есть больше информации по
разработке virt-manager.
• Также, заходите на IRC канал #ubuntu-virt на freenode5 чтобы обсудить
технологии виртуализации в Ubuntu.
• Ещё один хороший ресурс - это страница: Ubuntu Wiki KVM6.
• Для получения информации о Xen, в том числе с помощью Xen с libvirt,
пожалуйста, посмотрите страницу Ubuntu Wiki Xen7.
363
Виртуализация
2. JeOS и vmbuilder
2.1. Введение
2.1.1. Что такое JeOS
Ubuntu JeOS (произносится "Джюс") - это эффективный вариант ОС Ubuntu
Server, сконфигурированный специально для виртуальных применений. Он
более недоступен для скачивания как CD-ROM ISO, а только как опция:
• Во время установки с Server Edition ISO (нажатие F4 на первом экране
позволит Вам выбрать "Минимальную установку", что означает выбор
пакетов, эквивалентный JeOS).
• Или его можно собрать с помощью Ubuntu vmbuilder, который описан
здесь.
JeOS - это специализированная установка Ubuntu Server Edition с
настроенным ядром, которое содержит только базовые элементы,
необходимые для запуска в виртуальном окружении.
Ubuntu JeOS настроено для того, чтобы получить преимущество ключевых
технологий производительности в новейших продуктах виртуализации от
VMware. Такая комбинация уменьшенного размера и оптимизированной
производительности обеспечивает высокоэффективное использование
серверных ресурсов Ubuntu JeOS Edition в больших виртуальных
окружениях.
ISV может быть настроен таким образом, чтобы соответствовать всем
требованиям поддерживаемой ОС, поскольку в нем не будет ненужных
драйверов, а будут присутствовать только необходимые пакеты. Тот факт,
что обновления, будь они из соображений безопасности или повышения
производительности, будут ограничены минимальным набором того,
что действительно необходимо, также придает уверенности. С другой
стороны, пользователи, разворачивающие виртуальные приложения в JeOS,
получат меньше обновлений и потому меньшую поддержку, чем если бы
они установили стандартную полную версию сервера.
2.1.2. Что такое vmbuilder
При использовании vmbuilder более нет необходимости скачивать JeOS ISO.
vmbuilder сам найдёт необходимые пакеты и создаст виртуальную машину
примерно за минуту в соответствии с вашими требованиями. vmbuilder
- это сценарий, который автоматизирует процесс создания готовой к
использованию и основанной на Linux виртуальной машины (VM). В данный
момент поддерживаются следующие гипервизоры: KVM и Xen
364
Виртуализация
Вы можете передать опции командной строки для установки
дополнительных пакетов, удаления пакетов, выбора версии Ubuntu,
зеркала пакетов и т.д. На современном оборудовании с достаточным
количеством ОЗУ, tmpdir в /dev/shm или при использовании tmpfs, локальном
зеркале, вы можете загрузить ВМ меньше чем за минуту.
ubuntu-vm-builder впервые был представлен как сценарий в Ubuntu 8.04 LTS.
Одной из целей создания было предоставить возможность разработчикам
тестировать их код в виртуальной машине без необходимости начинать
всё с начала каждый раз. Как только этот сценарий был замечен
несколькими системными администраторами Ubuntu, всё больше и больше
администраторов начали улучшать его и адаптировать его к различным
вариантам использования. В результате Сорен Хансен (автор этого скрипта
и специалист по виртуализации в Ubuntu, а не игрок в гольф), решил
переписать сценарий заново с нуля для Intrepid на языке python, преследуя
новые цели:
• Разработать его так, чтобы он мог использоваться в других
дистрибутивах.
• Использовать механизм плагинов для всех действий виртуализации,
чтобы другие могли легко добавить логику для своего окружения
виртуализации.
• Обеспечить легко поддерживаемый веб-интерфейс как опцию к
интерфейсу командной строки.
Но общие принципы и команды должны остаться прежними.
2.2. Первичная настройка
Предполагается, что вы установили и настроили libvirt и KVM на машине,
которую вы используете. Чтобы узнать, как это сделать, обратитесь к:
Раздел 1, «Виртуальная библиотека» [358]
KVM8 странице Wiki.
Мы также предполагаем, что вы знаете, как пользоваться консольным
текстовым редактором, таким как nano или vi. Если ранее вы не
пользовались ни одним из них, можете прочитать обзор различных
текстовых редакторов на странице PowerUsersTextEditors9. Это руководство
дано для KVM, но общий принцип сохранится и для других технологий
виртуализации.
365
Виртуализация
2.2.1. Установка vmbuilder
Название пакета, который нам нужно установить - python-vm-builder.
Введите в терминале:
sudo apt-get install python-vm-builder
Если вы используете Hardy, вы можете сделать большинство из
этого, используя более старую версию пакета, которая называется
ubuntu-vm-builder, она отличается несколькими изменениями в
синтаксисе.
2.3. Определение вашей виртуальной машины
Определение виртуальной машины с помощью vmbuilder'а Ubuntu довольно
просто, но есть несколько важных вещей:
• Если вы планируете поставлять виртуальный аппарат, не предполагайте,
что конечный пользователь будет знать, как увеличить размер диска под
свои нужды, так что либо планируйте большой виртуальный диск, чтобы
дать возможность вашему аппарату увеличиваться, либо достаточно
хорошо опишите в документации, как выделить больше места. Возможно,
хорошей идеей будет хранить данные на отдельном внешнем носителе.
• Так как выделение ОЗУ в виртуальной машине гораздо проще, размер
ОЗУ следует установить в необходимый минимум для вашего аппарата.
Команда vmbuilder имеет 2 главных параметра: технология виртуализации
(гипервизор) и целевой дистрибутив. Опциональных параметров довольно
много, о них можно узнать, используя следующую команду:
vmbuilder kvm ubuntu --help
2.3.1. Основные параметры
Так как этот пример основан на KVM и Ubuntu 12.04 LTS (Precise Pangolin), и
мы, вероятно, пересоздадим одну и ту же виртуальную машину несколько
раз, запустим vmbuilder со следующими начальными параметрами:
sudo vmbuilder kvm ubuntu --suite precise --flavour virtual --arch i386 \ -o --libvirt qemu:///syst
--suite определяет релиз Ubuntu, --flavour указывает, что мы хотим
использовать виртуальное ядро (то, которое используется в JeOS), --arch
говорит, что мы хотим использовать 32-битную машину, -o указывает
vmbuilder'у перезаписать предыдущую версию ВМ и --libvirt говорит
локальному виртуальному окружению добавить получившуюся ВМ в список
доступных машин.
366
Виртуализация
Примечания:
• Из-за вида операций, производимых vmbuilder, он должен иметь
привилегии пользователя root, отсюда использование sudo
• Если виртуальной машине требуется больше 3Гб ОЗУ, вам следует
создавать 64-битную машину (--arch amd64).
• До Ubuntu 8.10 виртуальное ядро собиралось только для 32-битной
архитектуры, так что если вы хотите создать 64-битную машину на Hardy,
вам следует использовать --flavour server.
2.3.2. Параметры установки JeOS
2.3.2.1. Сетевые настройки JeOS
2.3.2.1.1. Назначение статического IP адреса.
Так как виртуальный аппарат может разворачиваться на самых разных
сетях, очень сложно предположить, как будет выглядеть конкретная сеть.
В связи с этим, для упрощения настройки полезно применить подход,
обычно используемый производителями сетевого оборудования, то есть
назначить статический IP-адрес из частного класса адресов, который вы
затем предоставите в вашей документации. Чаще всего это диапазон
адресов 192.168.0.0/255
Для этого будем использовать следующие параметры:
--ip ADDRESS: IP-адрес в формате с точками (по умолчанию используется
dhcp, если не указан)
--hostname NAME: Установить NAME, как имя гостевой машины.
--mask VALUE: IP-маска в формате с точками (по умолчанию 255.255.255.0)
--net VALUE: IP-адрес сети (по умолчанию X.X.X.0)
--bcast VALUE: широковещательный запрос IP (по умолчанию X.X.X.255)
--gw ADDRESS: адрес шлюза (по умолчанию Х.Х.Х.1)
--dns ADDRESS: адрес DNS сервера (по умолчанию X.X.X.1)
Сейчас мы полагаем, что значений по умолчанию достаточно, поэтому
результирующая команда примет вид:
sudo vmbuilder kvm ubuntu --suite precise --flavour virtual --arch i386 \ -o --libvirt qemu:///syst
2.3.2.1.2. Использование моста
Поскольку желательно, чтобы к нашему приложению был доступ с внешних
компьютеров, нам потребуется настроить libvirt таким образом, чтобы
367
Виртуализация
решение использовало сетевой мост. Для этого добавим опцию --bridge к
нашей команде:
sudo vmbuilder kvm ubuntu --suite precise --flavour virtual --arch i386 \ -o --libvirt qemu:///syst
Вам будет необходимо предварительно настроить интерфейс
моста, для получения дополнительной информации смотрите
раздел Раздел 1.4, «Использование моста» [47] . Также, если имя
интерфейса отличается, измените br0 согласно фактическому
интерфейса моста.
2.3.2.2. Разметка дисков
При разметке виртуальных устройств надо учитывать то, как вы
планируете затем их использовать. Поскольку многим устройствам
требуется отдельное место для хранения данных, имеет смысл
использовать отдельный раздел /var.
Для этого у vmbuilder есть параметр --part:
--part PATH
Allows you to specify a partition table in a partition file, located at PATH. Each
line of the partition file should specify (root first):
mountpoint size
where size is in megabytes. You can have up to 4 virtual disks, a new disk starts
on a line with ’---’. ie :
root 1000
/opt 1000
swap 256
---
/var 2000
/log 1500
В нашем случае мы определим текстовый файл vmbuilder.partition, в котором
будет написано следующее:
root 8000
swap 4000
---
/var 20000
Заметьте, что поскольку мы используем образы виртуальных дисков,
действительные размеры, которые мы здесь указываем, являются
максимальными значениями для этих томов.
Наша командная строка сейчас выглядит как:
sudo vmbuilder kvm ubuntu --suite precise --flavour virtual --arch i386 \ -o --libvirt qemu:///syst
368
Виртуализация
Использование символа "\" в команде позволяет переносить часть
длинной команды на следующую строку.
2.3.2.3. Пользователь и пароль
Снова настраивая виртуальное устройство, вы должны будете
предоставить пользователя по умолчанию и пароль, которые являются
универсальными для того, чтобы вы могли включить их в свою
документацию. Позже в данном руководстве мы увидим, как обеспечить
некоторую безопасность, задав сценарий, который будет запускаться при
первом входе пользователя в устройство и, помимо прочего, попросит
его изменить пароль. В данном примере мы будем использовать 'user' в
качестве имени пользователя и 'default' в качестве пароля.
Для этого мы используем следующие допольнительные параметры:
--user USERNAME: Задаёт имя добавляемого пользователя. По-умолчанию:
ubuntu.
--name FULLNAME: Задаёт полное имя добавляемого пользователя. По-
умолчанию: Ubuntu.
--pass PASSWORD: Задаёт пароль пользователя. По-умолчанию: ubuntu.
В результате наша командная строка примет вид:
sudo vmbuilder kvm ubuntu --suite precise --flavour virtual --arch i386 \ -o --libvirt qemu:///syst
2.3.3. Установка необходимых пакетов
В данном примере мы установим пакет (Limesurvey), который обращается
к базе данных MySQL и имеет веб-интерфейс. Поэтому мы попросим
операционную систему предоставить нам:
• Apache
• PHP
• MySQL
• Сервер OpenSSH
• Limesurvey (в качестве примера приложения, которое мы упаковываем)
Это достигается в vmbuilder с помощью указания опции --addpkg несколько
раз:
--addpkg PKG
Установка PKG в гостевую систему (может быть использована несколько раз)
Однако, из-за способа работы vmbuilder, вопросы задаваемые пакетами на
пост установочном этапе не поддерживаются и они будут установлены не
369
Виртуализация
в интерактивном режиме. Это касается Limesurvey, который необходимо
установить позже, после первого входа в систему.
Другие пакеты, задающие простые вопросы debconf, например, mysql-
server, запрашивающий пароль, будет установлен, но его необходимо будет
перенастроить после первого входа в систему.
Если некоторых, необходимых нам для установки, пакетов нет в
репозитории main, мы должны разрешить дополнительные репозитории,
используя --comp и --ppa:
--components COMP1,COMP2,...,COMPN
A comma separated list of distro components to include (e.g. main,universe).
This defaults to "main"
--ppa=PPA Add ppa belonging to PPA to the vm's sources.list.
Limesurvey не является частью архива на данный момент, поэтому мы
укажем адрес PPA (персонального архива пакетов), который добавим
в файл /etc/apt/source.list ВМ. Для этого добавим следующие опции в
командной строке:
--addpkg apache2 --addpkg apache2-mpm-prefork --addpkg apache2-utils \ --addpkg apache2.2-common --
2.3.4. Вопросы скорости
2.3.4.1. Кэширование пакетов
Когда vmbuilder создает вашу виртуальную машину, то есть закачивает
каждый пакет, что заставляет его подключаться к одному из официальных
репозиториев, которые в зависимости от скорости вашего соединения
с интернетом и нагрузки на зеркало, может иметь большое влияние на
фактическое время создания виртуальной машины. В целях снижения
этого, рекомендуется иметь либо локальный репозиторий (который может
быть создан, используя apt-mirror) или использование кэширующего
прокси-сервера, таких как apt-proxy. Последний вариант гораздо проще
в реализации и требует меньше дискового пространства, это то, что мы
встретим в этом руководстве. Для его установки просто наберите:
sudo apt-get install apt-proxy
После завершения этого ваш (пустой) прокси будет готов для
использования по адресу http://mirroraddress:9999 и найдёт репозиторий
Ubuntu в папке /ubuntu. Для того, чтобы vmbuilder мог использовать его,
добавим опцию --mirror:
370
Виртуализация
--mirror=URL Укажите URL зеркала Ubuntu вместо того, что стоит по умолчанию
http://archive.ubuntu.com/ubuntu для официальных архивов
http://ports.ubuntu.com/ubuntu-ports для остальных
Добавим в командной строке:
Указанный здесь адрес зеркала также будет использоваться в /etc/
apt/sources.list вновь созданной гостевой системы, так что полезно
указать здесь адрес, который может быть разрешён гостевой
системой или запланировать изменение этого адреса в дальнейшем.
2.3.4.2. Установка локального зеркала
Если мы работаем в большом окружении, то на помощь может прийти
установка локального зеркала репозиториев Ubuntu. Пакет apt-mirror
предоставляет скрипт, который поможет организовать зеркало.
Необходимо отвести порядка 20 Гб свободного места на диске для каждого
поддерживаемого релиза и каждой архитектуры.
По умолчанию apt-mirror использует конфигурационный файл в /etc/apt/
mirror.list. После настройки сценарий будет выполнять репликацию только
архитектуры локальной машины. Если вам нужно поддерживать в своём
зеркале другие архитектуры, просто продублируйте строки, начинающиеся
с “deb”, заменив ключевое слово deb на /deb-{arch}, где arch может быть
i386, amd64 и т.п. Например, чтобы на компьютере amd64 создать также
архив для архитектуры i386, содержимое вашего файла должно быть
таким (некоторые строки были разбиты, чтобы уместить их в формат этого
документа):
deb http://archive.ubuntu.com/ubuntu precise main restricted universe multiverse
/deb-i386 http://archive.ubuntu.com/ubuntu precise main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu precise-updates main restricted universe multiverse
/deb-i386 http://archive.ubuntu.com/ubuntu precise-updates main
restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse
/deb-i386 http://archive.ubuntu.com/ubuntu precise-backports main
restricted universe multiverse
deb http://security.ubuntu.com/ubuntu precise-security main restricted universe multiverse
/deb-i386 http://security.ubuntu.com/ubuntu precise-security main
restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu precise main/debian-installer
371
Виртуализация
restricted/debian-installer universe/debian-installer multiverse/debian-installer
/deb-i386 http://archive.ubuntu.com/ubuntu precise main/debian-installer
restricted/debian-installer universe/debian-installer multiverse/debian-installer
Заметим, что пакеты с исходным кодом не зеркалируются, поскольку они
реже используются, в отличие от бинарных файлов, и занимают больше
места, но и их легко добавить в этот список.
После того, как зеркало закончило реплицироваться (это может занять
большое количество времени), необходимо настроить Apache, чтобы
файлы зеркала (в /var/spool/apt-mirror, если вы ничего не меняли) были
опубликованы сервером Apache. Для получения большей информации об
Apache смотрите Раздел 1, «HTTPD - веб сервер Apache2» [213].
2.4. Упаковка приложения
Нам доступны две опции:
• Рекомендуемым методом сделать это является создание пакета
Debian. Так как описание этого процесса выходит за границы данного
руководства, мы не будем делать это здесь и предложим прочитать
документацию по этому вопросу - Руководство по созданию пакетов
в Ubuntu10. В этом случае подспорьем будет создание репозитория для
вашего пакета, чтобы из него можно было легко получить обновления.
Смотрите статью Администрирование Debian11 для получения полного
руководства.
• Установим вручную приложение в /opt, как рекомендует руководство по
FHS12.
В нашем случае, мы будем использовать Limesurvey, как пример веб-
приложения, которое мы хотим сделать виртуализированным. Как
отмечалось выше, мы сделали версию этого пакета доступной в PPA
(персональном архиве пакетов).
2.5. Полезные дополнения
2.5.1. Настройка автоматического обновления
Если вы хотите, чтобы ваша система сама обновлялась через определенные
промежутки времени, вам достаточно установить пакет unattended-
upgrades, поэтому мы добавим следующую опцию для командной строки:
10
11
12
372
Виртуализация
--addpkg unattended-upgrades
Так как мы выложили наш пакет приложения в PPA, процесс будет
обновлять не только систему, но и приложение каждый раз, когда мы
будем обновлять версию на PPA.
2.5.2. Обработка событий ACPI
Для того, чтобы ваша виртуальная машина могла обрабатывать события
перезагрузки и выключения, необходимо установить пакет acpid. Для этого
необходимо добавить следующую опцию:
--addpkg acpid
2.6. Завершающая команда
Вот команда со всеми опциями, описанными выше:
sudo vmbuilder kvm ubuntu --suite precise --flavour virtual --arch i386 -o \ --libvirt qemu:///syst
2.7. Ресурсы
Если вам интересно узнать больше, или у вас есть вопросы или
предложения, свяжитесь с командой Ubuntu Server по адресу:
• IRC: #ubuntu-server on freenode
• Список рассылки: ubuntu-server at lists.ubuntu.com13
• Кроме того, смотрите страницу JeOSVMBuilder Ubuntu Wiki14.
13
14
373
Виртуализация
3. UEC
3.1. Обзор
UEC (Ubuntu Enterprise Cloud - корпоративное облако Ubuntu) на
данный момент считается устаревшим в пользу UC (Ubuntu Cloud
- облако Ubuntu). Первое основано на Eucalyptus, а второе - на
Openstack. Этот раздел руководства будет удалён в дальнейшем.
В этом руководстве рассматривается установка UEC с компакт-диска
Ubuntu 12.04 LTS Server и подразумевается наличие базовой сетевой
топологии, состоящей из одного компьютера, выполняющего функции
контроллера "всё в одном", и одного или нескольких подключённых узлов.
Из этого руководства вы узнаете, как устанавливать, конфигурировать,
регистрировать и выполнять некоторые операции в сценарии простой
установки, включающей в себя облако с одним контроллером "front-end" и
одним или несколькими узлами с работающими виртуальными машинами.
Вы также будете использовать примеры, которые помогут вам приступить
к созданию собственного облака.
3.2. Необходимые требования
Для развёртывания минимальной инфраструктуры облака, вам нужно будет
как минимум две выделенных системы:
• Интерфейсная часть
• Один или несколько узлов.
Следующее является скорее рекомендациями, чем жёсткими
требованиями. Однако, эти рекомендации основаны на нашем опыте,
полученном в процессе написания этой документации.
3.2.1. Требования к интерфейсной части
Используйте следующую таблицу для системы, выполняющей одну или
несколько из следующих задач:
• Контроллер облака (CLC)
• Контроллер кластера (CC)
• Walrus (устройство хранения типа S3)
• Контроллер хранения (SC)
374
Виртуализация
Таблица 20.1. Требования к внешнему интерфейсу UEC
Оборудо
Минимал
Рекомен
Примечания
Процессор1 ГГц
2 x 2 ГГц
В конфигурации интерфейсной части всё-
в-одном можно использовать как минимум
двухядерный процессор
Память
2 ГБ
4 ГБ
Веб-интерфейс на языке Java работает
быстрее, когда доступно много памяти
Диск
5400 об/
7200 об/
Более медленные диски будут работать,
мин IDE
мин SATA
но на них запуск экземпляров приложений
будет требовать значительно больше
времени
Дисковое
40 ГБ
200 ГБ
40ГБ дискового пространства будет
пространс
тво
достаточно лишь для одного образа, кэша и
т.д., Eucalyptus не любит нехватки места на
диске
Работа в
100
1000
Размер образов машин измеряется сотнями
сети
Мбит/с
Мбит/с
мегабайт, и эти образы нужно будет
копировать по сети на узлы
3.2.2. Требования к узлу
Другие системы являются узлами, которые будут работать:
• Контроллер узла (NC)
Таблица 20.2. Требования к узлу UEC
Оборудо
М
инимал
Ре
оменду
Примечания
Процессо
Расширен
VT, 64-bit,
64-битный процессор позволяет запускать
VT
Многоядерн
как i386, так и amd64 экземпляры; по
умолчанию, Eucalyptus будет запускать
только одну виртуальную машину (VM) на
каждом ядре процессора узла.
375

 

 

 

 

 

 

 

содержание      ..     2      3      4      5     ..