Статья напечатана в августовском номере журнала
Копия
Here all my tuxian friends are scared when it comes to gentoo or anything related to it. they say, «hands will be on fire, if you touch it» so much customizable. now everyone is talking of Calculate Linux. its a real blessing, i must say
”Все мои друзья пугаются, когда речь идет о Дженту. «Руки будут, гореть, если прикоснуться к нему” столько настроек. Сейчас они говорят о Calculate Linux. Я должен сказать, это реальное благословление .
Из сообщения в IRC проекта Calculate Linux
Принято считать, что управление большим количеством Linux систем очень сложное, разработчики Calculate Linux доказали что это не так.
Зачем еще одно “поделие”?
Учитывая, что подобный вопрос неизменно появляется в качестве комментариев после анонса любого нового дистрибутива, следует уделить несколько строк проекту
Linux системы ассоциируют с несколькими понятиями – бесплатность, доступность, стабильность, безопасность, управляемость, доступ к коду и возможность его изменения. Но именно бесплатность ставят на первое место, когда рассматривается вопрос о внедрении. Делая ставку на то, что системы на базе этой ОС можно свободно скачать и использовать без отчислений, и постепенно довести IT-инфраструктуру до необходимого уровня. Учитывая затяжное внедрение и необходимость в наличии подготовленных кадров, основной упор при переходе на Linux просто переносится с цены приобретения на стоимость сопровождения. Именно такой аргумент
Именно поэтому многие используют Linux дома или на отдельных системах в частности сервера на предприятии. На массовое повсеместное внедрение решаются не все, не говоря уже о полном переходе. Ведь необходимо не только развернуть систему на десятках/сотнях компьютеров, обеспечить автоматическое обновление, произвести первоначальные настройки, в том числе настроить единую систему аутентификации пользователя, переобучить персонал. Не маловажно тот факт, что многие специфические программы не имеют свободных аналогов или такие аналоги слабо документированы, некоторое оборудование не имеет драйверов под эту ОС.
Причем здесь Calculate Linux? Ответ дан в кратком описании на сайте – “Calculate Linux это открытый проект по внедрению Linux повсеместно. Проект представляет свободный и легкий доступ ко всем возможностям Gentoo.” Прошу заметить первым в списке задач стоит именно внедрение, дистрибутив лишь инструмент обеспечивающий простоту внедрения. Собственно и проект возник в результате перевода систем ЗАО «Калкулэйт Пак» на Linux, что примечательно ЗАО не имеет никакого прямого отношения к IT. Идейным вдохновителем и руководителем является Александр Трацевский, основная группа разработчиков включает еще 2 человека.
Постепенно накапливался опыт, выбирались оптимальные процедуры обновления систем и программ, входящих в состав дистрибутива, оконный менеджер и его оформление, появились утилиты собственной разработки. Использование единой учетной записи позволяет не только удобно управлять доступом к ресурсам в пределах организации, но и пользователь теперь не привязан к рабочему месту. После регистрации получает с сервера свое рабочее окружение со всеми файлами и настройками. Все это работает “из коробки”, настраивается очень просто и не требует от администратора глубоких знаний Linux систем (хотя они в любом случае приветствуются). Конечно, все это делалось под нужды определенной структуры, так как это удобно самим разработчикам, вводилось постепенно, не за один день. Но как показывает тестирование, довести до ума сеть на Calculate Linux можно на порядок быстрее, чем на Gentoo, который и является основой Calculate. При этом совместимость с Gentoo сохранена на 100%, все дополнительные пакеты собираются из ebuild файлов Calculate Overlay. Релизы системы выходят стабильно раз в месяц (как правило в первых числах), система нумерации подобна Ubuntu (год.месяц). Актуальной на момент написания статьи является версия 9.7, но уже полным ходом идет работа над 9.8 в которой нам обещают еще одну новинку Calculate Linux Scratch (CLS), который позволит быстро собрать свой вариант дистрибутива (Прим. уже доступна версия 9.9).
Вполне естественно, что настало время поделиться своим опытом с другими и возможно привлечь к проекту разработчиков. Постепенно был открыт сайт, форум и IRC канал #calculate на irc.freenode.net. Учитывая более простую систему установки и обновления, ежемесячный цикл выхода релизов, не требующих самостоятельно пересобирать систему и тестировать приложения на совместимость, многие пользователи выбрали Calculate вместо Gentoo в качестве настольной системы.
В настоящее время проект предлагает три варианта системы. Серверная версия — Calculate Directory Server (CDS) основой которого является LDAP-сервер используемый для авторизации пользователей, централизованного хранения профилей, прав доступа, настроек сеансов пользователей и настроек приложений в едином сетевом хранилище. Поддерживается репликация почтовых и Samba серверов, централизованное обновление серверов и рабочих станций, резервирование и восстановление данных.
Его альтернативой можно считать
И две настольные — Calculate Linux Desktop (CLD) с рабочей средой KDE 4.x и Calculate Linux Desktop XFCE (CLDX) с рабочим столом XFce. Последняя имеет меньшие системные требования и ориентированна на применение на маломощных машинах. CLDX это первая проба, основной настольной системой считается именно CLD который максимально адаптирован для совместной работы с CDS. При подключении к домену с сервера забираются профили пользователей, автоматически подключаются сетевые папки, каталог FTP, соответствующий ярлык появляется на рабочем столе. Кроме этого пользователь автоматически получает доступ к почтовому, Jabber и прокси серверу (если он ему разрешен). И главное все это достаточно просто настраивается.
Следует отметить документацию проекта, написанную без излишних технических подробностей “под себя”, но с массой практических примеров, для всех вариантов использования системы. Жаль только, что она иногда запаздывает, и из всего многообразия пошаговое руководство, для новичка позволяющее настроить полноценную сеть сложить трудно, потребуется все-таки некоторый опыт в администрировании систем. Хотя заметно оживление, возможно в будущем проблема документации будет решена. Собственно и сама статья является попыткой свести все к одному логическому знаменателю. Система работает на intel совместимых процессорах, не ниже Pentium Pro (i686, x86_64), поддерживает установку на PATA, SATA и SCSI контроллеры, имеет поддержку сетевого беспроводного оборудования WiFi. Интересно, что вообщем то молодой Calculate Linux по рейтингу Distrowatch.com занимает первое среди дистрибутивов сделанных в России (общее 72 место).
Теперь рассмотрим, как настроить связку CDS и CLD/CLDX.
Установка Calculate Linux
Перед загрузкой рекомендую на всякий случай ознакомиться с документом “Структура FTP зеркала”, это снимет ряд вопросов, что и где скачивать. Дистрибутив CDS и CLDX поставляется в виде LiveCD, а CLD — LiveDVD ISO образов. Образы находятся в одноименных каталогах, внутри отдельные подкаталоги со сборками для i686 и x64 систем. Здесь же доступны tar.7z архивы, которые предназначены для обновления дистрибутива и по составу приложений не отличаются от ISO вариантов. Последние версии Calculate поддерживают обновление и из установочных ISO образов, поэтому дополнительно tar.7z файл скачивать уже не обязательно.
Аппаратные требования системы для работы не высоки: процессор класса i686, 256 Мб ОЗУ (512 Мб для CLD) и 3 Гб (6 Гб CLD) места на жестком диске. После перехода в версии 9.6 на использование алгоритма LZMA во время установки требуется не менее 1 Гб ОЗУ, иначе копирование файлов завершается с ошибкой. Решить проблему можно подключив swap раздел командой swapon. Разработчики знают о проблеме, и уже в CLD 9.7 установочный скрипт самостоятельно монтирует swap раздел перед началом копирования файлов (в CDS 9.7 для этого необходимо обновить установщик).
Установка дистрибутива на жесткий диск, обновление, а также сборка загрузочного ISO-образа системы производится при помощи Perl утилиты “calculate” собственной разработки, работающей в консоли. Не смотря на отсутствие, каких либо графических инструментов процесс инсталляции очень прост. Следует загрузиться в Live режиме (при наличии 2 Гб памяти можно выгрузить образ в ОЗУ), обновить скрипт calculate.
В версии 9.6 для этого следовало выполнять:
# calculate --update
В релизе 9.7 появилась новая версия calculate 1.1.0, которая не поддерживает параметра —update, поэтому обновлять следует через emerge:
# layman -S && emerge calculate
Далее два варианта установки. При наличии жесткого диска размером > 45 Гб (при установке на флэшку достаточно 1/2 Гб), утилита calculate умеет автоматически разбивать пространство и создавать разделы (все разделы будут уничтожены). В этом случае в качестве параметра необходимо указать только диск:
# calculate --disk=/dev/sda
В результате будет установлена система, жесткий диск будет разбит на такие разделы:
/dev/sda1 swap
/dev/sda2 (/) 10 Гб (десктоп) или 20 Гб (сервер)
/dev/sda3 (/)10 Гб (десктоп) или 20 Гб (сервер)
/dev/sda4 Extended
/dev/sda5 Linux (/var/calculate – для CDS/CLD/CLDX)
Именно такая схема рекомендуется разработчиками и чтобы получить все преимущества Calculate и ее желательно придерживаться (почему объясню чуть позже). Под корневой раздел можно отвести меньшее место (в документации указано 10-20 Гб, но нижний предел можно сделать еще меньше, установка занимает < 3 Гб).
Подробнее установка расмотренная мной ранее
Разделы Calculate
Теперь следует разобраться, зачем используется такая довольно нестандартная схема разделов. Обновить Calculate можно стандартным для Gentoo способом, как описано в документации проекта Gentoo:
# emerge --sync && emerge -uD world
# env-update
Но в Gentoo изначально отсутствует понятие релиза как такового, любая сборка считается стабильной, поэтому главная идеология проекта гласит – хочешь иметь стабильную систему – обновляй все. Версии пакетов привязаны к профилю, руководство рекомендует обязательно обновлять профиль, если он объявляется нежелательным. В итоге после нескольких часов пересборки системы, приходится еще заниматься адаптацией существующих настроек программ к их новым версиям. На домашнем (персональном) компьютере это может быть приемлемо, то простой даже одного сервера или рабочей системы пользователей на предприятии невозможен. А что делать если их несколько сотен? Именно поэтому многие администраторы использующие Gentoo, обновляют систему на сервере максимум один раз, на вторую попытку уже мало кто решается.
Разработчики Calculate сумели выйти из этого положения, вероятно, кому-то покажется, что не так элегантно, но зато весьма практично и безопасно. После того как новый релиз будет протестирован и выпущен, ISO-образ или tar.7z архив, достаточно скопировать в каталог /usr/calculate/share и ввести команду “calculate”. Инсталлятор определит текущий корневой раздел и распакует дистрибутив во второй (свободный) корневой раздел, перенесет пользовательские настройки и перенастроит загрузчик GRUB. Если обновление произошло неудачно, то у пользователя всегда будет возможность вернуться в старую рабочую систему. В результате переустановка или обновление системы на порядок упрощается и происходит приблизительно за 5-7 минут. Такое обновление очень легко автоматизировать. Достаточно на сервере открыть доступ по NFS, который и примонтировать на клиентских системах в раздел /usr/calculate/share/linux и добавить команду “calculate” в скрипты выполняющиеся при выключении системы. Пользователь утром будет работать в новой версии.
В /usr/calculate/share помимо обновлений системы (каталог linux) хранятся другие полезные ресурсы, такие как пакеты программ (distfiles), внешние профили установки (profile), патчи в виде выполняемых скриптов для внесения изменений в системы (patch), бинарные пакеты для быстрого обновления (packages).
Именно чтобы упростить перенос данных, каталог /var/calculate в котором находятся, настройки для подключения к серверу (/var/calculate/calculate.env) и пользовательские данные, рекомендуется сохраняться в отдельном разделе. После ввода клиентской системы в домен CDS, каталог /home будет располагаться в /var/calculate/client-home (монтируется через bind).
Устанавливаем контроллер домена
После перезагрузки регистрируемся с правами root. При наличии DHCP сервера, сеть будет определена автоматически, иначе ее следует настроить при помощи команды «net-setup eth0», которая поможет настроить ее при помощи псевдографического меню. Команда netstat показывает, что после установки CDS открыты порты SSH, NTP и Bootpc. Кроме этого в списке обнаруживается полный набор сервисов – Apache 2.2.11, BIND 9.4.3, Squid 3.0.15, Sarg 2.2.5-r5, HAVP 0.89, Postfix 2.5.5, Dovecot 1.1.7-r1, PPTPD 1.3.4, ejabberd 2.0.5-r1, PostgreSQL 8.3.7, ProFTPD 1.3.2-r2, OpenLDAP 2.4.16, Clamd 0.95.1, Clamsmtpd 1.9.

Утилиты и профили Calculate Linux
Для настройки контролера домена нам понадобится LDAP и Samba, запускаем при помощи “cl-setup”. Команда проста.
# cl-setup ldap
Программа выполнит настройку LDAP, администратор получит предупреждение о том, что база данных будет перезаписана (архив сохраняется в /var/calculate/server-backup/ldap). Также сервис будет добавлен в автозагрузку. Теперь аналогично сервисы Unix и Samba.
# cl-setup unix
Этой командой мы подключаем возможность аутентификации учетных записей c системными ID хранящихся в LDAP. И наконец:
# cl-setup samba
Будет запущен сервис Samba и созданы служебные пользователи client и admin, необходимые для ввода соответственно Linux и Windows компьютеров в домен. Последовательность запуска важна. Так как, например, введя перед запуском LDAP команду “cl-setup unix” получим предупреждение:
* LDAP service not setuped
* Setup LDAP service
* cl-setup ldap
Список настроенных сервисов можно узнать, просмотрев файл /etc/calculate/calculate.env:
# cat /etc/calculate/calculate.env
[server]
sr_ldap_set = on
sr_unix_set = on
sr_samba_set = on
Пароли доступа всех сервисов к LDAP хранятся в /etc/calculate/calculate.ldap (при запуске сервиса они генерируются случайным образом и уникальны для каждой системы).
# cat /etc/calculate/calculate.ldap
[admin]
DN = cn=ldapadmin,dc=calculate
PASS = fGdRTtajX
[unix]
DN = ou=Unix,ou=Services,dc=calculate
PASS = Fcy9dsW0y
[samba]
DN = ou=Samba,ou=Services,dc=calculate
PASS = iPyEgQTXx
Установим пароль для учетных записей client и admin, которые используются для ввода в домен соответственно Linux и Windows машин:
# cl-passwd --smb client samba
New password:
Retype new password:
* Samba password of user admin is changed
# cl-passwd --smb admin samba
Подключение Linux клиента к домену
Регистрируемся на клиентской Linux системе, как root и вводим ее в домен, указав в качестве параметра cl-client имя сервера CDS или его IP-адрес. По ходу будет запрошен пароль учетной записи client:
# cl-client 192.168.17.147
Пароль для ввода рабочей станции в домен:
* Подключен Samba ресурс [remote] ...
* Подключен /var/calculate/client-home ...
* Компьютер введен в домен 192.168.17.147 ... [ ok ]
Саму команду рекомендуется вводить в локальной или удаленной (через SSH) консоли, а не под Х. И вот почему. При успешном входе в домен будет выполнено ряд действий. Изменятся настройки файлов — /etc/pam.d/system-auth, /etc/nsswitch.conf в которых будет подключены пользователи Samba сервера. В /var/calculate/remote будет смонтирован сетевой ресурс.
# mount | grep remote
//192.168.17.147/remote on /var/calculate/remote type cifs (rw,mand)
Пока в указанном каталоге находится файл /var/calculate/remote/calculate.env настройками LDAP:
[client]
ur_organization =
ur_signature =
ld_samba_dn = ou=Samba,ou=Services,dc=calculate
ld_unix_dn = ou=Unix,ou=Services,dc=calculate
sr_samba_host = calculate.local
ld_services_dn = ou=Services,dc=calculate
ld_bind_dn = cn=proxyuser,dc=calculate
ld_bind_pw = calculate
ld_base_dn = dc=calculate
Можно его скорректировать вписав в поле ur_organization название организации, а в ur_signature — подпись в почтовом сообщении. Чтобы исключить конфликты с локальными пользователями поверх /home будет смонтирован локальный каталог /var/calculate/client-home. Именно поэтому на подключаемой системе лучше пока не работать.
# mount | grep home
/var/calculate/client-home on /home type none (rw,bind)
Сами разработчики не рекомендуют заводить локальные учетные записи (кроме стандартных root и guest, которые после ввода в домен будут недоступны), чтобы их ID не совпадали с ID пользователя в LDAP.
Чтобы вывести компьютер из домена достаточно дать команду, зарегистрировавшись через SSH как локальный root:
# cl-client -r
* Компьютер выведен из домена 192.168.17.147 ... [ ok ]
Введенный пароль для подключения к домену на клиентской системе кэшируется в файле calculate.env.
# cat /var/calculate/calculate.env
[client]
cl_remote_host = 192.168.17.147
cl_remote_pw = password
Как подключить Windows систему хорошо расписано в документе “Переход на использование Linux”, но Calculate/Gentoo Linux является предпочтительными при работе с CDS. Чтобы предоставить доступ пользователей к определенным ресурсам компьютера, системные Unix группы из /etc/group необходимо продублировать в LDAP сервере при помощи команды “cl-groupadd”. Например:
# cat /etc/group | grep scanner
scanner:x:441
Дублируем в LDAP:
# cl-groupadd -f -g 441 scanner samba
* Added group 'scanner ' in Samba service
Кроме этого учетная запись должна быть включена, хотя в одну пользовательскую группу. Группы являются средством разграничения прав, поэтому в организации их может быть несколько. Например создадим группу it.
# cl-groupadd it samba
* Added group 'it' in Samba service
Полностью команда для создания учетной записи выглядит так.
cl-useradd -p -c "Полное имя" -g пользовательская_группа -G системная_группа -p логин samba
Например:
# cl-useradd -p -c "Сергей Яремчук" -g it -G audio,lp,plugdev,scanner,video -p grinder samba
Вводим два раза пароль и получаем:
* Added user grinder in Unix service
* Added user grinder in Samba service
После входа пользователя на клиентской системе будет скопирован профиль, а на рабочем столе выведены ярлыки для доступа к его домашнему каталогу, ресурсам Samba и FTP (если настроен). Если перейти на другой компьютер, даже находящимся в другой под сети домена, то все настройки перекочуют за пользователем.
Все группы, в которые должен быть включен пользователь, уже должны быть созданы, иначе получаем ошибку:
* Group it is not found
* Can not add user grinder in Unix service
Удаляется учетная запись при помощи cl-userdel, но его домашние каталоги на сервере не удаляются (это нужно делать вручную). Поэтому при повторном использовании логина получаем сообщение:
* Path /var/calculate/server-data/samba/home/grinder exists
* Can not add user grinder
Для поучения информации об учетных записях Samba используется cl-info. Например выведем данные обо всех пользователях:
# cl-info -u samba
All users in LDAP for service Samba
+---------+-----------------------------+------+----------+
| Login | Name | Lock | Password |
+---------+-----------------------------+------+----------+
| client | Client unix workstation | No | Yes |
| admin | Administrator samba service | No | Yes |
| grinder | Сергей Яремчук | No | Yes |
+---------+-----------------------------+------+----------+
Теперь по конкретной учетной записи:
# cl-info -U grinder samba
Чтобы запустить после настройки сервисы, не поддерживаемые утилитами Calculate 2 (вроде Apache 2), следует ввести:
# rc-update add apache default
# /etc/init.d/apache2 start
Настройка почтового (Postfix/Dovecot), Jabber и Squid хорошо расписаны на сайте проекта, команды для добавления сервиса и учетной записи аналогичны. В документации можно найти скрипт при помощи которого пользователь подключается ко всем сервисам. Поэтому подробно останавливаться на этом не буду.
***
Признаться после стольких лет администрированием Linux, возможности Calculate Directory Server более, чем впечатлили. Процесс построения домена и поддержания его в работоспособном состоянии весьма продуман, логичен и не займет много времени.
Еще по теме: