Свистать всех на Linux, гром и молния

в 9:04, , рубрики: address book, caldav, calendar, davmail, ews, ldap, lightning, Linux Mint, thunderbird, thunderbird extentions, xrdp, Лайфхаки для гиков, Настройка Linux, системное администрирование, Софт

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

Вообще этот рассказ (а может и цикл статей, если получится) я сначала хотел озаглавить как «похождения айтишника в недружественной среде».

Потому что если вы работаете в крупном энтерпрайзе, то большая часть сервисов компании рассчитана на то, что вы пользователь windows. А если вы гик-отщепенец на никсах, то в решении проблем корпоративная техподдержка вам вряд ли поможет, хотя уже далеко не нулевые:

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

Либо просто вам скажут, что это не реализуемо. Когда я победил конференции Lync, обрадованный коллега скинул мне ссылку на тикет в сервисдеске, который он создавал с той же проблемой примерно год назад. Резолюция в тикете была такая, что вы не можете использовать веб-приложение для Lync, потому что у вас спина белая ось не поддерживается. И других вариантов как обойти это недоразумение предложено не было.

Коралина в стране кошмаров

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

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

Следующим этапом было блокирование ICQ (да времена были еще те), Jabber и социальных сетей. С мессенжерами было проще — достаточно было сменить порты на SSL и включить шифрование. А вот с соцсетями пришлось попрощаться, что сделало жизнь немного более унылой. Хотя на работе вообще я использовал только плагин сообщений для QIP Infium, чтобы не пропускать сообщения из vk, а не просиживал в новостной ленте (которой тогда еще вроде и не было еще). Вкупе с блокированием соцсетей потом была запущена еще блокировка «развлекательного и запрещенного контента», которая до кучи еще и блокирует иногда полезные ресурсы. Один мой коллега долгое время воевал со сборкой одного java-проекта, как оказалось, проблема заключалась в блокировании в корп.сети необходимых maven-репозиториев. В запрещенные попали всякие облачные сервисы (гугл диск, документы, яндекс облако и т.д.) и файловые обменники.

В какой-то момент в rdp-сессиях был заблокирован буфер обмена, а в корпоративном vpn — возможность открывать сетевые шары на рабочем пк. Копирование файлов стало сильно сложнее — только через флешку. Но потом мы лишились и этого — usb порты на компах хотя и не были заварены физически, но работали только как зарядное устройство для телефонов, любая вставленная флешка блокировалась антивирусом.

Ну и финальным штрихом, который переполнил чашу терпения, стало ограничение запуска программ только из «разрешенных мест». За годы работы мной был накоплен багаж из различного полезного софта (который жил на отдельном от системного разделе в силу того, что его обычно не нужно было устанавливать, а достаточно просто скопировать): пакерыанпакеры, редакторы ресурсов, hex-редакторы, PE-редакторы, отладчикитрассировщики, целый пак утилит с канувшего в лету сайта sysinternals, декомпиляторы (например DeDe для Delphi, JAD для java, ILspy для дотнета) и т.д.

Не то чтобы это был необходимый набор для работы, но если уж начал заниматься программированием, то потом сложно остановиться.

Пользователи вообще очень болезненно воспринимают разного рода ограничения, которые делаются «для их же блага». И я, конечно, не был исключением.

Они украли, украли её у нас, нашу прелесссть

И я стал готовить план отступления перевода рабочего места на Linux.

Все станет по-другому, когда я стану богом

Ария Рейстлина Маджере (мюзикл «Последнее Испытание»).

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

Какие еще плюсы(жирные) я приобрел:

  • native ssh (я много работаю в консоли с серверами и это прямо ну очень порадовало)
  • native shell (до того я использовал cygwin окружение под виндоус для исполнения башевых скриптов или скрптов на перл)
  • native python и fabric (вытекает из 1 пункта, для массовой обработки списка серверов фреймворк облегчает рутинные задачи значительно). Для работы фабрики внутри cygwin был собран франкенштейн в виде ssh-агента, который берет ключ, общаясь с putty agent(который уже сидит в памяти), и передает его линукс подсистеме как если бы ключ был загружен в родной ssh-агент.
  • native git (работа в гите под windows это боль. хоть в cygwin, хоть внутри его собственного git bash внутри msys окружения)

Как перейти на Linux и перестать ныть начать жить

Установка Linux на рабочую тачку не была чем-то экстра-сложным. Заранее дома была подготовлена загрузочная флешка с Live-образом необходимого дистрибутива, выбран был Linux Mint (последней на момент написания версии 19.2) по совету уже работающих коллег из отдела серверного администрирования.

На попытку загрузиться с флешки комп никак не отреагировал, т.к. на пк был включен quick boot и вместо диагностических сообщений (где я надеялся увидеть сочетание для входа в BIOS) начинал сразу грузить винду. Беглое гугление по наименованию модели nettop вывело на клавиши для входа в BIOS и для входа в boot menu. И при входе в BIOS меня поджидал первый сюрприз — окно ввода пароля. Если отказаться вводить пароль по Esc, то настройки было можно только смотреть. Мда, вот тебе бабушка и Юрьев день. Хотя поменять boot sequence мне не удалось, но оставалась призрачная надежда на вход в boot menu. И точно, по F8 можно было выбрать устройство с какого грузиться. Грузимся с флешки, запускаем инсталл, далее следуем указаниям мастера установки. Из совершенных косяков был только 1 — при разбивке диска он мне любезно сообщил, что у меня не создан раздел для UEFI загрузчика и возможно я не смогу загрузиться потом после установки, на что я ему сказал: «да, создавай, ты же лучше меня все знаешь». И этот выбор потом мне стоил кровавых слез и некоторого количества потраченых нервов, потому что при загрузке у меня был теперь только Linux. Позднее опытным путем я выяснил, что могу загрузиться обратно в винду с помощью моей той самой незаменимой загрузочной флешки, на которой стоит GRUB (там имеется пункт поиска bootmgr на всех разделах и передачи ему управления в случае обнаружения). Но скажу честно, с момента перехода на темную сторону необходимости пока такой не возникало.

Грохочет гром, сверкает молния в ночи

а на холме стоит безумец и кричит
сейчас поймаю тебя в сумку и сверкать ты будешь мне
мне так хочется чтоб стала ты моей

Первым делом после установки системы мне нужно было настроить почту.
Посмотрев на веб-почту, для себя я решил что OWA уныл чуть более чем полностью.

Мой OWA кошмарит вообще адовые сценарии.
Ну такой вот примерно сценарий усредненный, потому что вариаций масса.
Берется почта, она не проверяется, проверять — это не про моего OWA.
Он берет все письма, вываливает их в inbox и начинает фильтровать.
Добавляет огромное количество приглашений на встречи, вложений, пропущенных сообщений Lync.
Полушепотом приговаривая «ух бл..», при этом у него на лбу аж пот выступает.
При попытке добавить новые правила фильтрации любезно предлагает мне отключить что-то из существующих, на что я отказываюсь.
Надо ли говорить какой дичайший бардак потом в почте.

И в качестве почтового клиента было решено использовать Thunderbird. Не буду приводить тут всю настройку, благо примеров полно и тут на Хабре, и вообще в интернете. Отмечу только некоторые моменты.

При подключении почтового ящика по IMAP по умолчанию не отображаются папки. Чтобы папки стали отображаться, на них нужно подписаться. Но у меня не удалось сделать отображение иерархии (у меня в ящике настроена довольно разветвленная структура папок куда письма сортируются фильтрами). Максимум что получилось сделать — это отображение непосредственных детишек для Inbox. Что удручало.

Как-то раз, блуждая по корпоративной wiki, я обнаружил статью про то, что у нас поднят шлюз DavMail. Это шлюз, который является смычкой города с деревней и позволяет работать с серверами Exchange для не-windows машин. Попробовал подключить IMAP через него и о чудо, у меня отобразились сразу все папки с иерархией как они были созданы раньше. С одной задачей было покончено. Следующей задачей была настройка адресной книги с подсказками адресов при вводе. В громоптице адресная книга настраивается как ldap directory, и я ее подключил тоже сперва через DavMail шлюз, но потом выяснилось что в этом есть и свои минусы(об этом далее).

Заводит молния меня, как жаль что я ее не смог

Ну и финальный штрих к настройке почты — это календарьорганайзер для того чтобы управлять приглашениями на встречи и планировать свой день. В последних версиях дополнение Lightning идет сразу предустановленное, но требуется его настройка. DavMail экспортирует календари Exchange в формате CalDav, первым делом я подключил этот вид календаря. И сразу обнаружил минусы в его работе: входящие приглашения в календарь добавляются, но я не могу добавить потом еще в то же мероприятие людей (форварднуть приглашение на митинг), если я не являюсь организатором. Я испробовал много разных вариантов и единственное, что тут удалось сделать, это поставить дополнение SFOA, которое добавляет возможность скачать из письма само приглашение в виде ics файла, который я потом пересылал другим людям. Мда, не очень-то удобно. А потом я нашел в сети дополнение для работы сразу с календарями Exchange напрямую. Оно отсутствует в магазине дополнений и может быть только установлено из файла (ссылка на гитхаб в конце статьи). При установке дополнения календарь стал работать почти как в Outlook, по крайней мере я смог нормально форвардить встречи как это было мне надо, т.е. без лишних телодвижений.

Ну кому нужны книжки без картинок

Говорила Алиса в произведении Льюиса Кэррола.

И я с ней в некоторой степени согласен. Особенно, если это адресная книга в вашей почте. Пока я пользовался оутлуком, я обычно проверял кому я отправляю почту по изображениям адресата, которые там показывались во всплывающем тултипе при наведении на адрес. Сразу из коробки в громоптице нет возможности показывать аватары, но в магазине есть дополнение под названием Awsome LdapShowInfo, которое позволяет добавить эти красивости. В информации к дополнению указано, что изображение берется из пары атрибутов в ldap директории (которая используется как адресная книга в настройках thunderbird), но у меня он упорно выводил сообщение no ldap server available.

Будь проклят тот день когда я сел за баранку этого пылесоса!

Для выяснения почему он это выводит пришлось опять залезать в код (я скачал репозиторий с гитхаба автора). Если работаешь с опенсорсом, то в этом есть и свои плюсы тоже. Причина оказалась в принципе простая, но об этом можно было и написать в инструкции по настройке. При попытке получения фотографии адресата дополнение проверяет, что почтовый домен адреса совпадает с доменом ldap сервера в адресной книге (а у меня там было прописано по ип), либо что он совпадает с логическим именем ldap директории. Я исправил логическое имя, т.к. адреса ldap каталогов в компании находятся во внутреннем домене и не совпадают с доменом почты.

Но если вы думаете, что исправление настроек дополнения сразу дало мне аватары адресатов, то вы ошибаетесь. Сообщение недоступности сервера пропало, но места под аватары оставались в письмах пустыми. И тут я решил посмотреть, что мне возвращает сервер с адресной книгой. Для работы с ldap в графическом интерфейсе есть Jexplorer (завести LdapAdmin, к которому я привык, через wine мне не удалось, различные статьи на форумах говорили про несовместимость реализации winldap32.dll у вайна с другими windows-приложениями). И что же я увидел — в атрибутах адресной книги, выдаваемой шлюзом DavMail, нет атрибутов с картинками, которые я видел, если просто подключиться к контроллеру домена. Пришлось поменять адресную книгу на прямое подключение в контроллер домена, но при этом и подкорректировать запрос, которым клиент делает запрос поиска адресов (и который используется для репликации адресной книги локально в файл).

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

В хрустальном шаре ты видишь этот мир

После настройки программ на рабочей машине встал вопрос настройки удаленных сеансов.
В силу ограничений офисного файрвола vnc использовать было нельзя т.к. порт 5900 был закрыт, а проверять другие какие доступны было лениво. Коллеги подсказали, что можно использовать xrdp, который работает на стандартом rdp порте и подключаться к нему можно с любого клиента: хоть на windows машинах, хоть на Linux. Но как выяснилось не все так безоблачно. При попытке входа в rdp я видел только черный экран после ввода своих учетных данных в окне авторизации. Каким-то чудом на форуме минта был обнаружен рецепт для исправления этой ситуации, привожу его тут, может кому пригодится тоже (я использую оконный менеджер xfce, поэтому и рецепт соответствующий, можно заменить на любой другой какой вы используете у себя):

echo "env -u SESSION_MANAGER -u DBUS_SESSION_BUS_ADDRESS xfce4-session" > ~/.xsession

При запуске менеджера сессий очищаются 2 переменные окружения, что делает возможность удаленного входа без отключения уже существующих на пк локальных сеансов.

После настройки самого удаленного входа встал вопрос настройки клавиатурных раскладок в удаленных сеансах. Всякий раз мне приходилось их настраивать заново, когда я обнаружил вот этот гайд. Спасибо, 2 чая этому господину. После настройки rdp я до кучи настроил себе еще и sshd и получил возможность пробрасывать иксы прямо с рабочей тачки на домашний пк. В некоторых случаях это удобнее, чем запускать rdp.

Возможно со временем в «похождениях айтишника» добавится еще глав, а пока спасибо за внимание и до новых встреч.

Ссылки:

Автор: Кирилл

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js