É possível usar o Linux Desktop em uma infraestrutura do Windows?

Olá a todos! Em Habré, repetidamente, surgiram perguntas sobre como preparar uma distribuição Linux para entrada no Active Directory, bem como para integração com alguns outros servidores Windows. Ao mesmo tempo, nenhum artigo foi escrito sobre se é necessário fazer isso e se o resultado final valerá o tempo e o esforço gastos.

Por que essa pergunta surgiu? Me pediram para configurar o Linux para pessoas cansadas das atualizações e gula do Windows 10 (especialmente preenchidas com políticas de GPO). Além disso, uma das vantagens incontestáveis ​​do Linux (e até mesmo seus fervorosos oponentes o reconhecem) é sua abertura de graça. Este também é um argumento significativo.

Um usuário comum em uma empresa comum, o computador usa para Word e Excel, um navegador e, em casos raros, funciona com algum aplicativo remoto, por exemplo, via RDP. Um usuário incomum, como um programador inteiro, sem dificuldades significativas, pode solicitar que os administradores encontrem o IDE, Jenkins, git e o que mais os programadores precisam lá? Mensageiros, cuja falta no Linux no próximo artigo se queixa, o Linux está em toda abundância possível. Skype, Viber, ICQ, mesmo um cliente bloqueado na Federação Russa, totalmente disponível em sites oficiais, são perfeitamente suportados e totalmente idênticos na interface do usuário com clientes projetados para Windows.

Então, você analisa os requisitos dos usuários para o sistema, os compara com os recursos do Linux e acha que vantagens sólidas e as economias são claramente visíveis. Por que, então, existem objeções a uma idéia tão bonita como transferir um usuário do Windows para o Linux? Apenas maus hábitos?

Não sou um usuário legal de sistemas operacionais abertos, mas quero compartilhar uma experiência prática mínima que obtive (ao transferir usuários do Windows para o Linux).

Espero sinceramente que usuários experientes Habra nada mão que diga-me onde minhas ações poderiam ser melhoradas e onde, talvez, refaça novamente.

Afinal, pode ser que eu não veja armadilhas conhecidas por camaradas mais velhos e mais experientes; ficarei sinceramente grato se for apontado para tais problemas por um usuário comum. Espero sinceramente que as informações apresentadas por mim sejam reproduzíveis.

Preparando um Repositório Local


O Linux (pelo menos o Ubuntu), como o Windows, suporta totalmente a instalação local / em rede. Seria possível omitir esta etapa, pois o linux também é perfeitamente instalado da Internet. Mas, como na instalação do sistema, a tarefa é repetida com frequência, tentaremos automatizá-lo e, para evitar problemas desnecessários com um repositório externo que não controlamos, prepararemos uma máquina virtual com um repositório local no qual os arquivos de instalação do sistema, o arquivo de resposta, (e, ao mesmo tempo, todo o software necessário, bem como atualizações futuras).

Os arquivos de instalação e todos os softwares adicionais, para a versão LTS do Ubuntu 20.04 Focal Fossa, ocupam aproximadamente 80 GB.

Como SO de uma máquina virtual - usei o Ubuntu Server 20.04Esta é uma versão estável que será totalmente suportada até 2025.

Após a conclusão da instalação, defina um nome amigável para o nosso computador

sudo nano /etc/hostname  
#      ,
#   

Instale o pacote para clonagem de repositório

sudo apt install apt-mirror 

sudo nano /etc/apt/mirror.list 
#   

/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

Quero observar que essa configuração mostra a capacidade de controlar o número de fluxos e a velocidade de download de arquivos ao clonar um repositório, além de demonstrar a capacidade de clonar repositórios externos que não pertencem à Canonical. Por exemplo, o Google Chrome.

Além disso, vale ressaltar que, além da configuração, é necessário registrar o ramo main / debian-installer, embora seja um filho do ramo principal. Não era óbvio para mim, não achei que isso estivesse escrito antes e, inicialmente, não consegui entenda qual é o problema.

sudo apt-mirror 
#   (,   >= 80 Gb) 

Você precisa executar o comando sudo apt-mirror, por exemplo, semanalmente, para atualizar nosso repositório - o “servidor” para atualizar os computadores clientes.

Um exemplo de configuração da atualização automática de um repositório com um registro de logs de atualização

sudo nano /etc/crontab
30 02     * * 0   admin      /usr/bin/apt-mirror > /path/to/your.log
#   02:30
#        #https://crontab.guru/examples.html

Instalando um servidor Web (para distribuir arquivos para nossos futuros clientes)


sudo apt install apache2  
ln –s /repo/mirror/archive.ubuntu.com/ /var/www/html/ubuntu 
#(       )
sudo systemctl restart apache2 
# ( -).

Para verificar se tudo saiu como planejado, você deve tentar fazer login no nosso ip através de um navegador. Como resultado, devemos ver os arquivos do repositório.

Instale o tftpd para instalar o ubuntu através de uma rede


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 

Descompacte e copie recursivamente todos os arquivos de biblioteca .c32 encontrados do syslinux para / tftpboot de qualquer maneira conveniente para você, além de criar pastas pxelinux.cfg e pasta / linft em / tftpboot

/tftpboot/pxelinux.cfg, haverá um menu do carregador de inicialização (arquivo denominado padrão)

padrão

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


Os seguintes arquivos devem estar localizados em / tftpboot / linux:

arquivo de resposta ubuntu2.cfg, initrd.gz loader, arquivo do kernel do linux

Abaixo está um exemplo de um arquivo preseed (arquivo de resposta).

Pode ser complementado indefinidamente, mas com a configuração proposta, sem pressionar uma única tecla, o sistema é totalmente instalado automaticamente. (É verdade, devo admitir que o usuário e sua senha se destinam ao arquivo de resposta, para que o sistema seja instalado protegido por senha

ubuntu2.cfg

https://github.com/drumit/ubuntu_config/blob/master/ubuntu2.cfg

O kernel e o carregador de inicialização foram obtidos neste endereço:

archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/20101020ubuntu614/legacy-images/netboot/ubuntu-installer/amd64

O arquivo de resposta permite selecionar automaticamente o idioma do sistema, o idioma da instalação sistema, defina a partição e formatação necessárias do disco e até defina os hashes de senha para o gerenciador de inicialização e o administrador local (no momento da instalação - o único usuário do PC).

Com o DHCP pré-configurado (opções 66 e 67), incluindo o arquivo de inicialização e o endereço IP do servidor tftp após carregar e selecionar a linha “Install Ubuntu 20.04”. Todo o resto será feito sem a nossa intervenção. (O sistema instalará cerca de 25 a 30 minutos).

Após inserir o login e a senha, na grande maioria dos casos, o sistema estará completamente pronto para trabalhar com documentos, fotos, arquivos de áudio e vídeo, a Internet, sem nenhuma dificuldade.

A instalação leva cerca de 25 a 30 minutos. e roda completamente automaticamente. Isso é suficiente para o usuário médio.

Mas estamos falando do trabalho do Ubuntu em um ambiente corporativo, o que significa que falaremos sobre integração com o Active Directory, Exchange, DFS, etc. Talvez em algum lugar na maneira de encontrar interação com esses serviços haja problemas? Talvez algo do acima já tenha sido feito de errado nesta fase? Na próxima parte do artigo, escreverei sobre minha maneira de integrar um sistema Linux em uma infraestrutura corporativa do Windows.

Para gerenciar e configurar computadores remotos, é necessário instalar um sistema de gerenciamento de configuração Ansible em um "servidor" com um repositório

Instale e configure o Ansible (para instalação e administração automáticas do Ubuntu)


sudo apt install ansible
sudo nano /etc/ansible/hosts 
#  ,       ,   hostname.   IP
# ,     ,   ,    hostname  IP .

Depois de preencher o arquivo de inventário, devemos conectar a máquina cliente ao servidor.
ssh-keyhen (no servidor, criamos um par de chaves públicas / privadas)

d /home/localadm/.ssh/
ssh-copy-id localadm@192.168.*.*
#        (,   #    

Para verificar o sucesso das configurações, insira o comando

ansible  all –m ping   

Se virmos uma resposta do PC cliente, nossas configurações estão corretas.

Após verificar com êxito as configurações, você precisa executar o script para reinstalar os pacotes necessários e inserir o PC no domínio.

As funções geralmente são criadas no Ansible para controlar o comportamento de um computador, mas como temos uma tarefa trivial de simplesmente instalar, desinstalar, configurar e inserir um computador Ubuntu em um domínio, usaremos um script simples (na terminologia do manual do Ansible).

Antes de iniciar um manual, é extremamente importante criptografar o login e a senha com os quais entraremos no computador no domínio; idealmente, essa deve ser uma conta de serviço e deve ser criptografada com o conjunto.

ansible-vault encrypt playbook3.yaml
#(   ).

Para executar o script depois de trazê-lo para o formulário de trabalho:

1. ansible-playbook playbook3.yaml –ask-vault-pass
2.      
3.    

Quando você executa o script, o computador deve ser reiniciado várias vezes. Após reiniciar o script manualmente a partir do servidor, após reiniciar o cliente, o script continuará a execução a partir do momento em que parou (após indexar as etapas anteriores). A ação do script (junto com as reinicializações) não levará mais que 10 minutos.

Aqui está o script:

playbook3.yaml

https://github.com/drumit/ubuntu_config/blob/master/playbook3.yaml


Script ansible refere-se a vários scripts adicionais que configuram kerberos, sssd, samba e alguns outros arquivos importantes

krb5.conf.j2

https://github.com/drumit/ubuntu_config/commits/master/krb5.conf

sssd.conf.j2

https://github.com/drumit/ubuntu_config/blob/master/sssd.conf.j2


samba.conf.j2

https://github.com/drumit/ubuntu_config/blob/master/samba.conf.j2


nsswitch.conf.j2
  
https://github.com/drumit/ubuntu_config/blob/master/nsswitch.conf.j2


common-auth.j2

https://github.com/drumit/ubuntu_config/blob/master/common-auth.j2

common-account.j2

https://github.com/drumit/ubuntu_config/blob/master/common-account.j2

common-password.j2

https://github.com/drumit/ubuntu_config/blob/master/common-password.j2

common-session.j2

https://github.com/drumit/ubuntu_config/blob/master/common-session.j2

common-session-noninteractive.j2

https://github.com/drumit/ubuntu_config/blob/master/common-session-noninteractive.j2


PS: Eu perdi a oportunidade de escrever acima sobre o maravilhoso produto Evolution que, juntamente com o plug-in Evolution-ews, interage com sucesso através do protocolo EWS com o servidor Excgange, "fornecendo" não apenas emails, mas também interagindo perfeitamente com o calendário.

Separadamente, observo que todas as configurações mencionadas acima são feitas uma vez. A instalação e configuração completas do sistema não levam mais de 1 hora.

Então, por que o Linux é ruim e é adequado para o usuário médio? E para o usuário em um ambiente corporativo?

All Articles