Skip to content

WSL2 (Windows Subsystem for Linux) Installation unter Windows und praktische Konsolenbefehle

Mit Windows 10 2004 wurde die Version 2 von Windows Subsystem for Linux (WSL 2) veröffentlicht.
Diese verbessert die Linux Variante unter Windows weiter, da nun ein echter Linux Kernel verwendet wird.

Installation WSL2

Die Installation von WSL2 ist relativ einfach zu bewerkstelligen, es reichen ein paar Befehle in der Powershell Konsole aus:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart


Danach erscheint die Meldung:

WSL 2 erfordert ein Update der Kernelkomponente. Weitere Informationen finden Sie unter https://aka.ms/wsl2kernel

Diese Installation müsst ihr manuell tätigen, um das Update abzuschließen. In Zukunft möchte Microsoft solche Updates direkt über das Windows Update ausrollen.

Zum Abschluss muss in der Konsole auf die neueste Version umgestellt werden.

wsl.exe --set-default-version 2

Ein Download von Ubuntu oder Kali Linux kann direkt über den Store erfolgen.

Ubuntu-Microsoft_Store

WSL2 Tipps

Es gibt ebenfalls die Möglichkeit Installationen unter verschiedenen WSL Versionen laufen zu lassen

wsl.exe --set-version Distributionsname 2

Infos über die installierten Distributionen lassen sich ebenfalls anzeigen

wsl.exe -l –v

  NAME            STATE           VERSION
  * kali-linux      Stopped         2
    Ubuntu-18.04    Running         2


Wer es bunter mag, der kann auch wslfetch ausführen, dieses funktioniert momentan allerdings nur bei Ubuntu Installationen.

wslfetch

wslfetch

Im Windows Explorer kann das Home Verzeichnis der installierten Systeme mit \\wsl$\ aufgerufen werden.

\\wsl$

wsl-explorerEs lassen sich ebenfalls Installationen exportieren und auf anderen Windows Installationen wieder importieren.

wsl.exe --export Linux ./export.tar

wsl.exe --import Linux Importverzeichnis ./export.tar --version 2 

Eine bestehende Installation lässt sich wie folgt löschen.

wsl.exe --unregister Linuxinstallation

Ausblick

WSL soll in Zukunft weiter ausgebaut werden und beispielsweise NVIDIA CUDA unterstützen.

Auch die Installation soll stark vereinfacht werden, so wird wohl in Zukunft ein einfaches Kommando für Installation und ein Update genügen, wie Bleeping Computer berichtet.

wsl.exe –- install
wsl.exe -- update

 

Ubuntu 20.04 LTS für Windows 10 über Microsoft Store installieren

Diese Woche wurde bekanntlich eine neue Ubuntu LTS Edition veröffentlicht.

Für manche schnelle Teststellungen ist Ubuntu unter Windows eine recht praktische Option. Nun wurde mit Zuge des neuen Ubuntu 20.04, die Windows Variante im Store veröffentlicht.

Installieren lässt sie sich auf die altbekannte Weise:

WSL über die Powershell Konsole aktivieren, Windows Store öffnen und herunterladen.

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

ubuntu20.04-windowsDanach könnt ihr die Ubuntu Konsole direkt über CMD oder Powershell öffnen, dazu muss "wsl" eingegeben werden.

wsl-befehleMit dem Befehl "wsl --list" können die installierten Varianten aufgelistet werden.

Mit "setdefault" kann auf die neue Version gewechselt werden.

wsl -s Ubuntu-20.04

In Place Upgrade auf Ubuntu 20.04 LTS

Wsl unterstützt angeblich ein direktes Update auf die neue Version, dies geschieht mit "do-release-upgrade". Da aber momentan die Update Version 20.04.1 LTS noch nicht verfügbar ist, muss der Parameter "d" angehangen werden.

do-release-upgrade -d

In meiner Teststellung wollte dies nicht sofort gelingen.

Nach einer sauberen Neuinstallation mit "wsl --unregister Ubuntu-18.04" startete die Updateprozedur zumindest.

Der nächste Fehler lies nicht lange auf sich warten.

Progress: [ 61%]
Checking for services that may need to be restarted...
Checking init scripts...
Restarting services possibly affected by the upgrade:
  cron: restarting...done.
  rsync: restarting...done.
  atd: restarting...done.

Services restarted successfully.
sleep: cannot read realtime clock: Invalid argument
dpkg: error processing package libc6:amd64 (--configure):
 installed libc6:amd64 package post-installation script subprocess returned error exit status 1
Exception during pm.DoInstall():  E:Sub-process /usr/bin/dpkg returned an error code (1)

*** Send problem report to the developers?

Abhilfe schaffte hier temporär folgendes:

sudo mv /bin/sleep /bin/sleep_old 
sudo touch /bin/sleep 
sudo chmod +x /bin/sleep
sudo apt --fix-broken install
sudo apt dist-upgrade

Danach wurden allerdings weitere Fehler geworfen, die mit mehrfachen "apt dist-upgrade" gelöst werden konnten.

Schlussendlich war dies ein netter Versuch, aber praktikabel ist das direkte Upgrade nicht unbedingt.

Nun heißt es warten auf WSL2, welches in Windows 10, Version 2004 enthalten sein soll und bereits in den Startlöchern steht.

KeePass oder KeePassX Datenbank Passwort auf Sicherheit testen

Heute will ich mich dem Thema Passwortsicherheit widmen.

Passwörter verwaltet der Kenner nicht nur im Browser oder in der Cloud, sondern im Idealfall lokal.

Unter Windows kommt hier oft KeePass zum Einsatz, unter Ubuntu Desktop häufig KeePassX. Hierbei handelt es sich um Programme zur Kennwortverwaltung.
Beide Tools sichern den Passworttresor mit einem Masterpasswort, welches der Nutzer selbst vergeben kann.

hashcat-keepass-pw

Ich will hier kurz demonstrieren, wie dieses Hauptpasswort auf Sicherheit getestet werden kann. Immerhin enthält es im Normalfall alle eure Zugangsdaten.

KeePass oder KeePassX Passwort knacken ?!

Für das Testen der Passwortsicherheit werden relativ wenige Tools benötigt, eines davon ist Hashcat, welches unter Ubuntu in den Repositories enthalten ist.

Da ich gerade kein funktionales Ubuntu zur Hand habe, sondern unter Windows arbeite, verwende ich einfach das Windows Subsystem for Linux. Dieses kann über die Windows Powershell installiert werden.

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Danach kann Hashcat direkt über die Ubuntu Konsole installiert werden. Da für diesen Test nicht die allerneueste Version benötigt wird, kann die Version aus dem Paketmanager installiert werden.

sudo apt-get install hashcat

Nach der Installation lässt sich prüfen, wie hashcat auf eurem Rechner performed.

sudo hashcat --benchmark

hashcat-keepassSollte es zu Fehler kommen, kann ein weiterer Parameter angehangen werden und ihr erhaltet die erwartete Hashrate zum "Knacken" des Passworts.

sudo hashcat --benchmark --force

Eine leistungsstarke Nvidia Grafikkarte ist von Vorteil.

Nachdem dies erledigt ist, wird der Hash des Masterpassworts der KeePass Datenbank benötigt. Dafür gibt es einige Scripte, ich habe mich für keepass2john.py entschieden.

Da ich den Test unter Windows Wsl mache, platziere ich dieses Script und die dazugehörige KDBX Datenbank unter \\wsl$\Ubuntu-18.04\home\profilname und kann somit über Windows unter Ubuntu darauf zugreifen.

Das Script wird nun wie folgt ausgeführt

python keepass2john.py database.kdbx

Ihr erhaltet einen Hashwert, welcher noch etwas nachbearbeitet werden sollte.

Database:$keepass$*2*60000*222*1fa5e92ef046202f54d3a675466be38fb61cdaff21ab367a170eadf4e8f378ae0ee4c1f175

Der Text hinter Database: "$keepass$*2*60000*222*1fa5e92efa4...." wird nun in eine Textdatei keepass.txt kopiert, um sie weiterverarbeiten zu können.

Im nächsten Schritt kann mit Hashcat quasi das Passwort erraten werden, allerdings muss zunächst die richtige Methode gewählt und eine Wortliste besorgt werden. Hashcat bringt bereits die gängigsten Methoden mit, diese müssen nur angegeben werden.

hashcat --help | grep -i "KeePass"
    13400 | KeePass 1 (AES/Twofish) and KeePass 2 (AES)      | Password Managers

   
Im letzten Schritt wird nun eine Passwortliste benötigt, welche für das "Durchprobieren" von Passwörtern verwendet wird.

wget hxxp://downloads.skullsecurity.org/passwords/rockyou.txt.bz2
bunzip2 rockyou.txt.bz2

Die RockYou Liste ist eine bekannte Liste aus dem Jahr 2009 mit ca. 32 Millionen unverschlüsselten Passwörtern.

hashcat

Der Vorgang kann jetzt endgültig gestartet werden.

Der Startbefehl besteht aus Methode (KeePass) und Angriffsmodus (0 -> Wörterbuch)
 

sudo hashcat --force -a 0 -m 13400 keepass.txt rockyou.txt

    Dictionary cache built:
    * Filename..: rockyou.txt
    * Passwords.: 14344391
    * Bytes.....: 139921497
    * Keyspace..: 14344384
    * Runtime...: 2 secs

    - Device #1: autotuned kernel-accel to 128
    - Device #1: autotuned kernel-loops to 256
    [s]tatus [p]ause [r]esume [b]ypass [c]heckpoint [q]uit => [s]tatus [p]ause [r]esume [b]ypass [c]heckpoint [q]uit =>

Mit der "Taste s" kann jederzeit der aktuelle Status abgerufen werden.

    Session..........: hashcat
    Status...........: Running
    Hash.Type........: KeePass 1 (AES/Twofish) and KeePass 2 (AES)
    Hash.Target......: $keepass$*2*60000*222*1fa5e92efa4e5597faf8204900122...c1f175
    Time.Started.....: Fri Mar 20 12:04:53 2020 (49 secs)
    Time.Estimated...: Sat Mar 21 06:51:14 2020 (18 hours, 45 mins)
    Guess.Base.......: File (rockyou.txt)
    Guess.Queue......: 1/1 (100.00%)
    Speed.Dev.#1.....:      212 H/s (10.04ms)
    Recovered........: 0/1 (0.00%) Digests, 0/1 (0.00%) Salts
    Progress.........: 10240/14344384 (0.07%)
    Rejected.........: 0/10240 (0.00%)
    Restore.Point....: 10240/14344384 (0.07%)
    Candidates.#1....: vivien -> bimbim
    HWMon.Dev.#1.....: N/A

   
Nun heißt es warten, je nach Leistung der CPU oder GPU kann dies dauern. Da aber viele gerade massig Zeit zur Verfügung haben, sollte dies kein Problem sein.

Gerne könnt ihr weitere Methoden ausprobieren oder andere Listen verwenden, da habt ihr freie Wahl. Im Hashcat Wiki findet ihr jede Menge Anleitungen zu dieser Thematik.

Cheat.sh - Linux und Programmiersprachen Cheatsheet für die Kommandozeile

Das klassische Cheatsheet besteht meistens aus einer Sammlung von Befehlen oder Hilfestellungen, die auf einer DIN A4 Seite zusammengefasst werden.
Solche Spickzettel können auf dem Rechner als PDF abgelegt werden oder im Büro ausgedruckt einen Platz an der Wand finden.

Cheat.sh

Cheat.sh geht hier einen anderen Weg und holt den Nutzer da ab wo er ist, auf der Kommandozeile.

Mit dem Tool können via curl einfache Hilfestellungen zu Kommandozeilenbefehlen, Programmiersprachen oder Datenbanken abgerufen werden.
Anders als beispielsweise die man pages, stellt cheat.sh einfache Beispiele zur gesuchten Abfrage dar.

cheatsheet

Zur Nutzung muss das Tool nicht zwingend installiert werden, eine Verbindung zum Internet reicht völlig aus.

Einen Linux Befehl abrufen, hier am Beispiel von tar.

curl cheat.sh/tar

# tar
# Archiving utility.
# Often combined with a compression method, such as gzip or bzip.
# More information: <https://www.gnu.org/software/tar>.

# Create an archive from files:
tar cf target.tar file1 file2 file3

# Create a gzipped archive:
tar czf target.tar.gz file1 file2 file3

# Extract a (compressed) archive into the current directory:
tar xf source.tar[.gz|.bz2|.xz]

# Extract an archive into a target directory:
tar xf source.tar -C directory

# Create a compressed archive, using archive suffix to determine the compression program:
tar caf target.tar.xz file1 file2 file3

# List the contents of a tar file:
tar tvf source.tar

# Extract files matching a pattern:
tar xf source.tar --wildcards "*.html"


Nach einem bestimmten Begriff suchen, am Beispiel von Docker.

curl cheat.sh/~docker


Eine Programmiersprache lernen, in diesem Fall Python.

curl cheat.sh/python/:learn

Übersicht

curl cheat.sh

cheatsh

Die Github Seite des Projektes verrät mehr über den riesen Umfang des Cheatsheet.

Installation von Cheat.sh (global)

Natürlich lässt sich das Tool auch direkt auf dem System installieren bzw. hosten (dazu wird allerdings Docker benötigt).

Der Dienst cheat.sh hat einen eigenen Kommandozeilen-Client (cht.sh), der im Vergleich zur direkten Abfrage mit curl mehrere nützliche Funktionen bietet:

  • Spezieller Shell-Modus mit persistentem Abfragekontext und Readline-Unterstützung
  • Abfrage der Historie
  • Integration der Zwischenablage
  • Unterstützung der Tabulatorvervollständigung für Shells (bash, fish, zsh)
  • Stealth-Modus

Eine Installation ist schnell erledigt.

sudo apt install rlwrap
curl https://cht.sh/:cht.sh | sudo tee /usr/local/bin/cht.sh
sudo chmod +x /usr/local/bin/cht.sh

Nach einer Installation kann cht.sh anstatt curl verwendet werden und es ergeben sich die oben erwähnten Möglichkeiten.

cht.sh-shell

Einbindungen in den Editor

Cheat.sh unterstützt momentan die Einbindung in die Editoren wie Emacs, Sublime, Vim und Visual Studio Code.

Eine Anleitung findet ihr ebenfalls auf Github.

Cheat.sh und Windows

Sogar Windows wird von dem kleinen Tool bedient. Dazu ist eine Exe notwendig, die ihr hier findet.

Fazit

Perfektes Tool für das schnelle Nachschlagen eines Befehls, ohne das Terminal verlassen zu müssen.

Das Cheatsheet ist sicher nicht neu und besteht bereits seit 2017, allerdings hat sich seither viel getan.

Cheat.sh unterstützt ca. 1000 Linux Befehle und 56 Programmiersprachen.

HowTo - Einen eigenen SuperTuxKart Server im LAN aufsetzen und gegen Freunde zocken

Vor kurzem wurde eine neue SuperTuxKart Version veröffentlicht.

Wie schon aus der Beta bekannt war, bringt diese neue Version neben diversen Verbesserungen eine Netzwerkunterstützung mit.

Daneben sorgen ca. 20 Rennstrecken und verschiedene Spielmodi für Abwechslung. Der Funracer ist natürlich OpenSource und so hat jeder die Möglichkeit seinen eigenen Server zu betreiben.

Alle Infos findet ihr in den Release Notes.

SuperTuxKart1
Genau diese Netzwerkunterstützung will ich im Folgenden näher anschauen, denn für einen eigenen Server reicht bereits ein RaspberryPi aus.


Eigenen SuperTuxKart Server fürs LAN bauen

Als Basis dient ein Ubuntu 16.04 LTS oder ein Raspbian System, der Vorgang ist jeweils gleich.

Zunächst müssen ein paar Pakete installiert werden, damit der Build auch gelingt.

sudo apt-get install build-essential cmake libbluetooth-dev \
libcurl4-openssl-dev libenet-dev libfreetype6-dev libfribidi-dev \
libgl1-mesa-dev libglew-dev libjpeg-dev libogg-dev libopenal-dev libpng-dev \
libssl-dev libvorbis-dev libxrandr-dev libx11-dev nettle-dev pkg-config zlib1g-dev git subversion

Als nächstes werden die Installationsdateien auf das lokale System geladen.

cd /opt
sudo mkdir stk-code
sudo mkdir stk-asset
git clone https://github.com/supertuxkart/stk-code stk-code
svn co https://svn.code.sf.net/p/supertuxkart/code/stk-assets stk-assets

Der letzte Schritt kann etwas Zeit benötigen, da mehrere 100MB geladen werden müssen.

cd stk-code
sudo mkdir cmake_build
cd cmake_build/
sudo cmake .. -DSERVER_ONLY=ON
sudo make -j$(nproc)

Nun heißt es etwas warten, denn je nach CPU Leistung, kann dies etwas dauern...

stk-server

Schwups ist der fertige Server erstellt, ihr könnt ihn nun bereits ausprobieren oder systemweit mit sudo make install installieren.

Danach findet ihr den installierten Server unter /usr/local/bin/supertuxkart.


In unserem Fall starten wir den Server testweise direkt.

cd bin/

./supertuxkart --lan-server=test --network-console

stk-server-start

[info   ] GrandPrixManager: Loading Grand Prix files from ../../data/grandprix/
[info   ] GrandPrixManager: Loading Grand Prix files from /home/xyz/.local/share/supertuxkart/grandprix/
Fri Apr 26 20:25:41 2019 [info   ] STKHost: Host initialized.
Fri Apr 26 20:25:41 2019 [info   ] STKHost: Server port is 2759
Fri Apr 26 20:25:41 2019 [info   ] main: Creating a LAN server 'test'.
Fri Apr 26 20:25:41 2019 [info   ] ServerLobby: Reset server to initial state.
Fri Apr 26 20:25:41 2019 [info   ] ProtocolManager: A 11ServerLobby protocol has been started.
Fri Apr 26 20:25:41 2019 [info   ] STKHost: Listening has been started.

Nun solltet ihr darauf achten, dass der Port 2759 im lokalen Netz erreichbar ist und Firewalls diesen nicht blockieren.

Ebenfalls ist es wichtig lokal einen Servernamen beim Start anzugeben, da der Server sonst nicht startet.

Zusätzlich wird unter /opt/stk-code/.config/supertuxkart/config-0.10/server_config.xml beim ersten Start eine Konfigurationsdatei angelegt, dort können weitere Einstellungen gesetzt werden.

Für unseren Server muss hier Nichts weiter angepasst werden.

Alternativ könnt ihr eure eigene Konfigurationsdatei beim Start auch gleich mitgeben

supertuxkart --server-config=your_config.xml --network-console

Ob der Server läuft lässt sich mit einem einfachen netstat -lnp oder via ss -ln herausfinden (Artikel).

SuperTuxKart auf eigenen Server spielen

Um auf dem eigenen Server gegeneinander zu spielen, müsst ihr euch zunächst das Spiel installieren, dieses findet ihr hier.


Nach dem Start müssen folgende Schritte durchgeführt werden, um auf den eigenen Server zu gelangen,

stk-server-gui

stk-server-lan

stk-server-findstk-server-test-srv

Alternativ kann auch ein Server direkt aus dem Programm heraus erstellt werden und somit quasi mit jedem PC. Ein kleiner RapsberryPi ist allerdings um einiges praktischer.

Sollte ein STK Server übers Internet erreichbar sein, muss zusätzlich ein STK Account angelegt werden. Dieser Account muss beim Serverstart angegeben werden. Weitere Tipps finden sich hier.

supertuxkart --init-user --login=your_registered_name --password=your_password

Viel Spaß