Linux Basics

~ 0 min
2024-11-22 09:38

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 anzeigen
id {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

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)

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:

Durchschnittliche Bewertung 0 (0 Abstimmungen)

Es ist möglich, diese FAQ zu kommentieren.