На Хабре неоднократно поднимались вопросы о том, как подготовить дистрибутив Linux для ввода в Active Directory, а также для интеграции с некоторыми другими серверами Windows. При этом, до сих пор не было написано статьи о том, стоит ли вообще этим заниматься, и будет ли конечный результат стоить потраченных времени и усилий.
Почему возник этот вопрос? Меня попросили настроить Linux для ребят, которые утомились от обновлений и прожорливости Windows 10 (особенно наполненной политиками GPO). Кроме того, одним из неоспоримых плюсов Linux (и его признают даже его ярые противники) является его открытость бесплатность. Это тоже значимый аргумент.
Обычный пользователь в среднестатистической компании, компьютер использует для Word и Excel, браузера, плюс в редких случаях, работает с каким-либо удаленным приложением, например через RDP. Необычный пользователь, типа целого программиста, без значительных сложностей может попросить админов найти требуемую IDE, Jenkins, git, и что там еще нужно программистам? Мессенджеры, на отсутствие которых в Linux в соседней статье жалуются, на Linux находятся во всевозможном изобилии. Skype, Viber, ICQ, даже заблокированный в РФ клиент, полностью в наличии на официальных сайтах, прекрасно поддерживаются и в полной мере идентичны по UI с клиентами предназначенными для Windows.
Итак, смотришь на требования пользователей к системе, сравнишь их с возможностями Linux и думаешь, сплошные плюсы, а еще и экономия четко прослеживается.
Почему же возникают какие-либо возражения к такой прекрасной идее как перевод пользователя с Windows, на Linux? Только лишь вредные привычки?
Я совсем не крутой пользователь открытых операционных систем, но некоторым минимальным практическим опытом который я получил (при переводе пользователей с Windows на Linux) хочу поделиться.
Искренне надеюсь, что опытные пользователи хабра надают по рукам т.е. подскажут, где мои действия можно было бы улучшить, а где, возможно, переделать заново.
Ведь вполне может быть, что я не вижу каких-либо подводных камней, которые известны старшим и более опытным товарищам, буду искренне благодарен, если на такие, проблемы у обычного пользователя мне укажут. Искренне надеюсь, что изложенная мной информация получится воспроизводимой.
Подготовка локального репозитория
Linux (по крайней мере Ubuntu), как и Windows полностью поддерживает сетевую/локальную установку. Вполне можно было бы опустить этот шаг, так как linux прекрасно устанавливается и из интернета. Но учитывая, что установка системы, задача довольно часто повторяемая, мы попытаемся ее автоматизировать, а чтобы избежать ненужных проблем с внешним репозиторием, который мы не контролируем, подготовим виртуальную машину, с локальным репозиторием, на котором будут расположены установочные файлы системы, файл ответов, (а заодно, весь необходимый нам софт, а также будущие обновления).
Файлы установки и все дополнительное ПО, для LTS версии Ubuntu 20.04 Focal Fossa, занимают примерно 80 Гб.
В качестве ОС для виртуальной машины — я использовал Ubuntu Server 20.04 Это стабильный релиз, который будет полностью поддерживаться до 2025 года.
После окончания установки, задаем человеко-понятное имя нашему компьютеру
sudo nano /etc/hostname #печатаем желаемое имя ПК в открывшемся файле, # затем перезагружаем ПК
Устанавливаем пакет для клонирования репозитория
sudo apt install apt-mirror
sudo nano /etc/apt/mirror.list #настраиваем конфигурационный файл зеркала
############# config ################## set base_path /repo set mirror_path $base_path/mirror set skel_path $base_path/skel set var_path $base_path/var set cleanscript $var_path/clean.sh set postmirror_script $var_path/postmirror.sh set run_postmirror 0 set limit_rate 2000000 set nthreads 20 set _tilde 0 ############# end config ############## #------------------------------------------------------------------------------# # OFFICIAL UBUNTU REPOS # #------------------------------------------------------------------------------# ###### Ubuntu Main Repos # 18.04 mirroring deb http://archive.ubuntu.com/ubuntu focal main main/debian-installer restricted universe multiverse deb http://archive.ubuntu.com/ubuntu focal-updates main main/debian-installer restricted universe multiverse deb http://archive.ubuntu.com/ubuntu focal-proposed main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu focal-security main main/debian-installer restricted universe multiverse clean http://archive.ubuntu.com/ubuntu #------------------------------------------------------------------------------# # UNOFFICIAL UBUNTU REPOS # #------------------------------------------------------------------------------# ###### 3rd Party Binary Repos deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main
Хочу отметить, что в этой конфигурации показывается возможность управления количеством потоков и скоростью закачки файлов при клонировании репозитория, а также демонстрируется возможность клонировать внешние репозитории, не принадлежащие Canonical. Например, Google Chrome.
Также, заслуживает внимания, что, дополнительно в конфигурации необходимо прописать ветку main/debian-installer, хотя она и является дочерней по отношению к ветке main, Это не было очевидным для меня, я не нашел чтобы об этом писалось раньше, и поначалу не мог понять в чем дело.
sudo apt-mirror #запускаем настроенный пакет (осторожно, большой объем >= 80 Gb)
Необходимо выполнять команду sudo apt-mirror например, еженедельно, для обновления нашего репозитория — «сервера» обновлений клиентских компов.
Пример настройки автообновления репозитория с записью логов о обновлении
sudo nano /etc/crontab 30 02 * * 0 admin /usr/bin/apt-mirror > /path/to/your.log #каждое воскресенье в 02:30 #Немного подробнее о планировщике можно прочитать по ссылке #https://crontab.guru/examples.html
Установка веб-сервера (для раздачи файлов нашим будущим клиентам).
sudo apt install apache2 ln –s /repo/mirror/archive.ubuntu.com/ /var/www/html/ubuntu #(символическая ссылка на наш репозиторий отправленная в вебсервер) sudo systemctl restart apache2 # (перезапуск веб-сервера).
Для проверки, что все получилось как задумывалось, необходимо попытаться зайти на наш ip через браузер. В результате мы должны увидеть файлы репозитория.
Установка tftpd для установки ubuntu по сети
sudo apt install tftpd-hpa sudo nano /etc/default/tftpd-hpa
# /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/tftpboot" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="--secure -l -v -m /etc/tftpd.remap"
#В свою очередь /etc/tftpd.remap должен содержать следующую строчку rg \\/
sudo mkdir /tftpboot #(создаем директорию в корне) sudo chmod -R 755 /tftpboot cd /tftpboot
#Скачиваем систему syslinux wget https://www.kernel.org/pub/linux/utils/boot/syslinux/4.xx/syslinux-4.07.tar.gz
Разархивируем и рекурсивно копируем все найденные файлы библиотек .c32 из syslinux в /tftpboot любым удобным вам способом, а также создаем в /tftpboot папки pxelinux.cfg и папку linux
В /tftpboot/pxelinux.cfg будет находится меню загрузчика (файл с именем default)
ui vesamenu.c32 ALLOWOPTIONS 0 PROMPT 0 menu title Microsoft SCCM Enterprice Endpoint :-) MENU WIDTH 77 MENU MARGIN 10 MENU PASSWORDMARGIN 3 MENU ROWS 12 MENU TABMSGROW 18 MENU CMDLINEROW 18 MENU ENDROW 24 MENU PASSWORDROW 11 MENU TIMEOUTROW 60 NOESCAPE 0 MENU COLOR SCREEN 44;30 #00FFFFFF #00000000 MENU COLOR BORDER 44;30 #FFFFFFFF #FF000000 MENU COLOR TITLE 1;44;30 #FFFFFFFF #FF000000 MENU COLOR SCROLLBAR 44;30 MENU COLOR HOTKEY 44;30 #FFFFFF00 #FF000000 MENU COLOR UNSEL 44;30 #FFFFFFFF #FF000000 MENU COLOR HOTSEL 1;30 #FFFFFFFF #FF333333 MENU COLOR SEL 7;44;30 #FFFFFF00 #FF333333 MENU COLOR CMDMARK 44;30 MENU COLOR CMDLINE 44;30 MENU COLOR TABMSG 44;30 MENU COLOR DISABLED 44;30 MENU COLOR HELP 44;30 MENU COLOR PWDBORDER 44;30 #FF187CCA #FFFFFFFF MENU COLOR PWDHEADER 1;44;30 #FF187CCA #FFFFFFFF MENU COLOR PWDENTRY 5;44;30 #FF187CCA #FFFFFFFF TIMEOUT 120 LABEL HDD MENU LABEL Boot from first HDD KERNEL chain.c32 APPEND hd0 0 ENDTEXT LABEL TEST MENU LABEL Install Ubuntu 20.04 KERNEL linux/linux IPAPPEND 1 APPEND initrd=linux/initrd.gz url=http://server.local/preseed/ubuntu2.cfg auto=true priority=critical debian-installer/locale=en_US keyboard-configuration/layoutcode=us languagechooser/language-name=en_US countrychooser/shortlist=US localechooser/supported-locales multiselect en_US splash noprompt noshell --- ENDTEXT
В /tftpboot/linux должны находиться следующие файлы:
-файл ответов ubuntu2.cfg, загрузчик initrd.gz, файл ядра linux
Ниже пример preseed файла (файла ответов).
Дополнять его можно бесконечно, но с предложенной настройкой без единого нажатия клавиши система полностью автоматически устанавливается. (правда, должен признаться, что в файле ответов предназначен пользователь и его пароль, таким образом система будет установлена запароленной
https://github.com/drumit/ubuntu_config/blob/master/ubuntu2.cfg
Ядро и загрузчик были получены по этому адресу:
archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/20101020ubuntu614/legacy-images/netboot/ubuntu-installer/amd64
файл ответов позволяет автоматически выбрать язык системы, язык установки системы, задать требуемое разбиение и форматирование диска и даже задать хэши паролей на загрузчик и локального администратора (на момент установки — единственного пользователя ПК).
При предварительно настроенном DHCP (опции 66 и 67) включающих загрузочный файл и IP адрес tftp сервера после загрузки и выбора строчки «Install Ubuntu 20.04» Все остальное будет сделано без нашего вмешательства. (Система будет устанавливаться около 25-30 минут).
После ввода логина и пароля, в подавляющем большинстве случаев система будет полностью готова к работе с документами, картинками, аудио и видео файлами, интернетом, без каких-либо сложностей.
Установка занимает около 25-30 минут. и проходит полностью автоматически.
Для обычного пользователя этого достаточно.
Но мы ведь говорим о работе Ubuntu в корпоративной среде, а значит речь пойдет об интеграции с Active Directory, Exchange, DFS и т.д. Может быть где-то на пути поиска взаимодействия с этими службами возникнут неполадки? Может быть что-то из изложенного выше уже на данном этапе сделано неправильно? В следующей части статьи напишу о моем пути интеграции Linux систему в корпоративную Windows инфраструктуру.
Для управления удаленными компьютерами и их настройки необходимо установить на «сервер» операционную систему с репозиторием систему управления конфигурациями Ansible
Установка и настройка Ansible (для авто настройки и администрирования Ubuntu)
sudo apt install ansible sudo nano /etc/ansible/hosts #это инвентори файл, в нем должны быть все управляемые компьютеры, по их hostname. либо IP #Синтаксис простой, в левой части произвольное имя, для нашего удобства, в правой части hostname или IP адрес.
После заполнения инвентори файла мы должны соединить клиентскую машину с сервером.
ssh-keyhen (на сервере создаем пару приватный/публичный ключ)
сd /home/localadm/.ssh/ ssh-copy-id localadm@192.168.*.* #копируем публичный ключ с сервера на локальный компьютер (Затем, вводим пароль #локального администратора для локального ПК
Для проверки успешности настроек введем команду.
ansible all –m ping
Если мы видим ответ от клиентского ПК наши настройки выполнены верно
После успешной проверки настроек, необходимо запустить скрипт для доустановки необходимых пакетов и введения ПК в домен.
Для управления поведением компьютера в Ansible обычно создаются роли, но так как у нас тривиальная задача просто установить, удалить, настроить и ввести в домен компьютер c Ubuntu воспользуемся простым скриптиком (в терминогогии Ansible плэйбуком).
Прежде чем запустить плэйбук крайне важно зашифровать логин и пароль под которыми мы будем вводить компьютер в домен, в идеале это должна быть сервисная учетная запись, и средствами ансибла она должна быть зашифрована.
ansible-vault encrypt playbook3.yaml #(введите пароль для зашифровки).
Для запуска скрипта после приведения скрипта к рабочему виду:
1. ansible-playbook playbook3.yaml –ask-vault-pass 2. вводим пароль локального администратора удаленного ПК 3. вводим пароль шифрования
При запуске скрипта компьютер несколько раз должен быть перезагружен. После перезапуска скрипта вручную с сервера, после перезагрузки клиента, скрипт продолжит выполнение с того момента, на котором остановился (предварительно проиндексировав предыдущие шаги). Действие скрипта (вместе с перезагрузками) займет не более 10 минут.
Вот этот скрипт
https://github.com/drumit/ubuntu_config/blob/master/playbook3.yaml
Скрипт Ansible ссылается на несколько дополнительных скриптов конфигурирующих kerberos, sssd, samba и еще некоторые важные файлы
https://github.com/drumit/ubuntu_config/commits/master/krb5.conf
https://github.com/drumit/ubuntu_config/blob/master/sssd.conf.j2
https://github.com/drumit/ubuntu_config/blob/master/samba.conf.j2
https://github.com/drumit/ubuntu_config/blob/master/nsswitch.conf.j2
https://github.com/drumit/ubuntu_config/blob/master/common-auth.j2
https://github.com/drumit/ubuntu_config/blob/master/common-account.j2
https://github.com/drumit/ubuntu_config/blob/master/common-password.j2
https://github.com/drumit/ubuntu_config/blob/master/common-session.j2
https://github.com/drumit/ubuntu_config/blob/master/common-session-noninteractive.j2
P.S. Упустил возможность написать выше о замечательном продукте Evolution который совместно с плагином Evolution-ews успешно взаимодействует по протоколу EWS с Excgange сервером, «отдавая» не только почту, но и вполне приемлемо взаимодействуя с календарем.
Отдельно отмечу, что все настройки упомянутые выше делаются 1 раз.
Затем полностью установка и настройка системы занимает не более 1 часа.
Так чем же плох Linux и подходит ли он для обычного пользователя? А для пользователя в корпоративной среде?
ссылка на оригинал статьи https://habr.com/ru/post/503566/
Добавить комментарий