Der Startartikel dieses Heftschwerpunkts befasst sich mit nativen Linux-Funktionen, die ohne externe Programme erreichbar sind. Es handelt sich um meist übersehene oder unterschätzte Angebote von System und Standardkomponenten mit signifikantem Nutzwert. Daher sollte jeder engagierte Linux-Anwender diese allesamt richtig coolen Möglichkeiten kennen.
Spezieller Desktop: So wenig wie gewünscht
Ein Linux-System kann sein Gesicht durch mehrere installierte Desktops wechseln. Diese Eigenschaft ist aber ausbaufähiger als weithin bekannt. An dieser Stelle müssen wir uns auf das Prinzip beschränken: Die Anlaufstelle, wo der Anmeldebildschirm (Displaymanager) die installierten Desktops abruft und dann anzeigt, ist das Verzeichnis "/usr/share/xsessions". Dort befinden sich kleine Textdateien mit der Endung ".desktop", die zwingend die Kopfzeile "[Desktop Entry]", einen "Name(n)" (der am Anmeldebildschirm angeboten wird) und eine "Exec"-Zeile wie
Exec=startxfce4 |
benötigen. Der Rest dieser Dateien ist im Prinzip optional und besteht überwiegend aus Lokalisierungseinträgen. Mit dieser Kenntnis lässt sich nun mit root-Recht eine eigene Datei unter "/usr/share/xsessions" anlegen, die man etwa "minimal.desktop" nennt und dann folgenden Inhalt erhält:
[Desktop Entry] |
Name=Minimal |
Exec=/home/lw/.xsession |
Die Exec-Zeile mit der Datei ".xsession" im Home-Verzeichnis muss genau so lauten, weil dies das X11-Grafiksystem so vorgibt (siehe Datei "/etc/X11/Xsession"). Nur den Kontonamen "lw" müssen Sie natürlich so anpassen, dass er zutrifft.
Damit ist für das System ein neuer Desktop definiert, der am Anmeldebildschirm auftauchen wird - aber vorerst ins Leere führt. Der kreative Job ist es nun, die Datei "~/.xsession" (im Beispiel "/home/lw/.xsession") sinnvoll zu füllen. Dabei handelt es sich um ein Bash-Script mit den üblichen Syntaxregeln. Ein Beispiel:
#!/bin/bash |
/usr/bin/openbox & |
firefox |
logout |
Das Script lädt den Openbox-Desktop (der natürlich installiert sein muss), danach Firefox. Beim Schließen des Browsers wird die Sitzung abgemeldet und es erscheint wieder der Anmeldebildschirm. Die jeweils genutzte Desktopumgebung kann man sich vorher über den normalen Start dieses Desktops nach Belieben einrichten - so minimal oder ausgebaut wie gewünscht. Theoretisch lässt sich ein Programm wie der Browser oder ein Medienplayer auch solo laden, dann jedoch mit erheblichen Einschränkungen. Nur mit einem kleinen Desktop wie JWM, Icewm, Openbox oder LXDE gibt es eine komfortable Mausnavigation und ein Skalieren der Programmfenster.
Das zweite Beispiel kommt einem Kiosk-System wie Porteus Kiosk (www.porteus.org) recht nahe und führt zu einem Browser im Vollbild ohne Navigationselemente. Wie im ersten Beispiel beendet das Schließen des Browsers (durch Schließen des letzten Tabs) die Sitzung durch "logout":
#!/bin/bash |
/usr/bin/startlxde & |
firefox --kiosk http://192.168.0.6 logout |
Diese Methode hat gegenüber Porteus Kiosk sogar einen Vorteil: Der benutzte Browser lässt sich am "normalen" Desktop problemlos aktualisieren.
Desktopoberfläche: Der On/Off-Schalter
Alle Linux-Distributionen mit Systemd (Ubuntu, Mint und viele weitere) können die grafische Oberfläche mit einem einzigen Befehl dauerhaft aus- oder wieder einschalten. Das ist vor allem für Platinenrechner interessant. Nicht selten ist eine Oberfläche dort nur zur Einrichtung willkommen, danach aber nicht mehr. Besonders wichtig ist diese Methode bei Platinen mit geringer Systemauswahl - wenn beispielsweise nur ein Ubuntu-Desktop zur Verfügung steht, dessen Oberfläche aber eigentlich nicht benötigt wird. Wenn Sie nur noch die Serverdienste brauchen (Samba, SSH, Apache), dann lässt sich die Oberfläche mit
sudo systemctl set-default multi-user.target |
umstandslos abschalten. Die Maßnahme gilt ab dem nächsten Neustart. Je nach verwendeter Oberfläche werden dadurch RAM- sowie CPU-Ressourcen frei. Mit dem Befehl
sudo systemctl set-default graphical.target |
ist der Desktop bei Bedarf auch wieder dauerhaft einzuschalten. Die abgeschaltete Oberfläche können Sie auf der Konsole außerdem manuell mit
startx |
starten.
Swapdatei: Komplett abschalten
Die Beobachtung der RAM-Auslastung im Taskmanager zeigt auf neuerer Hardware (oft auch auf älterer Hardware mit einem dafür angemessenen Linux) praktisch immer, dass keine RAM-Auslagerung auf Festplatte stattfindet (Swapping). Bei Rechnern mit acht oder 16 GB ist das Dauerzustand. Während das Spiel mit "Swappiness"-Werten in der Konfigurationsdatei "/etc/sysctl.conf" heikel und kaum verifizierbar bleibt, können Sie die Swapdatei einfach komplett abschalten. Im laufenden System beenden diese beiden Terminalbefehle
sudo swapoff /swapfile |
sudo rm /swapfile |
die Auslagerung und löschen die Auslagerungsdatei. Zuletzt - und am wichtigsten -deaktivieren Sie in der Datei "/etc/fstab" die Zeile
/swapfile […] |
durch das Kommentarzeichen "#". Der Ruhezustand "Bereitschaft" (Suspend to RAM) funktioniert weiterhin und "Hibernation" (Suspend to Disk) ist in den aktuellen Ubuntu-Varianten ohnehin nicht mehr vorgesehen, seit Ubuntu & Co. von der Swappartition auf die Swapdatei umgestellt haben.
Home-Partition: Eine Heimat für immer!
Mehrere Linux-Rechner? Fällige Neuinstallationen? Der Hauptaufwand besteht immer darin, die vertraute Software nachzuinstallieren und vor allem danach händisch einzurichten (Desktop, Mailkonten, Browsereinstellungen, Bash-Standards, Dateimanager, FTP- und SSH-Clients …). Unter Linux ist das alles hinfällig, wenn eine Home-Blaupause auf einer portablen Extrapartition vorliegt (auf USB-Stick oder SD-Karte). Linux-Installer bieten eine separate Home-Partition nicht standardmäßig an, sondern fordern dazu eine manuelle Partitionierung - also etwa unter Ubuntu im Dialog "Installationsart" die Option "Etwas Anderes". Nach Einrichtung der kleinen EFI-Partition (falls Uefi erwünscht) und der Systempartition auf dem internen Datenträger definieren Sie auf dem USB- oder SD-Medium die Home-Partition mit dem Einbindungspunkt "/home". Bei schnellem USB-Port (3.x) oder schneller SD-Karte (UHS, "Extreme", mindestens 100 MB/s) entstehen keinerlei Nachteile - und entscheidende Vorteile:
1. Wenn Sie den Home-Datenträger an einem anderen System anschließen, können Sie ausgewählte Daten im Dateimanager oder auch komplett etwa mit rsync in das lokale "/home" übernehmen.
2. Wenn Sie den Home-Datenträger klonen, können Sie das identische Home auf einem anderen Linux-System verwenden. Das muss dann allerdings ebenfalls mit eigener Home-Partition installiert worden sein. Danach genügt es, in der Datei "/etc/fstab" die UUID-Kennung des neuen geklonten Mediums für den Einbindungspunkt "/home" einzutragen (die UUIDs zeigt der Befehl "lsblk -f").
3. Benutzereinstellungen unter "/home" etwa zu Desktops, Libre Office, Thunderbird, Browser führen ins Leere (ohne allerdings zu schaden), sofern die Software nicht installiert ist. Unter Linux genügt bekanntlich ein Terminal-Einzeiler, um Standardprogramme und Tools abzuholen:
sudo apt install openssh-server vlc libreoffice inxi mc htop ncdu mlocate p7zip-full […] |
Ein solcher Befehl sollte im Optimalfall bereits vorliegen. Der funktioniert natürlich nur, wenn Sie überall den identischen Paketmanager und dasselbe Paketsystem verwenden.
Ramdisk: Ein praktisches Zwischendepot
16 GB RAM und mehr sind auf heutigen Rechnern keine Ausnahme. Beim Einsatz eines Rechners als Desktopsystem sind das brachliegende Ressourcen, mit denen sich aber Sinnvolles anfangen lässt. Wenn Sie einen zentralen Ordner, über den Sie den Datenaustausch inklusive Downloads abwickeln, in eine schnelle Ramdisk verlegen, entstehen mehrere Vorteile: die Bequemlichkeit eines Zwischendepots, das sich beim Herunterfahren von selbst entsorgt, die Schonung von SSD/Festplatte, die Nutzung des brachliegenden RAM-Speichers. Der früher betonte Leistungsaspekt tritt in Zeiten schneller SSDs eher in den Hintergrund, gilt aber natürlich weiterhin beim Einsatz einer mechanischen Festplatte.
Eine Ramdisk ist im Handumdrehen erstellt. Idealerweise liegt dieser Speicher zentral, etwa im Home-Verzeichnis oder gleich am Desktop:
sudo mount -t tmpfs -o size=4000M ramdisk ~/Schreibtisch/Ramdisk |
Dieser Befehl genügt, um im Ordner "Ramdisk" (der existieren muss), Platz für maximal vier GB Daten zu schaffen. Der Wert sollte einer RAM-Kapazität angemessen sein, die ein Systemmonitor üblicherweise als frei meldet.
Angenehm am "tmpfs"-Dateisystem ist die Tatsache, dass die angegebene Kapazität nicht statisch abgezweigt wird, sondern dynamisch nach Bedarf bis zum angegebenen Maximum. Solange der Mountpunkt ungenutzt bleibt, verbraucht die Ramdisk keinen Speicher. Das Mountverzeichnis ist ein ideales Zwischendepot für aktuell benötigte Dateien und als Cacheverzeichnis für den Browser (siehe unten). Bevor das System beendet oder die Ramdisk manuell mit
sudo umount ~/Schreibtisch/Ramdisk |
abgeschaltet wird, müssen aber benötigte Dateien auf Datenträgerverzeichnisse verschoben werden. Der Inhalt der Ramdisk wird beim Herunterfahren stets komplett entsorgt. Dauerhaft ist eine Ramdisk in der Datei "/etc/fstab" einzurichten (Beispiel):
tmpfs /home/lw/Schreibtisch/Ramdisk tmpfs defaults,size=25%,mode=1777 0 0 |
Mountpfade in der "fstab" dürfen keine Variablen enthalten. Beachten Sie, dass Sie nach "size=" statt einer statischen Angabe auch eine relative machen können (hier: ein Viertel der gesamten Kapazität). Die Rechtemaske "1777" gibt uneingeschränkten Zugriff. Nach dem Speichern starten Sie Linux neu.
Firefox-Cache in der Ramdisk: Folgende Option für Firefox ist nicht mehr dokumentiert, funktioniert aber weiterhin. Wenn Sie über die Adresse "about:config" den zusätzlichen Parameter
browser.cache.disk.parent_ directory |
neu anlegen (als "String"), können Sie danach den Ordner für die Verlaufsdaten manuell eintragen und somit frei wählen. Ideales Ziel ist eine Ramdisk, sofern der Verlaufsinhalt bei jedem System-Shutdown gelöscht werden soll.
Chrome/Chromium-Cache in der Ramdisk: Der Browser akzeptiert per Startschalter "--user-data-dir" ein beliebiges Verzeichnis, in das er dann sämtliche Daten schreibt:
google-chrome --user-data-dir=/ home/lw/Schreibtisch/Ramdisk |
Dabei startet der Browser aber mit einem komplett jungfräulichen Profil.
Systemstart: Analyse mit Systemd
Der mittlerweile in den meisten Linux-Distributionen präsente Init-Dienst Systemd bietet nützliche Tools, um den Bootvorgang zu analysieren. Systemd gibt komfortabel Auskunft darüber, wie lange der Bootvorgang vom Einschalten des Linux-Systems bis zur Anmeldung dauert.
Nach dem Befehl
systemd-analyze |
zeigt der Dienst die Startzeit in Sekunden am Ende der ausgegebenen Zeile an und schlüsselt diese in ihre Bestandteile auf: Die Angabe vor "kernel" (in Klammern) gibt die Ladezeit der systemnahen Komponenten an und "userspace" die der Benutzerumgebung. Ist das Linux-System unter Uefi installiert, zeigt das Analysetool, wie viele Sekunden das Laden der Firmware, des Bootloaders und der initialen Ramdisk (initrd) dauerte.
Detaillierter listet das Kommando
systemd-analyze blame |
die Ladezeit aller Systemdienste. Beachten Sie, dass sehr langsam erscheinende Dienste, die diese Liste anführen, eventuell eine eingebaute Frist abwarten.
Shutdown: Zeitangaben und Fristen
Nicht selten ergeben sich Situationen, dass man das System beenden möchte, aber noch nicht beenden kann, weil noch ein Backup oder ein Download läuft.
Da ist es gut zu wissen, dass das Shutdown-Kommando sowohl Uhrzeiten als auch Fristen versteht:
sudo shutdown -P 23:00 |
sudo shutdown -P 60 |
Der erste Befehl beendet das System um 23 Uhr, der zweite in 60 Minuten. Das sudo-Kennwort wird sofort abgefragt, sodass Sie anschließend den Rechner verlassen können.
Schnellfreigabe: HTTP-Server mit Python
Jedes Linux-System verfügt über eine eingebaute Möglichkeit, genau einen Ordner samt Unterverzeichnisse anderen Netzteilnehmern per Browser lesend zugänglich zu machen. Der meist standardmäßig vorhandene Script-Interpreter Python enthält nämlich einen Webserver, der mit einem einzigen Terminalbefehl das aktuelle Verzeichnis per HTTP freigibt:
python -m SimpleHTTPServer 4444 |
Die Schreibung ist wichtig, hingegen kann der Port (hier "4444") beliebig gewählt werden. Jeder Browser im lokalen Netz kommt nun mit der Adresseingabe (Beispiel)
192.168.178.12:4444 |
an diese Freigabe. Kenntnis der IP-Adresse und des Ports (im Beispiel "4444") sind natürlich vorauszusetzen. Solange der Mini-Webserver läuft, können alle Dateien des freigegebenen Verzeichnisses gelesen oder heruntergeladen werden. Wird der Python-Befehl im Wurzelverzeichnis ausgelöst, steht das komplette Dateisystem zur Verfügung. Wenn ein Verzeichnis eine Datei "index. html" enthält, wird diese Datei anstatt der Dateiliste angezeigt. Der Mini-Webserver lässt sich auf dem Serversystem mit Strg-C wieder beenden.
Cron-Geheimnisse: Programme zum Systemstart
Es gibt unter Linux an sich einfache Aufgaben, deren Lösung aufgrund der Unterschiede zwischen den Linux-Distributionen trotzdem heikel wird. Dazu gehört der Start eigener Programme oder Scripts beim Systemstart. Eine unkomplizierte und universelle Methode, Tasks automatisch beim Start auszuführen, bietet der Taskplaner Cron. Dieser unterstützt neben den sonstigen, exakten Zeitangaben das simple Schlüsselwort "@reboot", das den Systemstart als Zeitpunkt festlegt. Mit
sudo crontab -e |
bearbeiten Sie Cron-Einträge für das root-Konto. Im aufgerufenen Editor definieren Sie mit "@reboot" am Zeilenbeginn
@reboot [/Pfad/Script] |
und dem nachfolgenden Befehl oder Script einen Autostart-Task.
Systempasswort: So geht's einfacher
Wer mit sudo das System verwaltet, muss sein Systempasswort häufig eingeben. Komplexe Kennwörter sind dabei eher lästig - und auf einem Desktopsystem auch nicht notwendig. Abgesehen vom Erstbenutzer, der bei der Installation eingerichtet wird, haben viele Linux-Distributionen allerdings erhöhte Komplexitätsanforderungen an das Passwort für alle weiteren Konten. Das gilt auch bei späteren Passwortänderungen für das Erstbenutzerkonto.
Wie immer unter Linux, gibt es eine Stelle, um diese Standards zu steuern: Öffnen Sie die folgende Datei
sudo nano /etc/pam.d/common-password |
mit root-Recht, so finden Sie in der ersten "password"-Zeile die Anweisung "obscure". Das erzwingt eine Mindestkomplexität des Passworts (Sonderzeichen) und kann einfach gelöscht werden. Durch die Ergänzung "minlen=6" (Beispiel) am Ende derselben Zeile können Sie außerdem die Mindestlänge herabsetzen (hier auf sechs Zeichen).
Terminal: Systempasswort mit Feedback
Standardmäßig schreibt man im Terminal das sudo-Kennwort ohne Rückmeldung im Blindflug. Das ist eine übertriebene Sicherheitseinstellung, um die Länge des Passworts auch unter Beobachtung zu verbergen. Es ist aber kein Problem, sich die bereits getippten Buchstaben mit dem Stellvertreterzeichen "*" anzeigen zu lassen. Der Aufruf
sudo visudo |
öffnet die Datei "/etc/sudoers" im voreingestellten Editor. Unter
Defaults env_reset |
fügen Sie die zusätzliche Zeile
Defaults pwfeedback |
ein. Nach dem Speichern (Strg-O) und Beenden des Editors (Strg-X) zeigt die sudo-Abfrage ein Sternchen pro eingegebenem Zeichen. Unter Linux Mint ist diese Einstellung inzwischen Standard.
Terminal: Schnellnavigation durch Ortskenntnis
Die spezielle Variable "CDPATH" ermöglicht im Terminal den schnellen Wechsel in häufig benötigte Verzeichnisse. Die Variable kann mehrere Ordnerpfade speichern. Danach können Sie überall mit "cd [Verzeichnis]" in ein Unterverzeichnis eines der gespeicherten Verzeichnisse springen.
Ein einfaches Beispiel: Globale Konfigurationsdateien unter "/etc/" muss man häufiger aufsuchen. Wenn Sie "/etc/" mit
CDPATH='.:/etc/' |
n den CDPATH eintragen, können Sie von beliebiger Stelle mit cd ssh und cd samba direkt in die Verzeichnisse unterhalb "/etc/" wechseln, so als ob diese Unterverzeichnisse am aktuellen Ort wären. Dabei funktioniert sogar automatische Pfadergänzung mit Tabulatortaste. Die Variable lässt sich durch eine beliebige Anzahl weiterer Verzeichnisse erweitern - jeweils durch Doppelpunkt getrennt:
CDPATH='.:~:/etc/:/srv/Archiv/:/ srv/Data/' |
Hier besteht der "CDPATH" aus dem aktuellen Verzeichnis ("."), dem Home-Verzeichnis ("~"), dem Verzeichnis "/etc/" und zwei Ordnern mit Benutzerdaten. Es empfiehlt sich immer, zunächst "." voranzustellen, damit das aktuelle Verzeichnis die höchste Priorität behält. Damit der "CDPATH" dauerhaft gilt, muss er in die Datei "~/.bashrc" eingetragen werden.
Terminal: Markier- und Kopierfunktionen
Die Hotkeys Strg-C und Strg-V wollen im Terminal aus historischen Gründen nicht funktionieren (Strg-C ist das historische Abbruchkommando). Aber es gibt reichlich Kompensation durch andere Tastenkombinationen und Mausaktionen:
Verwenden Sie Strg-Umschalt-C und Strg- Umschalt-V, um Text in die oder aus der Zwischenablage zu schreiben.
Die mittlere Maustaste, meistens das Mausrad, kopiert beim Klick einen vorher markierten Text auf den Terminalprompt - allerdings nicht in die Zwischenablage.
Die gedrückte Strg-Taste und gleichzeitiges Markieren mit der Maus ermöglicht eine Spaltenauswahl in der Terminalausgabe, etwa wenn Sie nach ls -la nur die Dateinamen kopieren möchten. Diese Methode funktioniert auch in Terminaltools wie nano, ncdu oder top.
Ein Bit mehr: Schutz für Konfigurationsdateien
Wer mit sudo-Erlaubnis oder als root im Dateisystem unterwegs ist, muss mit Löschaktionen vorsichtig sein. Auch Updates und Upgrades, die stets mit sudo erlaubt werden müssen, können unerwünschte Änderungen in Konfigurationsdateien auslösen. Es gibt allerdings auf allen Linux-Dateisystemen das Tool chattr, um Dateien und Verzeichnisse durch das zusätzliche Immutable-Attribut unantastbar zu machen:
sudo chattr +i /etc/ssh/sshd_config |
Auch root darf diese Datei nicht mehr ändern, solange das Bit mit
sudo chattr -i /etc/ssh/sshd_config |
nicht wieder zurückgesetzt wird. Mit anderen Worten: root oder sudo-Konten haben natürlich weiterhin Zugriff, jedoch sind Unachtsamkeit oder fehlerhafte Installations-Scripts ausgeschlossen.
Installation: Die "OEM"-Variante
Alle Ubuntu-Varianten haben einen OEM-Installer an Bord, der nicht nur für Hardwarehändler interessant ist. Die OEM-Installation bietet sich auch für die Einrichtung eines Systems für Kollegen oder Familienmitglieder an. Das künftige System lässt sich über das temporäre Konto "oem" individuell konfigurieren. Der tatsächliche Endnutzer entscheidet dann später unabhängig über sein eigenes Konto (Name, Kennwort).
Während Linux Mint beim Booten des Livesystems die Option "OEM install (for manufacturers)" direkt anbietet, muss man bei Ubuntu & Co. den Bootvorgang des Livesystems mit der Umschalt-Taste ausbremsen, um an diese Variante zu kommen. Dann erscheint ein Auswahl mit fünf Optionen und Taste F4 blendet unten rechts die zusätzliche Option "OEM Installation (für Hersteller)" ein.
Der Ablauf unterscheidet sich zunächst kaum von einer normalen Installation. Ein wichtiger Unterschied ergibt sich erst beim Anlegen des Erstbenutzers ("Wer sind Sie?"). Dieser ist unveränderbar als "oem" vorgegeben. Ein Passwort für dieses temporär gültige Konto muss trotzdem vergeben werden. Der erste Start des so installierten Systems geht ohne Anmeldung zum Desktop. Nun kann das System mit dem temporären Konto "oem" optimiert werden. Sinnvoll sind nur systemweite Aktionen (Softwareinstallationen, Netzwerkeinstellungen), benutzerspezifische Anpassungen hingegen nicht, weil das Konto "oem" später automatisch gelöscht wird.
Nach der Optimierung kann der Desktoplink "Vorbereitung zur Auslieferung an den Anwender" geklickt und der Rechner dem Endbenutzer übergeben werden. Der wird nochmal nach einigen Einstellungen befragt (Sprache, Tastatur) und darf nun sein Erstbenutzer-Konto anlegen.
Mobile Sicherheit: Mit Luks verschlüsselte USB-Medien
Mit Luks-Verschlüsselung (Linux Unified Key Setup) assoziiert man gewöhnlich eine Installeroption, die das System durch Datenträgerverschlüsselung schützt - insbesondere Notebooks. Luks kann aber auch jeden einfachen Daten-USB-Stick schützen. Mit dem Standardtool Gnome-Disks ("Laufwerke") ist das besonders einfach (ähnlich "KDE Partition Manager" unter KDE): Sie schließen den USB-Stick an, hängen das Laufwerk in Gnome-Disks aus und löschen eventuell bestehende Partitionen. Mit dem Zahnradsymbol und "Partition formatieren" wählen Sie als "Typ" den Eintrag "Interne Disk…" und "Passwortgeschützter Datenträger (LUKS)". Nach Kennwortvergabe und Formatieren ist der Stick präpariert. Bei späterer Verwendung verlangen Linux-Dateimanager automatisch das Kennwort und mounten den Datenträger nur bei korrekter Eingabe. Unter Windows sind Luks-Medien nicht lesbar.
(PC-Welt)