Midnight Commander (Dateimanager)

Der Midnight Commander gehört zu den «nice to have» Paketen auf einem Debianserver. Installiere ihn mittels:

# apt install mc

Der Midnight Commander erleichtert das Navigieren und Editieren der Dateien enorm. Während hier z.B. links die Ordnerstruktur ersichtlich ist, wird der Dateiinhalt rechts ausgegeben. Für mich zählt der Midnight Commander zu den nützlichsten Server-Tools überhaupt:

eigenes, kleines Netzwerk erstellen

Vorbereitung: ssh-Server

Mit Debian lässt sich ein kleines Netzwerk recht schnell realisieren. Hier wird das Grundprinzip eines einfachen Heimnetzwerk erklärt. Ein in die Jahre gekommener Laptop kann als ssh-Server eingesetzt werden. In meinem Beispiel entschied ich mich für einen HP Pavilion dv6 und dem Betriebssystem Debian GNU/Linux Bullseye.

Auf dem Laptop/Tower setzen wir nun unseren ssh-Server auf. Falls auf dem Laptop bereits ein Debian läuft, kann per

# apt install openssh-server

das nötige Paket nachinstalliert werden. Setzen wir Debian frisch auf, wählen wir bei der Softwareauswahl lediglich
[*] SSH Server
[*] Standard-Systemwerkzeuge

aus. Ein Desktopenvironment ist in diesem Fall nicht nötig. Alle anderen Dienste wie apache2, php und MariaDB lassen sich nachträglich installieren.

Melde Dich beim Server an und überprüfe den Status vom ssh Server. Der ssh-Server ist in diesem Beispiel gestartet und lauscht auf Port 22 (Standard).

# systemctl status ssh

Jetzt benötigen wir die IP-Adresse vom Server:

# ip address
(...)
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 98:4b:e1:9b:48:0d brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.172/24 brd 192.168.0.255 scope global dynamic enp3s0
       valid_lft 2557sec preferred_lft 2557sec
    inet6 2a02:aa10:4201:8a80:9a4b:e1ff:fe9b:480d/64 scope global dynamic mngtmpaddr 
       valid_lft 936435sec preferred_lft 331635sec
    inet6 fe80::9a4b:e1ff:fe9b:480d/64 scope link 
       valid_lft forever preferred_lft forever
(...)

Von der Workstation aus können wir per ssh auf den Server zugreifen. Der allgemeine Befehl lautet:

$ ssh USERNAME@IPADRESS -p PORTNUMMER

Bei deiner allerersten Anmeldung wird der Fingerabdruck überprüft:

$ ssh lightning@192.168.0.172 -p 22
The authenticity of host '192.168.0.172 (192.168.0.172)' can't be established.
ECDSA key fingerprint is SHA256:VO+yY396S/SxMxo/VQDx55ZVLKpC2idiVSvQKu+6qrE.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

HINWEIS
Nicht jede Fehlermeldung muss gleich auf einen Angriff hinweisen. Im Beispiel unten hat sich beim Server lediglich der Fingerabdruck geändert und stimmt mit dem gespeicherten Fingerabdruck auf der Workstation nicht überein. Dies ist der Fall, wenn Du deinen ssh-Server z. B. neu aufgesetzt hast und nun versuchst, mit dem alten Fingerabdruck den neuen Server zu erreichen. Entferne den Schlüssel mit:

# ssh-keygen -f "/home/BENUTZERNAME/.ssh/known_hosts" -R "192.168.0.172"

oder lösche die Datei unter:

# rm ~/.ssh/known_hosts
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:VO+yY396S/SxMxo/VQDx55ZVLKpC2idiVSvQKu+6qrE.
Please contact your system administrator.
Add correct host key in /home/yuna/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/yuna/.ssh/known_hosts:5
  remove with:
  ssh-keygen -f "/home/yuna/.ssh/known_hosts" -R "192.168.0.172"
ECDSA host key for 192.168.0.172 has changed and you have requested strict checking.
Host key verification failed.

Netzwerk verbinden (samba)

Skizze eines einfachen Netzwerk. Client-PC und Server werden mit handelsüblichen Netzwerkkabel am Router verbunden.

Client-PC
Hier läuft Windows 11 und es muss nichts weiteres unternommen werden. Prüfe lediglich, ob unter der Systemsteuerung die Netzwerkkennung eingeschaltet ist. PuTTY als SSH und Telnet Client ist optional, jedoch nicht nötig. Alle Einstellungen können auch direkt am Server vorgenommen werden.

Server
Hier läuft Debian GNU/Linux. Bevor samba installiert wird, kläre folgendes ab:

  • IP-Adresse vom Server (ip address)
  • Welcher Ordner bzw. Mountpunkt wird geteilt? Hier ist es /pfad/zum/mountpunkt

Installiere das Paket samba. Damit später auch ntfs-Dateisysteme (Partitionen) eingebunden werden können, ist das Paket ntfs-3g nötig. Werden ext4-Datesysteme eingebunden, kann auf das Paket verzichtet werden.

# apt install samba
# apt install ntfs-3g

Optional kann jetzt die Konfigurationsdatei gesichert werden. Dazu genügt ein:

# cp /etc/samba/smb.conf /etc/samba/samba.original

Öffne das Konfigurationsfile:

# nano /etc/samba/smb.conf

Editiere nun die smb.conf wie in diesem Beispiel.
# ======================= Global Settings ======================= #

[global]

## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
workgroup = smb

####### Authentication #######

security = user

# This option controls how unsuccessful authentication attempts are mapped
# to anonymous connections
map to guest = bad password

# ======================= Share Definitions ===================== #

[homes]
comment = Home Directories
browseable = no

# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
read only = no
create mode = 0750

[public]
path = /pfad/zum/Ordner
public = yes
writable = yes
comment = smb share
printable = no
guest ok = yes

Starte den Samba-Server neu:

# systemctl restart smbd.service

Client-PC (hier Windows 11)
Auf dem Client-PC kann nun ein Netzlaufwerk verbunden werden. Wähle dazu in Windows 11 «Dieser PC»  > weitere Optionen anzeigen > Netzlaufwerk verbinden… und vergib einen Laufwerkbuchstaben und die IP des Servers, gefolgt von \public

Je nach Mountpunkt gibst du nach public noch die exakte Bezeichnung ein.
Einhängepunkte findest du bei Debian mittels df -h

# df -h
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
udev            3.9G       0  3.9G    0% /dev
tmpfs           790M    7.4M  783M    1% /run
/dev/sdb2        19G    4.5G   13G   26% /
tmpfs           3.9G       0  3.9G    0% /dev/shm
tmpfs           5.0M    4.0K  5.0M    1% /run/lock
/dev/sdb3       205G    121G   85G   59% /home/yuna/share/VMs
/dev/sdb1       240M    3.4M  236M    2% /boot/efi
/dev/sda1       932G    153G  780G   17% /home/yuna/share/BACKUP
tmpfs           790M     36K  790M    1% /run/user/112
tmpfs           790M     68K  790M    1% /run/user/1000

Partition /dev/sda1 wird in diesem Fall per
\\192.168.0.172\public\BACKUP
eingebunden.

Bei einem # apt upgrade werden auch die Pakete von deinem Sama-Server berücksichtig:

Die Installationsroutine von apt fragt danach, was mit deiner eigenen smb.conf geschehen soll. In der Regel ist es immer eine gute Idee, die lokal installierte Version zu behalten.

Sprache und Zeitzone einstellen (Debian GNU/Linux)

timedatectl gibt dir nähere Angaben zur Zeitzone und der locale:

# timedatectl
               Local time: Sun 2022-10-02 11:09:03 UTC
           Universal time: Sun 2022-10-02 11:09:03 UTC
                 RTC time: Sun 2022-10-02 11:09:03
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Für mein Beispiel stimmen gleich zwei Angaben nicht. Die lokale Zeit und die Zeitzone. Höchste Zeit, dies zu ändern.

locale

# dpkg-reconfigure locales

Generiere danach die locale neu:

# locale-gen

Zeitzone

die Zeitzone ändern wir mit:

# dpkg-reconfigure tzdata

Setze einen symbolischen Link mit:

# ls -l /etc/localtime
lrwxrwxrwx 1 root root 33  2. Okt 13:22 /etc/localtime -> /usr/share/zoneinfo/Europe/Zurich

Ab jetzt stimmt Localzeit und Zeitzone:

# timedatectl
               Local time: So 2022-10-02 13:29:30 CEST
           Universal time: So 2022-10-02 11:29:30 UTC
                 RTC time: So 2022-10-02 11:29:31
                Time zone: Europe/Zurich (CEST, +0200)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Tastaturlayout einstellen (Keyboard)

Falls das falsche Keyboard gewählt wurde, kann dies geändert werden.

# dpkg-reconfigure keyboard-configuration
# service keyboard-setup restart

Archiv erstellen

Mittels tar oder zip lassen sich Archive unter einem Linux-Server erstellen. Angenommen du möchtest den Theme-Ordner deiner WordPress Installation sichern, geht dies mit tar, gz, gzip, bz2, bzip2 oder eben zip. gzip und bzip2 sind sich sehr ähnlich, verwenden aber einen anderen Algorithmus. Ein reines tar-Archiv ist unkomprimiert. Der Theme-Ordner von WordPress findet sich in der Regel unter /var/www/html/wp-content/themes

mittels zip

Der Zip-Befehl kann rekursiv (-r) ausgeführ werden. Dabei werden alle Unterordner mit einbezogen. Vereinfacht lautet der Befehl:
zip -r zieldatei.zip /pfad/zum/Ordner

$ zip -r themes.zip /var/www/html/wp-content/themes/

mittels tar

Anders verhält sich hier tar und erstellt eine unkomprimierte Datei. Die ausgegebene Datei themes.tar kann jetzt noch mit gz komprimiert werden. Auch hier gilt allgemein:
tar cfv zieldatei.zip /pfad/zum/Ordner

$ tar cfv themes.tar /var/www/html/wp-content/themes/
$ gzip themes.tar

so lässt sich schnell und einfach ein Archiv erstellen. Als Ausgabe bekommst Du die Datei themes.tar.gz

Die Archiv-Datei kann mittels proftpd heruntergeladen werden. Alternativ kannst Du sie (falls ein Webserver wie apache2 läuft) nach /var/www/html verschieben und per wget oder im Browser herunterladen:

$ wget example.com/themes.tar.gz

Vergiss am Ende nicht, die Archiv-Datei auf dem Server zu löschen.

Entpackt wird die tar.gz mittels:

tar -xvzf DATEINAME.tar.gz

netstat

netstat (Netzwerkstatus) ist nicht von Hause aus in Debian enthalten. Versuchst Du den Befehl aufzurufen, kommt es unweigerlich zu einer Fehlermeldung:

# netstat -tulpn | grep LISTEN
-bash: netstat: Kommando nicht gefunden.

erst nach einem

# apt install net-tools

lässt sich dieses Tool auf nutzen. netstat ist ideal geeignet, um Netzwerkproblemen auf den Grund zu gehen.

Beispiel:

Nach der Installation der Firewall ufw streikte plötzlich mein Samba-Server und ich konnte von Windows 11 nicht mehr auf das Netzwerklaufwerk zugreiffen:

Erst der Einsatz von netstat auf dem Samba-Server (Debian 11) brachte Licht ins dunkle:

# netstat -tulpan
Aktive Internetverbindungen (Server und stehende Verbindungen)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      612/mariadbd
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      1429/smbd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      548/sshd: /usr/sbin
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      1429/smbd
tcp        0    288 192.168.0.52:22         192.168.0.150:64988     VERBUNDEN   760/sshd: yuna [pri
tcp        0      1 192.168.0.52:445        192.168.0.150:64990     FIN_WAIT1   -
tcp6       0      0 :::139                  :::*                    LISTEN      1429/smbd
tcp6       0      0 :::80                   :::*                    LISTEN      611/apache2
tcp6       0      0 :::22                   :::*                    LISTEN      548/sshd: /usr/sbin
tcp6       0      0 :::445                  :::*                    LISTEN      1429/smbd
(...)

Da wartet doch jemand auf etwas (FIN_WAIT1). Nach einem:

# ufw allow 445
# ufw reload
# systemctl restart smbd.service

stand die Verbindung zum Samba-Server wieder. Ich hatte einfach vergessen, den Port 445 für den Samba-Server zu öffnen.

# netstat -tulpan
Aktive Internetverbindungen (Server und stehende Verbindungen)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      612/mariadbd
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      753/smbd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      548/sshd: /usr/sbin
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      753/smbd
tcp        0    288 192.168.0.52:22         192.168.0.150:64988     VERBUNDEN   760/sshd: yuna [pri
tcp        0      0 192.168.0.52:445        192.168.0.150:64990     VERBUNDEN   762/smbd
tcp6       0      0 :::139                  :::*                    LISTEN      753/smbd
tcp6       0      0 :::80                   :::*                    LISTEN      611/apache2
tcp6       0      0 :::22                   :::*                    LISTEN      548/sshd: /usr/sbin
tcp6       0      0 :::445                  :::*                    LISTEN      753/smbd
(...)

Minecraft in Debian spielen

Um Minecraft in Debian spielen zu können, benötigen wir Java. Lade das *.deb-Paket herunter:

Installiere das Paket mit:

# dpkg -i Minecraft.deb
# apt -f install
# dpkg -i Minecraft.deb

apt -f install wird nötig sein, falls Abhängigkeitsprobleme auftauchen und löst dies sehr elegant, indem sämtliche Pakete nachinstalliert werden. In diesem Fall fehlen z. B. folgende Pakete, welche alternativ auch per apt installiert werden können:

# apt install ca-certificates-java default-jre default-jre-headless java-common libatk-wrapper-java libatk-wrapper-java-jni libgdk-pixbuf-xlib-2.0-0 libgdk-pixbuf2.0-0 libgif7 openjdk-17-jre openjdk-17-jre-headless

Minecraft starten
Nach erfolgreicher Installation findes Du Minecraft in Deinem Homeverzeichnis

$ cd /home/BENUTZER/.minecraft/launcher
$ minecraft-launcher

Nach der Installation wird der Launcher gestartet und sucht nach Updates.

 

HP Drucker unter Linux

01. Um einen HP-Drucker zu installieren, benötigen wir das Paket hplip und hplip-gui und starten Debian neu:

# apt install hplip
# apt install hplip-gui
# reboot now

02. Wähle hier die erste Option (wir installieren direkt ab einem HP-Server)

03. Stimme der Lizenz zu

04. Die Installation verlangt root-Rechte.

05. Falls diese Meldung erscheint, starte Debian nochmals neu.

06. Wähle die HPLIP-Toolbox aus. (Kontrollzentrum)

07. Wähle hier Setup Device… aus

 

08. Dieser Drucker ist per USB verbunden.

09. Klicke auf Next…

10. Füge der Drucker per Add Printer hinzu.

11. Der Drucker (hier ein HP LaserJet Professional P 1102w) ist nun bereit.

 

Gemeinsamer Ordner in der Virtualbox

Um einen gemeinsamen Ordner zu Erstellen, ist das Erweiterungspaket notwendig. Dabei spielt es keine Rolle, ob die VirualBox nun auf Linux oder Windows läuft. Lediglich die Installation im virtuellen Betriebsystem weicht ab. Bei Windows 11 installieren wir eine .exe-Datei, während bei Linux die .run-Datei installiert wird. Die Installation des Zusatzpaketes ist wie bereits erwähnt plattformunabhängig.

Lade das Erweiterungspaket lokal auf den PC herunter.

Starte Virtualbox unter Windows oder Linux, gehe zu Datei > Einstellungen und wähle im geöffneten Fenster den Punkt Zusatzpakete. Wähle die soeben heruntergeladene Datei aus und installiere diese.

Hier läuft VirtualBox unter Linux. Die Installation läuft analog deren unter Windows 11.

Ob die Installation nun unter Windows oder Linux erfolgt ist egal. Das Extensions-Paket ist für beide Version gleich. Starte nun die virtuelle Maschine und gehe zu Geräte > Gasterweiterung einlegen…

Gasterweiterung unter Linux installieren

Bei Debian wird das optische Laufwerk unter /media eingehängt. Die .run-Datei kann nun installiert werden. Falls die Virtualbox unter Linux läuft und eine Windowsmaschine gestartet wird, installiere die .exe-Datei.

$ ls
AUTORUN.INF  runasroot.sh                       VBoxSolarisAdditions.pkg
autorun.sh   TRANS.TBL                          VBoxWindowsAdditions-amd64.exe
cert         VBoxDarwinAdditions.pkg            VBoxWindowsAdditions.exe
NT3x         VBoxDarwinAdditionsUninstall.tool  VBoxWindowsAdditions-x86.exe
OS2          VBoxLinuxAdditions.run             windows11-bypass.reg

Nach der Installation muss die virtuelle Maschine neu gestartet werden.

# sh ./VBoxLinuxAdditions.run
# reboot now

Um den vollen Zugriff auf den Ordner zu bekommen, ändere die Userrechte in Debian mit:

# usermod -aG vboxsf USER
Gasterweiterung unter Windows installieren

Ist Windows in der VirtualBox gestartet, wird das optische Laufwerk unter D: (oder dem nächsten, freien Buchstaben) eingebunden. Hier klicken wir auf VBoxWindowsAddition-amd64.exe

Anlegen einses gemeinsamen Ordners (gilt für Linux und Windows)

Der gemeinsame Ordner kann nun angelegt werden.

sudo unter Debian

sudo ist per default in Debian nicht aktiviert. Versucht man einen root-Befehl mit sudo auszuführen, kommt es zu diesem typischem Vorfall:

$ sudo blkid

Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die
Regeln erklärt hat.  Normalerweise läuft es auf drei Regeln hinaus:

    #1) Respektieren Sie die Privatsphäre anderer.
    #2) Denken Sie nach, bevor Sie tippen.
    #3) Mit großer Macht kommt große Verantwortung.

[sudo] Passwort für BENUTZER:
BENUTZER ist nicht in der sudoers-Datei. Dieser Vorfall wird gemeldet.

1. Installiere sudo

# apt install sudo

2. füge den Benutzer «BENUTZER» zur Gruppe sudo hinzu:

# adduser BENUTZER sudo

3. prüfe, ob BENUTZER sudo ausführen darf:

$ sudo -v

Falls: «Leider darf der Benutzer BENUTZER sudo für debian nicht verwenden.» erscheint, starte den Server neu:

# reboot now

4. BENUTZER kann ab jetzt sudo anwenden:

$ sudo BEFEHL
[sudo] Passwort für BENUTZER:

Hinweis: Im Netz findet man unzählige Meinungen über Sinn und Unsinn von sudo unter Debian. Um es kurz zu machen: sudo macht tatsächlich keinen Sinn unter Debian. Es ist jedoch auch nicht verboten, es anzuwenden.

Eigener Minecraft-Server (Debian)

Um einen eigenen Minecraft-Server aufzusetzen, wird eine minimale Installation von Debian vorausgesetzt. Wird der Server explizit nur für Minecraft verwendet, schliesse mit der Firewall ufw alle Port ausser 25565 und natürlich dem Port für die ssh-Verbindung. Minecraft läuft per Standard auf Port 25565.
Dieser Port kann unter server.properties geändert werden. Unter dieser Konfigurationsdatei kann zudem der seed, Schwierigkeit u.v.m. geändert werden.


01. Installieren von Java (auf dem Server)

# apt install openjdk-17-jdk-headless

02. Homeverzeichnis betreten und Server-Software herunterladen.

$ cd/home/BENUTZERNAME
$ mkdir minecraft
$ cd minecraft
$ wget https://pfad_zum_Download/*.jar

Alternativ kann auch ein Fork (PaperMC) heruntergeladen werden.


03. Server starten und eula akzeptieren:

Starte den Server. Es wird zu dieser Hinweismeldung kommen.

$ java -Xmx1024M -Xms1024M -jar server.jar nogui
  [13:52:43] [ServerMain/WARN]: Failed to load eula.txt
  [13:52:43] [ServerMain/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

Öffne das File eula.txt und ersetze false mit true:

$ nano eula.txt

eula=true

Hinweis
Läuft bei dir eine Firewall wie ufw, gib den Minecraft-Port 25565 (Standard) frei:

# ufw allow 25565

04. Server erneut starten

$ java -Xmx1024M -Xms1024M -jar server.jar nogui

05. Minecraft-Launcher (in Windows) starten und mit dem Server verbinden

Die aktuelle IP von deinem eigenen Server findest Du mit

$ ip address

heraus. Nach der IP ist noch der Port (Standard 25565) zu setzen. Somit: 123.456.7.890:25565

Wer es ganz elegant haben möchte und sogar einen A-Record für eine Domain besitzt, setzt eine Subdomain per CNAME
minecraft.example.com
CNAME
example.com

ab jetzt, ist der Minecraft-Server auch unter minecraft.example.com erreichbar.

Sollte der Server weiterlaufen, falls die ssh-Verbindung (z. B. mit PuTTY) getrennt wird, hilft screen weiter:

# apt install screen
$ screen -S minecraft
$ java -Xmx1024M -Xms1024M -jar server.jar nogui
CTRL + A + D

Weitere Einstellungen zum Server findest du nun unter server.properties, ops.json und whitelist.json