Задача: Настроить терминальный сервер 1С.
Что это значит?
Это значит, что пользователи будут работать в 1С не напрямую со своего компа, а подключаться к серверу и запускать терминальный сеанс, в котором и рассматривать желтые окошки.
Зачем?
Достоинства использования терминального сервера:
1) экономия лицензий 1С. Отсюда:
Терминальный сервер допускает установку любого типа лицензий, все лицензии должны быть установлены локально и быть доступны всем пользователям. При этом все лицензии, вне зависимости от вида складываются как однопользовательские и ограничивают общее количество терминальных сеансов (не путать с сеансами приложений 1С).
Т.е. пользователь в терминальной сессии может понаоткрывать сколько угодно баз, хоть 50, а лицензия будет использована только одна.
2) все пользователи работают с 1С в одном месте – на сервере. Облегчается поддержка и администрирование (установка/обновление платформы, например).
Недостатки:
1) глючная работа терминальных серверов (бесплатных, по крайней мере) (см. ошибки в конце статьи). Чтобы добиться желаемой (стабильной) работы терминальных сеансов пользователей нужна могучая борода линуксоида. А из коробки, да еще и бесплатно – совсем разбаловались?
2) небольшая задержка (лагание), связанная с работой по сети.
Общий план действий
1) имеем серверную железяку Dell и на ней Debian 64-bit (оболочка XFCE)
2) устанавливаем ПО:
- сервер и клиент 1С, PostgreSQL, Apache, HASP и прочая ерунда для 1С
- пользовательское (все было в коробке): Текстовый редактор LibreOffice, файловый менеджер Thunar и еще что-то по мелочи
- терминальный сервер X2Go
3) удаляем лишнее: Gimp, Thunderbird
4) настраиваем:
- проверяем работу SSH
- отключаем удаленную авторизацию пользователя root
- проверяем доступность сервера в локальной сети по имени хоста, добавляем запись в hosts
- настраиваем оболочку XFCE: панель инструментов, доступность кнопок управления питанием сервера, ярлыки и папки на рабочем столе
- монтируем общие сетевые каталоги
- настраиваем раскладки клавиатуры
- настраиваем CUPS, добавляем принтеры и настраиваем их доступность между пользователями
5) добавляем пользователей в систему
Описаны будут лишь некоторые пункты.
Установка X2Go
# apt-get install dirmngr
# apt-key adv --recv-keys --keyserver keys.gnupg.net E1F958385BFE2B6E
# nano /etc/apt/sources.list.d/x2go.list
deb http://packages.x2go.org/debian stretch extras main
# apt-get update
# nano /etc/apt/sources.list
http://ftp.de.debian.org/debian sid main
# apt-get install x2goserver x2goserver-xsession
Блокировка редактирования XFCE
Запрет редактирования ПАНЕЛИ xfce4. Cначала скопируем текущие настройки:
cp -v /home/<USER>/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/
В unlocked можно вписать имя пользователя, которому нужно снять блокировку:
nano /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml
<channel name="xfce4-panel" version="1.0" locked="*" unlocked="local">
Запрет редактирования НАСТРОЕК xfce4:
nano /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml
<channel name="xsettings" version="1.0" locked="*" unlocked="local">
Блокировка кнопок выключения
Установим запрет на выключение, перезагрузку системы пользователем (для версии PolicyKit 0.105)
а) правильный вариант (не заработал):
# nano /etc/polkit-1/localauthority/50-local.d/99-disallow-shutdown.pkla
[Disallow shutdown]
Identity=unix-group:users
Action=org.freedesktop.consolekit.system.stop;org.freedesktop.consolekit.system.restart
ResultAny=no
ResultInactive=auth_admin
ResultActive=no
б) неправильный (но заработал), т.к. при переустановке пакета настройки перезапишутся
# nano /usr/share/polkit-1/actions/org.freedesktop.login1.policy
В каждом action, где есть power-off, reboot, suspend, hibernate:
<allow_any>no</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>auth_admin</allow_active>
Автомонтирование сетевых папок
Автомонтирование чего-либо настраивается в /etc/fstab.
# nano /etc/fstab
Добавить:
<//ip_путь> <лок_путь> cifs auto,user,rw,credentials=<пароли> 0 0
, где:
<//ip_путь> – сетевой путь к общедоступному каталогу, например //192.168.0.10/SharedFolder
<лок_путь> – путь к каталогу, куда будет примонтирована шара, например /mnt/SharedFolder
<пароли> – файл, где будет храниться логин и пароль от учетной записи, от имени которой будет предоставляться доступ к сетевой папке всем пользователям. Можно вписать логин/пароль и в явном виде (вместо credentials), но лучше так.
# nano /etc/shared_pass
username=USER
password=PASS
# chmod 600 /etc/shared_pass
# apt-get install cifs-utils
Также, можно узнать нужные параметры автомонтирования, если осуществить монтирование с помощью mount и заглянуть в /etc/mtab.
Раскладка клавиатуры
Добавим русскую и английскую раскладку, модель клавиатуры 105-клавишная (еще делают 102).
Уберем галку “Запоминать состояние клавиши Num Lock”.
Возможные проблемы и решения с клавиатурой описаны ниже.
Создание пользователей
Когда оболочка XFCE настроена как надо, скопируем ее параметры в профиль skel, чтобы эти настройки устанавливались по-умолчанию для новых пользователей:
# cd /home/USER
# cp -r -f -b .config/ /etc/skel
# cp -r -f -b .1C/ /etc/skel
# cp -r -f -b Рабочий\ стол/ /etc/skel
, где USER – пользователь, чьи настройки будем копировать
Что должно скопироваться:
.config/autostart/ – программы в автозагрузке
.config/xfce4/xfconf/xfce-perchannel-xml:
xfce4-panel.xml – панель
xfwm4.xml: workspace_count – количество рабочих мест=1
xfce4-keyboard-shortcuts.xml – горячие клавиши
.config/xfce4/panel/launcher-8/********.desktop – пользовательский скрипт в панели
.1C – список баз
Рабочий стол – ярлыки, папки
#!/bin/bash
scriptPath=${0%/*}
#scriptPath=$(dirname $0)
source "$scriptPath/info/user_arrays"
source "$scriptPath/utils.sh"
defUsers=( ${ALL[@]} )
if [ -z $1 ]
then
users=( ${defUsers[@]} )
else
adduser $1
exit 0
fi
for user in ${users[@]}
do
log "= adduser $user"
adduser $user --disabled-password --gecos $user
done
log "= start newusers"
newusers /usr/local/bin/info/users_list
pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell
user:pass:::Тестовый юзер:/home/user:/bin/bash
Настройка списка баз 1С
#!/bin/bash
scriptPath=${0%/*}
source "$scriptPath/user_arrays"
source "$scriptPath/utils.sh"
for user in ${MAN[@]}
do
log $user
cp -f /usr/local/bin/info/man_bases.v8i /home/$user/.1C/1cestart/ibases.v8i
chown $user:$user /home/$user/.1C/1cestart/ibases.v8i
done
ADM=(
dir
)
BUH=(
buh1
buh2
)
MAN=(
man1
man2
)
ALL=( ${ADM[@]} ${BUH[@]} ${MAN[@]} )
#!/bin/bash
log() {
message="$(date +""%y.%m.%d\ %T"") $@"
echo $message
}
Установка принтеров
1) установка CUPS
# apt install cups
2) Заходим в админку (http://localhost:631/admin), добавляем принтеры и настраиваем к ним доступ, составляя список разрешенных пользователей:
Принтеры -> <printer_name> -> Set allowed users -> Allow/Prevent (или “вручную” в /etc/cups/printers.conf)
Также нужно убрать галку “Разрешить совместный доступ к этому принтеру”, иначе права доступа будут до фени.
3) Настройка доступа к серверу CUPS по сети (думаю, не желательно):
# nano /etc/cups/cupsd.conf
Listen <ip_addr>:631 # сет.интерфейс
<Location />
Order allow,deny
Allow from <ip_addr>
AuthType Basic
Require valid-user
Satisfy any
</Location>
# +в остальных подпапках Location тоже
4) установить у каждого пользователя принтер по-умолчанию. Как это сделать через конфиги не разбирался, делал с помощью GUI, заодно учетки проверил.
Проблемы и решения X2Go
При запуске терминального сеанса с помощью X2Go были определенные проблемы, например:
- отсутствие русской раскладки клавиатуры (не переключается раскладка)
- не работают цифры в NUM-блоке клавиатуры
- нижняя панель инструментов не отображается (не помещается в окно)
- проблема с иероглифами при копировании кириллицы в буфер обмена (с сервера на хост)
- проблема с копированием текста в буфер обмена (с сервера на локальный хост)
Проблемы с раскладкой клавиатуры и потерей панели инструментов решились запуском скрипта при старте сессии:
1) пишем скрипт
# nano /usr/local/bin/init_session.sh
Добавляем:
#!/bin/sh
xrandr -s 800x600
setxkbmap -layout "us,ru" -model "pc105" -option "grp:alt_shift_toggle,grp_led:scroll"
/opt/1C/v8.3/i386/1cestart
, где:
- xrandr – устанавливает разрешение, соответственно меняется размер окна сеанса, и панель инструментов магически появляется
- setxkbmap – устанавливает раскладки, модель и параметры клавиатуры
- 1cestart – запуск клиента 1С (чтобы пользователи не забывали, зачем зашли)
Добавляем право на запуск скрипта:
# chmod +x /usr/local/bin/init_session.sh
2) создаем запись в автозапуске, которая будет выполнять скрипт (или в XFCE можно зайсти в Настройки > Сеансы и запуск > Автозапуск приложений):
# nano /home/debian/.config/autostart/init_session.desktop
Добавляем:
[Desktop Entry]
Encoding=UTF-8
Version=0.9.4
Type=Application
Name=init_session.sh
Comment=
Exec=/usr/local/bin/init_session.sh
OnlyShowIn=XFCE;
StartupNotify=false
Terminal=false
Hidden=false
Проблема с копированием кириллицы решилась использованием более старой версии Windows-клиента 4.0.3.2.
setxkbmap -layout "us,ru" -model "pc105" -option "grp:alt_shift_toggle,grp_led::scroll"
numlockx on
Еще на unixforum.org советуют такой код для решения проблем с раскладками клавиатуры и NUM-кнопками (добавить в автозагрузку), сам не пробовал:
#!/bin/bash
setxkbmap -rules xorg -model pc105 -layout "ru(winkeys),us" -option 'grp:alt_shift_toggle,grp_led:scroll'
xmodmap -e "keycode 91 = KP_Delete KP_Decimal KP_Delete KP_Decimal"
Управление сеансами X2Go
# x2golistsessions_root
– 1 способ. Каждая запись состоит из следующих полей:# ps aux | grep x2goruncommand
– 2 способ # x2goterminate-session <session-id>
– завершить сеанс по id
Not clearly
Thanks very nice blog!