10 шагов к терминальному серверу на Ubuntu

Цель этой статьи показать Вам, что альтернатива продуктам MS есть!

  • ОС Xubuntu 12.04 LTS amd64
  • Оконный менеджер XFCE
  • Поддержка протокола RDP (x11rdp)
  • Поддержка протокола NX (freenx)
  • Авторизация пользователей через Active Directory (likewise-open)
  • Настройки пользователей по умолчанию (skel)
  • Поддержка сетевых папок и профилей, авторизованных от доменного пользователя (pam_mount)
  • Выполнение скриптов при входе в систему от пользователя и от root (pam_exec)
  • Антивирусная защита (ClamAV)
  • Возможна поддержка ПО MS, 1С и т.п., в пределах возможностей wine или wine@etersoft

Исходные ресурсы

  • Xubuntu 12.04 LTS amd64 Desktop с доступом в интернет
  • Windows 2008 в качестве сервера авторизации (AD test.lan, ip 192.168.100.1), сетевого хранилища общих папок и профилей пользователей.

Подготавливаем систему

Настраиваем сеть, правим /etc/network/interfaces:

В настройка днс, нужно обязательно указать днс сервера AD, если в /etc/resolv.conf видим:

То настройки днс хранятся в /etc/resolvconf/resolv.conf.d/base:

Перезапускам сетевой интерфейс и проверяем настройки сети

Устанавливаем необходимые пакеты и обновляем систему

Настраиваем доменную авторизацию

Присоединяем систему к домену используя likewise-open, Вы можете воспользоваться либо gui скриптом в меню системы или же воспользоваться консолью:

По умолчанию likewise-open хранит профили пользователей по пути /home/likewise-open/Домен/Пользователь, настройка путей осуществляется через реестр. Войти в консольный редактор реестра можно командой lwregshell. Перемещаться по веткам реестра можно командой CD аналогично bash. Посмотреть доступные ключи можно командой ls. Установить значения ключей командой "set_value ключ значение".

Входим в консоль реестра lwregshell и выполняем:

Обновляем параметры реестра после изменений:

Настраиваем PAM

Настраиваем монтирование сетевых ресурсов, выполнение пользовательских скриптов (от root) и настройки skel для пользователей при входе в систему.

Создаем файл скрипта и делаем его исполняемым (в дальнейшем можете использовать этот скрипт по своему усмотрению):

Добавляем в /etc/pam.d/common-session:

Обязательно вставляем текст между строками с pam_unix.so pam_lsass.so, иначе не будет работать pam_mount. Приводим к такому виду:

Сетевые профили мы будем монтировать в /net/%username%, для каждого пользователя отдельно. Очень не рекомендую монтировать сетевые диски в домашнюю папку пользователя (не дай бог пользователь удалит монтированную папку). Будем использовать симлинки.

Создаем папку для монтирования сетевых ресурсов /net:

Общие папки и профили у меня лежат на сервере 192.168.100.1:

  • 192.168.100.1pr$\%username% — профиль монтируем в /net/%username%/profile
  • 192.168.100.1public — общую папку монтируем в /net/%username%/public

Настраиваем папки для сетевого монтирования, добавляем параметры подключения в /etc/security/pam_mount.conf.xml после debug enable:

Я пока не нашел как заставить выполнять pam-mount при входе по ssh:

Донастраиваем Xsession

Добавляем в /etc/X11/Xsession после set -e:

Настраиваем скелеты для пользователей

Под любым пользователем настраиваете рабочий стол, панели, ярлыки и т.п, все что нужно пользователям по умолчанию. Не забудьте добавить на панель индикатор переключения раскладки. Далее копируете из домашней папки настроенного пользователя настройки в /etc/skel. Обратите внимание на особенность при использовании skel не выполняется скрипт генерации первичной структуры домашней папки, так как при первом входе домашняя папка полностью копируется из /etc/skel.

Выполняем с правами рута

Cобираем x11rdp

Устанавливаем библиотеки разработчиков xorg, качаем и собираем исходники x11rdp:

Смело идем за стаканом с (чаем/кофе/пивом) на моей виртуальной машине сборка занимает около 16 минут:

Проверяем установленые библиотеки:

Cобираем свежую сборку xrdp

Мы будем использовать свежую сборку xrdp. Что бы создать скрипты для запуска и установить зависимые пакеты ставим и удаляем xrdp из репозитария Ubuntu:

Клонируем под нормальным пользователем текущую версию xrdp:

Собираем из исходников xrdp. Обратите внимание на checkout, это необходимо для корректной работы xrdp:

Устанавливаем с правами root:

Копируем и изменяем RSA ключи, это необходимо для RDP сессий:

Настройка xrdp

Делаем резервную копию и создаем симлинк на Xsession:

Приводим настройки /etc/xrdp/xrdp.ini к такому в виду:

Количество разрешённых подключений можно установить в /etc/xrdp/sesman.ini. По умолчанию разрешено 10 пользователей.

Немного изменяем скрипт управления /etc/init.d/xrdp, добавляем параметры:

Настраиваем авторизацию xrdp, приводим файл /etc/pam.d/xrdp-sesman к виду:

Запускаем xrdp сервер и проверяем:

Если отобразились настройки xrdp-sesman, значит все встало как надо. В версии из репозитария настройки не отображаются. Теперь можно проверить подключение к серверу по RDP протоколу любым доступным клиентом.

В текущей сборке xrdp есть проблема в при вводе логин/пароля с переключением раскладок, поэтому логин пароль лучше задать в самом подключении. Если вам известно решение этой проблемы, скажите пожалуйста.

Настройка freenx сервера

В текущем репозитарии Ubuntu 12.04 нет пакета esound-clients, который требует freenx. Скачиваем и устанавливаем нужные пакеты вручную.

Выполняем от root:

Клиент для FreeNX можно скачать на сайте nomachine.com. Не забудьте в настройках клиента указать тип рабочего стола CDE (xfce):

Последний шаг

Удаляем ненужные пакеты и перезагружаем систему:

Заново установили операционную систему? Не знаете где скачать бесплатные программы? Тогда зайдите на сайт softcor.ru!
Gremlin
2012-05-04 11:14:00
Ужас...
Dmitry@INdig0
2012-10-01 21:53:00
Спасибо! Правда у меня компилилось 2 часа =)
Tehnikpc Intel
2014-02-26 21:01:00
"Антивирусная защита (ClamAV)" Это не антивирус, а скорее просто программа.
Bupyc
2017-12-20 08:26:51
Круто!Только без домена AD!