Linux-Kurs - Erweiterte Konfiguration

https://linuxkurs.ch

Du hast bereits gelernt wie Du zusätzlich Programme installieren kannst und konntest sicherlich schon die ein oder andere neue Anwendung ausprobieren. Nun geht es darum, deinem Linux den nötigen Feinschliff zu verpassen. Dabei behandeln wir Aspekte wie die Konfiguration von Systemdiensten, Sicherheitseinstellungen, die Einrichtung von Hardwarekomponenten sowie die Installation einer weiteren Desktopumgebung.

NTP

Die Uhrzeit deines Rechners lässt sich automatisch mit Zeitservern im Internet abgleichen. Dies erfolgt beispielsweise mit Hilfe des Programms ntpd, welches unter Slackware Bestandteil der Distribution ist. NTP ist ein Arkonym für Network Time Protocol. Das d am Ende von ntpd steht für Daemon. Bei einem Daemon handelt es sich um einen im Hintergrund laufende Prozess. Im Falle von ntpd sorgt es dafür, dass die Uhrzeit regelmässig abgeglichen wird.

Zunächst muss ntpd konfiguriert werden. Dies erfolgt in der Datei /etc/ntp.conf. Um den Dienst nutzen zu können, reicht es aus die zu verwendenden Timeserver anzugeben. Dazu kannst Du die Konfigurationsdatei als Root im Editor öffnen:

Unter # NTP server kannst Du folgende Serverkonfiguration hinterlegen:

Dabei handelt es sich um in der Schweiz lokalisierte Server aus dem offiziellen Pool von ntp.org. Der Parameter iburst (initial burst) am Ende jeder Serverdefinition beschleunigt das Synchronisieren beim ersten Verbindungsaufbau.

Bevor wir den Dienst aktivieren und Starten, bietet es sich an die Synchronisation einmalig manuell auszuführen, um zu grosse Abweichungen zu korrigieren. Dazu gibt es das Hilfsprogramm ntpdate. Du kannst es als Root-Benutzer unter Angabe eines der Timeserver aufrufen:

ntpdate 0.ch.pool.ntp.org

Mit Hilfe des bereits bekannten Befehls hwclock kannst Du die abgeglichene Uhrzeit in das BIOS deines Computers schreiben:

hwclock --systohc

Den Dienst kannst Du für den Systemstart aktivieren, indem Du die Runlevel-Datei als ausführbar markierst:

chmod +x /etc/rc.d/rc.ntpd

Der manuelle Start im laufenden System erfolgt über den Aufruf des Startscriptes mit dem entsprechenden Parameter

etc/rc.d/rc.ntpd start

Mit Hilfe des ntpq Befehls kannst Du unter Angabe des Parameters -p (für peers) ausgeben lassen, welche Timeserver verwendet werden:

ntpq -p

BASH Konfiguration

Die globalen BASH Einstellungen findest Du in der Datei /etc/profile. Sie werden bei jedem interaktiven Login angewendet.

Schaue dir die Datei einmal im Betrachtungsmodus des Editors vim an:

view /etc/profile

Zur persönlichen Anpassung der BASH lassen sich die Konfigurationsdateien ~/.bash_profile und ~/.bashrc verwenden. Die Datei ~/.bash_profile hast Du bereits im Kursteil Erste Schritte kennengelernt. ~/.bash_profile wird genau wie /etc/profile nur bei interaktiven Login-Shells geladen, also immer dann wenn sich der Benutzer am System anmeldet. Die Datei ~/.bashrc wird bei interaktiven nicht Login-Shells verarbeitet, wie zum Beispiel beim Start eines Terminalprogramms.

Um die in der .bashrc Datei gemachten Konfigurationseinstellungen auch bei Logins zu aktivieren, kannst Du die .bashrc in der .bash_profile Datei sourcen.

Öffne dazu als Benutzer ein Terminal und erstelle mit dem Editor eine neue .bash_profile Konfigurationsdatei in deinem Heimatverzeichnis:

vi ~/.bash_profile

Den Inhalt kannst Du wie folgt definieren:

Speichere die Datei ab und verlasse den Editor. Die if-Abfrage ermittelt mit Hilfe des test Kommandos (welches nicht explizit aufgeführt werden muss) über den Parameter -f ob die Datei ~/.bashrc existiert und ob es sich dabei um eine reguläre Datei handelt. Falls ja, wird diese Datei gesourced, also nachgeladen. Das erkennst Du an dem Punkt und dem Leerzeichen vor der Angabe von ~/.bashrc in der zweiten Zeile.

Das fi beendet die if-Abfrage.

Erstelle nun die ~/.bashrc Konfigurationsdatei.

vi ~/.bashrc

Zum Einstieg kannst Du einige Parameter einfügen.

HINWEIS: unter der grafischen Oberfläche kannst Du Text ganz einfach mit der linken Maustaste markieren und durch Klicken der mittleren Maustaste in einem beliebigen Programm wieder einfügen.

Speichere die Datei ab und verlasse den Editor.

Globale Umgebungseinstellungen

In der Datei /etc/profile/ und im Verzeichnis /etc/profile.d werden globale Umgebungseinstellungen definiert. Diese werden standardmässig bei jeder interaktiven Login-Shell geladen. Um sie auch bei interaktiven nicht Login-Shells einzulesen, prüfen wir zunächst mit dem shopt BASH-builtins ob es sich um eine interaktive Login-Shell handelt. BASH-builtins sind Befehle die direkt in die BASH integriert sind.

Für shopt gibt es eine Hilfeseite, die Du dir über das help Kommando anzeigen lassen kannst:

help shopt

Du siehst, dass über den Parameter -q die Ausgabe unterdrückt wird.

Wenn du den Befehl in einem Terminal ausführst, wirst Du keinerlei Ausgabe erhalten. Lediglich der sogenannte Return-Code wird zurückgeliefert. Diesen kannst Du dir mit Hilfe von echo $? anzeigen lassen. 0 ist gleichbedeutend mit true also wahr. Probiere den Befehl in einer interaktiven nicht Login-Shell aus, zum Beispiel mit deinem normalen Benutzeraccount in einem Xfce-Terminal:

Der Rückgabewert ist 1, also nicht true. Führe den gleichen Befehl nun in einer interaktiven Login-Shell aus. Du kannst diese beispielsweise mit su - für den Benutzer Root öffnen:

Der Rückgabewert ist 0 und somit true, da es sich um eine interaktive Shell handelt. Bei dem || handelt es sich um die logische ODER-Verküpfung. Diese stellt sicher, dass der darauf folgende Befehl nur ausgeführt wird, wenn der erste Befehl nicht erfolgreich beendet wurde. Somit wird die systemweite /etc/profile Datei nur gesourced, wenn es sich um eine interaktive nicht Login-Shell handelt.

Copy & Paste

In der zweiten Zeile der .bashrc Datei wird mit Hilfe des shopt BASH-builtins eine Shell Option gesetzt, die verhindert das Zeilen falsch umgebrochen werden, wenn zum Beispiel Text mit der mittleren Maustaste in das xfce4-terminal eingefügt wird.

Schaue dir die man-page von bash an um zu erfahren, was die Option checkwinsize bedeutet:

man bash

If set, bash checks the window size after each command and, if necessary, updates the values of LINES and COLUMNS.

checkwinsize stellt sicher, dass auch bei einer Änderung der Grösse des Terminalfensters die Zeilen- und Spaltenanzahl korrekt ist.

BASH-Prompt

Beim sogenannte BASH-Prompt handelt es sich um den Teil der am Anfang jeder neuen Zeile in einem Terminal ausgegeben wird. Er wird über die Variable PS1 gesteuert.

Für interaktive Login Shells wird diese Variable bereits innerhalb der /etc/profile Datei gesetzt. Da wir das Prompt auf unsere Bedürfnisse hin anpassen möchten, definieren wir PS1 ebenfalls in der .bashrc Konfigurationsdatei.

Weil wir die Datei ~/.bashrc in der persönlichen ~/.bash_profile Konfigurationsdatei einbinden, gilt letztendlich für interaktive Login- sowie nicht Login-Shells die hier vorgenommene Einstellung für den BASH Prompt, denn die Dateien werden wie folgt abgearbeitet und die zuletzt gesetzte Definition von PS1 überschreibt die vorangegangenen exports der gleichen Variable:

In der Beispiel .bashrc Datei wird PS1 wie folgt gesetzt:

export PS1='\u@\h:\w\$ '

Dies entspricht der Einstellung, die in der systemweiten /etc/profile Datei vorgenommen wird, welche wir im Folgenden anpassen werden.

Mit Hilfe des export Befehls wird die Variable in der aktuellen Shell als Umgebungsvariable verfügbar gemacht wird.

Über die Zeichenkette \u@\h:\w\$ wird festgelegt, dass der BASH-Prompt wie folgt aufgebaut sein soll:

Daraus ergibt sich anhand unseres Beispielbenutzers folgender BASH-Prompt:

linuxuser@darkstar:~$

Wenn Du nun das Verzeichnis wechselt, zum Beispiel mit cd /tmp wird der neue Pfad im Prompt angezeigt:

linuxuser@darkstar:/tmp$

Der Prompt lässt sich mit Hilfe von Terminal-Kontroll-Sequenzen eingefärbt werden. Diese beginnen jeweils mit \033[ und enden mit m und werden durch [ am Anfang und ] am Ende begrenzt. Die letzte angegebene Farbe definiert in welcher Farbe die Benutzereingaben erfolgen sollen.

export PS1='\[\033[1;32m\]\u@\h\[\033[0m\]:\[\033[1;34m\]\w\[\033[0m\]\$ '

Im obigen Beispiel wurden folgende Farbsequenzen verwendet:

SequenzFarbe
[\033[1;32m]hellgrün
[\033[0m]farblos (Farbe zurücksetzen)
[\033[1;34m]hellblau

Eine vollständige Liste der verfügbaren Farben und Variablen findest Du zum Beispiel im Wiki von ubuntuusers.de: https://wiki.ubuntuusers.de/Bash/Prompt/.

Probiere den farbigen Prompt in der aktuellen Shell durch Eingabe des obigen export Befehls aus. Falls Du für dein Benutzerkonto diese Variante vorziehst, bearbeite die .bashrc Datei und passe den export der PS1-Variable entsprechend an.

Es empfiehlt sich zur besseren Unterscheidung für den normalen Benutzer und für Root unterschiedliche Prompts zu verwenden. Eine Möglichkeit wäre die Nutzung des farbigen Prompts für den normalen Benutzer und das Setzen des farblosen Prompts für Root, oder umgekehrt.

Xauthority

In der .Xauthority Datei werden Anmeldeinformationen zur Authentifizierung am XServer in der Form von magic cookies gespeichert. Sobald eine X-Sitzung gestartet worden ist, werden diese Informationen vom Kommando xauth genutzt um die Verbindungen zum Xserver zu legitimieren.

Du kannst testweise versuchen die Datei zu verschieben und daraufhin eine grafische Applikation zu starten:

Aufgrund der fehlenden Anmeldeinformationen lässt sich thunar nicht starten.

Du kannst mit folgendem Befehl den ursprünglichen Zustand wiederherstellen:

mv ~/.Xauthority.bak ~/.Xauthority

Für deinen Benutzeraccount wird die Datei automatisch beim Anmelden am Xserver erstellt. Wenn Du versuchen würdest aus einem Terminal heraus als Benutzer root eine grafische Anwendung zu starten, wäre dies nicht möglich, da dem root Benutzer nicht bekannt ist, wo die Anmeldeinformationen zu finden sind. Über den Eintrag export XAUTHORITY=$HOME/.Xauthority in der .bashrc exportierst Du eine Umgebungsvariable mit dem Namen XAUTHORITY die auf die .Xauthority Datei in deinem Homeverzeichnis zeigt.

Mit Hilfe des Befehls env kannst Du dir alle gesetzten Umgebungsvariablen anzeigen lassen.

Da das Kommando xauth diese Umgebungsvariable ausliest, ist es nach einem Wechsel zum Benutzer root möglich grafische Applikationen mit Root-Rechten zu starten.

Hinweis: In der .bashrc Datei des Root-Benutzers muss diese Zeile nicht angegeben werden.

apropos und whatis

Weitere Informationen findest Du in der man-page von xauth. Möchtest Du herausfinden in welchen man-pages ein bestimmtes Thema behandelt wird, kannst Du man mit dem Parameter -k gefolgt von einem Suchbegriff aufrufen. Alternativ kannst du das äquivalente Kommando apropos nutzen.

man -k xauth

Der Befehl durchsucht die Namen sowie die Kurzbeschreibungen von man-pages nach dem entsprechenden Begriff. Es wird zuerst der Name der gefundenen man-page, gefolgt von der Section in der das Suchwort vorkommt sowie die Kurzbeschreibung ausgegeben.

Folgende Sections sind auf deinem Linux System Verfügung:

Diese Sections sind nicht zu verwechseln mit den einzelnen Paragraphen innerhalb einer man-page.

Einige man-pages sind verteilt über mehrere Sections, wie zum Beispiel die Handbuchseiten vom Kommando man:

whatis man

Der Befehl whatis durchsucht im Gegensatz zu man -k oder apropos nur die Namen der man-pages, die in der sogenannten whatis-Datenbank gespeichert sind.

Um einen der Treffer anzeigen zu lassen kannst Du zum Beispiel man 5 man eingeben, also man gefolgt von der Section und dem Namen der man-page.

Fenstertitel

[[ "$TERM" = "xterm" || "$TERM" = "xterm-256color" ]] && export PROMPT_COMMAND='echo -ne "\033]0;$USER@$HOSTNAME\007" '

Zunächst wird mit Hilfe des logischen oder-Operators || geprüft ob die Umgebungsvariable TERM den Inhalt xterm oder xterm-256color hat. Dies ist zum Beispiel der Fall, wenn es sich um ein grafisches Terminal wie das xfce4-terminal handelt. Das && sorgt dafür, dass der folgende Teil nur dann ausgeführt wird, wenn das Ergebnis des Tests positiv ist.

Bei PROMPT_COMMAND handelt es sich um eine BASH-Umgebungsvariable. Der Inhalt wird als regulärer BASH Befehl ausgeführt, bevor der Prompt angezeigt wird. Über den Echo-Befehl wird der Fenstertitel des Terminals gesetzt, in diesem Falle auf $USER@$HOSTNAME.

Wenn Du die gleiche Konfiguration der ~/.bash_profile und ~/.bashrc (ohne den export der XAUTHORITY) auch für den Root-Benutzer vornimmst, wird der Fenstertitel nach einem su - automatisch auf root@$HOSTNAME gesetzt. So kannst Du leicht erkennen ob es sich um ein lokales Terminal handelt oder zum Beispiel um eine Remote SSH Verbindung, und welcher Benutzer an diesem Terminal aktiv ist.

Aliases

Die alias Definition kennst Du bereits aus der ~/.bash_profile Datei die wir für den Root-Benutzer angelegt haben. Da wir die Konfiguration nun in der ~/.bashrc zentralisiert haben, kannst Du beim Root-Benutzer den ursprünglichen Eintrag aus der ~/.bash_profile Datei entfernen. Vorausgesetzt natürlich Du hast die zuvor beschriebenen Anpassungen sowohl für deinen normalen Benutzer als auch für den Root-Benutzer durchgeführt.

sudo

Das Programm sudo (Akronym für su "do") ermöglicht es, Anwendungen mit den Rechten eines anderen Benutzers auszuführen. sudo führt, wenn nicht anders angegeben, das als Parameter angegebene Kommando mit Root-Rechten aus und ermöglicht es einzelne Administrationsaufgaben auszuführen, ohne eine Root-Shell öffnen zu müssen.

Auf deinem Linux-System ist sudo bereits installiert, wurde bisher aber noch nicht konfiguriert.

Die Zuordnung, welche Benutzer oder Gruppen sudo verwenden dürfen, erfolgt in der Datei /etc/sudoers. Ähnlich wie bei der Datei /etc/passwd gibt es auch hier ein Hilfsprogramm zur sicheren Bearbeitung. Es trägt den passenden Namen visudo.

Öffne ein Root-Terminal und führe das Kommando visudo aus:

Entferne das Rautezeichen vor der Zeile die mit Defaults secure_path= beginnt. Damit erreichst Du, dass die $PATH Variable innerhalb der mit sudo ausgeführten Befehle immer auch die sbin Pfade enthält. Andernfalls wäre dies nur bei sudo -i der Fall, welches eine interaktive Login-Shell startet.

Du kannst in der /etc/sudoers Datei festlegen, welche Benutzer oder Gruppen sudo verwenden dürfen. Es bietet sich an die Gruppe wheel zu verwenden, da diese unter Slackware bereits existiert.

Du hast des Weiteren die Möglichkeit zu wählen, ob beim Ausführen von Kommandos mit sudo nach einem Passwort gefragt werden soll (empfohlen) oder nicht. Wir gehen von der Variante mit Passwortabfrage aus. Entferne dazu das Kommentarzeichen vor der Zeile %wheel ALL=(ALL) ALL:

Diese Zeile besagt, dass die Mitglieder der Gruppe wheel (in der sudoers Datei werden Gruppen mit einem %-Zeichen angeführt) alle Kommandos mit den Rechten aller Benutzer ausführen dürfen.

Standardmässig verlangt sudo zum Ausführen von Befehlen mit Root-Rechten nach dem Benutzerpasswort. Falls Du es vorziehst, dass sudo nach dem Root-Passwort fragt, kannst Du unter den Beispiel-Defaults einen weitere Zeile mit folgendem Inhalt einfügen:

Defaults rootpw

Speichere die Datei ab und verlasse den Editor.

Mit Hilfe des usermod Kommandos kannst Du deinen Benutzer zur Gruppe wheel hinzufügen:

usermod -a -G wheel linuxuser

Wobei du linuxuser durch deinen tatsächlichen Benutzernamen ersetzen musst. Die Änderungen an den Gruppenberechtigungen werden beim nächsten Login aktiv. Melde dich daher ab und wieder an und prüfe zum Beispiel mit Hilfe von sudo -i ob Du eine Root-Shell erlangen kannst. Das einzugebende Passwort ist abhängig davon, ob Du den Parameter Defaults rootpw gesetzt hast oder nicht. Falls ja, musst Du das Root-Passwort angeben, andernfalls dein Benutzerpasswort.

Hinweis: Im weiteren Verlauf des Kurses werden wir verstärkt sudo verwenden um Befehle mit Root-Rechten auszuführen.

Sicherheit

Mit einem Computer der mit dem Internet verbunden ist, besteht permanent die Gefahr eines Angriffes. Wir möchten die Angriffsfläche möglichst klein halten. Dazu sind einige Anpassungen notwendig.

Dienste

Um dein Linux-System möglichst sicher vor Angriffen zu halten, sollten wir alle nicht benötigten Dienste de-aktivieren oder absichern. Mit dem netstat Kommando kannst Du prüfen, welche Dienste auf deinem Rechner Anfragen über das Netzwerk akzeptieren.

Prüfen wir zunächst welche Dienste auf dem TCP-Protokoll aktiv sind.

sudo netstat -antp

Der Parameter -a schliesst alle Interfaces ein, -n stellt die Ausgabe der Adressen numerisch dar, -t steht für das TCP Protokoll und -p gibt das dazugehörige Programm aus.

Interessant an der Ausgabe sind folgende Spalten:

Du siehst, dass der Dienst inetd (PID/Program name) auf Port 37 und Port 113 auf allen lokalen Adressen (Local Address) Anfragen von überall (Foreign Address) entgegen nimmt. 0.0.0.0 steht für alle IPv4 Adressen. Der Port auf dem ein Dienst läuft wird jeweils bei Local Address hinter dem Doppelpunkt angegeben.

Des weiteren nimmt SSH Anfragen auf allen IPv4 und IPv6 Adressen von überall entgegen. :: ist unter IPv6 analog zu 0.0.0.0 zu verstehen.

Der SSH Dienst ist für den sicheren entfernten Zugriff auf deinen Rechner sinnvoll, und kann daher aktiviert bleiben. Falls Du diesen Dienst dennoch stoppen und de-aktivieren möchtest, könntest Du dies mit Hilfe von folgendem Kommandos tun. Im weiteren Kursverlauf gehen wir davon aus, dass Du den SSH-Dienst aktiviert lässt.

Was sich hinter den TCP Ports 37 und 113 verbirgt kannst Du zum Beispiel in der Liste der standardisierten Ports auf Wikipedia nachlesen: https://de.wikipedia.org/wiki/Liste_der_standardisierten_Ports

Mit Port 37 liefert das TIME-Protokoll die Zeit aus. Port 113 ermöglicht die Ermittlung von Benutzernamen über das Netzwerk.

Beide Dienste können de-aktiviert werden. Dazu kannst Du mit sudo die Datei /etc/inetd.conf bearbeiten und die beiden Einträge für time sowie den Eintrag für auth mit einer Raute am Zeilenanfang auskommentieren. Daraufhin muss der Dienst inetd neu gestartet werden.

Schauen wir uns nun die Dienste an, die auf dem UDP Protokoll laufen:

sudo netstat -anup

Statt des -t Parameters geben wir nun -u für das UDP Protokoll an. Du hättest auch die Möglichkeit beide Protokolle anzeigen zu lassen. Dann sähe der obige Befehl wie folgt aus: netstat -antup.

Einen UDP Dienst hast Du bereits de-aktiviert, als du den entsprechenden time Eintrag in der inetd.conf de-aktivert hast. Du siehst, dass inetd auch noch auf UDP Port 512 lauscht. Dabei handelt es sich um den comsat Daemon der Benachrichtigungen über neue Emails empfängt und den Benutzer über das biff Kommando darüber informiert. Diese Funktionalität wird heute nur noch selten genutzt und Du kannst sie ebenfalls mit Root-Rechten in der Datei /etc/inetd.conf deaktiviert werden, indem Du die mit comsat beginnende Zeile mit einer vorangestellten # auskommentierst.

Der aufgeführte Port 68 vom Dienst dhcpcd wird für die korrekte Kommunikation mit dem DHCP Server benötigt. Konkret handelt es sich dabei um den BOOTP Client Port. Dieser sollte daher aktiviert bleiben, sofern Du DHCP nutzen möchtest.

Port 123 wird vom ntpd genutzt.

Zwei Zeilen der netstat Ausgabe sind diesbezüglich relevant und wir möchten verhindern, dass der NTP Daemon auf allen lokalen Adressen Anfragen von überall entgegen nimmt.

Dazu kannst Du die ntpd.conf Datei mit Root-Rechten öffnen und am Ende der Datei die interface Definition hinzufügen:

vi /etc/ntp.conf

Dadurch legen wir fest, dass ntpd nicht mehr auf allen Interfaces lauscht (ignore wildcard) und geben an, dass der Dienst nur auf dem sogenannten loopback-Interface aktiv ist (127.0.0.1 für IPv4 und ::1 für IPv6). Das loopback-Interface ist nur auf der lokalen Maschine selbst verfügbar.

Starte den ntp Dienst neu und überprüfe die Änderungen:

Bei einer erfolgreichen Konfiguration laufen auf deinem System nur noch die wirklich benötigten Dienste, was bereits eine erhöhte Sicherheit bietet.

avahi/mdns

Ein Dienst der auf deinem Linux-System bisher nicht installiert ist, aber durchaus hilfreich sein kann, nennt sich avahi. Dabei handelt es sich um eine Implementierung des mDNS Protokolls, welches eine einfache Namensauflösung im lokalen Netzwerk ermöglicht. Die meisten Netzwerkkomponenten wie SmartTVs, Router, NAS-Server oder Drucker haben dieses Protokoll implementiert. Standardmässig erfolgt die Namensauflösung dabei über die mDNS Domain .local. Würdest Du beispielsweise einen NAS-Server mit dem Namen nas in deinem Netzwerk verfügbar haben auf dem mDNS implementiert wäre, könntest Du über den Namen nas.local darauf zugreifen.

Die Installation von avahi/mdns besteht aus mehreren Paketen. Zur Vorbereitung muss zunächst eine Gruppe Benutzerkonto für den Dienst erstellt werden:

Die Paketerstellung und Installation erfolgt mit sbopkg mit der Auswahl des Queuefiles:

sudo sbopkg -k -i avahi

Nach erfolgreicher Installation kannst Du die Dienste im laufenden System mit folgendem Befehl starten:

Um sicher zu stellen, dass diese auch beim Systemstart aktiviert werden, füge mit Root-Rechten folgende Zeilen zur /etc/rc.d/rc.local Datei hinzu:

Neben der rc.local Datei, die am Ende des rc.M Multiuser-Initscriptes aufgerufen wird, gibt es die Möglichkeit eine weitere Datei namens /etc/rc.d/rc.local_shutdown zu erstellen, die beim Herunterfahren oder Neustarten des Computers ausgeführt wird. Sie ermöglicht das saubere Beenden von Diensten.

Füge dort folgenden Inhalt hinzu:

Speichere die Änderungen ab und markiere die Datei als ausführbar:

sudo chmod +x /etc/rc.d/rc.local_shutdown

Nicht jede Anwendung benötigt ein Shutdown Script. Beim Starten von Hintergrundanwendungen (Daemons) erstellen diese oftmals ein sogenanntes pidfile in dem die Prozessnummer hinterlegt ist oder ein lockfile, welches signalisiert, dass der Dienst läuft.

Dadurch kann festgestellt werden, ob der Prozess bereits läuft und verhindert werden, dass dieser erneut gestartet wird, solange bereits eine laufende Instanz vorhanden ist. Wenn Du wie zuvor beschrieben den avahidaemon im laufenden System gestartet hast, findest Du solch ein pidfile unter dem Pfad /run/avahi-daemon:

sudo cat /run/avahi-daemon/pid

Die ausgegebene Prozessnummer solltest Du auch in der Liste der aktuell laufenden Prozesse sehen, die Du dir mit dem Kommando ps anzeigen lassen kannst:

sudo ps aux

Es folgt eine kurze Erklärung der Verwendeten ps Parameter:

Probiere die verschiedenen Parameter nacheinander aus und schaue dir die Veränderung an. Würdest Du beispielsweise den x Parameter weglassen, würde der avahi Prozess nicht aufgeführt, da dieser als Daemon im Hintergrund läuft und nicht in einer tty.

Die Ausgabe von ps aux kann sehr lang sein. Wie gewohnt kannst Du sie dir mit ps aux|more seitenweise anzeigen lassen oder direkt die Ausgabe mittels grep auf die pid des avahi-daemon einschränken:

sudo ps aux|grep $(cat /run/avahi-daemon/pid)

Durch die Angabe von $(BEFEHL) wird ein Sub-Kommando aufgerufen. In obigen Beispiel wäre dies cat /run/avahi-daemon/pid, was den Inhalt der Datei /run/avahi-daemon/pid ausgibt. pidfiles enthalten in der Regel lediglich die Prozessnummer des Dienstes. Der Befehl grep schränkt die ps Anzeige auf diese Prozessnummer ein.

Würde ein Dienst beim Herunterfahren oder Neustarten des Rechners das pidfile- oder eine Lockdatei nicht entfernen, könnte es passieren, dass der Dienst beim nächsten Systemstart nicht gestartet würde. Das hängt von der Implementierung des jeweiligen Dienstes ab. Die meisten Hintergrundanwendungen prüfen neben der Existenz des pidfiles auch ob der Dienst tatsächlich läuft. Für avahi wird allerdings empfohlen den Dienst beim Herunterfahren oder Neustarten des Systems zu beenden.

nss-mdns

Damit die Linux-Systembefehle avahi nutzen können, muss ein weiteres Paket mit dem Namen nss-mdns installiert werden und die Namensauflösung konfiguriert werden.

Prüfe zunächst ob die Namensauflösung unter der Angabe der .local Domain bereits funktioniert. Wenn Du den Hostnamen deines Systems (darkstar) bisher nicht geändert hast, kannst Du folgenden Befehl ausführen:

getent hosts darkstar.local

Zum jetzigen Zeitpunkt sollte kein Ergebnis zurückgeliefert werden, da das nss-mdns Paket bisher nicht installiert und konfiguriert worden ist.

Die Installation kannst Du mit Hilfe von sbopkg starten. Wähle das Queuefile aus:

sudo sbopkg -k -i nss-mdns

Wie dein Linux-System Namen auflösen können soll, wird über die Datei /etc/nsswitch.conf gesteuert. Das Paket nss-mdns liefert eine Beispieldatei nsswitch.conf-mdns Datei mit.

Du kannst diese mithilfe des diff Befehls mit der aktuellen Konfigurationsdatei vergleichen:

sudo diff /etc/nsswitch.conf /etc/nsswitch.conf-mdns

Du siehst das der Bereich hosts in der /etc/nsswitch.conf-mdns um mdns erweitert worden ist, und dass network einen zusätzlichen Eintrag dns erhalten hat. Durch diese Anpassungen wird sichergestellt, dass zusätzlich mdns zur Namensauflösung verwendet wird. Um die Anpassungen auf deinem System zu aktivieren, erstelle zunächst eine Sicherheitskopie der Originaldatei:

sudo cp /etc/nsswitch.conf /etc/nsswitch.conf.orig

Nun kannst Du die Standard-Systemkonfiguration mit der angepassten Konfiguration aus dem nss-mdns Paket überschreiben:

sudo cp /etc/nsswitch.conf-mdns /etc/nsswitch.conf

Teste erneut die Namensauflösung mit dem getent hosts Befehl:

getent hosts darkstar.local

Jetzt sollte die IP-Adresse und der Hostname deines Linux-Systems ausgegeben werden.

Welche Geräte in deinem Netzwerk über mdns Namen erreichbar sind kannst Du mit dem Kommandozeilenbefehl avahi-browse herausfinden:

avahi-browse --all --resolve --terminate

Falls Du nicht möchtest, dass dein eigener Rechner in der Ausgabe aufgeführt werden soll, kannst Du den Parameter --ignore-local hinzufügen. Daraus ergibt sich:

avahi-browse --all --resolve --terminate --ignore-local

Im Anwendungsmenü findest Du unter der Kategorie System ein Programm namens Avahi Zeroconf Browser. Mit diesem kannst Du dir in einer grafischen Oberfläche alle im Netzwerk über mdns erreichbaren Systeme anzeigen lassen.

Firewall

Eine lokale Firewall schützt dein System zusätzlich vor Angriffen und ist sehr zu empfehlen.

ufw

ufw ist eine Abkürzung für uncomplicated firewall. Die Kommandozeilenapplikation ermöglicht die einfache Einrichtung und Verwaltung von Firewall-Regeln. Dabei abstrahiert das Programm die Linux-Firewall iptables. ufw unterstützt IPv4 und IPv6.

Neben ufw gibt es einige andere Alternativen zur vereinfachten Firewall-Konfiguration, wie zum Beispiel das unter Red Hat und SUSE zum Einsatz kommende Programm firewalld. Letzeres wird in diesem Kurs nicht behandelt.

Die Installation von ufw kann über ein SlackBuild-Script vorgenommen werden. Um die Abhängigkeiten mit zu installieren, wähle das Queuefile aus:

sudo sbopkg -k -i ufw

Damit der Dienst beim Systemstart aktiviert wird, füge mit Root-Rechten folgenden Abschnitt am Ende der Datei /etc/rc.d/rc.local/ ein:

Mit einer if-Abfrage wird geprüft ob die Datei /lib/ufw/ufw-init existiert und ausführbar ist, was bei der im Paket enthaltenen Datei der Fall ist. Der Befehl /lib/ufw/ufw-init start startet die Firewall. Du kannst diesen Befehl einmalig mit Root-Rechten ausführen, um den Dienst im laufenden System zu aktivieren:

sudo /lib/ufw/ufw-init start

Möchtest Du via SSH auf deinen Linux-PC zugreifen können, erlaube den Zugriff auf den entsprechenden Dienst durch Eingabe des ufw allow Befehls, gefolgt vom Namen des Anwendungsprofils:

sudo ufw allow ssh

Mit folgendem Befehl prüfst Du den Status der Firewall:

sudo ufw status

Wie du sehen kannst, wird ausschliesslich der Zugriff via SSH (TCP/Port 22) gestattet. Eine Regel gilt für IPv4, die andere für IPv6.

Um anstatt der namentlichen Bezeichnung der Regeln die Portnummern ausgeben zu lassen, kannst du ufw status mit dem erweiterten Parameter numbered aufrufen:

sudo ufw status numbered

ufw bringt bereits einige weitere vordefinierte Regeln für Anwendungen mit. Anzeigen lassen kannst Du dir die verfügbaren Anwendungsprofile wie folgt:

sudo ufw app list

Möchtest Du beispielsweise Details über das Regelwerk für den BitTorrent-Client Transmission erfahren, kannst Du dir diese mit ufw app info anzeigen lassen:

sudo ufw app info Transmission

Wenn Du den Zugriff auf die Anwendung Transmission durch die Firewall erlauben willst, kannst Du das ufw allow Kommando, gefolgt vom der zu erlaubenden Anwendung aufrufen, so wie Du es bereits für SSH getan hast:

sudo ufw allow Transmission

Der Parameter delete erlaubt es dir, eine zuvor hinzugefügte Regel wieder zu löschen. Für obiges Beispiel wäre dies:

sudo ufw delete allow Transmission

Falls der Zugriff auf eine Anwendung gestatten werden soll, für die kein bereits vorgefertigtes Applikationsprofil existiert, kann dies mit dem ufw allow Befehl unter Angabe des der Portnummer und des Protokolls erfolgen:

sudo ufw allow PORT/tcp

Wobei der PORT durch den zu erlaubenden Port ersetzen werden muss und bei Bedarf das Protokoll anpassen werden kann.

HINWEIS: Der Zugriff auf avahi/mdns ist standardmässig in ufw gestattet und muss nicht explizit konfiguriert werden. Siehe dazu auch die manpage von ufw.

SSH

Mittels SSH kannst Du, sofern der Dienst aktiv ist und der Port nicht durch eine Firewall blockiert wird, von einem anderen Rechner auf dein Linux-System zugreifen.

Linux/Mac SSH-Client

Falls es sich bei dem anderen Rechner um einen Linux-PC oder Mac handelt kannst Du von dort aus den ssh Client in einem Terminal starten. Als Parameter gibst du im einfachsten Fall den Namen des Benutzers mit dem du dich verbinden möchtest an, gefolgt von einem @ und dem Hostname oder der IP-Adresse des Zielrechners:

ssh linuxuser@192.168.0.100

In diesem Beispiel versuchen wir uns als linuxuser mit der IP-Adresse 192.168.0.100 zu verbinden. Die aktuelle IP-Adresse deines Linux-Systems (des Zielrechners) kannst Du, wie bereits gelernt, über das ip Kommando oder über einen Rechtsklick auf NetworkManager Symbol -> Verbindungsinformationen herausfinden. Den Benutzernamen musst Du durch den Namen deines tatsächlichen Benutzers ersetzen.

SCP

Neben der interaktiven SSH-Verbindung hast Du mit dem Kommando scp die Möglichkeit Dateien zu übertragen. Von einem anderen Linux-PC kannst Du den Befehl wie folgt aufrufen:

scp linuxuser@192.168.0.100:/home/linuxuser/Dokumente/Meine_Datei.txt .

Damit überträgst Du die Datei /home/linuxuser/Dokumente/Meine_Datei.txt von deinem Linux-System auf den anderen Linux-PC und speicherst sie dort im aktuellen Verzeichnis (.) ab.

Du kannst auch den Parameter -r verwenden um ganze Verzeichnisse rekursiv zu übertragen:

scp -r linuxuser@192.168.0.100:/home/linuxuser/Dokumente .

Möchtest Du von einem anderen Linux-PC Dateien auf dein Linux-System übertragen, kannst Du einfach die Reihenfolge umkehren:

scp Meine_Datei.txt linuxuser@192.168.0.100:/home/linuxuser/Dokumente/

Mit obigen Befehl überträgst Du Meine_Datei.txt in den Ordner /home/linuxuser/Dokumente/ auf dein Linux-System. Auch hierbei ist es möglich den Parameter -r zur rekursiven Übertragung zu verwenden.

Windows SSH-Client

Unter Windows kannst Du zum Beispiel das Programm putty für den SSH-Zugriff verwenden. Du findest es auf der Homepage des Entwicklers:

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

Es handelt sich um eine grafische Applikation. Der Verbindungsaufbau erfolgt ähnlich wie bei dem ssh Kommando. Im Feld Host Name (or IP Address) kannst Du den Benutzernamen gefolgt von einem @ und dem Namen oder der IP-Adresse des Zielrechners angeben.

Nachdem Du auf Connect geklickt hast, öffnet sich ein Terminalfenster in dem Du das Passwort des Benutzers angeben musst. Nach erfolgreicher Eingabe hast Du einen entfernten Shell-Zugriff auf dein Linux-System.

WinSCP

Unter Windows kann das Programm WinSCP zur Dateiübertragung verwendet werden. Du kannst es auf folgender Webseite herunterladen:

https://winscp.net/eng/downloads.php

Nach dem Start der Applikation öffnet sich ein Dialog, in dem Du die Verbindungsinformationen angeben kannst. Die Übertragung von Dateien kann per Drag-and-Drop erfolgen.

SSH-Keys

Der SSH-Zugriff erfolgte bisher über die Eingabe des Passworts. Eine sichere Alternative ist die Verwendung von sogenannten SSH-Keys. Standardmässig ist der Root-Zugriff via SSH unter Slackware nur mit Key möglich. Wir möchten dies auch für dein normales Benutzerkonto konfigurieren.

Dazu musst Du zunächst für dein Benutzerkonto einen SSH-Key erstellen:

ssh-keygen -t ed25519

Bei Enter file in which to save the key kannst du einfach den Standardspeicherort durch Eingabe von Enter übernehmen. Daraufhin wirst Du gefragt ob Du ein Passwort für deinen Schlüssel angeben möchtest. Dies ist dringend zu empfehlen. Das Passwort siehst Du während der Eingabe nicht. Bestätige es mit Enter und gebe das Passwort erneut ein.

Das neu erzeugte Schlüsselpaar wurde unter /home/linuxuser/.ssh/ abgespeichert.

Zugriff mit SSH-Key

Um mittels SSH-Key auf dein Linux-System zugreifen zu können, musst Du den öffentlichen Schlüssel (Public-Key) zur Datei ~/.ssh/authorized_keys hinzufügen. Dort werden die erlaubten Schlüssel hinterlegt.

cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys

Der Befehl cat gibt den Inhalt des zuvor erzeugten Public-Keys aus. Mit der Angabe von >> leitest Du die Ausgabe in eine andere Datei um, in diesem Falle in die Datei ~/.ssh/authorized_keys. Da Du >> angegeben hast, wird die Ausgabe des cat Befehls an die Zieldatei angehängt, wenn diese bereits existiert. Durch die Angabe von nur einem > würde die Zieldatei überschreiben werden.

Aus Sicherheitsgründen solltest Du die Rechte auf die ~/.ssh/authorized_keys Datei einschränken:

chmod 600 ~/.ssh/authorized_keys

Linux/Mac SSH-Client mit Key

Um von einem anderen Rechner auf dein Linux-System zugreifen zu können, musst Du den privaten Schlüssel (Private-Key) dort hin kopieren. Dazu kannst Du, wie Du zuvor gelernt hast, das SCP-Kommando verwenden.

Falls auf dem anderen Rechner ebenfalls Linux installiert ist, kannst Du dort folgenden Befehl ausführen. Stelle zuvor sicher, dass dort nicht bereits eine gleichnamig Datei existiert, andernfalls kannst Du beim scp Kommando den Namen der Zieldatei entsprechend anpassen:

Der Zugriff mit dem SSH-Schlüssel erfolgt durch Angabe des Schlüssels mit dem -i Parameter, zum Beispiel:

ssh -i ~/.ssh/id_ed25519 linuxuser@192.168.0.100

Das scp Kommando unterstützt ebenfalls den -i Parameter.

Windows SSH-Verbindung mit Key

Wenn Du mit dem privaten Schlüssel von einem Windows PC auf dein Linux-System zugreifen möchtest, musst Du diesen ebenfalls zuvor dorthin übertragen. Dazu kannst Du das WinSCP Programm nutzen. Unter Windows kannst Du den Schlüssel in einem beliebigen Ordner abspeichern, zum Beispiel in deinem Dokumenten-Ordner.

Hinweis: WinSCP stellt standardmässig versteckte Dateien und Ordner nicht dar. Unter Linux gelten Dateien und Ordner die mit einem . angeführt werden als versteckt. Da es sich bei ~/.ssh um einen solchen versteckten Ordner handelt, wird dieser nicht angezeigt. Damit Du ihn in WinSCP siehst, kannst Du Ctrl + Alt + H zusammen drücken.

Thunar bietet ebenfalls eine solche Möglichkeit, allerdings lautet der Shortcut hier: Ctrl + H. Ein erneutes Drücken blendet die versteckten Dateien wieder aus.

Schlüssel umwandeln in .ppk

Putty sowie auch WinSCP verwenden ein anderes Schlüsselformat. Für die Umwandlung des Schlüssels benögigst Du ein Windows-Hilfsprogramm mit dem Namen puttygen. Du findest es auf der Putty Downloadseite, indem Du dort nach puttygen.exe suchst. Es gibt 32bit und 64bit Binaries, wähle das zu deiner Windows-Installation passende aus und lade es herunter,

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

Nach dem Start der Anwendung kannst Du den Menüpunkt Conversions -> Import Key wählen. Du wirst nach dem Schlüsselpasswort, welches Du bei der Erstellung des SSH-Keys angegeben hast gefragt.

Um den Schlüssel im .ppk Format zu exportieren, klicke bitte auf Save Private Key. Du kannst ihn beispielsweise auch in deinem Dokumenten-Ordner abspeichern.

WinSCP mit SSH-Key

Den so im .ppk-Format exportierten Schlüssel kannst Du in den Verbindungseinstellungen von WinSCP angeben, in dem Du bei der Verbindungsübersicht den Punkt Advanced -> Advanced auswählst.

In dem sich öffnenden Konfigurationsdialog kannst Du unter SSH -> Authentication im Bereich Private Key File den privaten Schlüssel im ppk Format hinterlegen.

Der eigentliche Verbindungsaufbau funktioniert wie bereits bekannt, ausser das Du kein Passwort mehr angibst. Das Passwort-Feld kannst Du leer belassen. Du wirst während des Aufbaus der Verbindung nach dem Passwort des SSH-Schlüssels gefragt.

Wenn Du dich häufiger verbindest, macht es Sinn über den Save Button ein Profil zu erstellen, das Du jederzeit wieder aufrufen kannst.

Putty mit SSH-Key

Den Schlüssel im .ppk-Format kannst Du ebenfalls im Putty verwenden. Wähle dazu im Menü den Punkt Connection -> SSH -> Auth und hinterlege dort den Schlüssel.

Es bietet sich an auch im Putty die Sitzung abzuspeichern. Dazu musst Du die Verbindungsinformationen angeben, den Key wie oben angegeben hinterlegen, im Feld Saved Sessions einen Namen angeben und auf Save klicken.

Passwort Anmeldung de-aktivieren

Sobald Du die Authentifizierung mit dem neu erstellten SSH-Key getestet hast und Du dich erfolgreich damit anmelden konntest, ist es empfehlenswert die SSH-Anmeldung über Passworteingabe zu deaktivieren. Die Konfiguration des ssh daemons wird in der Datei /etc/ssh/sshd_config vorgenommen. Über die Option PasswordAuthentication wird gesteuert, ob eine Anmeldung mittels Passwort zugelassen werden soll oder nicht.

Mit Hilfe des Befehls sshd -T kannst Du dir die aktuelle Einstellung anzeigen lassen:

sudo sshd -T | grep -i --color 'PasswordAuthentication'

Der Parameter --color färbt etwaige Treffer ein, -i sorgt dafür, dass Gross- und Kleinschreibung ignoriert wird.

Schaue dir nun die Einstellung in der Konfigurationsdatei /etc/sshd/sshd_config an:

grep -i --color 'PasswordAuthentication yes' /etc/ssh/sshd_config

Du siehst, dass die Option PasswordAuthentication auf yes gesetzt ist. Auch wenn ein #-Zeichen vor der Zeile angegeben ist, wird diese Konfiguration übernommen, da es sich um die Standardeinstellung für diesen Parameter handelt. In der *man-page von sshd_config werden die Defaultwerte für die jeweiligen Konfigurationsoptionen angegeben:

man sshd_config

Hinweis: ähnlich wie vim unterstützt auch man die interaktive Suche. Du kannst / gefolgt vom Suchbegriff eingeben, um die Suche auszulösen. Weitere Treffer kannst Du dir mit n anzeigen lassen, solange Du dich im Suchmodus befindest.

Um die Einstellung zu ändern, kannst Du die Datei /etc/sshd/sshd_config mit dem Editor öffnen, die Raute vor PasswordAuthentication entfernen und den Wert auf no setzen oder folgenden Befehl ausführen:

sed steht für stream editor. Das Kommando erlaubt das nicht-interaktive bearbeiten von Text-Datenströme oder Dateien. Die Option -i führt die Änderungen direkt in der Datei durch. Der eigentliche sed Befehl beginnt mit dem ' Zeichen. s besagt, dass sogenannte Regular Expressions (RegEx) verwendet werden sollen.

Das dem s folgende Zeichen leitet den Suchbegriff ein. Das ^-Zeichen steht für den Zeilenanfang. Darauf folgt eine RegEx [# ]* die besagt, dass die Zeichen # und das Leerzeichen beliebig oft oder gar nicht vorkommen können. Darauf folgt der Suchstring PasswordAuthentication, denn diese Konfigurationsoption möchten wir bearbeiten. Das .* steht für keines, eines oder mehrere beliebige Zeichen. $ bezeichnet das Zeilenende.

Nach dem zweiten / wird die Substitution angegeben, in diesem Falle PasswordAuthentication no. Der dritte / schliesst die Suche und Substitution ab. Das g steht für global. Damit werden alle Vorkommnisse behandelt, andernfalls würde nur der erste Treffer in der Zeile ersetzt. Das ' schliesst den Sed-Befehl ab. Als Parameter wird die zu bearbeitende Datei angegeben.

Nach der Anpassung der SSH Konfiguration, musst Du den Dienst neu starten, damit die Änderungen aktiv werden:

sudo /etc/rc.d/rc.sshd restart

Versuche dich von einem anderen Computer mit deinem Passwort einzuloggen. Dies sollte nun nicht mehr möglich sein. Ein Login mittels SSH-Key hingegen schon.

X2Go

Neben der Möglichkeit des SSH-Shell-Zugriffs kannst Du mit X2Go auch grafisch von einem anderen PC oder Mac auf dein Linux-System zugreifen. X2Go besteht aus einer Server- und einer Clientkomponente.

x2goserver

Der Server-Teil wird auf deinem Linux-System installiert. Möglich ist dies, mit Hilfe der von den Autoren dieses Kurses bereitgestellten SlackBuilds. Zur Vorbereitung müssen zwei Benutzer und Gruppen erstellt und die Berechtigungen entsprechend angepasst werden:

Die eigentliche Installation kann mit sbopkg, unter Angabe des Queuefiles durchgeführt werden:

sudo sbopkg -k -i x2goserver

Vor dem ersten Start des Servers, muss eine Datenbank angelegt werden. Dazu kannst Du folgendes Kommando ausführen:

sudo x2godbadmin --createdb

Damit der Dienst beim Systemstart ausgeführt wird, muss das enthaltene Runlevel-Script als ausführbar markiert werden und der Dienst in der /etc/rc.d/rc.local Runlevel-Datei inkludiert werden:

sudo chmod +x /etc/rc.d/rc.x2goserver

sudo vi /etc/rc.d/rc.local

Füge die folgende if-Abfrage am Ende der Runlevel-Datei ein:

Um den Service im laufenden System zu aktivieren, kannst du das Startscript manuell ausführen:

sudo /etc/rc.d/rc.x2goserver start

x2goclient

Die Client-Komponente ist für Windows, Mac und unterschiedlichste Linux-Distributionen verfügbar. Die Installation wird auf der Wiki-Seite des Projektes im Detail beschrieben:

https://wiki.x2go.org/doku.php/doc:installation:x2goclient

Auch SlackBuilds sind verfügbar, falls es sich um den Rechner von dem Du auf dein Linux-System zugreifen möchtest ebenfalls um eine Slackware-Installation handelt. Die Installation verläuft in diesem Falle wie bekannt mit Hilfe des sbopkg Kommandos und dem verfügbarem Queuefile:

sudo sbopkg -k -i x2goclient

Client konfigurieren

Nach der Installation und dem ersten Start des Client, begrüsst dich dieser mit dem Sitzungseinstellungs-Dialog:

Als Sitzungsname kannst Du einen klingenden Namen angeben. Im Feld Host kannst Du die IP-Adresse deines Linux-Systems angeben. Bei Login wird dein Benutzername hinterlegt. Im Pull-Down-Menü Sitzungsart kannst Du Xfce wählen. Da Du einen SSH-Schlüssel verwendest, muss dieser im Bereich RSA-/DSA-Schlüssel hinterlegt werden.

Hinweis: falls es sich bei dem Rechner von dem aus Du zugreifen möchtest ebenfalls um eine Linux-Installation handelt, werden im File-Picker-Dialog standardmässig die versteckten Dateien und Ordner nicht angezeigt. Um diese einzublenden, drücke Ctrl + H. Durch erneutes drücken, werden die versteckten Dateien wieder ausgeblendet. Falls Du den Windows-Client verwenden möchtest, gebe dort den Originalschlüssel und nicht den Schlüssel im .ppk-Format an.

Unter dem Reiter Ein-/Ausgabe kannst Du einige erweiterte Einstellungen vornehmen:

Im Bereich Display besteht die Möglichkeit die Bildschirmauflösung festzulegen. Die Standardauflösung ist mit 800x600px sehr gering.

Es ist sinnvoll die DPI Einstellungen an die tatsächlichen Werten deines Linux-Systems anzupassen. DPI gibt den Skalierungsfaktor der Schriften an. Um herauszufinden, welche DPI-Werte dein Linux-System verwendest, kannst Du in einem Xfce-Terminal folgenden Befehl ausführen:

xdpyinfo | grep resolution

In den meisten Fällen ist der DPI-Wert 96.

Nach dem Speichern der Änderungen gelangst Du zur Übersicht.

Auf der rechten Seite werden alle erstellten Sitzungen angezeigt. Durch einen Doppelklick auf die Sitzung, startet der Verbindungsaufbau und Du wirst nach dem Passwort zu deinem SSH-Schlüssel gefragt.

Wenn der Verbindungsaufbau erfolgreich war, hast Du von deinem anderen Computer grafischen Zugriff auf dein Linux-System:

DynDNS

Da wir bisher die LAN (local area network) IP-Adresse zum Verbindungsaufbau verwenden, ist ein Zugriff über das Internet nicht möglich. In der Regel verwenden Endkunden-Internetanschlüsse sogenannte dynamische IP-Adressen, dass heisst deine öffentliche IP-Adresse mit der Du im Internet erreichbar bist, kann sich jederzeit ändern. Um in einen solchen Falle einen Remote-Zugriff über das Internet zu ermöglichen, bietet sich die Nutzung eines sogenannten DynDNS-Services an. Dieser funktioniert prinzipiell wie folgt: Du registrierst dich bei einem DynDNS-Provider und konfigurierst einen Dienst auf deinem Linux-System, der dem DynDNS-Provider in regelmässigen Abständen deine aktuelle externe IP-Adresse mitteilt. Der Provider aktualisiert dann den von dir registrierten Namen, so dass Du jederzeit über diesen Namen, deinen Rechner erreichen kannst.

ddclient

Ein möglicher Client-Dienst zur Aktualisierung von DynDNS-Adressen ist ddclient. Die Installation erfolgt aus dem SlackBuild mit Hilfe von sbopkg. Wähle das Queuefile zur Erstellung der Abhängigkeiten:

sudo sbopkg -k -i ddclient

Damit ist ddlient bereits installiert, allerdings noch nicht konfiguriert. Du kannst das Startscript als ausführbar markieren und in der /etc/rc.d/rc.local Runlevel Datei aufrufen:

sudo chmod +x /etc/rc.d/rc.ddclient

sudo vi /etc/rc.d/rc.local

Du kannst die if-Abfrage zur Einbindung des Startscriptes vor dem Aufruf des x2goservers einfügen:

nsupdate.info

Ein freier und netter DynDNS-Serviceanbieter ist nsupdate.info:

https://www.nsupdate.info/

Du kannst dir dort kostenlos ein Konto erstellen. Nach der Registrierung hast Du die Möglichkeit im Bereich Übersicht einen neuen Host Eintrag über den Punkt Host hinzufügen zu erstellen.

Im Feld Name kannst Du einen Namen angeben unter dem dein Linux-System erreichbar sein soll. Der Name muss bei dem Serviceanbieter noch verfügbar sein. Im Pull-Down-Menü Domain kannst Du dir eine der verfügbaren Domains aussuchen. Über einen Klick auf Erzeugen wird der Host erstellt.

Nach der Erstellung gelangst Du zur Übersichtsseite. Dort findest Du Beispielkonfigurationen für unterschiedlichste DynDNS-Client-Implementierungen. Wir gehen davon aus, dass Du das zuvor installierte ddclient Programm auf deinem Linux-System nutzen möchtest.

Hinweis: Bei jedem erneuten Aufruf der Client-Konfigurationsseite wird ein neues Passwort generiert! Daher ist zu empfehlen die Konfiguration zu kopieren, in einem Editor wie gedit zwischen zu speichern und die Seite zu schliessen.

Markiere unter dem Reiter ddclient die in der Textbox angezeigte Konfiguration und kopiere sie in den Editor gedit, den Du mit Root-Rechten aus einem Terminal heraus starten kannst:

sudo gedit

Speichere die Konfigurationsdatei unter /etc/ddclient/ddclient.conf ab. Das Wurzelverzeichnis erreichst Du im Speichern-Dialog über die Auswahl von Dateisystem unterhalb von Orte. Von dort aus kannst du das entsprechende Verzeichnis auswählen, also etc und dann ddclient. Gebe bei Name ddclient.conf an oder klicke auf die bereits vorhandene Paket-Konfigurationsdatei, was den gleichen Effekt hat.

Nach dem Abspeichern der Konfigurationsdatei kannst Du den Dienst mit folgenden Befehl im laufenden System starten:

sudo /etc/rc.d/rc.ddclient start

Es sollte eine Meldung erscheinen, die besagt, dass die IP-Adresse deines DynDNS-Hostnamens erfolgreich aktualisiert wurde.

Router-Konfiguration

Per Default erlauben Internetrouter keinen Zugriff auf Rechner in deinem LAN. Das ist eine gute und sichere Voreinstellung. Wenn Du den Zugriff auf dein Linux-System über SSH (TCP Port 22) erlauben möchtest, so musst Du in deinem Router eine entsprechende Portforwarding Regel erstellen.

Falls Du DHCP zur Vergabe von IP-Adressen in deinem Netzwerk verwendest, solltest Du zunächst eine MAC-Adressen-Fixierung vornehmen, damit dein Linux-System jedes Mal die gleiche IP-Adresse zugewiesen bekommt.

Danach kannst Du die Portforwarding Regel erstellen, die TCP Port 22 von extern auf dein Linux-System weiterleitet.

Hinweis: Bei einigen Providern wie UPC muss zunächst IPv4 auf dem Router aktiviert werden. Dies kann durch die Service-Hotline vorgenommen werden. Erst danach ist es möglich Port-Forwarding zu konfigurieren.

Touchpad

Falls Du einen Laptop verwendest hat dieser wahrscheinlich ein Touchpad. Es ist empfehlenswert einige Konfigurationen vorzunehmen, um die Funktion des Touchpads an deine Bedürfnisse anzupassen.

Synaptics

Standardmässig verwendet Slackware den synaptics Treiber zum ansteuern von Touchpads. Die zu verwendenden Einstellungen lassen sich bequem über das Tool synclient vornehmen. Eine zentrale und persistente Konfiguration lässt sich über eine Xorg-Konfigurationsdatei realisieren.

sudo vi /etc/X11/xorg.conf.d/40-synaptics.conf

Über diese Beispielkonfiguration legen wir fest, dass bei einem Tap auf das Touchpad mit einem Finger ein linker Mausklick ausgeführt werden soll, bei einem zwei Finger Tab ein rechter Mausklick und bei drei Fingern ein mittlerer Mausklick (Option TapButtonX). VertTwoFingerScroll erlaubt das Scrollen mit zwei Fingern. Alternativ könnte die Option VertEdgeScroll auf 1 gesetzt werden, um ein Scrollen am Touchpadrand zu ermöglichen.

Mit Hilfe der eingestellten Tap-Parameter kannst du einfach zuvor markierten Text mittels 3-Finger-Tap in einer beliebigen Applikation einfügen.

Weitere mögliche Konfigurationsoptionen kannst Du dir mit dem Befehl synclient -l ausgeben lassen.

KDE

Mit KDE steht unter Slackware eine sehr mächtige alternative Desktopumgebung zur Verfügung. Ursprünglich stand die Abkürzung KDE für Kool Deskop Environment. Seit 2009 bezeichnet der Begriff KDE die Entwicklergemeinschaft und die resultierende Software wird unter dem Namen KDE SC - (KDE Software Compilation) veröffentlicht. Diese besteht aus folgenden Komponenten:

Unter Slackware sind diese Komponenten Bestandteil der Paketgruppe KDE. Da wir diese während der Basisinstallation abgewählt haben, können wir die Installation nun mit slackpkg nachholen.

Öffne dazu ein Terminal. Mit Hilfe von sudo slackpkg install kde kannst Du die KDE-Desktopumgebung installieren:

KDE besteht aus einer grossen Anzahl von Paketen. slackpkg zeigt dir eine Übersicht der Pakete die installiert werden:

Falls Du nicht möchtest das alle Sprachpakete mit installiert werden, kannst Du die nicht benötigten Pakete in der Liste mit Hilfe der Leertaste abwählen. Wie gewohnt kannst Du mit Tab zwischen den Elementen hin- und herwechseln. Das für ein deutschsprachige Umgebung benötigte Sprachpaket heiss kde-l10-de-.... Letzteres solltest Du weiterhin angewählt lassen, wenn Du KDE in Deutsch nutzen möchtest.

Bestätige die Installation mit der Auswahl von OK.

Die Installation kann einige Zeit dauern. Möchtest Du auch, dass die KDE Office Suite mit dem Namen 'Calligra' in deutscher Sprache verfügbar ist, kannst Du mit slackpkg das dazugehörige Sprachpaket installieren:

sudo slackpng install calligra-l10n-de

KDM

Mit der KDE-Desktopumgebung wird auch der Displaymanager KDM installiert. Da dieser in der Runlevel Konfigurationsdatei /etc/rc.d/rc.4 vor XDM gelistet wird, startet KDM beim nächsten Systemstart.

Über das Xfce Benutzermenü kannst Du den Rechner neu starten und es begrüsst dich der neue Loginmanager. Über das Pfeilsymbol lässt sich die zu startende Sitzung auswählen:

In der Liste kannst Du aus den verfügbaren Desktopumgebungen und Windowmanagern KDE Plasma Workspace auswählen.

Nach Eingabe deines Passworts und einem Klick auf den Play-Button startet die KDE-Sitzung.

Alternativ kannst Du im Displaymanager jederzeit wieder auf Xfce wechseln oder einen der anderen verfügbaren Windowmanager ausprobieren.

Der KDE Desktop

KDE begrüsst dich mit einem Splashscreen woraufhin der Desktop geladen wird:

  1. Das Anwendungsmenü. Es erlaubt die interaktive Suche nach Applikationen oder die Suche innerhalb von Kategorien. Klicke dazu auf Anwendungen
  2. Schnellstarter. Über diese Icons hast Du mit einem Klick Zugriff auf die entsprechenden Anwendungen. Mit der rechten Maustaste lassen sich neue Starter hinzufügen.
  3. Der Infobereich. Links findest Du den Systray, in dem Applikationen ihre Icons ablegen können. Daneben findest Du die Uhr und ganz am rechten Rand das sogenannte Cashew über das du das Panel anpassen kannst (Höhe, Breite, Position, Widgets etc.).

Temporäre Dateien

Unter Linux wird unter anderem das /tmp Verzeichnis zur Speicherung von temporären Dateien genutzt. Um dies regelmässig zu bereinigen, kannst Du beispielsweise mit Root-Rechten folgende Zeilen zu deiner /etc/rc.d/rc.local_shutdown Datei hinzufügen:

Im nächsten Kursteil geht es um den Wechsel auf die Entwicklerversion von Slackware mit der Bezeichnung -current.

Current < PDF >
https://linuxkurs.ch/kurs/Current.pdf

Current < HTML >
https://linuxkurs.ch/kurs/Current.html


© Lioh Moeller - Dokumentenversion 2.7