Сервер терминалов служит для удалённой работы пользователей, работающих на слабых компьютерах. На таком сервере устанавливаются все необходимые программы, а на компьютерах пользователей может быть установлен только клиент для подключения к серверу. Второе возможное направление использования терминального сервера - работа пользователей из дома, командировки или же с произвольного компьютера в сети организации.
Наиболее продвинутым и удобным протоколом для организации работы с терминальным сервером является RDP.

Устанавливаем:

sudo apt install xrdp

В качестве окружения рабочего стола будем использовать xfce

sudo apt install xfce4 xfce4-goodies

Сообщаем, какое окружение рабочего стола следует использовать xrdp:

sudo nano /etc/xrdp/startwm.sh

в конец этого файла добавляем строку

startxfce4

перезапускаем xrdp

sudo service xrdp restart

Если терминальный сервер должен быть виден из интернета, то желательно сменить ему порт в конфгурационном файле:

sudo nano /etc/xrdp/xrdp.ini

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

А вот то, что нужно сделать обязательно - так это запретить авторизацию root-а.
Открываем на редактирование файл /etc/xrdp/sesman.ini и изменим строку:

Создание базовой настройки рабочего стола

Нам следует подключиться к серверу и настроить внешний вид рабочего стола для одного из пользователей. Пусть это будет наш администратор super:

Для того, чтобы пользователь мог менять раскладку, на панель следует добавить элемент "Раскладка клавиатуры" и в его настройках на вкладке "Раскладка" снять галочку "Использовать стандартные системные параметры", затем добавить английскую (или русскую, если в системе по умолчанию установлен английский язык) раскладку и выбрать способ переключения:

Выходим из сеанса и копируем директорию настроек в каталог /etc/skel

sudo cp -R -f -b /home/super/.config/ /etc/skel/

Теперь при создании нового пользователя, файлы из каталога /etc/skel будут копироваться в его домашнюю директорию и он получит некоторую первоначальную настройку. Но что делать с уже существующими пользователями? Если их немного то можно сделать следующее - скопировать из /etc/skel только настройки xfce и изменить владельца каталога. На примере пользователя buh:

sudo cp -R /etc/skel/.config/xfce4/ /home/buh/.config

sudo chown -R buh:buh /home/buh/.config/xfce4

И так для каждого пользователя. А если пользователей сотни? Тогда нужно воспользоваться простым скриптом. Для начала скопируем файлы:

for user in $(ls /home); do sudo cp -R /etc/skel/.config/xfce4 /home/$user/.config; done

для простоты понимания развернём этот скрипт:

for user in $(ls /home)

do

sudo cp -R /etc/skel/.config/xfce4 /home/$user/.config

done

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

Следующим нашим шагом должно стать изменение владельца файлов в папке с настройками, т.к. сейчас они принадлежат руту и пользователю недоступны для записи. Вообще-то такое положение вещей может быть удобно, если вы не хотите, чтобы пользователи меняли настройки своего рабочего стола. Но зверствовать не стоит.

for user in $(ls /home); do sudo chown -R $user:$user /home/$user/.config/xfce4; done

Здесь стоит сделать ремарку: в данном примере мы используем некоторое стандартное поведение Линукса, а точнее утилиты adduser, при котором:
- новый пользователь создаётся так, что его домашний каталог располагается в /home и называется по имени пользователя.
- для каждого пользователя создана основная группа, которая имеет то же имя, что и имя пользователя.

Это не аксиома и не всегда так, но если вы меняли это поведение системы или вносили изменения в конфигурацию пользователей, то эту статью вы не читаете.

Отключение загрузки сервера в графический режим

После установки XFCE на сервере может случиться так, что он будет загружаться в графический режим:

Это нужно отключить, чтобы не тратить ресурсы впустую. В Линуксе существует понятие "Уровень выполнения" и определяются они так:

0 - выключение системы
1 - однопользовательский режим (работать может только root)
2 - многопользовательский режим без сети
3 - многопользовательский режим с сетью и текстовым терминалом (он и считается основным для сервера)
5 - многопользовательский режим с графическим терминалом (основной для рабочей станции)
6 - перезагрузка системы.

Следовательно, нам нужно добиться, чтобы сервер загружался в уровень 3. В Дебиане это делается созданием в каталоге /etc/systemd/system ссылки на файл /lib/systemd/system/runlevel3.target

sudo ln -s -f /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target

Теперь система будет снова загружаться в текстовый терминал, как ей и положено. Если по какой-то причине возникнет необходимость загрузиться в графический режим, либо какой-то другой, то просто выберите другой файл - runlevel5, runlevel1, runlevel2 и т.п.

На этом базовую настройку XRDP можно считать законченной.