Berufsschule Dresden der AFBB gGmbH
Zusatzqualifikation LINUX
Einwöchiger Kurs für Fachinformatiker im 1. Ausbildungsjahr

Schulungsunterlagen
Dieses Dokument/Repository wurde mit mdBook erstellt.
Das Material ist unter der Creative Commons Lizenz CC BY 4.0 veröffentlicht und darf gerne für andere Zwecke angepasst und geteilt werden.
Linux in der Ausbildung
geplante Praxisprojekte
In der Ausbildung verwendete/benötige Software auf Clients
Ich empfehle keine Produkte (GUIs) auswendig zu lernen, sondern besser Konzepte (Protokolle) zu verstehen.
Mir ist gleich, welche Software von Schülern zum Lösen der Anforderungen in Praxisprojekten verwendet werden. Nutzt gerne, womit ihr euch auskennt und wohlfühlt.
Die folgenden Empfehlungen sind Tools, die in Nerdkreisen gerne eingesetzt werden. Wir werden diese Software auf der Schulinfrastruktur bereitstellen:
LF | Software | Beschreibung |
---|---|---|
LF1, LF12 | GanttProject | Gantt chart for small and medium businesses. Local-first, works offline on Windows, macOS and Linux. |
LF3, LF9 | ipcalc | assisting in network calculations |
LF3, LF4, LF9, LF11b | jNetMap | jNetMap helps you to keep an eye on your network. You can draw a graphical representation of your network, and jNetMap will periodically check if the devices are still up or a service is still running. |
LF3, LF9, LF11b | Wireshark, (tcpdump) | Network protocol analyzer |
LF3-LF12 | ping, traceroute/tracepath, dig, curl | basic network debugging utils |
LF7, LF8, LF10, LF11, LF12 | Git | distributed version control system |
LF7, LF8, LF10 | Python | script programming language |
LF7, LF8, LF10 | IPython | powerfull python repl |
LF7, LF8, LF10 | Spyder IDE | Python IDE that scientists and data analysts and Python-students deserve |
LF7, LF8, LF10 | pipenv | pip + venv „for humans“ |
LF7 | PlatformIO Core (CLI) | PlatformIO is an IDE for embedded development. Only the pio CLI is required. |
LF7 | Arduino IDE | IDE for Arduino |
ZQ Linux, LF4, LF9, LF3-LF12 | SSH-Client (OpenSSH oder PuTTY) | remote login, shell, desktop and tunneling |
ZQ Linux, LF3-LF12 | Linux oder WSL | |
LF3-LF12 | VirtualBox oder Hyper-V | Virtualization software |
LF10b-LF12b | quickemu oder Windows Sandbox (WSB) | Windows VMs |
LF10b-LF12b | Docker | Containerization |
LF10b-LF12b | Ansible | Tools that enable infrastructure as code (configuration management, software provisioning) and remote configuring |
LF4, LF11b | GPG oder Sequoia PGP | Encryption and Signatures with OpenPGP and S/MIME |
LF4, LF11b | cryptsetup/LUKS oder BitLocker | Full disk encryption |
Empfohlene Services
LF | Thema | Tools | Alternativen | Beschreibung |
---|---|---|---|---|
LF1-LF12 | Documentation | Hedgedoc | mdBook, viele andere | Technische Dokumentation in Markdown kollaborativ erstellen |
LF5, LF8, LF10a, LF11a, LF12 | UML | drawio | Mermaid, mermaid.live | |
LF6-LF12 | distributed version control, issues, bug tracking, task management (kanban), continuous integration, wikis | GitHub | Gitea, GitLab |
Inhaltsverzeichnis
Installation & Hello World
Zeit für Erstkontakt zu Linux
-> Einrichtung gängiger FOSS GUIs
Shell & Netzwerk
Architektur & Sicherheit
- Bootloader und Bootprozess
- Init am Beispiel Systemd
- Live-Systeme, Datenrettung, Hacken
- Verschlüsselung
- Virtualisierung
Entwicklung & Ausblick
- Backups
- Versionskontrolle am Beispiel git
- Skript-Programmierung mit Bash
- Softwareentwicklung
- Eigene Projekte
- Ausblick
Linux-Grundlagen
Linux, Unix & FOSS
Mit freier Software Geld verdienen?
Wo wird Linux verwendet?
Architektur
Linux, Unix & FOSS
Unix
- Betriebssystemfamilie seit 1969
- Vereinheitlichter Standart: POSIX
flowchart TB Unix Unix --> Linux Unix --> BSD Unix --> MacOS["Mac OS"] Unix --> Solaris Unix --> Minix Unix --> andere["…"]
GNU/Linux
- 1989 GPL
- 1991 Linux
- 1992 Linux unter GPL lizensiert
- 1993 Debian GNU/Linux
FOSS










































Mit freier Software Geld verdienen?
Dienstleistungen
- Administration
- Beratung, Schulungen
- Software-Anpassungen
Für Hardwareprodukte
- Embedded
- Smart Devices
- IoT
Als Grundlage für Dienste
- Klassische Webanwendungen
- Software / Platform / Infrastructure as a service (SaaS / PaaS / IaaS)
(Kommerzielle) Software, basierend auf freien Tools
Wo wird Linux verwendet?
Server / Cloud
-
Klassische Webserver (LAMP)
-
Public Cloud Services (Amazon, Google, Microsoft, Alibaba, DigitalOcean, Huawei, IBM, …)
Mobil
- Android (ca 72% Marktanteil)
Embedded / Smart devices / IoT
- Router, NAS
- Smart TVs, Festplattenrekorder, Satellitenreceiver und DVD-Player
- Spielekonsolen (z.B. Steam Deck)
- In-car Entertainment, Navi (z.B. Tesla)
- Heimautomatisierung, Sensornetze, Einplatinencomputer (z.B. Raspberry Pi)
Containervirtualisierung
- Docker, Kubernetes
Desktop
(ca 3% Marktanteil)
Architektur
flowchart TB subgraph Linux-Distribution subgraph Anwendungsoftware sonstiges["Browser, Office, …"] Desktopumgebung Paketmanager end subgraph System[Linux-Systemdienste] subgraph Linux-Kernel Treiber end end end subgraph Hardware end Anwendungsoftware -.- System Treiber --> Hardware
Installation von Linux-Systemen
Welches?
Distributionen
Desktopumgebungen
Paketmanager / Paketquellen
Wie?
Live-Stick erstellen
Partitionierung
Bedienungsanleitung
Treiber
Linux parallel zu Windows / macOS
Entscheidungen für einen Installer
Distribution
flowchart TD Paketmanager{Paketmanager?} Paketmanager -.-> rpm rpm -.-> RHEL([RHEL]) rpm -.-> SUSE([SUSE]) rpm -.-> CentOS([CentOS]) rpm -.-> Fedora([Fedora]) rpm -.-> Mandriva([Mandriva]) Paketmanager ==> deb deb ==> Installation Installation ==> Anwendungsfall{Anwendungsfall?} Anwendungsfall == robust, sicher, frei ==> Server Server ==> Debian([Debian]) Anwendungsfall == benutzerfreundlich ==> Endanwender Endanwender ==> LMDE([LMDE]) Endanwender ==> Mint([Mint]) Anwendungsfall == mit Supportvertrag ==> Kommerziell Kommerziell ==> Ubuntu([Ubuntu]) Anwendungsfall ==> RaspberyPi RaspberyPi ==> Raspbian([Raspbian]) deb ==> Live ==> AnwendungsfallLive{Anwendungsfall?} AnwendungsfallLive ==> alles[von allem etwas] alles ==> Knoppix([Knoppix]) AnwendungsfallLive ==> Security[security tasks] Security ==> Kali([Kali]) AnwendungsfallLive ==> Privacy[paranoid privacy] Privacy ==> Tails([Tails]) Paketmanager --> nix nix --> NixOS([NixOS]) Paketmanager -.-> selber[selber bauen] selber -.-> Arch([Arch]) selber -.-> Gentoo([Gentoo])
Architektur
flowchart TD CPU{CPU-Architektur?} CPU -- 32-bit --> i386 CPU == 64-bit ==> amd64 CPU -.-> armel CPU -.-> armhf CPU -.-> PowerPC CPU -.-> mips CPU -.-> SPARC
Distributionen
Debian
Ubuntu, Mint, LMDE

Knoppix, Kali Linux, Tails
Raspbian / Raspberry Pi OS
NixOS
Red Hat, Arch, Gentoo

Desktopumgebungen
KDE
GNOME
Mate
Cinnamon
LXDE
LXQt
Xfce
…
Live-Stick erstellen
Download eines iso-hybrid
-Images
z.B. debian-live-12.5.0-amd64-mate.iso
auf USB-Stick kopieren
unter Linux / Unix
lsblk ## Nachschauen unter welchem Gerätename der Stick verfügbar ist => /dev/sdX
cp *.iso /dev/sdX
sync
unter Windows
Partitionierung
Trivial (Root + Swap)
pie "Root" : 1024 "Swap (> Ram)" : 32
Mit EFI Systempartition
pie "Root" : 102400 "Swap (>Ram)" : 3200 "ESP": 512
Separate /home Partition
pie "Root" : 128 "Swap (>Ram)" : 32 "Home" : 864
Fortgeschritten
- Raid
- Verschlüsselung
Partitionierung
Mit dem grafischen Installer
GParted
parted
Paketquellen
System
->Systemverwaltung
->Synaptic-Paketverwaltung
Einstellungen
->Paketquellen
- Bereich
non-free
nebenmain
hinzufügen Neu laden
/etc/apt/sources.list
Debian GNU/Linux Installation Guide
RTFM!?
Praxis Dr. Tux :)
Hackcenter
Treiber
- Sind im Kernel eincompiliert oder nachladbare Kernel-Module
- Werden für verbreitete Hardware aus den Paketquellen der Distributionen bereitgestellt
Wird meine Hardware von Linux unterstützt?
- Am einfachsten mal mit einem Live-System ausprobieren
- Internetrecherche nach Typenbezeichnung + „Linux“ oder Distributionsname
- meistens: Ja :)
Debugging
lshw
journalctl ## oder dmesg
Typische Probleme
- nicht-freie Firmware muss möglicherweise nachinstalliert werden
- proprietäre Treiber (z.B. für Nvidia-Grafikkarten)
AHCI für Acer TravelMate P214
Problem:
keine Festplatte erkannt
Lösungsweg:
lshw -class storage
journalctl -k | grep -i raid
Lösung:
Festplattencontroler im Bios auf AHCI umstellen
Bios
MAIN
CTRL+S
SATA Mode
=AHCI
Wifi firmware
Problem:
kein Wlan-Netzwerk-Interface
Lösungsweg:
lshw -class network
journalctl -k | grep -i wifi
GUI Lösung:
System
->Systemverwaltung
->Synaptic-Paketverwaltung
- Bereich
non-free
hinzufügenSuche
-> firmware wifi ->firmware-iwlwifi
->Anwenden
Shell Lösung:
sudo apt install firmware-iwlwifi
sudo rmmod iwlwifi && sudo modprobe iwlwifi
Mehrere Betriebssysteme auf einem Rechner
Live-Systeme
-
optional mit Persistenz
-
Alternative: Installation auf USB-Stick
WSL
Virtuelle Machinen
- z.B. mit VirtualBox
Multiboot
- Bitte vorher Backups machen ;)
Administration auf der Kommandozeile
Warum?
Grundlagen
--help
, man
nano
, vim
, emacs
su
, sudo
Hilfe
man $BEFEHL
man man
$BEFEHL --help
Verzeichnisse listen / wechseln
pwd
ls
ls -l ## listing
ls -lh ## listing --human-readable
ls -a ## --all
cd $VERZEICHNIS
cd - ## zurück ins vorherige Verzeichnis
cd ## In das $HOME Verzeichnis
Editoren
nano $DATEI
vim $DATEI
# :q!
vimtutor
Sudo
sudo $BEFEHL
Aufgaben
- Welche Verzeichnisse und Dateien liegen im $HOME Verzeichnis?
- Lege eine Datei mit dem Namen „Notizen.txt“ auf dem Desktop / Schreibtisch an.
-
Welchem Nutzer gehört die Datei
/etc/motd
? -
Editiere als Administrator die Datei
/etc/motd
.
Zusatzaufgabe
-
Was macht
/etc/motd
? (man motd
)-
Versuche es aus. (
sudo login
)
-
Versuche es aus. (
-
Installiere die vollständige Version von Vim (
sudo apt install vim
)-
Starte
vimtutor
und finde wieder heraus.
-
Starte
Paketverwaltung
apt
, apt-file
, dpkg
/etc/apt/sources.list
apt
apt update
apt upgrade
apt search $PAKET
apt show $PAKET
apt install $PAKET
apt remove $PAKET
apt-file
apt-file update
apt-file search $FILE
dpkg
dpkg -i $DATEI.deb ## --install
Aufgaben
-
Installiere die Pakete
figlet
,cmatrix
undsl
.- Probiere sie aus.
Zusatzaufgaben
-
In welchem Paketen sind
cowthink
undcacademo
?- Installiere sie.
- Installiere alle verfügbaren updates.
Benutzer und Berechtigungen verwalten
Einführung: Rechte unter Unix / Linux
ls -l
-rw-r--r-- benutzer gruppe … dateiname
drwxr-xr-x benutzer gruppe … ordnername
directory benutzer gruppe andere- rw- r-- r--d rwx r-x r-x
Nutzer
whoami
, id
sudo
, su
adduser
passwd
/etc/passwd
, /etc/shadow
whoami
id
sudo whoami
su
whoami
exit
su $BENUTZER
whoami
adduser $BENUTZER
cat /etc/passwd
cat /etc/shadow
passwd
su
passwd
passwd $BENUTZER
Gruppen
addgroup
, adduser
/etc/group
addgroup $GRUPPE
adduser $BENUTZER $GRUPPE
cat /etc/group
Aufgaben
- Erstelle einen Benutzer mit dem Name „beispiel“.
-
Werde zum Benutzer „beispiel“.
-
Was passiert, wenn der Benutzer „beispiel“ versucht
sudo
zu verwenden?
-
Was passiert, wenn der Benutzer „beispiel“ versucht
-
Füge den Benutzer „beispiel“ zur Gruppe „sudo“ hinzu.
-
Was passiert jetzt, wenn der Benutzer „beispiel“ versucht
sudo
zu verwenden?
-
Was passiert jetzt, wenn der Benutzer „beispiel“ versucht
Zusatzaufgaben
- Liste alle Benutzer, die zur Gruppe „sudo“ gehören.
-
Wie könnte der Befehl lauten, mit dem man einem Benutzer eine Gruppenzugehörigkeit entfernt?
- Findest du die zugehörige manpage?
- Teste den Befehl und prüfe, dass er erfolgreich war.
Dateiberechtigungen
ls -l
, chmod
, chown
echo 'hallo welt' > /tmp/public
ls -l /tmp/public
sudo chown $BENUTZER /tmp/public
ls -l /tmp/public
sudo chmod g+w /tmp/public
ls -l /tmp/public
sudo chown $BENUTZER.$GRUPPE /tmp/public
ls -l /tmp/public
chmod o+w /tmp/public
ls -l /tmp/public
Aufgaben
- Wer darf wessen Ordner in /home lesen?
- Ändere die Rechte deines $HOME Ordners, so dass kein unprivilegierter Nutzer darin lesen kann.
Zusatzaufgaben
- Füge dich zu einer neuen Gruppe „motd“ hinzu, die /etc/motd verändern darf.
-
Welche Möglichkeiten gibt es, um trotz der Lösung aus 2. auf das geschützte Home-Verzeichnis zuzugreifen?
- Wie kann man sich davor schützen?
Unix-Philosophie
„Alles ist eine Datei“
/dev
ls /dev
cat /dev/input/mice*
cat /dev/input/event*
/proc und /sys
cat /proc/cpuinfo
cat /proc/meminfo
zcat /proc/config.gz
cat /sys/class/backlight/intel_backlight/brightness
cat /sys/class/backlight/intel_backlight/max_brightness
echo 1000 > /sys/class/backlight/intel_backlight/brightness
GPIO @RaspberryPi
echo 1 > /sys/class/gpio/gpio17/value
/etc
Verarbeiten von Dateien
|
, >
, >>
cat
, head
, tail
, less
, tee
sort
, uniq
, wc
Pipes, stdin, stdout, stderr
$PROGRAMM1 | $PROGRAMM2
$PROGRAMM > $DATEI
$PROGRAMM >> $DATEI
Dateien ausgeben und verarbeiten
cat $DATEI
cat $DATEI1 $DATEI2
less $DATEI
# q
head $DATEI
tail $DATEI
head $DATEI -n 1 ## --lines
tail $DATEI -n 1 ## --lines
$PROGRAMM | head
$PROGRAMM | tail
grep $SUCHBEGRIFF $DATEI
grep $SUCHBEGRIFF -r $VERZEICHNIS
$PROGRAMM | grep $SUCHBEGRIFF
$PROGRAMM | grep -v $SUCHBEGRIFF ## --invert-match
$PROGRAMM | grep -i $SUCHBEGRIFF ## --ignore-case
$PROGRAMM | grep --color $SUCHBEGRIFF
$PROGRAMM | grep -A $NUM $SUCHBEGRIFF ## --after-context
$PROGRAMM | grep -B $NUM $SUCHBEGRIFF ## --before-context
$PROGRAMM | grep -C $NUM $SUCHBEGRIFF ## --context
Aufgaben
- In welcher Datei (unterhalb von
/etc
) wird das WLAN-Passwort gespeichert? -
Filter aus
/var/log/dpkg.log
alle Zeilen, die beschreiben, wann welches Paket installiert wurde.- Schreibe das Ergebnis in eine Datei.
- Welche Pakete waren die 10 zuerst installierten?
Zusatzaufgaben
-
Was waren die ersten auf der Kommandozeile eingegebenen Befehle? Verarbeite dafür die Ausgabe von
history
. -
In welche Datei speichert
history
? Findest du die entsprechende Zeile der manpage pergrep
? -
Wann erhielt das System zuletzt eine IP-Adresse per DHCP? Als Administrator kannst du die logs in
/var/log/syslog
oder mit dem Befehljournalctl
finden.
Tools für Fortgeschrittene
$PROGRAMM | sort
$PROGRAMM | sort -n ## --numeric-sort
$PROGRAMM | uniq
$PROGRAMM | sort | uniq
$PROGRAMM | sort | uniq -c ## --count
$PROGRAMM | wc
$PROGRAMM | wc -l ## --lines
cut -d$TRENNZEICHEN -f$INDEX $DATEI
cut -d: -f1 /etc/passwd
$PROGRAMM | tr $VON $NACH
echo Maus | tr M H
$PROGRAMM | sed "s/$SUCHMUSTER/$ERSETZUNG/g"
sed -i "s/$SUCHMUSTER/$ERSETZUNG/g" $DATEI ## --in-place
Aufgaben
-
Welche Nutzer (in
/etc/passwd
) habenbash
als Standartshell? - Berechne eine Liste, in der jede verwendete Standartshells genau genau einmal gelistet wird.
- Wieviele Nutzer nutzen jeweils welche Standartshell?
Zusatzaufgaben
-
Welche der von
history
gelisteten Befehle wurden am häufigsten verwendet? -
journalctl
listet als 5. durch Leerzeichen getrenntes Feld (vor dem Zeichen „[“) die „Unit“, von welcher der Logeintrag kommt. Berechne eine sortierte Liste, welche Unit wie viele Zeilen geloggt hat.
Prozessverwaltung
ps
, pstree
bg
, fg
kill
, pkill
, xkill
htop
, atop
$PROGRAMM
# strg+C
$PROGRAMM
# strg+Z
bg
fg
xkill
$PROGRAMM &
ps
ps aux
kill $PID
kill -9 $PID
htop
# q oder F10
flowchart TB subgraph laufend Vordergrund Hintergrund end * -- "$PROGRAMM" --> Vordergrund * -- "$PROGRAMM &" --> Hintergrund Vordergrund -- bg --> Hintergrund Hintergrund -- fg --> Vordergrund Vordergrund -- "strg+Z" --> pausiert pausiert -- fg --> Vordergrund pausiert -- bg --> Hintergrund pausiert -- kill --> beendet Vordergrund -- "strg+C" --> beendet
echo $$
echo $PPID
pstree
pstree -p ## --show-pids
pstree $USER
pstree $$ -s ## --show-parents
Aufgaben
-
Wie viele Prozesse laufen aktuell?
- Beobachte, wie es sich verändert, wenn Programme geöffnet und geschlossen werden.
- Welche Parentprozesse hat eine geöffnete Shell?
- Beende die grafische Oberfläche von der Kommandozeile
Zusatzaufgabe
-
Von welchen Nutzern werden derzeit Prozesse ausgeführt?
- Wie viele Prozesse laufen für die jeweiligen Nutzer?
Netzwerk-Konfiguration
Siehe
nmtui
ip
, ifconfig
, route
ping
, traceroute
, tracepath
, dig
netstat
, ss
hostname
/etc/systemd/network
(neu)
/etc/network/interfaces
(alt)
/etc/resolv.conf
/etc/hosts
/etc/hostname
Meine Empfehlung für Anfänger: Network-Manager
nmtui
Befehl für Fortgeschrittene und insbesondere zum debuggen
ip
ip link
ip address
ip route
Traditionelle Konfigurationsdateien
Moderne Konfiguration per networkd
-
man systemd.network (de)
SSH
ssh
scp
tmux
ssh $USER@$HOST
cat ~/.ssh/config
man ssh_config
scp $DATEI $USER@$HOST:$PFAD
scp -r $ORDNER $USER@$HOST:$PFAD
scp $USER@$HOST:$DATEI $PFAD
scp -r $USER@$HOST:$ORDNER $PFAD
Aufgabe:
- Kopiere die Datei /home/demo/beispiel vom „Demo-Server“ auf dein lokales Gerät.
Zusatzaufgabe:
-
Finde dem dem Program
file
heraus, was für eine Dateityp die beispiel-Datei hat. -
Öffne die beispiel-Datei von der Kommandozeile mit dem Befehl
xdg-open
. - Öffne die Datei über den grafischen Dateimanager.
Verwalten des Dateisystems, Dateien und Ordner
pwd
, ls
, cd
find
, tree
touch
, rm
mkdir
, rmdir
lsblk
mount
, umount
gparted
, parted
Bootloader und Bootprozess
flowchart LR subgraph ROM BIOS end subgraph Bootloader end BIOS == 1 ==> Bootloader subgraph Arbeitsspeicher Kernel Initrd end Bootloader == 3 ==> Kernel Bootloader -. "2 kopiert" .-> Initrd subgraph FS["/ Dateisystem"] init["/sbin/init"] end Kernel -. "4 mounted" .-> FS Kernel == 5 ==> init
/boot/grub/grub.cfg
menuentry "Titel" {
initrd /boot/kernels/initrd-linux-5.4.70-initrd (2)
linux /boot/kernels/linux-5.4.70 (3) root=/dev/sdX (4) init=/sbin/init (5)
}
Init am Beispiel Systemd
systemctl
, journalctl
systemctl ## list-units
systemctl --failed
systemctl status $UNIT
systemctl enable $UNIT
systemctl disable $UNIT
systemctl start $UNIT
systemctl stop $UNIT
journalctl
journalctl -u $UNIT
journalctl -k
Aufgabe
-
Installiere den
openssh-server
. Starte und aktiviere den Service und kontrolliere den Status.
Zusatzaufgabe
- Schaue dir die Logs der unit ssh an.
Live-Systeme, Datenrettung, Hacken
dd
, ddrescue
init=/bin/bash
/etc/shadow
Hackerethik
Hacking
Was ist Hacken?
Arten von Vulnerabilities / Exploits
flowchart LR subgraph CodeExecution ArbitraryCodeExecution RemoteCodeExecution end subgraph RootAccess PrivilegeEscalation --> Backdoor --> Rootkit end CodeExecution --> PrivilegeEscalation
Hackertools
Das ist Hacken!
Verschlüsselung
flowchart TB Verschlüsselung --> Geräteverschlüsselung Verschlüsselung --> Transportverschlüsselung Transportverschlüsselung --> Punkt-zu-Punkt-Verschlüsselung Transportverschlüsselung --> Ende-zu-Ende-Verschlüsselung
Geräteverschlüsselung
Linux
Windows
Transportverschlüsselung
SSH
VPN (z.B. OpenVPN
Punkt-zu-Punkt-Verschlüsselung
flowchart LR subgraph Punkt-zu-Punkt Client1 <==> Server1 end Server1 <==> Server2 Server2 <==> Client2
SSL / TLS
Ende-zu-Ende-Verschlüsselung
flowchart subgraph Ende-zu-Ende Client1 <== Server1-Server2 ==> Client2 end
PGP / GPG
S/MIME / X.509
Virtualisierung
Qemu / KVM
qemu-kvm -cdrom ~/Downloads/debian-live-12.5.0-amd64-mate.iso -boot d -m 4000
VirtualBox
WSL
Backups
GUI
z.B. Déjà Dup (de)
oder Pika
Shell
duplicity
restic (de)
Versionskontrolle am Beispiel git
git init
git status
git add $FILE
git commit
git log
git config
git clone
git push
git pull
git branch
git checkout
git switch
git merge
git rebase
git cherry-pick
https://ohmygit.org
Server?
- Nicht nötig, aber trivial möglich :)
Grafische Oberflächen
Skript-Programmierung mit Bash
#!/usr/bin/bash
echo "hallo welt"
oder
#!/usr/bin/env bash
echo "hallo welt"
chmod +x $DATEI
Kommentare
# Kommentare sind oft hilfreich :)
Variablen
export VARIABLE="wert"
echo $VARIABLE
besondere Variablen
$1
, $2
, …
$@
, $#
$?
Arithmetische Ausdrücke
echo $((6*7))
echo '1/3' | bc -l
Sub-Shell
echo "Jetzt ist es $(date +%H:%M)"
Kontrollstrukuren
Bedingungen
true && echo "wird ausgeführt, wenn der vorherige Befehl wahr zurück gibt"
## (return value 0)
false || echo "wird ausgeführt, wenn der vorherige Befehl falsch zurück gibt"
## (return value ungleich 0)
if [ $A = $B ]; then
echo "A und B sind gleich."
else
echo "A und B sind ungleich."
fi
test
man test
For-Schleifen
for I in $(seq 10); do
echo $I
done
While-Schleifen
while read LINE; do
echo $LINE
done
Softwareentwicklung
IDEs
Vim, Emacs, …
Kate
Atom
Visual Studio Code
Sprachen
Python
apt install ipython
Java
apt search openjdk
JavaScript / Node.js
apt install yarn
PHP
apt search php
C# / .NET
…an welchen anderen Sprachen besteht Interesse?
Projekte
Raspberry Pi
-
GPIO
- Ampelschaltung
Virtualisierung / Container
- VirtualBox
- qemu / kvm
NAS
-
ssh-server
- scp per Shell und GUI
- ssh-keygen
- ftp
- (nextcloud)
Webserver
-
LAMP (Linux+Apache+Mysql/Mariadb+Php)
- Alternative: Linux+Nginx+Sqlite/Postgres+*
- eigene .html-Dateien schreiben und ausliefern
Nextcloud
- https://wiki.debianforum.de/OwnCloud
- https://computingforgeeks.com/how-to-install-and-configure-nextcloud-on-debian/
Pixelfed
Verschlüsselung
LUKS / cryptsetup
- aus dem Installer
-
für neues Gerät per Shell (
cryptsetup luksFormat
,cryptsetup luksOpen
)
GPG
- per Shell und GUI (Mailclient, z.B. Thunderbird)
Pass (Passwortmanager)
Smartcards
One-Time-Pad
- XOr-Verschlüsselung
Ausblick
LUG DD
C3D2 Hackerspace <<</>>
Datenspuren
Pentaradio
Chemnitzer Linuxtage
media.ccc.de
AI
npx aicmd forkbomb
Quellen & hilfreiche Links
wiki.ubuntuusers.de (de)
de.wikibooks.org/wiki/Linux-Praxisbuch (de)
manpages.debian.org (de)
Debian Installation Guide (en)
LPI Linux Essentials (de)