¿Es posible usar Linux Desktop en una infraestructura de Windows?

¡Hola a todos! On Habré planteó repetidamente preguntas sobre cómo preparar una distribución de Linux para la entrada en Active Directory, así como para la integración con algunos otros servidores de Windows. Al mismo tiempo, todavía no se ha escrito ningún artículo sobre si vale la pena hacer esto, y si el resultado final valdrá el tiempo y el esfuerzo invertido.

¿Por qué surgió esta pregunta? Me pidieron que configurara Linux para los chicos que están cansados ​​de las actualizaciones y la gula de Windows 10 (especialmente llenas de políticas de GPO). Además, una de las ventajas indiscutibles de Linux (e incluso sus ardientes oponentes lo reconocen) es su apertura gratuita. Este también es un argumento significativo.

Un usuario habitual en una empresa promedio, la computadora usa Word y Excel, un navegador, además, en casos excepcionales, funciona con alguna aplicación remota, por ejemplo, a través de RDP. Un usuario inusual, como un programador completo, sin dificultades significativas, puede pedir a los administradores que encuentren el IDE, Jenkins, git y qué más necesitan los programadores allí. Mensajeros, cuya falta en Linux en el próximo artículo se quejan, Linux está en todas las abundancias posibles. Skype, Viber, ICQ, incluso un cliente bloqueado en la Federación de Rusia, totalmente disponible en sitios oficiales, son perfectamente compatibles y totalmente idénticos en la interfaz de usuario con clientes diseñados para Windows.

Por lo tanto, observa los requisitos de los usuarios para el sistema, los compara con las capacidades de Linux y piensa que las ventajas sólidas y los ahorros son claramente visibles. ¿Por qué, entonces, hay alguna objeción a una idea tan hermosa como transferir un usuario de Windows a Linux? ¿Solo malos hábitos?

No soy un usuario genial de los sistemas operativos abiertos, pero quiero compartir una experiencia práctica mínima que obtuve (al transferir usuarios de Windows a Linux).

Espero sinceramente que los usuarios experimentados Habra nada de la mano que dígame dónde podrían mejorarse mis acciones y dónde, tal vez, vuelva a hacerlo.

Después de todo, es muy posible que no vea ningún obstáculo conocido por los camaradas más viejos y más experimentados, estaré sinceramente agradecido si el usuario común me señala tales problemas. Espero sinceramente que la información presentada por mí sea reproducible.

Preparando un repositorio local


Linux (al menos Ubuntu), como Windows, es totalmente compatible con la instalación de red / local. Sería posible omitir este paso, ya que Linux también está perfectamente instalado desde Internet. Pero dado que la instalación del sistema, la tarea a menudo se repite, intentaremos automatizarlo y, para evitar problemas innecesarios con un repositorio externo que no controlamos, prepararemos una máquina virtual con un repositorio local en el que los archivos de instalación del sistema, el archivo de respuesta, (y al mismo tiempo, todo el software que necesitamos, así como futuras actualizaciones).

Los archivos de instalación y todo el software adicional, para la versión LTS de Ubuntu 20.04 Focal Fossa, ocupan aproximadamente 80 GB.

Como sistema operativo para una máquina virtual: utilicé Ubuntu Server 20.04Esta es una versión estable que será totalmente compatible hasta 2025.

Una vez completada la instalación, configure un nombre amigable para nuestra computadora

sudo nano /etc/hostname  
#      ,
#   

Instale el paquete para la clonación del repositorio

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

Quiero señalar que en esta configuración se muestra la capacidad de controlar el número de secuencias y la velocidad de descarga de archivos al clonar un repositorio, y también se demuestra la capacidad de clonar repositorios externos que no pertenecen a Canonical. Por ejemplo, Google Chrome.

Además, es digno de mención que, además de la configuración, es necesario registrar la rama principal / debian-installer, aunque es un elemento secundario de la rama principal. Para mí no era obvio, no encontré que esto se haya escrito antes, y al principio no pude Entiende lo que pasa.

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

Debe ejecutar el comando sudo apt-mirror, por ejemplo, semanalmente, para actualizar nuestro repositorio: el "servidor" para actualizar las computadoras cliente.

Un ejemplo de configuración de actualización automática de un repositorio con un registro de registros de actualización

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

Instalar un servidor web (para distribuir archivos a nuestros futuros clientes)


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

Para verificar que todo salió según lo planeado, debe intentar iniciar sesión en nuestra ip a través de un navegador. Como resultado, deberíamos ver los archivos del repositorio.

Instale tftpd para instalar ubuntu en una red


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 

Descomprima y copie recursivamente todos los archivos de biblioteca .c32 encontrados de syslinux a / tftpboot de la manera que le resulte conveniente, y también cree carpetas pxelinux.cfg y carpeta linux en / tftpboot

/tftpboot/pxelinux.cfg, habrá un menú de cargador de arranque (el archivo se llama predeterminado)

defecto

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


Los siguientes archivos deben ubicarse en / tftpboot / linux:

archivo de respuesta ubuntu2.cfg, cargador de initrd.gz, archivo de kernel de Linux

A continuación se muestra un ejemplo de un archivo preestablecido (archivo de respuesta).

Se puede complementar indefinidamente, pero con la configuración propuesta, sin una sola pulsación de tecla, el sistema se instala de forma totalmente automática. (Es cierto, debo admitir que el usuario y su contraseña están destinados en el archivo de respuesta, por lo que el sistema se instalará protegido con contraseña

ubuntu2.cfg

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

El kernel y el gestor de arranque se obtuvieron en esta dirección:

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

El archivo de respuesta le permite seleccionar automáticamente el idioma del sistema, el idioma de instalación sistema, configure la partición y el formato necesarios del disco, e incluso configure los hashes de contraseña para el gestor de arranque y el administrador local (en el momento de la instalación, el único usuario de PC).

Con DHCP preconfigurado (opciones 66 y 67) que incluyen el archivo de arranque y la dirección IP del servidor tftp después de descargar y seleccionar la línea "Instalar Ubuntu 20.04", todo lo demás se hará sin nuestra intervención. (El sistema instalará unos 25-30 minutos).

Después de ingresar el nombre de usuario y la contraseña, en la gran mayoría de los casos, el sistema estará completamente listo para trabajar con documentos, imágenes, archivos de audio y video, Internet, sin ninguna dificultad.

La instalación tarda unos 25-30 minutos. y se ejecuta de forma completamente automática. Esto es suficiente para el usuario promedio.

Pero estamos hablando del trabajo de Ubuntu en un entorno corporativo, lo que significa que hablaremos sobre la integración con Active Directory, Exchange, DFS, etc. ¿Quizás en algún lugar en el camino de encontrar interacción con estos servicios habrá problemas? ¿Quizás algo de lo anterior ya está mal hecho en esta etapa? En la siguiente parte del artículo escribiré sobre mi forma de integrar un sistema Linux en una infraestructura corporativa de Windows.

Para administrar y configurar computadoras remotas, es necesario instalar un sistema de administración de configuración Ansible en un "servidor" con un repositorio

Instalar y configurar Ansible (para la configuración automática y la administración de Ubuntu)


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

Después de completar el archivo de inventario, debemos conectar la máquina del cliente al servidor.
ssh-keyhen (crea un par de claves privada / pública en el servidor)

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

Para verificar el éxito de la configuración, ingrese el comando.

ansible  all –m ping   

Si vemos una respuesta de la PC cliente, nuestra configuración es correcta.

Después de verificar con éxito la configuración, debe ejecutar el script para reinstalar los paquetes necesarios e ingresar la PC al dominio.

Los roles generalmente se crean en Ansible para controlar el comportamiento de una computadora, pero dado que tenemos una tarea trivial para simplemente instalar, desinstalar, configurar e ingresar una computadora Ubuntu en un dominio, utilizaremos un script simple (en la terminología del libro de jugadas de Ansible).

Antes de comenzar un libro de jugadas, es extremadamente importante encriptar el nombre de usuario y la contraseña bajo los cuales ingresaremos la computadora en el dominio, idealmente esta debería ser una cuenta de servicio, y debería estar encriptada con el conjunto.

ansible-vault encrypt playbook3.yaml
#(   ).

Para ejecutar el script después de llevar el script al formulario de trabajo:

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

Cuando ejecuta el script, la computadora debe reiniciarse varias veces. Después de reiniciar el script manualmente desde el servidor, luego de reiniciar el cliente, el script continuará ejecutándose desde el momento en que se detuvo (después de indexar los pasos anteriores). La acción del script (junto con los reinicios) no tomará más de 10 minutos.

Aquí está el guión:

playbook3.yaml

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


La secuencia de comandos Ansible se refiere a varias secuencias de comandos adicionales que configuran kerberos, sssd, samba y algunos otros archivos 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


PD: Perdí la oportunidad de escribir más arriba sobre el maravilloso producto Evolution que, junto con el complemento Evolution-ews, interactúa con éxito a través del protocolo EWS con el servidor Excgange, "dando" no solo correo, sino también interactuando perfectamente con el calendario.

Por separado, noto que todas las configuraciones mencionadas anteriormente se realizan 1 vez. Luego, la instalación y configuración completas del sistema no toma más de 1 hora.

Entonces, ¿por qué Linux es malo y es adecuado para el usuario promedio? ¿Y para el usuario en un entorno corporativo?

All Articles