Initialer Upload MkDocs ETZ Dokumentation

This commit is contained in:
Torkalis
2025-12-04 07:57:14 +01:00
parent eadfbb4e1f
commit 2bea6f01c0
112 changed files with 21099 additions and 0 deletions

View File

@@ -0,0 +1,133 @@
# Automatisierung mit cron und systemd
Stellen Sie sich vor, Sie betreiben einen Server oder eine Anwendung, die rund um die Uhr laufen muss. Als IT-Meister möchten Sie jederzeit nachvollziehen können, ob Ihr System aktiv ist und wann es zuletzt gestartet wurde. Dafür können Sie zwei klassische Linux-Automatisierungswerkzeuge nutzen:
* **Cronjob:** Führt regelmäßig Aufgaben aus, z.B. jede Minute, jede Stunde oder einmal täglich.
* **systemd-Unit:** Startet Aufgaben beim Systemstart oder zu bestimmten Ereignissen.
Mit diesen Werkzeugen können Sie z.B. eine Datei anlegen oder aktualisieren, um so einen „Herzschlag" (Heartbeat) Ihres Systems zu dokumentieren.
# Cron-Job: Jede Minute eine Datei aktualisieren
> Praxisbeispiel: Heartbeat-File
Sie möchten, dass jede Minute der Zeitstempel einer Datei (/tmp/heartbeat.txt) aktualisiert wird. Das ist nützlich, um zu prüfen, ob Cron und das System laufen.
**So geht's:**
Öffnen Sie die Crontab des aktuellen Benutzers:
```
crontab -e
```
Fügen Sie folgende Zeile hinzu:
```
* * * * * /usr/bin/touch /tmp/heartbeat.txt
```
Jetzt wird jede Minute die Datei /tmp/heartbeat.txt neu angelegt oder ihr Zeitstempel aktualisiert.
\newpage
# Crontab-Syntax erklärt:
| Feld | Bedeutung | Wert im Beispiel | Bedeutung |
| ----------- | --------------- | --------------------------------- | ------------------- |
| Minute | 0-59 | \* | jede Minute |
| Stunde | 0-23 | \* | jede Stunde |
| Tag (Monat) | 1-31 | \* | jeder Tag |
| Monat | 1-12 | \* | jeder Monat |
| Tag (Woche) | 0-7 (0/7 = Son) | \* | jeder Wochentag |
| Befehl | Befehl | /usr/bin/touch /tmp/heartbeat.txt | Was wird ausgeführt |
**Beispiel:**
```
* * * * * /usr/bin/touch /tmp/heartbeat.txt
```
→ Jede Minute wird die Datei angefasst („touched").
**Weitere Beispiele:**
```
0 0 * * * /usr/bin/touch /tmp/midnight.txt
```
*  jeden Tag um Mitternacht
```
1/5 * * * * /usr/bin/touch /tmp/every5min.txt
```
*  alle 5 Minuten beginnend 5 Minuten nach 1 also 6,11,16,...
# systemd-Unit: Datei beim Systemstart aktualisieren
## **Praxisbeispiel: Boot-Marker**
Sie möchten beim Systemstart eine Datei (/tmp/boot.txt) anlegen oder deren Zeitstempel aktualisieren, um den letzten Bootvorgang zu protokollieren.
**So geht's:**
Erstellen Sie eine neue systemd-Service-Datei:
```shellscript
sudo nano /etc/systemd/system/touch-at-boot.service
```
Fügen Sie folgenden Inhalt ein:
```ini
[Unit]
Description=Touch file at boot
[Service]
Type=oneshot
ExecStart=/usr/bin/touch /tmp/boot.txt
[Install]
WantedBy=multi-user.target
```
1. Datei speichern und schließen.
2. Service aktivieren und testen:
```shellscript
sudo systemctl daemon-reload
sudo systemctl enable touch-at-boot.service
sudo systemctl start touch-at-boot.service
```
Nach jedem Neustart wird /tmp/boot.txt aktualisiert.
**systemd-Unit erklärt:**
```ini
[Unit]: Metadaten und Abhängigkeiten
Description: Kurze Beschreibung
[Service]: Was soll gemacht werden?
Type=oneshot: Einmaliger Befehl, kein dauerhafter Prozess der überwacht werden könnte
ExecStart: Der auszuführende Befehl
[Install]: Wann/wo soll der Service gestartet werden?
WantedBy=multi-user.target: Startet beim normalen Systemstart
```
**systemd-Kommandos:**
```shellscript
sudo systemctl start <service> # Service sofort starten
sudo systemctl enable <service> # Service beim Boot aktivieren
sudo systemctl status <service> # Status anzeigen
sudo systemctl stop <service> # Service stoppen
```
**Wann nutze ich was?**
* **Cronjob**: Für wiederkehrende Aufgaben (regelmäßig, z.B. jede Minute, stündlich, täglich)
* **systemd-Unit**: Für Aufgaben beim Systemstart, beim Herunterfahren oder bei bestimmten Ereignissen
[PDF herunterladen](Automatisierung_mit_cron_und_systemd.pdf){ .md-button }

View File

@@ -0,0 +1,78 @@
# Einstieg in Linux-Desktop
## Notieren Sie bei jedem Schritt:
* Welche Menüpunkte oder Symbole Sie verwendet haben.
* Was Ihnen besonders leicht oder schwer gefallen ist.
* Fragen oder Auffälligkeiten, die Ihnen beim Arbeiten begegnen.
## Benutzeroberfläche kennenlernen
* Erkunden Sie die Menüstruktur und das Anwendungsmenü.
* Passen Sie die Taskleiste an (z.B. Position ändern, Plugins wie CPU- oder Temperaturanzeige hinzufügen).
* Nutzen Sie die Systemtray-Symbole (Netzwerk, Bluetooth, Lautstärke).
* Öffnen Sie verschiedene Fenster und probieren Sie das Fenster-Management aus (Minimieren, Maximieren, Schließen, ausrichten am Seitenrand).
* Finden Sie heraus, wie Sie Programme an die Taskleiste oder das Startmenü anheften können.
## Tastatur-Layout und Sprache einstellen
* Öffnen Sie die Systemeinstellungen.
* Stellen Sie das Tastatur-Layout auf Deutsch (oder Ihr gewünschtes Layout) um.
* Passen Sie die Systemsprache an.
## Dateiverwaltung mit USB-Stick
* Stecken Sie Ihren USB-Stick ein und öffnen Sie ihn im Dateimanager.
* Erstellen Sie auf dem USB-Stick einen neuen Ordner mit Ihrem Namen.
* Kopieren Sie eine Datei von der VM auf den USB-Stick und umgekehrt.
* Entfernen Sie den USB-Stick sicher über die grafische Oberfläche.
## Sonderfall etz
> **Wichtiger Hinweis:**
> Damit alle Teilnehmer im Kurs effizient Updates und Software installieren können, wird im Schulungsnetzwerk ein lokaler Paket-Cache (Proxy) verwendet.
> **Diesen Schritt müssen Sie außerhalb der Schulungsstätte (z.B. zu Hause) nicht durchführen!**
So richten Sie den Proxy ein:
1. Öffnen Sie ein Terminal (z.B. über das Startmenü).
2. Geben Sie folgenden Befehl ein (ersetzen Sie ggf. die IP-Adresse, durch die im Kurs verwendete):
```bash
echo 'Acquire::http::Proxy "http://10.10.224.119:3142";' | sudo tee /etc/apt/apt.conf.d/02proxy
```
3. Fahren Sie anschließend wie gewohnt mit Updates und Installationen fort.
## VLC Media Player installieren (grafisch)
* Öffnen Sie den grafischen Paketmanager („Empfohlene Software“ oder „Add/Remove Software“).
* Suchen Sie nach „VLC“.
* Installieren Sie den VLC Media Player.
## System aktualisieren
* Öffnen Sie das grafische Update-Tool („Software Updater“ oder „Update Manager“).
* Starten Sie die Systemaktualisierung und folgen Sie den Anweisungen.
## Weiteren Benutzer anlegen und Rechte vergeben
* Öffnen Sie die Einstellungen für „Benutzer und Gruppen“.
* Erstellen Sie einen neuen Benutzer mit einem selbst gewählten Namen.
* Geben Sie diesem Benutzer Administratorrechte (Mitglied der Gruppe „sudo“ oder „Administratoren“).
## Remote-Zugriff einrichten und testen
* Aktivieren Sie „SSH“ und/oder „VNC“ und „RDP“ für den Fernzugriff. (VNC ist unter Ubuntu nicht mehr nativ vorhanden)
* Testen Sie den Remote-Zugriff auch von einem Windows-PC aus:
* Für SSH: Verwenden Sie z.B. das Programm „PuTTY“.
* Für VNC: Verwenden Sie z.B. „RealVNC Viewer“ (geht auch ohne Registrierung)
* Für RDP: Verwenden Sie Micrsoft Remotedesktopverbindung
* Melden Sie sich mit den Zugangsdaten Ihres Accounts an.
> *Viel Erfolg beim Erkunden und Einrichten Ihres Linux Desktops!*
[PDF herunterladen](Einstieg_in_Linux-Desktop.pdf){ .md-button }

Binary file not shown.

View File

@@ -0,0 +1,143 @@
# Grundlagen der Konsole
### Installation nützlicher Programme
Bevor Sie beginnen, installieren Sie bitte folgende Programme, die Sie im Kurs benötigen:
* nano: Einfache Textbearbeitung im Terminal
* tree: Anzeige von Ordnerstrukturen
* htop: Übersichtliche Systemüberwachung
Führen Sie diesen Befehl im Terminal aus:
```bash
sudo apt update
sudo apt install nano tree htop
```
### Wo befinden Sie sich?
Lassen Sie sich das aktuelle Verzeichnis anzeigen.
```bash
pwd
```
### Wechseln Sie in Ihr Home-Verzeichnis.
Tipp: Das Home-Verzeichnis erreichen Sie mit:
```bash
cd ~
```
### Erstellen Sie im Home-Verzeichnis einen Ordner „projekt".
```bash
mkdir projekt
```
### Erstellen Sie darin zwei Unterordner „dokumente" und „bilder".
```bash
mkdir projekt/dokumente projekt/bilder
```
### Wechseln Sie in den Ordner „projekt".
```bash
cd projekt
```
### Erstellen Sie drei Textdateien: „notizen.txt", „aufgaben.txt", „ideen.txt".
```bash
touch notizen.txt aufgaben.txt ideen.txt
```
### Erstellen Sie zwei Bilddateien (Platzhalter): „bild1.jpg" und „bild2.jpg".
```bash
touch bild1.jpg bild2.jpg
```
### Kopieren Sie „notizen.txt" und „aufgaben.txt" in den Ordner „dokumente".
```bash
cp notizen.txt aufgaben.txt dokumente/
```
### Verschieben Sie „ideen.txt" in den Ordner „dokumente".
```bash
mv ideen.txt dokumente/
```
### Verschieben Sie „bild1.jpg" und „bild2.jpg" in den Ordner „bilder".
```bash
mv bild1.jpg bild2.jpg bilder/
```
### Zeigen Sie die Ordnerstruktur mit „tree" an.
```bash
tree ~/projekt
```
### Öffnen Sie eine der Textdateien mit „nano" und schreiben Sie einen kurzen Text hinein.
```bash
nano dokumente/notizen.txt
```
> Speichern Sie mit Strg+O, beenden Sie mit Strg+X.
### Zeigen Sie Ihre aktuelle IP-Adresse an.
```bash
ip address
```
**oder**
```bash
hostname -I
```
### Überwachen Sie Ihr System mit „htop".
```bash
htop
```
### Zeigen Sie die Speicherauslastung an.
```bash
df -h
```
### Zeigen Sie die Arbeitsspeicher-Auslastung an.
```bash
free -h
```
### 18. Wie finden Sie Hilfe zu einem Befehl?
```bash
man <Befehl>
```
Beispiel:
```bash
man ls
```
**Zusatzaufgabe:****Erstellen Sie eine weitere Datei im Ordner „dokumente" und verschieben Sie diese anschließend in den Ordner „bilder". Zeigen Sie danach erneut die Struktur mit tree an.**
> Viel Erfolg beim Erkunden der Linux-Befehle und beim Organisieren Ihrer Dateien!
[PDF herunterladen](Grundlagen_der_Konsole.pdf){ .md-button }

Binary file not shown.

View File

@@ -0,0 +1,304 @@
# Windows-Freigabe mit Samba
Samba ist die Linux-Variante um SMB-Verbindungen zu Windows, Linux und OS X (macOS) herzustellen. Hierfür wird ein Serverdienst installiert und über eine übersichtliche Konfigurationsdatei entsprechend den Anforderungen eingestellt. Es existieren zwar auch Möglichkeiten diese Freigaben über GUI-Programme oder Webinterfaces zu konfigurieren allerdings sind deren Funktionsumfang meist auf Basis-Funktionen beschränkt. Samba bietet eine Überprüfungsmöglichkeit der Konfigurationsdatei, um Schreibfehler und deren Konsequenzen übersichtlich darzustellen.
## Installation
Für die Installation empfiehlt sich die Shell da hierüber sinnvoll beobachtet werden kann welche weiteren Abhängigkeiten installiert werden.
### Shell-Installation
Update der Paketdatenbank und der installierten Pakete
```bash
sudo apt update && sudo apt-get upgrade -y
```
Installation des Samba-Dienstes
```bash
sudo apt install samba
```
Nach der Installation des Dienstes kann dieser über die Konfigurationsdatei /etc/samba/smb.conf bearbeitet werden. Die von Ubuntu vorkonfigurierte Version ist nahezu vollständig selbsterklärend und mit entsprechenden Beispielen versehen.
## smb.conf
```ini
[global]
workgroup = WORKGROUP
```
Hier wird die Arbeitsgruppe bzw. die Domäne, in der der Samba-Server
betrieben werden soll definiert.
```ini
server string = %h server (Samba, Ubuntu)
```
Die Beschreibung des Servers (mouse-over) wobei für %h für der hostname
des Servers eingesetzt wird.
```ini
wins support = no
wins server = w.x.y.z
```
Kann geändert werden zu
```ini
wins support = yes
# wins server = w.x.y.z
```
Damit übernimmt der Samba-Server die [WINS](https://de.wikipedia.org/wiki/Windows_Internet_Naming_Service)-Aufgaben.
**In einem Netzwerk sollte immer nur ein WINS-Server aktiv laufen.**
```ini
dns proxy = no
```
Bei der Grundkonfiguration no wird kein DNS-Server für die Namensauflösung genutzt sondern nur die lokalen host Dateien, WINS-Server und Broadcasts. Wenn ein funktionierender DNS-Server im Netzwerk vorhanden ist kann dieser durch den Einsatz von yes ebenfalls genutzt werden.
```ini
interfaces = 127.0.0.0/8 eth0
bind interfaces only = yes
```
Hier kann konfiguriert werden ob der Samba-Server auf einer, mehreren oder allen Netzwerkkarten und IP-Adressen verfügbar ist. Wenn Sie hier nichts verändern ist der Server Grundsätzlich auf allen Netzwerkkarten und Subnetzen erreichbar.
```ini
server role =
```
standalone server: Die einfachste Variante, nur User die per smbpasswd hinzugefügt wurden können auf den Samba-Server zugreifen.
member server: Der Server ist Mitglied einer Domäne und hat ein Maschinenkonto auf dem ADDC an welchen auch die Benutzeranfragen weitergegegeben werden.
classic primary domain controller: Samba agiert als NT4 PDC
classic backup domain controller : Samba ist ein sekundärer NT4 DC
active directory domain controller: Samba agiert als ADDC und übernimmt die gesamte Benutzerauthentifizierung. Diese Einstellung sollte nicht von Hand genutzt werden da hierfür ein Provisionierungsscript genutzt wird.
```
map to guest = bad user
```
Was passiert mit unbekannten Nutzern.
## Freigaben
Freigaben werden je nach Funktionalität unterschiedlich beschrieben wobei es auch besondere Freigaben gibt, welche z.B. Drucker, Clientspezifisch oder Userspezifische Freigaben betreffen.
## Beispiel einer freien Freigabe z.B. Medienfreigabe im Privatbereich
```ini
[Musik]
comment = Musikfreigabe
path = /srv/samba/musik
read only = no
browseable = yes
```
Nach dem Speichern überprüfen Sie ob alle Funktionen, die sie definiert
haben korrekt übernommen werden konnten:
```bash
sudo samba-tool testparm
```
Sie werden feststellen, dass die Option browseable nicht angezeigt wird. Dies liegt daran, dass diese Kombination browseable = yes ein defaultwert ist und somit nicht angezeigt wird.
Damit diese Freigabe auch funktioniert, muss Sie auch auf dem System vorhanden sein, sowie die korrekte Rechtevergabe erfolgt sein.
```bash
sudo mkdir /srv/samba
sudo mkdir /srv/samba/musik
sudo chmod -R a+rw /srv/samba/musik
```
nach Abschluss dieser Aktion muss der Samba-Dienst und der NetBIOS-Nameserver neu gestartet werden.
```bash
sudo systemctl restart smbd.service nmbd.service
```
Alle vor der Installation von Samba vorhandenen User sind nicht in der Samba-Datenbank hinterlegt und müssen nachgepflegt werden. Hierbei geben sie ihren Usernamen und ihr Passwort erneut ein. Spätere Änderungen werden synchronisiert.
```bash
sudo smbpasswd -a USERNAME
```
Nun können Sie von einem beliebigen Client auf diese Freigabe zugreifen:
Windows:
Explorer öffnen und in der Adresszeile:
```
\\IP des Servers\Musik
```
eingeben oder direkt ein Netzlaufwerk verbinden
Linux und OSX:
Im Dateimanager in die Adresszeile:
```
smb://IP des Servers/Musik
```
## Beispiel eingeschränkte Freigabe z.B. Unterlagen für bestimmten Personenkreis.
Im Vorfeld solcher Freigaben müssen die betreffenden Benutzer zum einen auf dem System vorhanden sein und auch noch ergänzend in Samba bekannt gemacht werden. Dazu legen wir nun 2 neue Nutzer an, um später nachvollziehen zu können wer was darf. Dazu als Beispiel Hans Wurst aus der Produktion und Peter Lustig aus der Verwaltung.
Im folgenden werden Zugriffsgruppen definiert welche es ermöglichen die Lese- und Schreibrechte sauber Granuliert darzustellen:
| | Lesen&#xA;Angebote | Schreiben&#xA;Angebote | Lesen&#xA;Lieferscheine | Schreiben&#xA;Lieferscheine |
| ------------ | ------------------ | ---------------------- | ----------------------- | --------------------------- |
| Hans Wurst | X | | | X |
| Peter Lustig | | X | | X |
```bash
sudo adduser hwurst
sudo adduser plustig
sudo addgroup angebote_l
sudo addgroup angebote_ae
sudo addgrouo lieferscheine_l
sudo addgroup lieferscheine_ae
sudo usermod -aG angebote_l hwurst
sudo usermod -aG lieferscheine_ae hwurst
sudo usermod -aG angebote_ae plustig
sudo usermod -aG lieferscheine_ae plustig
```
Bekanntgabe an Samba:
```bash
sudo smbpasswd -a hwurst
sudo smbpasswd -a plustig
```
Erstellen der Verzeichnisse:
```bash
sudo mkdir /srv/samba/angebote
sudo mkdir /srv/samba/lieferscheine
sudo chown -R nobody:angebote_ae /srv/samba/angebote
sudo chown -R nobody:lieferscheine_ae /srv/samba/lieferscheine
sudo chmod -R 0077 /srv/samba/angebote
sudo chmod -R 0077 /srv/samba/lieferscheine
sudo nano /etc/samba/smb.conf
```
```ini
[Angebote]
comment = Angebote an Kunden
path = /srv/samba/angebote
guest ok = no
browseable = yes
readonly = yes
valid users = @angebote_l, @angebote_ae
write list = @angebote_ae
force create mode = 0775
force directory mask = 0775
force group = angebote_ae
[Lieferscheine]
copy = Angebote
comment = Lieferscheine von Lieferanten
path = /srv/samba/lieferscheine
valid users = @lieferscheine_l, @lieferscheine_ae
write list = @lieferscheine_ae
force group = lieferscheine_ae
```
## Userverzeichnis
> Jeder User der Zugriffsrechte auf Samba selbst hat kann durch eine spezielle Freigabe automatisch Zugriff auf sein eigenes Home-Verzeichnis erhalten. Diese ist in der Beispielkonfiguration der smb.conf bereits auskommentiert vorhanden und kann schlicht wieder ein kommentiert werden.
```ini
[homes]
comment = Privates Verzeichnis
browseable = no
read only = yes
create mask = 0700
directory mask = 0700
valid users = %S
```
„homes" ist hier nur ein Platzhalter dieser wird automatisch durch den jeweiligen Usernamen ersetzt und auch der Zugriff ist dann nur für diesen User verfügbar.
## Sonderfall Drucker
Für Drucker ist standartmäßig eine Freigabe aktiviert ähnlich wie dies auch Windows in einem Heimnetzwerk tut. Die Konfiguration können Sie der Beispielkonfiguration der smb.conf entnehmen es sind 2 Freigaben notwendig, um ALLE Drucker freizugeben.
```ini
[printers]
comment = Alle Drucker
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700
```
Damit werden Alle Drucker, die am System eingerichtet sind mit jeweils einem eigenen Eintrag freigegeben.
```ini
[print$]
comment = Drucker Treiber
path /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
```
Hier sucht Windows nach Druckertreibern. Die Treiber müssen entweder über andere Wege in dieses Verzeichnis gelegt werden oder es kann auch ein write list Eintrag hinzugefügt werden.
## Netzwerkpapierkorb
Auf einem Netzlaufwerk gelöschte Dateien können schnell mal verloren gehen, dafür lässt sich ein Netzwerkpapierkorb einsetzen. Entweder unter global für alle Freigaben oder pro Freigabe einmal einsetzen.
```ini
# Virtuelles File System "recycle" wird angelegt
vfs object = recycle
# Der Pfad zum Papierkorb relativ zur Freigabe (".recyclebin" ist
Default).
recycle:repository = .recyclebin
# Im Papierkorb bleiben Pfad-Angaben erhalten.
recycle:keeptree = Yes
# Beim Verschieben wird der Zeitstempel angepasst.
recycle:touch = Yes
# Gleichnamige Dateien werden nicht überschrieben.
recycle:versions = Yes
# Keine Begrenzung der Dateigröße pro gelöschter Datei.
recycle:maxsize = 0
```
Und wer leert den? Durch Cron wird jeden Tag der Papierkorb durchsucht
und alles, was älter als 14 Tage ist gelöscht.
```bash
sudo crontab -e
```
In einer Zeile:
```
0 12 * * * for path in $(grep path /etc/samba/smb.conf | cut -d= -f2 | sed -e 's/ //' -e 's/\%S/*/'); do if ; then find ${path}/.recycle -mindepth 1 -mtime +14 -exec rm -rf {} \;; fi; done
```
Was steht da nun drin:
Jeden Tag um 0:12 soll in der smb.conf nach Pfad-Angaben gesucht werden und innerhalb dieser die Pfade „.recycle" nach Dateien durchsucht werden die älter als 14 Tage sind. Diese werden gelöscht.
[PDF herunterladen](Windows-Freigabe_mit_Samba.pdf){ .md-button }

Binary file not shown.