Ist es möglich, Linux Desktop in einer Windows-Infrastruktur zu verwenden?

Hallo alle zusammen! On Habré stellte wiederholt Fragen zur Vorbereitung einer Linux-Distribution für die Eingabe in Active Directory sowie für die Integration in einige andere Windows-Server. Gleichzeitig wurde noch kein Artikel darüber geschrieben, ob es sich überhaupt lohnt, dies zu tun, und ob das Endergebnis die aufgewendete Zeit und Mühe wert ist.

Warum ist diese Frage aufgetaucht? Ich wurde gebeten, Linux für Leute zu konfigurieren, die die Updates und die Völlerei von Windows 10 satt haben (insbesondere mit GPO-Richtlinien gefüllt). Darüber hinaus ist einer der unbestreitbaren Vorteile von Linux (und selbst seine leidenschaftlichen Gegner erkennen es) seine freie Offenheit . Dies ist auch ein wichtiges Argument.

Als normaler Benutzer in einem durchschnittlichen Unternehmen verwendet der Computer für Word und Excel einen Browser. In seltenen Fällen funktioniert er mit einigen Remoteanwendungen, z. B. über RDP. Ein ungewöhnlicher Benutzer wie ein ganzer Programmierer kann Administratoren ohne nennenswerte Schwierigkeiten bitten, die erforderliche IDE, Jenkins, git und was benötigen Programmierer sonst noch dort zu finden? Messenger, deren Mangel sich unter Linux im nächsten Artikel beschweren, Linux gibt es in jeder möglichen Fülle. Skype, Viber, ICQ und sogar ein in der Russischen Föderation blockierter Client, der auf offiziellen Websites vollständig verfügbar ist, werden in der Benutzeroberfläche perfekt unterstützt und sind mit den für Windows entwickelten Clients vollständig identisch.

Sie betrachten also die Anforderungen der Benutzer an das System, vergleichen sie mit den Funktionen von Linux und sind der Meinung, dass solide Vorteile sowie die Einsparungen deutlich sichtbar sind. Warum gibt es dann Einwände gegen eine so schöne Idee wie die Übertragung eines Benutzers von Windows auf Linux? Nur schlechte Gewohnheiten?

Ich bin überhaupt kein cooler Benutzer offener Betriebssysteme, aber ich möchte einige minimale praktische Erfahrungen teilen, die ich gesammelt habe (beim Übertragen von Benutzern von Windows auf Linux).

Ich hoffe aufrichtig, dass erfahrene Benutzer Habra nada das geben Sagen Sie mir, wo meine Aktionen verbessert werden könnten und wo Sie sie vielleicht noch einmal wiederholen könnten.

Schließlich kann es durchaus sein, dass ich keine Fallstricke sehe, die älteren und erfahreneren Kameraden bekannt sind. Ich bin aufrichtig dankbar, wenn ich von einem normalen Benutzer auf solche Probleme hingewiesen werde. Ich hoffe aufrichtig, dass die von mir präsentierten Informationen reproduzierbar sind.

Vorbereiten eines lokalen Repositorys


Linux (zumindest Ubuntu) unterstützt wie Windows die Netzwerk- / lokale Installation vollständig. Dieser Schritt könnte weggelassen werden, da Linux auch perfekt aus dem Internet installiert ist. Da die Installation des Systems jedoch häufig wiederholt wird, werden wir versuchen, sie zu automatisieren. Um unnötige Probleme mit einem externen Repository zu vermeiden, das wir nicht steuern, bereiten wir eine virtuelle Maschine mit einem lokalen Repository vor, auf dem die Installationsdateien des Systems, die Antwortdatei, (und gleichzeitig die gesamte Software, die wir benötigen, sowie zukünftige Updates).

Installationsdateien und die gesamte zusätzliche Software für die LTS-Version von Ubuntu 20.04 Focal Fossa belegen ca. 80 GB.

Als Betriebssystem für eine virtuelle Maschine habe ich Ubuntu Server 20.04 verwendetDies ist eine stabile Version, die bis 2025 vollständig unterstützt wird.

Legen Sie nach Abschluss der Installation einen benutzerfreundlichen Namen für unseren Computer fest

sudo nano /etc/hostname  
#      ,
#   

Installieren Sie das Paket zum Klonen des Repositorys

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

Ich möchte darauf hinweisen, dass diese Konfiguration die Fähigkeit zeigt, die Anzahl der Streams und die Geschwindigkeit des Herunterladens von Dateien beim Klonen eines Repositorys zu steuern, und auch die Fähigkeit demonstriert, externe Repositorys zu klonen, die nicht zu Canonical gehören. Zum Beispiel Google Chrome.

Es ist auch bemerkenswert, dass zusätzlich zur Konfiguration der Haupt- / Debian-Installer-Zweig registriert werden muss, obwohl er ein Kind des Hauptzweigs ist. Es war mir nicht klar, dass ich nicht festgestellt habe, dass dies zuvor geschrieben wurde, und ich konnte es zunächst nicht Verstehe, was los ist.

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

Sie müssen den Befehl sudo apt-mirror ausführen, z. B. wöchentlich, um unser Repository zu aktualisieren - den „Server“ zum Aktualisieren von Clientcomputern.

Ein Beispiel für das Einrichten der automatischen Aktualisierung eines Repositorys mit einem Datensatz von Aktualisierungsprotokollen

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

Installation eines Webservers (zum Verteilen von Dateien an unsere zukünftigen Kunden)


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

Um zu überprüfen, ob alles wie geplant verlaufen ist, müssen Sie versuchen, sich über einen Browser bei unserer IP anzumelden. Als Ergebnis sollten wir die Repository-Dateien sehen.

Installieren Sie tftpd, um Ubuntu über ein Netzwerk zu installieren


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 

Entpacken Sie alle gefundenen .c32- Bibliotheksdateien und kopieren Sie sie rekursiv von / sftlinboot nach / tftpboot. Erstellen Sie außerdem die Ordner pxelinux.cfg und / linft in / tftpboot

/tftpboot/pxelinux.cfg. Es wird ein Bootloader-Menü angezeigt (Datei mit dem Namen default).

Standard

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


Die folgenden Dateien sollten sich in / tftpboot / linux befinden:

ubuntu2.cfg-Antwortdatei, initrd.gz-Loader, Linux-Kerneldatei

Nachfolgend finden Sie ein Beispiel für eine vordefinierte Datei (Antwortdatei).

Es kann auf unbestimmte Zeit ergänzt werden, aber mit der vorgeschlagenen Einstellung wird das System ohne einen einzigen Tastendruck vollautomatisch installiert. (Richtig, ich muss zugeben, dass der Benutzer und sein Passwort in der Antwortdatei vorgesehen sind, damit das System passwortgeschützt installiert wird

ubuntu2.cfg

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

Der Kernel und der Bootloader wurden unter folgender Adresse bezogen:

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

In der Antwortdatei können Sie automatisch die Systemsprache und die Installationssprache auswählen Legen Sie die erforderliche Partition und Formatierung der Festplatte fest und legen Sie sogar die Kennwort-Hashes für den Bootloader und den lokalen Administrator fest (zum Zeitpunkt der Installation - der einzige PC-Benutzer).

Mit dem vorkonfigurierten DHCP (Optionen 66 und 67) einschließlich der Startdatei und der IP-Adresse des TFTP-Servers nach dem Laden und Auswählen der Zeile „Ubuntu 20.04 installieren“ wird alles andere ohne unser Eingreifen erledigt. (Das System wird ca. 25-30 Minuten installiert).

Nach Eingabe des Logins und des Passworts ist das System in den allermeisten Fällen vollständig bereit, problemlos mit Dokumenten, Bildern, Audio- und Videodateien sowie dem Internet zu arbeiten.

Die Installation dauert ca. 25-30 Minuten. und läuft vollautomatisch. Dies ist genug für den durchschnittlichen Benutzer.

Wir sprechen jedoch über die Arbeit von Ubuntu in einer Unternehmensumgebung, was bedeutet, dass wir über die Integration in Active Directory, Exchange, DFS usw. sprechen werden. Vielleicht gibt es irgendwo auf dem Weg zur Interaktion mit diesen Diensten Probleme? Vielleicht ist zu diesem Zeitpunkt bereits etwas falsch gemacht? Im nächsten Teil des Artikels werde ich über meine Art der Integration eines Linux-Systems in eine Windows-Unternehmensinfrastruktur schreiben.

Um Remotecomputer zu verwalten und zu konfigurieren, muss ein Ansible-Konfigurationsverwaltungssystem auf einem „Server“ mit einem Repository installiert werden

Ansible installieren und konfigurieren (für die automatische Einrichtung und Verwaltung von Ubuntu)


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

Nach dem Ausfüllen der Inventardatei müssen wir den Client-Computer mit dem Server verbinden.
ssh-keyhen (erstellt ein privates / öffentliches Schlüsselpaar auf dem Server)

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

Geben Sie den Befehl ein, um den Erfolg der Einstellungen zu überprüfen.

ansible  all –m ping   

Wenn wir eine Antwort vom Client-PC sehen, sind unsere Einstellungen korrekt.

Nachdem Sie die Einstellungen erfolgreich überprüft haben, müssen Sie das Skript ausführen, um die erforderlichen Pakete neu zu installieren und den PC in die Domäne einzugeben.

Rollen werden normalerweise in Ansible erstellt, um das Computerverhalten zu steuern. Da wir jedoch eine einfache Aufgabe haben, einen Ubuntu-Computer einfach zu installieren, zu entfernen, zu konfigurieren und in eine Domäne einzugeben, verwenden wir ein einfaches Skript (in der Terminologie des Ansible-Playbooks).

Vor dem Starten eines Playbooks ist es äußerst wichtig, den Login und das Passwort zu verschlüsseln, unter denen der Computer in die Domain eingegeben wird. Idealerweise sollte dies ein Dienstkonto sein und mit dem Ensemble verschlüsselt werden.

ansible-vault encrypt playbook3.yaml
#(   ).

So führen Sie das Skript aus, nachdem Sie das Skript in die Arbeitsform gebracht haben:

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

Wenn Sie das Skript ausführen, muss der Computer mehrmals neu gestartet werden. Nach dem manuellen Neustart des Skripts vom Server und nach dem Neustart des Clients setzt das Skript die Ausführung ab dem Moment fort, in dem es gestoppt wurde (nach Indizierung der vorherigen Schritte). Die Skriptaktion (zusammen mit Neustarts) dauert nicht länger als 10 Minuten.

Hier ist das Skript:

playbook3.yaml

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


Ansible-Skript bezieht sich auf mehrere zusätzliche Skripte, die Kerberos, SSD, Samba und einige andere wichtige Dateien konfigurieren

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 Ich habe die Gelegenheit verpasst, oben über das wunderbare Evolution-Produkt zu schreiben, das zusammen mit dem Evolution-ews-Plug-In erfolgreich über das EWS-Protokoll mit dem Excgange-Server interagiert und nicht nur E-Mails "gibt", sondern auch perfekt mit dem Kalender interagiert.

Unabhängig davon stelle ich fest, dass alle oben genannten Einstellungen einmal vorgenommen werden. Die vollständige Installation und Konfiguration des Systems dauert nicht länger als 1 Stunde.

Warum ist Linux schlecht und für den durchschnittlichen Benutzer geeignet? Und für den Benutzer in einer Unternehmensumgebung?

All Articles