Est-il possible d'utiliser Linux Desktop dans une infrastructure Windows?

Bonjour à tous! On Habré a soulevé à plusieurs reprises des questions sur la façon de préparer une distribution Linux pour l'entrée dans Active Directory, ainsi que pour l'intégration avec d'autres serveurs Windows. Dans le même temps, aucun article n'a encore été écrit sur la question de savoir si cela vaut la peine de le faire et si le résultat final vaudra le temps et les efforts consacrés.

Pourquoi cette question s'est-elle posée? On m'a demandé de configurer Linux pour les gars qui sont fatigués des mises à jour et de la gourmandise de Windows 10 (particulièrement rempli de politiques GPO). De plus, l'un des avantages incontestables de Linux (et même ses ardents adversaires le reconnaissent) est son ouverture gratuite. C'est également un argument important.

Un utilisateur régulier dans une entreprise moyenne, l'ordinateur utilise pour Word et Excel, un navigateur, et dans de rares cas, il fonctionne avec une application distante, par exemple via RDP. Un utilisateur inhabituel, comme un programmeur entier, sans difficultés importantes peut demander aux administrateurs de trouver l'IDE requis, Jenkins, git, et de quoi d'autre les programmeurs ont-ils besoin? Messagers, dont l'absence dans Linux dans le prochain article se plaignent, Linux est dans toutes les abondances possibles. Skype, Viber, ICQ, même un client bloqué en Fédération de Russie, entièrement disponible sur les sites officiels, sont parfaitement pris en charge et entièrement identiques dans l'interface utilisateur avec les clients conçus pour Windows.

Donc, vous regardez les exigences des utilisateurs pour le système, les comparez avec les capacités de Linux et vous pensez que les avantages solides, ainsi que les économies sont clairement visibles. Pourquoi, alors, y a-t-il des objections à une si belle idée que de transférer un utilisateur de Windows vers Linux? Juste de mauvaises habitudes?

Je ne suis pas du tout un utilisateur cool de systèmes d'exploitation ouverts, mais je veux partager une expérience pratique minimale que j'ai acquise (lors du transfert d'utilisateurs de Windows vers Linux).

Je souhaite sincèrement que les utilisateurs expérimentés Habra nada main que dites-moi où mes actions pourraient être améliorées, et où, peut-être, recommencer.

Après tout, il se pourrait bien que je ne vois aucun piège connu des camarades plus âgés et plus expérimentés, je serais sincèrement reconnaissant si un utilisateur ordinaire me signalait de tels problèmes. J'espère sincèrement que les informations que je présente sont reproductibles.

Préparation d'un référentiel local


Linux (au moins Ubuntu), comme Windows, prend entièrement en charge l'installation réseau / locale. Il serait possible d'omettre cette étape, car linux est également parfaitement installé depuis Internet. Mais étant donné que l'installation du système, la tâche est souvent répétée, nous essaierons de l'automatiser, et afin d'éviter des problèmes inutiles avec un référentiel externe que nous ne contrôlons pas, nous préparerons une machine virtuelle avec un référentiel local sur lequel les fichiers d'installation du système, le fichier de réponses, (et en même temps, tous les logiciels dont nous avons besoin, ainsi que les futures mises à jour).

Les fichiers d'installation et tous les logiciels supplémentaires, pour la version LTS d'Ubuntu 20.04 Focal Fossa, occupent environ 80 Go.

En tant qu'OS pour une machine virtuelle - j'ai utilisé Ubuntu Server 20.04Il s'agit d'une version stable qui sera entièrement prise en charge jusqu'en 2025.

Une fois l'installation terminée, définissez un nom convivial pour notre ordinateur

sudo nano /etc/hostname  
#      ,
#   

Installer le package pour le clonage du référentiel

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

Je tiens à noter que dans cette configuration, la capacité de contrôler le nombre de flux et la vitesse de téléchargement des fichiers lors du clonage d'un référentiel est affichée, ainsi que la possibilité de cloner des référentiels externes qui n'appartiennent pas à Canonical est démontré. Par exemple, Google Chrome.

De plus, il est à noter qu'en plus de la configuration, il est nécessaire d'enregistrer la branche principale / debian-installer, bien qu'elle soit une enfant de la branche principale. Ce n'était pas évident pour moi, je ne l'ai pas trouvée écrite plus tôt, et au début je ne pouvais pas comprendre quel est le problème.

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

Vous devez exécuter la commande sudo apt-mirror, par exemple, chaque semaine, pour mettre à jour notre référentiel - le «serveur» pour la mise à jour des ordinateurs clients.

Un exemple de configuration de la mise à jour automatique d'un référentiel avec un enregistrement des journaux de mise à jour

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

Installer un serveur web (pour distribuer des fichiers à nos futurs clients)


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

Pour vérifier que tout s'est déroulé comme prévu, vous devez essayer de vous connecter à notre ip via un navigateur. En conséquence, nous devrions voir les fichiers du référentiel.

Installer tftpd pour installer Ubuntu sur un réseau


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 

Décompressez et copiez récursivement tous les fichiers de bibliothèque .c32 trouvés de syslinux vers / tftpboot de la manière qui vous convient, et créez également des dossiers pxelinux.cfg et un dossier linux dans / tftpboot

/tftpboot/pxelinux.cfg, il y aura un menu du chargeur de démarrage (fichier nommé par défaut)

défaut

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


Les fichiers suivants doivent se trouver dans / tftpboot / linux:

fichier de réponse ubuntu2.cfg, chargeur initrd.gz, fichier de noyau linux

Voici un exemple de fichier prédéfini (fichier de réponse).

Il peut être complété indéfiniment, mais avec le réglage proposé, sans une seule touche, le système est installé automatiquement. (Vrai, je dois admettre que l'utilisateur et son mot de passe sont prévus dans le fichier de réponses, donc le système sera installé protégé par mot de passe

ubuntu2.cfg

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

Le noyau et le chargeur de démarrage ont été obtenus à cette adresse:

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

Le fichier de réponses vous permet de sélectionner automatiquement la langue du système, la langue d'installation système, définissez la partition et le formatage requis du disque, et même définissez les hachages de mot de passe pour le chargeur de démarrage et l'administrateur local (au moment de l'installation - le seul utilisateur du PC).

Avec DHCP pré-configuré (options 66 et 67) qui inclut le fichier de démarrage et l'adresse IP du serveur tftp après le téléchargement et la sélection de la ligne «Installer Ubuntu 20.04», tout le reste se fera sans notre intervention. (Le système va installer environ 25-30 minutes).

Après avoir entré le login et le mot de passe, dans la grande majorité des cas, le système sera complètement prêt à fonctionner avec des documents, des images, des fichiers audio et vidéo, Internet, sans aucune difficulté.

L'installation prend environ 25-30 minutes. et fonctionne complètement automatiquement. C'est suffisant pour l'utilisateur moyen.

Mais nous parlons du travail d'Ubuntu dans un environnement d'entreprise, ce qui signifie que nous parlerons de l'intégration avec Active Directory, Exchange, DFS, etc. Peut-être que quelque part dans la manière de trouver une interaction avec ces services, il y aura des problèmes? Peut-être que quelque chose de ce qui précède est déjà mal fait à ce stade? Dans la prochaine partie de l'article, j'écrirai sur ma façon d'intégrer un système Linux dans une infrastructure Windows d'entreprise.

Pour gérer et configurer des ordinateurs distants, il est nécessaire d'installer un système de gestion de configuration Ansible sur un «serveur» avec un référentiel

Installer et configurer Ansible (pour l'installation et l'administration automatiques d'Ubuntu)


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

Après avoir rempli le fichier d'inventaire, nous devons connecter la machine cliente au serveur.
ssh-keyhen (créer une paire de clés privée / publique sur le serveur)

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

Pour vérifier le succès des paramètres, entrez la commande.

ansible  all –m ping   

Si nous voyons une réponse du PC client, nos paramètres sont corrects.

Après avoir vérifié avec succès les paramètres, vous devez exécuter le script pour réinstaller les packages nécessaires et entrer le PC dans le domaine.

Les rôles sont généralement créés dans Ansible pour contrôler le comportement d'un ordinateur, mais comme nous avons une tâche triviale pour simplement installer, désinstaller, configurer et entrer un ordinateur Ubuntu dans un domaine, nous utiliserons un script simple (dans la terminologie du playbook Ansible).

Avant de commencer un playbook, il est extrêmement important de crypter le login et le mot de passe sous lesquels nous entrerons l'ordinateur dans le domaine, idéalement ce devrait être un compte de service, et il devrait être crypté avec l'ensemble.

ansible-vault encrypt playbook3.yaml
#(   ).

Pour exécuter le script après l'avoir mis en forme de travail:

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

Lorsque vous exécutez le script, l'ordinateur doit être redémarré plusieurs fois. Après avoir redémarré le script manuellement depuis le serveur, après avoir redémarré le client, le script continuera son exécution à partir du moment où il s'est arrêté (après l'indexation des étapes précédentes). L'action de script (avec les redémarrages) ne prendra pas plus de 10 minutes.

Voici le script:

playbook3.yaml

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


Le script ansible fait référence à plusieurs scripts supplémentaires configurant kerberos, sssd, samba et certains autres fichiers importants

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 J'ai raté l'occasion d'écrire ci-dessus sur le merveilleux produit Evolution qui, avec le plug-in Evolution-ews, interagit avec succès via le protocole EWS avec le serveur Excgange, "donnant" non seulement du courrier, mais aussi une interaction parfaite avec le calendrier.

Séparément, je note que tous les réglages mentionnés ci-dessus sont effectués 1 fois. Ensuite, l'installation et la configuration complètes du système ne prennent pas plus d'une heure.

Alors pourquoi Linux est-il mauvais et convient-il à l'utilisateur moyen? Et pour l'utilisateur dans un environnement d'entreprise?

All Articles