In diesem Artikel habe ich wichtige und nützliche Linux-Kommandos für den täglichen Gebrauch zusammengestellt. Da ich selbst noch regelmäßig neue Befehle lerne, wird dieser Artikel von Zeit zu Zeit aktualisiert und um neue Inhalte ergänzt.

find – Suchen und Finden

Neben locate und whois ist der find-Befehl in Linux wohl die effektivste Methode zum Auffinden von Dateien und Verzeichnissen.

find [Pfad] -type [Option] -name [Name]

Beispiel 1:

sudo find /etc -type f -name pass*

Beispiel 2 – Suchfunktion nach Dateien ab einer bestimmter Größe:

sudo find /var/log -size +250k

Beispiel 3 – Komplexe Suchfunktion, Fehlermeldungen werden nicht angezeigt:

find / -type f -name *.conf -user root -size +20k -newermt 2020-03-03 -exec ls -al {} \; 2>/dev/null

Beispiel 4 – STDOUT & STDERR umleiten:

find /etc/ -name shadow 2>/dev/null 1>results.txt

Im letzten Beispiel werden Fehlermeldungen (STDERR – FD2) der Suche nicht angezeigt, der Standard-Output (STDOUT -FD 1) in die Datei „results.txt“ geschrieben.

lsusb – Befehl

Der Befehl lsusb ist hilfreich, um sich Informationen über die USB-Busse und daran angeschlossene Geräte anzeigen zu lassen. Das Kommando ist vor allem dann nützlich, wenn man neue USB-Geräte anschließt und prüfen möchte, ob diese vom System erkannt werden. Bei vielen Linuxdistributionen wie Kali ist das USB-Utils Packet bereits installiert. Sollte es nicht vorhanden sein, kann es sehr einfach über die Packetverwaltung installiert werden: sudo apt install usbutils

lsusb [Option]

Optionen:

-v: Anzeige weiterer Details der USB-Devices die am System angeschlossen sind – z. B. Chipsatz (u. u. wichtig bei WLAN-Adaptern)

-t: Anzeige der physikalischen USB-Devices Hierarchie als Baumstruktur

-s: Option zum Anzeigen von bestimmten Geräten nach Bus und/oder Device-Nummer z. B.: lsusb -s 2:4

setxkbmap

Befehl zum einstellen/verwalten des Tastatur-Layouts.

setxkbmap [Argumente] [Layout [Variante [Option...]]]

free / df – Systeminformationen über Arbeitsspeicher und Festplatte

Mit dem Befehl free kann man Informationen zum Arbeitsspeicher anzeigen, disk free (df) gibt einen Bericht über den verfügbaren Speicherplatz von jeder dem System angehänten Festplatten aus.

free -g

Die Option -m/-g für free zeigen die Dateien entweder in Mega- oder Gigabyte an.

Shebang für ausführbare Python-Scripte:

#!/usr/bin/env python3

Das Python-Skript muss anschließend noch mit chmod +x ausführbar gemacht werden!

Dateien komprimieren:

Um einzelne Dateien zu komprimieren, ist gzip die einfachste Variante. Das Kommando benennt die zu komprimierende Datei gleich um:

gzip somefile

komprimiert die Datei und fügt die Endung .gz [somefile.gz] hinzu! Mit dem Kommando gunzip wird die Datei wieder entpackt bzw. dekomprimiert.

gunzip somefile.gz

Allgemeine Befehle:

  • pwd „print working directory“ aktuelles Arbeitsverzeichnis anzeigen
  • cd – „change directory“ Verzeichnis ändern
  • ls -4 „List“ Datei- und Verzeichnisinhalte auflisten
  • tree – listet das aktuelle Verzeichnis in Baumstruktur
  • lsblk – Anzeige der Festplattenpartitionen
  • lsof – Liste (von) geöffneten Dateien
  • clear – Inhalt des Terminalfenster „aufräumen“
  • mkdir – „make directory“ Verzeichnis erstellen
  • rmdir„remove directory“ Verzeichnis löschen
  • mv„move“ Datei oder Verzeichnis verschieben
  • rm – „remove“ Datei löschen
  • rm -r [Ordnername] – löscht den kompletten Ordner inkl. aller Dateien!
  • cp – „Copy“ Datei/Verzeichnis kopieren
  • cat – gibt eine Textdatei aus
  • less – zeigt wie cat eine Textdatei an – eignet sich für größere Dateien.
  • touch – eine leere Datei erstellen: # touch datei.txt
  • whoami – zeigt den aktuellen User an
  • netstat – Anzeige des Netzwerkstatus
  • ip addr – Netzwerkadapter mit den zugeordneten IP-Adressen
  • ip -6 addr – Anzeige der Netzwerkadapter mit den zugeordneten IP6-Adressen
  • iwconfig – Anzeige der Netzwerkschnittstellen
  • lsb_release -a – Anzeige der Linux-Distribution
  • shutdown – Herunterfahren des Systems z. B. shutdown -h 30, shutdown -r now
  • reboot – Neustart des Systems
  • exit – aktuelle SSH-Sitzung wird beenden
  • uname – Betriebssystem anzeigen (uname -r für Linux Distribution, uname -a)
  • python3 -m http.server – Startet einen HTTP-Server auf TCP-Port 8000
  • uptime – wie lange läuft das System ohne Neustart
  • wc -l „word count lines“ zeigt die Anzahl der Zeilen in einer Datei oder einem Ausgabestrom an z. B. wc -l dateiname.txt, wc -l /usr/share/wordlists/rockyou.txt
  • nslookup – mit nslookup lässt sich der Domainname einer IP-Adresse bzw. die IP-Adresse eines Domainnamens ermitteln z. B. nslookup www.wikipedia.org
  • history – listet alle zuletzt aufgeführten Kommandos auf
  • echo – Ausgabe von Text auf dem Bildschirm. Der Auszugebende Text wird dabei als Parameter in übergeben z. B.: echo „Dies ist der echo-Befehl“

Prozesse unter Linux anzeigen und verwalten:

Der Prozessverwaltung in Linux könnte man ein eigenen Beitrag widmen. Hier stelle ich nur die absoluten Grundlagen vor.

  • ps – Anzeige der laufenden Prozesse
  • ps -u [username] – Liste der Prozesse für eine bestimmten User z. B. „ps -u root“

Das Ergebnis von ps kann auch gut mit anderen Kommandos und dem Pipe-Operator „|“ kombiniert werden, z. B.:

  • ps -aux | grep ssh – nach einem bestimmten Prozess suchen (in diesem Fall nach ssh)
  • ps -aux | wc -l – in Kombination mit „word count lines“ wird die Anzahl der Prozesse aufgezeigt
  • pgrep [Prozessname] – zeigt die Job-ID des gesuchten Prozesses an z. B. pgrep firefox
  • pstree („process tree“) – gibt einen Prozessbaum aus. Überblick über Programm und Unterprozesse
  • kill [job-id] – stoppt den Prozess mit der angegebenen Job-ID
  • kill -l – zeigt alle Signale an (z. B. SIGHUP, SIGTERM, SIGKILL, SIGSTOP etc.)
  • pkill –[Signal] [Prozessname] – stoppt den Prozess mit entsprechendem Prozessnamen z. B. pkill -9 firefox
  • htop – startet htop-Tool – grafische Oberfläche für Prozessmanagement in der Konsole/Terminal

Update des Linux-Systems und Pflege:

  • sudo apt update – aktualisieren der Paketlisten des Systems
  • sudo apt upgrade – aktualisierte Softwarepakete werden installieren
  • sudo apt dist-upgrade – umfassende Aktualisierung auf neuere Distributionsversion durchführen
  • sudo apt autoremove – entfernt unbenutzte Abhängigkeiten
  • sudo apt autoclean

SSH-Login über das Terminal:

SSH oder Secure Shell ist ein Protokoll, das verwendet wird, um sich sicher bei entfernten Systemen anzumelden. Dies ist die gebräuchlichste Methode, um auf Remote-Linux-Server zuzugreifen.

Die einfachste Variante ist mittels einer Passwort-Authentifikation über den Standart-Port 22:

ssh [user]@[host] – z. B. $ ssh root@127.0.0.1

Für einen erfolgreiches Login ist der Benutzername [user] sowie das entsprechende Passwort notwendig.

Für den Fall das der SSH-Dienst nicht auf dem Standard-Port 22 erreichbar ist, muss der Port mit der Option -p [Portnummer] angegeben werden.

ssh -p [port] [user]@[host] – z. B. $ ssh -p 2200 root@127.0.0.1

Der SSH-Port kann in der SSH-Konfigurationsdatei einfach geändert werden: /etc/ssh/sshd_config

  • Öffnen der Konfigurationsdatei: $ sudo nano /etc/ssh/sshd_config
  • #‚ in der Zeile ‚# Port‚ entfernen
  • nach Port eine beliebige Portnummer eintragen, z. B. 2200
  • Datei anschließend speichern!
  • SSH Service neu starten: $ sudo systemctl restart sshd

Bei der Änderung der Portnummer sollte man beachten, dass kein Standard-Port eines anderen Dienstes verwendet wird. Eine Übersicht über Standard-Ports und die dazugehörigen Dienste findet man hier!

Nach der Änderung der Portnummer und Neustart des SSH-Services, funktioniert das SSH-Login nur noch mit Angabe der Portnummer.

Hostname für das Linux-System ändern

sudo hostnamectl set-hostname [hostname]

Ein- und Ausgabeumlenkung:

Die Ein- und Ausgabeumlenkung in Linux ermöglicht es Benutzern, die Standard-Eingabe- und -Ausgabequellen zu steuern. Durch den Einsatz von Befehlen wie „>“ für die Ausgabeumlenkung und „<“ für die Eingabeumlenkung kann der Nutzer Daten in Dateien schreiben oder aus Dateien lesen. Diese leistungsstarke Technik ermöglicht effizientes Arbeiten, da sie es erlaubt, Datenströme gezielt zu lenken und komplexe Aufgaben mit minimalem Aufwand zu erledigen.

  1. Data Stream für Eingabe
    • STDIN – 0
  2. Data Stream für Ausgabe
    • STDOUT – 1
  3. Data Stream für Fehlerausgabe
    • STDERR – 2
find /etc/ -name shadow 2>/dev/null

Die Fehlermeldung (STDERR – 2) wird an das Null-Device übergeben. Die Standardausgabe (STDOUT -1) wird angezeigt

find /etc/ -name shadow 2>/dev/null 1>output.txt
cat output.txt

Fehlermeldung (STDERR – 2) wird an das Null-Device übergeben, die Standardausgabe (STDOUT -1) wird in die Datei „output.txt“ geschrieben. Mit dem „cat“-Befehl wird der Inhalt der Datei angezeigt.

Wichtige Systeminformationen anzeigen:

Will man herausfinden, welche Linuxdistribution in einer virtuellen Maschine oder auf einem Server läuft, führt die Ausgabe von os-release mittels cat-Befehl zum Ziel:

cat /etc/os-release

Die Version des laufenden Kernels ermittelt man mit uname:

uname -r

während die Option uname -a (-a steht für all) alle verfügbaren Informationen zur Rechnerarchitektur ausgibt.