Linux Basics
Distributionen
- Fedora Workstation
- schön, neu, für experimentierfreudige Nutzer
- extrem reduzierte Gnome Shell, nicht Windows-ähnlich
- Virtualisierungssoftware "Boxen" vorinstalliert, beispielsweise für Windows-VM
- moderne Wayland Architektur
- Updates und Store: Gnome Software
- integriert nur patentfreie Software, das erschwert Installation von Codecs, Grafiktreibern usw.
- eine der führenden Distributionen, Hauptsponsor ist Red Hat
- halbjährlich neue Version mit 9 Monaten Support
- verschiedene Editions für Server, Workstation, IoT, Cloud usw. - Ubuntu
- kommerzeiller Hersteller Canonical
- LTS-Versionen alle 2 Jahre, 5 Jahre oder mehr Support
- Ubuntu Pro Abo (für Privat bis 5 PCs kostenlos) bis 10 Jahre Sicherheitsupdates
- setzt vorrangig auf proprietäre 'Snap' Paketverteilung
- Gnome Desktop unter Wayland
- eigenes Softwarecenter: App Center (kein Open Source) zeigt nur Snap (andere Softwareverteilungen nur über Shell)
- RDP Zugriff standardmäßig
- Wireguard mit GUI
- stabil, geht inzwischen viele Sonderwege, dass es oft nicht mehr empfohlen wird - Linux Mint
- einfach, pragmatisch, Windows-ähnlich
- stabil, wartungsarm
- aktualisiert sich jeweils aus Ubuntu LTS, nutzt aber kein SNAP und ergänzt die Distribution mit Codecs, Java usw.
- nutzt die Ubuntu Paketquellen + eine Eigene
- ein zweiter, separater Zweig "Linux Mint Debian Edition" nutzt die original Debian Quellen - ct Distibutionen Auswahlhilfe
Softwareverteilung, Softwarekatalog
- FlatHub/FlatPak
- Flathub ist distributionsübergreifender Standardkatalog (ausser Ubuntu)
Flathub in Ubuntu installieren: https://flathub.org/de/setup/Ubuntu
- enthält Open-Source-Apps und proprietäre Anwendungen wie Discord, Zoom, Spotify
- verteilt immer die aktuellste Version unabhängig von der Linux-Distribution
- jede Runtime enthält alle benötigten Bibliotheken
- Apps sind gekapselt und haben im Idealfall keinen direkten Zugriff auf System oder andere Apps (Sandboxing)
- Berechtigungen werden bei der Installation festgelegt (mit App Flatseal können die Berechtigungen manuell angepasst werden)
- neue und alte Versionen kollidieren nicht
- doppelte Ressourcen werden nur einmal gespeichert (Deduplication), trotzdem ressourcenhungrig und etwas langsamer beim Start - AppImage
- alternatives, distributionsübergreifendes Format, nicht so verbreitet wie FlatHub
- Images enthalten alle benötigten Bibliotheken und können ohne Installation gestartet werden (Ausführen erlauben)
- es können mehrere Versionen des selben Programmes "installiert" sein
- keine automatische Integration in das System
- keine automatischen Updates - Snap
- proprietärer, kommerzieller App-Store von Canonical
- Default für Ubuntu, nutzbar für viele andere Distributionen
- Softwareprojekte wie Firefox, Libre Office.. können die Wartung der Pakete selbst übernehmen
(oft ist Snap aber ungepflegeter als FlatPak)
- verwaltet von Dienst snapd, Kommandozeilenbefehl snap
- technisch vergleichbar mit AppImage oder FlatPak
- es können mehrere Versionen des selben Programmes installiert sein
- gespeichert in /var/lib/snapd/snaps
- Sandbox/Berechtigungen werden mit AppArmor verwaltet - RPM
- klassisches Paketformat von Fedora - klassische DEB Paketverwaltung
- oft für Server verwendet, Zugriff über Repositories der jeweiligen Distribution - fremde Paketquellen (PPA)
- klassisches Repository der jeweiligen Software - ausführbare Binärdatei
- letzte zu wählende Installationsmethode
- keine automatischen Updates
Terminal / Shell / Konsole öffnen mit [STRG] + [ALT] + [T]
Konsole als ROOT dauerhaft öffnen: sudo -i
ROOT-Konsole wieder verlassen: exit
Nur ein Administrator kann 'sudo' ausführen.
User "root" hat unter Ubuntu per Default kein Passwort.
Interaktive Anmeldung als root ist nicht empfohlen.
User (mit Home) erstellen: sudo useradd -m uwe
Passwort festlegen: sudo passwd uwe
User wechseln: su uwe
Falls root ein Passwort hat, zu root wechseln: su (ohne root)
Befehl als 'root' ausführen: sudo touch /etc/test
Befehl als 'benutzer' ausführen: sudo benutzer touch /etc/test (ergibt Fehler)
Konsolenkommandos
Systemupdate
sudo apt(-get) update
sudo apt(-get) upgrade
sudo reboot
sudo apt(-get) -y dist-upgrade
sudo apt(-get) -F install - repariert beschädigte Pakete
sudo pro config set apt_news=false (Werbung für Ubuntu Pro deaktivieren)
sudo do-release-upgrade - Release-Upgrade
Systembereinigung
sudo apt-get autoremove - entfernt veraltete Kernel und Hilfspakete
sudo apt-get autoclean - entfernt veraltete DEB-Dateien aus der Paketquelle /var/cache/apt/archives/
sudo apt-get clean - entfernt alle DEB-Dateien aus der Paketquelle /var/cache/apt/archives/
Allgemein
lsb_release -a - zeigt Ubuntu Version
cat /ect/os-release - zeigt Linux OS Release
ls - wie dir,
ls -sh (zeigt Liste),
ls -l (Langform mit Berechtigungen, Anzahl Dateien im Verzeichnis, 1=Datei, Besitzer, Gruppe, Bytes, Datum, Name),
ls -a (zeigt auch versteckte Files)
man -k <Stichwort> - zeigt alle Befehle zu einem Stichwort
nano (dateiname> - Editor (Kopieren: ALT-6, Einfügen: Strg-U)
pwd - zeigt aktuellen Datei-Pfad
ps -edaf -> listet laufende Prozesse mit ihrer ID
kill (ID) -> beendet Prozess mit ID siehe ps .edaf
top - zeigt Taskmanager (CPU, Speicher, Prozesse)
whoami - zeigt aktuellen Benutzer
tail -f /var/log/*.log - zeigt alle System-Logs
tail -f /var/log/syslog - zeigt Syslog live
crontab -l - listet alle Cronjobs des Benutzers auf
Netzwerk
ifconfig - (wie Windows IPCONFIG) zeigt Namen der Netzwerkkarten und IP-Parameter (apt install net-tools)
ip add - (wie IPConfig)
hostname -I - zeigt nur IP (mit Boardmitteln)
ping [webseite.com]
nslookup [webseite.com]
curl -v [webseite.com] - gibt http-Inhalt und Zertifikat zurück
tcpdump -i eth0 port 443 - gibt Datendump aller Verbindungen von Netzwerkkaqrte und Port (apt install tcpdump)
tcpdump -i eth0 - zeigt allen Traffic auf eth0
sudo nano /etc/netplan/00-installer-config.yaml - IP-Adresse konfigurieren mit Netplan per Terminal
sudo nano /etc/netplan/01-netcfg.yaml (Verzeichis nicht sichtbar!)
Festplatte
df -h - zeigt freien Speicherplatz der Festplatte (disk free)
du -shc * - zeigt alle Verzeichnisgrößen im aktuellen Verzeichnis incl. Summe
lsblk - listet alle Datenträger und Block Storages auf
gparted - Partition Editor, GUI, auch aus Live-System
cd -L <Verzeichnis> - Wechsel in logisches Verzeichnis (Standard)
cd -P <Verzeichnis> - Wechsel in physisches Verzeichnis (Bsp: cd -P /bin, cd -P /home)
cp [Optionen] Quelle Ziel - copy
mv [Optionen] Quelle Ziel - move
rm -r * - löscht aktuelles Verzeichnis incl. Unterverzeichnisse (recursiv)
find / -iname "datei.log" - sucht Datei (groß oder klein geschrieben) in allen Verzeichnissen
Partiton vergrößern:
- physische HD vergrößern
- lsblk - listet aktuelle Struktur
- growpart /dev/sda 3 - (mit Leerzeichen) vergrößert das angegebene Vol. auf die freie Größe (growpart installieren)
- resize2fs -p /dev/sda3 - (ohne Leerzeichen) Dateisystem anpassen
siehe Linux Filesystem
Dateiberechtigungen
cut -d: -f1 /etc/passwd - alle User im System anzeigen
cat /etc/group - alle Gruppen anzeigenid {Benutzer}
- zeigt alle Gruppen eines Benutzers
Ubuntu: Standardmäßig hat ein User im eigenen Home-Verzeichnis Vollzugriff und in anderen User-Verzeichnissen Lesezugriff.
Linux vererbt grundsätzlich nichts.
Rechte rekursiv setzen: chmod -R u+rwX,g+rX,o+rX /verzeichnis (User:rwx, Gruppe: rX, other: rx)
• chown - ändert Besitzer
• chgrp - ändert die Gruppe
• chmod - ändert die Berechtigungen
• chattr - ändert Dateiattribute auf ext - Filesystemen
Zeichen: Directory (d) oder Datei (-)
2.-4. Zeichen: rwx - User (u)
5.-7. Zeichen: rwx - Group (g)
8.-10. Zeichen: rwx - Other (o)
• rwx - read / write / execute-search
Execute bei Ordnern bedeutet: Recht zum Ordner öffnen
• Berchtigung ändern: chmod u=rwx, g=rw, o=r testfile.txt
oder: read=4, write=2, execute=1 -> alle Rechte= 7
ergibt: chmod 754 testfile.txt
• Benutzer + Gruppe ändern:
chown -R www-data:www-data /var/www/wordpress
(weist dem /wordpress -Verzeichnis recursiv(-R) den Besitzer + Gruppe "www-data" zu)
Dateimanager Nautilus mit Root-Rechten nutzen: nautilus-admin installieren
sudo apt-get install nautilus-admin
Nach Neustart gibt es "Als Systemverwalter ausführen" im Kontextmenue.
Terminal-Dateimanager MC (Midnight Commander, ähnlich Norton Commander)
apt install mc - Aufruf mit 'mc' im Terminal
(System)festplatte verschlüsseln
1) Systemverschlüsselung mit Cryptsetup/Luks:
- geht nur, wenn kein Multi-Boot mit anderem OS verwendet wird
- nicht geeignet für Server, die unbeaufsichtigt starten (Passworteingabe erforderlich)
- Systempasswort, ist für alle User gleich
• beim Installationsvorgang: Festplatte löschen und Ubuntu installieren -> Erweiterte Funktionen zur Verschlüsselung der Festplatte
• LVM verwenden
• neue Installation verschlüsseln -> "Sicherheitsschlüssel" wird bei jedem Start verlangt
2) ab Ubuntu 23.10: experimentelle TPM-Unterstützung
• beim Installationsvorgang: Festplatte löschen und Ubuntu installieren -> Erweiterte Funktionen -> Enable Hardware-Backed Full Disk Encryption
• Schlüssel wird im TPM abgelegt und muß nicht bei jedem Boot eingegeben werden (wie Bitlocker)
3) Cryptsetup installieren, HD nachträglich verschlüsseln
• im Festplattenmanager können nun beliebige Festplatten oder USB-Stick verschlüsselt neu formatiert werden
• Schlüssel kann im System-Schlüsselbund/Brieftasche gespeichert werden
SSH-Zugriff aktivieren
• ggf. feste IP einrichten
• sudo systemctl status ssh - läuft SSH?
• sudo apt install openssh-server -> SSH (Server) installieren
• sudo systemctl status ssh -> wie oben, Status überprüfen, hilfreich bei Anmeldefehlern
• sudo systemctl enable ssh -> Dienststart automatisch
• sudo systemctl start ssh -> Dienst manuell starten
• sudo ufw allow ssh -> Firewall für SSh öffnen
• sudo nano /etc/ssh/sshd_config -> sshd_config anpassen
- (LoginGraceTime 200)
- PermitRootLogin yes - erlaube Root-Login
- StrictModes yes
- Port xyz - ggf. eigenen Port definieren
• /etc/init.d/ssh restart -> Dienst neu starten
SSH-Zugriff:
• ssh root@192.168.178.50 (Windows oder Linux)
Linux merkt sich die Fingerprints jeder SSH-Verbindung.
Befindet sich unter einer schon bekannten IP ein neues, unbekanntes Gerät, schlägt die SSH-Verbindung fehl!
Abhilfe: Verzeichnis .ssh enthält 'known_hosts'. In dieser Datei Eintrag mit der o.g. IP-Adresse löschen.
Ubuntu remote bedienen:
Einstellungen -> Freigabe -> Bildschirmfreigabe aktivieren, VNC-Protokoll aktivieren, Fernsteuerung erlauben
Damit die Remote Anmeldung ohne Bestätigung vom Ubuntu-Desktop funktioniert, diese Einstellung ändern.
Achtung! Ubuntu legt für die RDP-Verbindung ein eigenes Passwort fest!
Bug in Ubuntiu 20: das Kennwort ändert sich bei jeder Anmeldung.
Lösung:
XRDP installieren.
apt update apt install xrdp
apt install xorgxrdp
sudo systemctl start xrdp // Start und Eable XRDP-Service sudo systemctl enable xrdp systemctl status xrdp // Check Status sudo ufw allow from any to any port 3389 proto tcp // open Port in Firewall
Wichtig: Die RDP-Anmeldung funktioniert nur, wenn der Nutzer lokal abgemeldet ist!
Teamviewer Host in Shell installieren
- wget https://download.teamviewer.com/download/linux/teamviewer_amd64.deb
- sudo apt install ./teamviewer_amd64. deb
- teamviewer info
- teamviewer passwd xxxgeheimxxx
- teamviewer setup
Verzeichnisstruktur
- bin - Binärdateien, Programme
- dev - Devices (Tastatur, Maus, Festplatte)
- etc - Konfigurationsdateien
- home - vergl. "Users" unter Windows
- lib - Codebibliotheken, die sich andere Programme teilen
- media - für Automounter (USB-Sticks..), Verzeichnisse werden unter Gnome auch auf dem Desktop angezeigt
- mnt - als Mountpoint für HDs
- sbin - Systemdateien
- tmp - Temporäre Dateien
- usr - Programmtools und Bibliotheken
- usr/local - für eigenes Zeug
- usr/local/bin - für eigene, systemweite Scripts
- var - vom System verwendete Dateien
E-Mail / SendMail
Ubuntu hat per Default keinen Mailserver / MTA (Mail Transfer Agent) installiert.
• Unix E-Mail Postausgang Warteschlange: /var/spool/mqueue oder /var/mqueue
• Unix E-Mail Posteingang: /var/spool/mail/ (eine Datei je E-Mail)
- Nullmailer (am Beispiel CheckMK) Benachrichtigungen mit CheckMK 1.6 via E-Mail versenden - YouTube
Log: /var/log/mail.log - SSMTP zum Senden per SMTP Einfache sendmail Konfiguration auf UBUNTU | Gloski Consulting
- SendMail Verwendung und allgemeine Konfiguration von Sendmail unter Linux (linux-praxis.de)
Config: /etc/sendmail.cf
Shortcut erstellen (Programm, Webseite o.a.)
Ubuntu / Snap Installed Pakete
- /var/lib/snapd/desktop/applications/ - enthält die Verknüpfungen aller Snap installierten Pakete (*.desktop)
- /usr/share/applications/ - sonstige Verknüpfungen (*.desktop)
- copy & paste auf Desktop
- Rechtsklick: Start erlauben
- fertig
Ubuntu manuell
- "Name.desktop" Datei auf User-Schreibtisch erstellen
(nano Name.desktop) - Bsp: WEB-Link
[Desktop Entry]
Version=1.0
Name=Testlink Google
Type= Application
Exec=firefox https://www.google.com/search?q=uwe-kernchen.de&ie=UTF-8
Icon=text-html
(oder) Icon=/snap/firefox/current/default256.png - Bsp: Programm
[Desktop Entry] Version=x.y Name=ProgramName Comment=This is my comment Exec=/home/alex/Documents/exec.sh Icon=/home/alex/Pictures/icon.png Terminal=false Type=Application Categories=Utility;Application;
- Dateieigenschaften: Ausführen als Programm (chmod 755)
- Rechtsklick auf Verknüpfung: "Start erlauben"
- Wenn alles passt, wird der Link mit dem im Desktop Entry definierten Name angezeigt, nicht mit "Name.desktop".
- Chrome kann mit "Speichere als Shortcut" selber *.desktop Datei unter "Anwendungen" erstellen
- Lösung2 (Meta Refresh):
- erstelle Name.html auf User-Desktop
- Inhalt:
<html> <head> <meta http-equiv="refresh" content="0; url=https://askubuntu.com" /> </head> <body> </body> </html>
RSYNC
Beispiel:
- kopiert Unterverzeichnisse, Rechte, Zeit, Gruppenrechte, Besitzrechte (bei root), Human readable
- mit Logfile
- mit Status am Ende des Logfiles
- exclude = Ausschluß
- delete = löscht fehlende Dateien am Ziel
rsync -rptgoh -stats (--exclude='Temp/') (--delete) --log-file=logfile.log [Quelle/] [Ziel]
Ubuntu Recovery
- beim Booten SHIFT oder ESC drücken führt zum GRUB Boot-Menue, "Erweiterete Optionen" wählen
(Systemübersicht mit HD-Nutzung, Pakete reparieren, Dateisystem prüfen, Root Shell) - Quellen: https://wiki.ubuntuusers.de/Recovery-Modus/
Multiboot Linux-Windows erzeugt falsche Uhrzeit
• Lösung1: Windows Zeit auf "TimeZoneIsUniversal" setzen "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation", DWORD (32-Bit) Name „RealTimeIsUniversal“ - Wert= 1
• Lösung2: Linux Zeit auf "Lokale Zeit" setzen,
im Terminal: sudo timedatectl set-local-rtc 1 --adjust-system-clock
Systemzeit in Hardware-Uhr übertragen: sudo hwclock -w
Server sicher machen, wichtige Befehle: CT 13/2016 S. 124ff.
- Prozessliste: ps ax | grep -v " \[.*\]"
- Verbindungsliste von außen: lsof -i 4 -n
- Liste aller geöffneten Dateien: lsof +L1
- System Syslog: /var/log/syslog
Siehe auch: