Konfiguration.md 57 KB

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 mithilfe des Programms ntpd, welches unter Slackware Bestandteil der Distribution ist. NTP ist ein Akronym 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:

su -
vi /etc/ntp.conf

Unter # NTP server kannst du folgende Serverkonfiguration hinterlegen:

server 0.ch.pool.ntp.org iburst
server 1.ch.pool.ntp.org iburst
server 2.ch.pool.ntp.org iburst
server 3.ch.pool.ntp.org iburst

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

Mithilfe 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

Mithilfe 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:

if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

Speichere die Datei ab und verlasse den Editor. Die if-Abfrage ermittelt mithilfe 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.

shopt -q login_shell || . /etc/profile
shopt -s checkwinsize
export PS1='\u@\h:\w\$ '
[[ "$TERM" = "xterm" || "$TERM" = "xterm-256color" ]] && export PROMPT_COMMAND='echo -ne "\033]0;$USER@$HOSTNAME\007" '
alias rm='rm -i'

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 mithilfe 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:

shopt -q login_shell
echo $?

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:

su -
shopt -q login_shell
echo $?

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 mithilfe des shopt BASH-builtins eine Shell Option gesetzt, die verhindert, dass 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:

  • /etc/profile
  • ~/.bash_profile
  • ~/.bash_login
  • ~/.profile

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.

Mithilfe 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:

  • \u Name des Benutzers der gerade an der Shell angemeldet ist
  • @ das AT-Zeichen
  • \h der Hostname bis zum ersten Punkt, bei darkstar.example.net wäre dies darkstar
  • : ein Doppelpunkt
  • \w das aktuelle Verzeichnis, in dem sich der Benutzer befindet (working directory)
  • $ ein Dollarzeichen
  • abschliessend folgt ein Leerzeichen

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 mithilfe 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:

Sequenz Farbe
[\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.

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

Allenfalls musst du noch die Datenbank mithilfe von mandb aktualisieren.

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ügbar:

  • 1 User Commands
  • 2 System Calls
  • 3 C Library Functions
  • 4 Devices and Special Files
  • 5 File Formats and Conventions
  • 6 Games et. Al.
  • 7 Miscellanea
  • 8 System Administration tools and Daemons

Diese Sections sind nicht zu verwechseln mit den einzelnen Paragrafen 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 7 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 mithilfe 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:

su -
visudo

Entferne das Rautenzeichen 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 eine weitere Zeile mit folgendem Inhalt einfügen:

Defaults rootpw

Speichere die Datei ab und verlasse den Editor.

Mithilfe 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 mithilfe 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 deaktivieren 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:

  • Local Address die lokale Adresse auf der ein Dienst läuft
  • Foreign Address die entfernte Adresse
  • PID/Program name die Prozessnummer und der Programmname

Du siehst, dass der SSH Dienst sshd (PID/Program name) auf Port 22 auf allen lokalen IPv4 Adressen (Local Address) Anfragen von überall (Foreign Address) entgegennimmt. 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 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 deaktivieren möchtest, könntest du dies mithilfe von folgendem Kommandos tun. Im weiteren Kursverlauf gehen wir davon aus, dass du den SSH-Dienst aktiviert lässt.

sudo /etc/rc.d/rc.sshd stop
sudo chmod -x /etc/rc.d/rc.sshd

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.

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. Analog dazu empfängt NetworkManager auf Port 546 eingehende Verbindungen für DHCPv6.

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 Smart-TVs, 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:

sudo groupadd -g 214 avahi
sudo useradd -u 214 -g 214 -c "Avahi User" -d /dev/null -s /bin/false avahi

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:

sudo /etc/rc.d/rc.avahidaemon start
sudo /etc/rc.d/rc.avahidnsconfd start

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:

# Start avahidaemon
if [ -x /etc/rc.d/rc.avahidaemon ]; then
  /etc/rc.d/rc.avahidaemon start
fi

# Start avahidnsconfd
if [ -x /etc/rc.d/rc.avahidnsconfd ]; then
  /etc/rc.d/rc.avahidnsconfd start
fi

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.

sudo vi /etc/rc.d/rc.local_shutdown

Füge dort folgenden Inhalt hinzu:

# Stop avahidnsconfd
if [ -x /etc/rc.d/rc.avahidnsconfd ]; then
  /etc/rc.d/rc.avahidnsconfd stop
fi

# Stop avahidaemon
if [ -x /etc/rc.d/rc.avahidaemon ]; then
  /etc/rc.d/rc.avahidaemon stop
fi

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:

  • a listet alle Prozesse eines Terminals
  • u zeigt die Benutzernamen an, unter denen die Prozesse laufen.
  • x zeigt zusammen mit der a Option alle Prozesse, auch diejenigen die nicht in einer tty laufen.

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.

Die Installation kannst du mithilfe 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

Welche Geräte in deinem Netzwerk über mDNS Namen erreichbar sind, kannst du nun mit dem Kommandozeilenbefehl avahi-browse herausfinden:

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

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 Alternativen zur vereinfachten Firewall-Konfiguration, wie zum Beispiel das unter Red Hat und SUSE zum Einsatz kommende Programm firewalld. Letzteres wird in diesem Kurs nicht behandelt.

Die Installation von ufw kann über ein SlackBuild-Script vorgenommen werden. Um die Abhängigkeiten mitzuinstallieren, 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:

# Start ufw
if [ -x /lib/ufw/ufw-init ]; then
  /lib/ufw/ufw-init start
fi

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 Port Nummern 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 Port Nummer 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.

Hostname

Standardmässig lautet der voll-qualifizierte Rechnername unter Slackware darkstar.example.net, in Anlehnung an die gleichnamige Science-Fiction-Parodie von Regisseur John Carpenter aus dem Jahr 1974. darkstar ist dabei der eigentliche Hostname, example der Second-Level-Domainname und .net die Top-Level-Domain. example.net ist eine Second-Level-Domain, die von der Internet Engineering Task Force permanent reserviert wurde, um in Dokumentationen oder Beispielen verwendet werden zu können.

Um den Rechnernamen zu ändern, kannst du die Datei /etc/HOSTNAME mit Root-Rechten bearbeiten. Für ein lokales Netzwerk, empfiehlt es sich wahlweise die Second-Level-Domain example.net beizubehalten oder eine alternative Domain zu wählen, die laut RFC2606 für interne Zwecke bestimmt ist: http://www.faqs.org/rfcs/rfc2606.html. Im folgenden Beispiel haben wir uns für die .example Top-Level-Domain entschieden und eine Second-Level-Domain namens domain gewählt. Den eigentlichen Hostnamen möchten wir auf tux ändern. Daraus ergibt sich: tux.domain.example.

sudo vi /etc/HOSTNAME

tux.domain.example

Zusätzlich sollte die Datei /etc/hosts bearbeitet werden, in der lokale Hosteinträge definiert werden können. In der Standardkonfiguration enthält die Datei zwei Einträge für das sogenannte Loopback-Interface welches die IP-Adresse 127.0.0.1 besitzt. Bei dieser Netzwerkschnittstelle handelt es sich nicht um eine physikalische Netzwerkkarte, sondern um eine virtuelle Netzwerkschnittstelle, über die lediglich eine Verbindung auf dem eigenen Rechner herstellt werden kann. Dieses Loopback-Interface kann beispielsweise für Diagnosezwecke verwendet werden, oder um auf Applikationen zuzugreifen, die nur direkt auf dem eigenen Rechner erreichbar sind. Ein Beispiel wäre die CUPS-Druckerkonfiguration, welche im Webbrowser über http://localhost:631 aufgerufen werden kann.

In der Datei /etc/hosts wird definiert, dass die Loopback-Adresse 127.0.0.1 (IPv4) und ::1 (IPv6) unter dem Hostnamen localhost erreichbar ist. Durch diesen Eintrag ist beispielsweise der Zugriff wie auf die CUPS-Verwaltungsoberfläche über den Hostnamen localhost möglich.

Standardmässig enthält die Datei zwei weitere Einträge in folgender Form:

127.0.0.1 darkstar.domain.example darkstar

::1 darkstar.domain.example darkstar

Dadurch wird erreicht, dass auch dann eine Auflösung des Hostnamen möglich ist, wenn nur die Loopback-Schnittstelle verfügbar ist. Aus technischer Sicht sind diese Einträge allerdings falsch, da 127.0.0.1 für localhost reserviert ist.

sudo vi /etc/hosts

127.0.0.1       tux.domain.example tux
::1             tux.domain.example tux

Damit die Konfiguration des neuen Hostnames systemweit angewandt wird, musst du deinen Computer neu starten.

Ob die Konfiguration erfolgreich war, kannst du mithilfe des getent Befehls überprüfen:

getent hosts tux
getent hosts tux.domain.example

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 obigem 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 hinkopieren. 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:

ls -al ~/.ssh/id_ed25519
scp linuxuser@192.168.0.100:/home/linuxuser/.ssh/id_ed25519 ~/.ssh/id_ed25519

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ötigst 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, ergibt 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 deaktivieren

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.

Mithilfe 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:

sudo sed -i 's/^[# ]*PasswordAuthentication.*$/PasswordAuthentication no/g' /etc/ssh/sshd_config

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, mithilfe der von den Autoren dieses Kurses bereitgestellten SlackBuilds. Zur Vorbereitung müssen zwei Benutzer und Gruppen erstellt und die Berechtigungen entsprechend angepasst werden:

sudo groupadd -g 290 x2gouser
sudo useradd -u 290 -g 290 -c "X2Go Remote Desktop" -M -d /var/lib/x2go -s /bin/false x2gouser
sudo groupadd -g 291 x2goprint
sudo useradd -u 291 -g 291 -c "X2Go Remote Desktop" -m -d /var/spool/x2goprint -s /bin/false x2goprint
sudo chown x2goprint:x2goprint /var/spool/x2goprint
sudo chmod 0770 /var/spool/x2goprint

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:

if [ -x /etc/rc.d/rc.x2goserver ]; then
  /etc/rc.d/rc.x2goserver start
fi 

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

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

x2goclient

Die Clientkomponente 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 mithilfe des sbopkg Kommandos und dem verfügbaren Queuefile:

sudo sbopkg -k -i x2goclient

Client konfigurieren

Nach der Installation und dem ersten Start des Clients, 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 Werte deines Linux-Systems anzupassen. DPI gibt den Skalierungsfaktor der Schriften an. Um herauszufinden, welche DPI-Werte dein Linux-System verwendet, 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, das heisst, deine öffentliche IP-Adresse, mit der du im Internet erreichbar bist, kann sich jederzeit ändern. Um in einem 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, sodass 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 mithilfe 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:

if [ -x /etc/rc.d/rc.ddclient ]; then
  /etc/rc.d/rc.ddclient start
fi 

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 zwischenzuspeichern 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 folgendem 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.

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:

  • KDE Plasma Desktop
  • KDE Frameworks
  • KDE Applikationen

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. Mithilfe von sudo slackpkg install kde kannst du die KDE-Desktopumgebung installieren:

sudo slackpkg install kde

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

Bestätige die Installation mit der Auswahl von OK.

Die Installation kann einige Zeit dauern.

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 die Schaltfläche unten links lässt sich die zu startende Sitzung auswählen:

In der Liste kannst du aus den verfügbaren Desktopumgebungen und Windowmanagern Plasma (X11) auswählen.

Nach Eingabe deines Passworts und einem Klick auf den Pfeil 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 welches du das Panel anpassen kannst (Höhe, Breite, Position, Widgets etc.).

Tastaturlayout

Falls das Tastaturlayout noch nicht dem Richtigen entspricht, kannst du über Systemeinstellungen > Tastatur > Belegungen auf Belegung einrichten klicken, um das Schweizer Tastaturlayout hinzuzufügen.

Im neu geöffneten Fenster kannst du nun das Layout auswählen und die Einstellungen anwenden.

Damit die Einstellungen angewendet werden, musst du dich neu einloggen.

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:

# Clean /tmp and silently re-create SBo folder
/usr/bin/find /tmp -mindepth 1 -maxdepth 1 -exec /bin/rm -rf {} +; mkdir /tmp/SBo > /dev/null 2>&1 

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


© CC-BY-SA - Lioh Moeller