понедельник, 4 апреля 2011 г.

rdesktop в linux и терминальный сервер windows


Делали один подряд и столкнулись с проблемами, по которым в интернетах не найти космплексного решения.
В результате в голове уже с неделю болтается немного инфы, которую я здесь представлю в виде how-to для специалиста-администратора.
Задача: защитить документооборот, переписку и прочие данные предприятия от кривых рук пользователей и «маски-шоу», заодно избавиться от нелицензионного софта в офисе. На рабочих станциях остаётся Skype, интернет-сёрфинг и прочие неважные мульки.
Решение: перенос всей работы на терминальный сервер, стоящий где-нибудь в секретном дата-центре(возможно в оффшорах).
С установкой виндового терминального сервера и Active Directory на отдельную тачку, или в виртуалку,никаких проблем нет.
Переносим пользовательскую инфу: профили, документы, переписку, Application Data и прочее на установленный сервер.
На рабочие станции и ноутбуки заливаем Ubuntu 9.04. Сойдёт любой дистрибутив linux, но мы выбрали самый desktop-friendly. Если на ноутах, или компах предустановлена windows profissional, или business, её можно оставить и работать в терминале через её родной mstsc. У нас была пачка ноутов с Media Center и Home, которые мы не стали жалеть.
При установке Ubuntu требуется создать пользователя, которому автоматически разрешается sudo. Из под него затем выполняется вся настройка и создаётся пользователь, который будет автоматически логиниться в систему при загрузке. У пользователя на столе развешиваются ярлыки для Skype, FireFox(Internet), Pidgin(ICQ), OpenOffice(Word) и OpenOffice(Excel). По желанию можно сделать ярлык для соединения с терминальным сервером, но мы использовали для этого комбинацию клавиш. С понтом: так меньше палева.
Смену раскладки клавиатуры в терминальном сервере вешаем на Alt+Shift (пользователям так привычнее), а в linux — на Ctrl+Shift, или на два Shift’a, чтобы не пересекались. Отключаем в compiz графические эффекты, чтобы Win+R вызывало запуск программ в терминале, а не включало зум в linux.
Решение проблемы с Alt+Shift
Во многих современных линуксах нажатие Alt+Shift воспринимается как какой-то Meta-символ, что приводит к «залипанию» Alt в терминальной сессии. Даже если перевесить смену раскладки на другие кнопки, пользователи всё равно периодически будут нажимать Alt+Shift и огребать «глюки».
Чтобы этого не случалось, можно использовать ключ «-y»(raw) для rdesktop 1.6.0 и выше, но тогда будут проблемы с работоспособностью некоторых клавиш, особенно на ноутбуках.
Также, можно заморочиться поиском именно своей клавиатуры в настройках xorg, но в условиях зоопарка это нереально.
Можно пересобрать xmodmap, с тем чтобы сменить там в раскладке «Alt_L Meta_L» на простой «Alt_L», но не во всех дистрибутивах это также легко и прозрачно сделать как в ThinStation.
Наш с трудом нагуглённый вариант это следующая команда:
DISPLAY=’:0′ xmodmap -e «keysym Alt_L = Alt_L» которую вполне можно выполнять из под пользователя непосредственно перед запуском терминальной сессии.
Решение проблемы с неработающими клавишами
Здесь всё просто. Раскладка ru в rdesktop изобилует всякой хренью, которая на деле только мешает.
Делаем sudo cp /usr/share/rdesktop/keymaps/en-us /usr/share/rdesktop/keymaps/ru
Затем открываем /usr/share/rdesktop/keymaps/ru в любом редакторе и меняем там map 0×409 на map 0×419
Автоматическое монтирование флешек
В Ubuntu любая первая воткнутая в разъём флешка автоматически монтирается в /media/disk. Вторая — в /media/disk-2. У наших пользователей не предвидится больше одной флешки необходимой в терминале.
Используем ключ rdesktop -r disk:FLASH=/media/disk чтобы смонтировать флешку на сервер. Если флешка была подключена во время работы в терминале, терминальную сессию возможно придётся перезапустить.
Кстати, ключом rdesktop -r clipboard:CLIPBOARD можно синхронизировать содержание буфера обмена на клиенте и сервере.
Запускаем терминальную сессию таким микро-скриптом(желающие могут уместить это в одну строку):
cat terminal.sh
#!/bin/sh
DISPLAY=':0' xmodmap -e "keysym Alt_L = Alt_L"
rdesktop -Nzfr disk:FLASH=/media/disk -r clipboard:CLIPBOARD -u username -d domain -p password terminal.server.address
Если кому-то что-то хочется спросить, или нужен какой-либо скриншот, обращайтесь, я отвечу и дополню этот how-to.
.Источник:

Комментариев нет:

Отправить комментарий