Betriebssystem Linux im Büro
Aus welchen Gründen verwende ich Linux als primäres Betriebssystem in meinem Büro
-
Effiziente Mensch-Maschine-Interaktion:
Linux fördert und erleichtert Automatisierung — die wichtigste Stärke von Computern. Während die meisten
Menschen — sogar auch viele in der Informatikbranche Berufstätige — heutzutage ihre Computer primär mit Zeigegeräten (Maus, fingerbedienbarer Bildschirm …) bedienen und auf diese Weise überspitzt gesagt gegen sich arbeiten
lassen (weil dabei keine Automatisierung möglich ist), bediene ich Computer primär mit einer Tastatur, lasse meine Computer für mich arbeiten (weil mir dabei alle Automatisierungsmöglichkeiten offenstehen). Arbeiten mit 100
bis 200 Tastenanschlägen pro Minute kann ich einen ganzen Arbeitstag lang mühelos und mit nur wenig Ermüdung. Im Gegensatz dazu würden auch nur 20 Mausklicks pro Minute (halbwegs fehlerfrei!) schon nach erheblich weniger als einem
Arbeitstag zur Urlaubsreife führen. Bei Interesse biete ich Ihnen gerne Beratung an zum Thema effiziente Mensch-Maschine-Interaktion.
-
Effiziente Kodeausführung:
Linux ist als eines der effizientesten Betriebssysteme bekannt. Eine gegebene Maschine erledigt gegebene Aufgaben
unter Linux mit weniger Prozessortakten, das heißt schneller und mit weniger Energieverbrauch als unter den meisten anderen Betriebssystemen. Wie groß der Vorsprung gegenüber anderen Betriebssystemen ist, lassen folgende
Zahlen erahnen: Die Ausgabe November 2013 der
Liste der 500 nichtverteilten, kommerziell verfügbaren Supercomputer mit der weltweit größten Rechenleistung verzeichnet Linux als Betriebssystem auf 96 % dieser Systeme und auf 100 % der 50 rechenleistungsstärksten von
diesen Systemen.
-
Datenschutz: Einmalige, sorgfältige Konfiguration eines Linuxsystems (sicherheitstechnisch aufgerüstet mit
grsecurity) schützt auf Dauer vor gegenwärtigen und zukünftigen Computerviren und sonstigem Schadkode, wirksamer als es mit anderen
Betriebssystemen möglich ist. Schreib- bzw. Ausführverbote für einzelne Dateisysteme festzulegen ist ein einmaliger Aufwand und wirkt dauerhaft — kein Bedarf für irgendeine wöchentliche Aktualisierung. Völlig anders bei den
heutzutage im Büro- und Privatbereich verbreiteten Betriebssystemen der Firma Microsoft: Schreib- bzw. Ausführverbote sind dort leicht umgehbar oder überhaupt unmöglich. Die daraus resultierende Notwendigkeit für separate
Virenwächter vergleiche ich mit dem Verkauf von „Regenschirmen“ für den Aufenthalt in einem „Haus mit löchrigem Dach“ — für jeden Regentropfen einen neuen Schirm zu verkaufen ist doch ein „geniales“ Geschäftsmodell, oder?
Diese Sicherheitsvorteile von Linux im Vergleich zu anderen Betriebssystemen wurden kleiner aber sind weiterhin vorhanden seit dem Jahr 2017: Damals wurde unter den Schlagwörtern „Spectre“ und „Meltdown“ bekannt, dass alle
Prozessoren der jüngeren Vergangenheit mit größeren Marktanteilen Datensicherheitsdefekte aufweisen, welche von den Herstellern „irrtümlich“ eingebaut wurden und werden
(Fehlschlag von spekulativer Kodeausführung
führt zu Ausnahmemodus und Aufhebung aller Speicherzugriffsbeschränkungen). Wie „irrtümlich“, das möge folgende Analogie auch für Laien verständlich machen: Man stelle sich vor, jede Betätigung der Bremse eines PKWs würde
automatisch alle Sicherheitsgurte und alle Türen öffnen, automatisch die „Airbags“ blockieren, und automatisch die gesamte Beleuchtung das Fahrzeugs ausschalten, auch die Bremslichter, und der Fahrzeughersteller würde
behaupten, alle diese Fehler wären „irrtümlich“ eingebaut worden.
-
Der Quellkode des Linuxkernels ist
öffentlich zugänglich. Er wird von so vielen Programmierern weltweit geprüft und weiterentwickelt, wie kein anderes Betriebssystem.
-
Der Linuxkernel ist unter den Bedingungen der
„GNU General Public Licence v2.0“, abgekürzt „GPL v2.0“,
öffentlich verfügbar. Die
wesentlichsten Punkte der GPL
sind: (a) Das garantierte Recht („copyleft“) auf die vier Freiheiten, die Software unverändert auf einem Computer auszuführen, den Quellkode zu studieren und zu ändern, exakte Kopien zu publizieren, veränderte Versionen zu
publizieren. (b) Der Autor beansprucht seine Urheberrechte, garantiert die vier genannten Freiheiten für unveränderte Kopien und für veränderte Versionen (Vererbung der Lizenz). (c) Veränderte publizierte Versionen müssen
leicht erkennbar deklarieren, dass und von wem und wann diese Änderungen vorgenommen wurden, und dass für diese Änderungen die gleiche Lizenz gilt.
-
Linux
ermöglicht mir mehr Kontrolle über meine Computer und wirksameren Schutz meiner Daten vor unberechtigten Zugriffen als es mit anderen Betriebssystemen möglich wäre. Würde ich eines der verbreiteten Microsoft-Systeme
verwenden, dann müsste ich die Kontrolle über meine Computer (A) mit
Firma Microsoft und (B) mit einer unbekannten Zahl von „Betriebssystemeinbrechern“ teilen. (A)
weil brauchbare Internetnutzung nur dann möglich wäre, wenn ich den Austausch von unbekannten, verschlüsselten Daten mit Servern der Firma Microsoft dulden würde und (B) weil in diese Betriebssysteme mühelos eingebrochen werden
kann. Mindestens seit Sommer 2008
ist öffentlich bekannt, dass Systemkennwörter solche Einbrüche meistens nur um Sekunden bis wenige Minuten verzögern, weil Firma Microsoft eine so schwache Verschlüsselung wählt. Länger als ein ganzes Jahr keine Reaktion der
Firma Microsoft auf diesen „Betriebssystem-GAU“ deutet eher auf Absicht als auf Irrtum der Firma Microsoft hin — ob das Ermöglichen von
„Bundestrojanern“ eine Art Kooperation mit Regierungsbehörden ist?
Daten, für deren
Geheimhaltung ich verantwortlich bin, könnte ich höchstens auf separaten Rechnern ohne Internetverbindung verarbeiten. Und eine verantwortungsbewusste Wartung von Servern über verschlüsselte Netzverbindungen wäre überhaupt
unmöglich, mein Rechner könnte viel zu leicht „Trittbrett“ für Einbrüche in die betreffenden Server werden.
-
Schon die Standardausstattung eines Linuxsystems bietet mir tausende Befehle und professionelle Werkzeuge für rationelles Arbeiten und Automatisierung von wiederholt zu erledigenden Aufgaben. Vergleichbare Werkzeuge fehlen
auf Systemen der Firma Microsoft überhaupt bzw. können nur mit deutlich geringerer Funktionalität von anderen Anbietern gekauft und nachinstalliert werden. Kompromisslösungen wie
Cygwin können zwar das Arbeiten erheblich erleichtern, aber nicht die fehlende Wirksamkeit von Systemkennwörtern (siehe voriger Absatz) reparieren. Die
Betriebssystememulation Qemu bietet mir eine wesentlich bessere Lösung.
-
Manche Arbeiten lassen sich mit Anwendungen der Firma Microsoft besser als mit entsprechenden Linuxanwendungen erledigen. Fallweise steht von unternehmens- oder branchenspezifischen Spezialanwendungen nur eine Version für
Microsoft-Systeme zur Verfügung. In solchen Situationen verwende ich die Betriebssystememulation
Qemu, um ein Betriebssystem der Firma Microsoft als ganzes in einem von Linux verwalteten „Käfig“ (virtuelle Maschine) abgeschottet
und unter separatem Benutzerkonto auszuführen. Ein
Bildschirmfoto zeigt, wie es aussehen kann, mit einfachen Tastenkombinationen zwischen gleichzeitig laufenden Linux- und Microsoft-Anwendungen hin- und
herzuwechseln. Der einzige, für mich deutlich spürbare Unterschied zwischen Ausführung des Microsoft-Systems im Qemu-Käfig bzw. nativ („dual boot“) ist das längere Warten auf den Seitenumbruch von mehreren 100 Seiten großen
Text-Dokumenten. Übrige Geschwindigkeitsunterschiede sind natürlich messbar, aber kaum spürbar, und ich finde keinen Unterschied in Sachen Stabilität. Microsoft-Systeme werden nach gröberen Störungen (Viren …) oder zur
Vermeidung des „Alterns“ (mit der Zeit fortschreitend langsamer und instabiler) oft neu installiert, Zeitaufwand jedes mal in der Größenordnung von 1/2 Stunde — bei mir genügt für diesen Zweck das Zurückschreiben der
Sicherungskopie einer einzigen, rund 2 GB großen Behälterdatei und schon nach wenigen Minuten habe ich ein Microsoft-System wie frisch installiert und mit allen persönlichen Einstellungen.
-
Der Linuxkernel und fast alle in meinem Büro verwendeten Linuxanwendungen sind lizenzkostenfrei.
Kleine Auswahl von Linuxanwendungen, welche ich häufig verwende
… mit ein paar Praxisbeispielen und Features zur Andeutung von „Glanzlichtern“. Viele der genannten Namen sind vermutlich urheberrechtlich geschützt.
-
Systemprotokolldienst
Rsyslog:
Protokolliert jeden wichtigen Vorgang in meinen Linuxsystemen in schnell durchsuchbaren Protokolldateien und archiviert diese Dateien automatisch, sobald die Dateigröße eine konfigurierbare Grenze überschreitet.
-
http-Proxyserver
Wwwoffle:
Dient mir zur Konfiguration des gesamten http- und ftp-Datenverkehrs mit dem Internet für alle Clients — ELinks, curl, wget, Opera, Firefox, … — zentral an einer einzigen Stelle, sorgt für vollautomatisches Zwischenspeichern
(„cache“) aller meiner http- und ftp-Zugriffe auf das Internet mit zahlreichen Feineinstellungsmöglichkeiten, blockiert das Herunterladen von allen unerwünschten Inhalten (Werbung …), „desinfiziert“ unerwünschten JavaSkript-Kode
mittels Kommentarzeichen zwecks Sicherheit, zensiert http-Kopfzeilen zwecks Privatsphärenschutz (Referer, User-Agent, Set-Cookie) oder um Probleme resultierend aus fehlerhaft konfigurierten Servern zu umgehen (Content-Type).
-
Befehlsinterpreter
Bash:
Die „Kommandozentrale“ des Linux-Systems. Befehle mit längerer Laufzeit können asynchron im Hintergrund ausgeführt werden, wodurch die Eingabeaufforderung augenblicklich für den nächsten Befehl bereit steht. Maximale
Befehlszeilenlänge im Normalfall ungefähr 120 000 Zeichen. bash speichert unbegrenzt langen Befehlszeilenverlauf mit Zeitmarken. Komplexere Befehle aus diesem Verlauf zurückholen und mit kleinen Änderungen ausführen kann die Arbeit
sehr beschleunigen. Aufgaben, welche für eine Befehlszeile zu komplex sind, lassen sich mit Skriptdateien lösen. Linux bietet selbstverständlich Möglichkeiten, solche Skriptdateien automatisch zu bestimmten Terminen auszuführen.
-
Befehlsinterpreter
Zsh:
Für alle interaktiven Tätigkeiten, welche keine oder nur einzelne Systemverwaltungsprivilegien erfordern. Unterscheidet sich von anderen, für Linux zur Auswahl stehenden Befehlsinterpretern unter anderem durch:
-
Modulare Struktur: 35 Module können zur Bauzeit einzeln aus- oder eingeschlossen werden. Zum Beispiel Ausschließen von Netzwerkfähigkeiten kann die Sicherheit verbessern.
-
Rund 200 Optionen erlauben zur Laufzeit feinabgestimmte Konfiguration des Verhaltens für weitgehende Kompatibilität mit Ksh oder Csh oder Sh oder POSIX oder Mischungen daraus oder für größte
Automatisierungsfreundlichkeit.
-
Der relative — nicht der absolute — Lernaufwand zählt: Eine Stunde Lernen der komplexen Zsh Fähigkeiten nützt mehr für die alltägliche Arbeit, als der gleiche Zeitaufwand für das Lernen eines anderen
Befehlsinterpreters.
-
Befehlsverlauf: Eine zsh Instanz kann mehrere Befehlsverläufe schreiben oder mehrere zsh Instanzen können einen gemeinsamen Befehlsverlauf schreiben.
Zugriff auf den Befehlsverlauf wesentlich flexibler und komfortabler, kann zum Beispiel aus anderen zsh Instanzen importierte Befehle ein- oder ausschließen.
-
Ein Befehl kann für bessere Lesbarkeit mehrere Zeilen umfassen. Der Befehlseditor kann einen Stapel von mehreren Eingabepuffern verwalten.
-
Umfassende Unterstützung für Mehrbytezeichen: Gültig in Namen von Variablen und Befehlsfunktionen. Formatieren von Zeichenketten mit Feldbreiten gemessen in Zeichen — nicht Byte.
-
Ersetzt und übertrifft Dateimanager: Vervollständigungsvorschläge sind flexibler und schneller.
-
Muster zur Dateinamenerzeugung „globbing“ wesentlich komplexer: Operatoren für Alternation, Quantifizieren, Exklusion, Qualifizieren sensibel für Dateiattribute, Sortieren bzw. Filtern von resultierenden
Dateinamenslisten.
-
Parametersubstitution wesentlich komplexer: verschachtelt, im Falle von assoziativen Feldern Filtern nach Schlüsseln oder Werten, Operationen mit Feldern (Vereinigung, Schnittmengen, …).
-
Umfassende Unterstützung für Perl-kompatible Regelausdrücke.
-
Fließkommaarithmetik, zahlreiche mathematische Funktionen.
-
Anonyme Befehlsfunktionen erzeugen Positionsparameter, können viel „Schreibarbeit“ sparen wenn ein längeres Argument mehrmals benötigt wird; ersparen im Unterschied zur gebräuchlichen Konstruktion
„$SHELL -c 'Befehlsliste …' ARG0 Positionsargumente …“ Schwierigkeiten mit Maskieren, Verschachtelung, Export von Befehlsfunktionen und Variablen.
-
Eine Befehlsschleife kann mehrere Schleifenvariablen benützen. Eine Befehlsschleife kann Positionsparameter als Schleifenvariable(n) verwenden, besonders interessant innerhalb von anonymen Befehlsfunktionen.
-
Prozesssubstitution in der Form „=( Befehlsliste )“ erzeugt und löscht eine Temporärdatei automatisch.
-
Texteditor
Vim:
Zeigt beliebig viele Dateien in beliebig vielen Fenstern und Subfenstern. Ein Suchen-und-alle-Fundstellen-Ersetzen-Befehl kann ohne Weiteres mehr als 60 Dateien durchlaufen, die Ersetzen-Positionen können zum Beispiel 12 Zeilen
unter der jeweiligen Fundstelle stehen. Eine eigene Skriptsprache ermöglicht Automatisierung von komplexeren Aufgaben. Tastenbindungen sind frei konfigurierbar. Befehlsausführung kann auch durch Ereignisse wie Öffnen bzw.
Schließen von vim, Lesen, Schreiben bzw. Schließen von Dokumenten getriggert werden. Schon die Standardausstattung bietet Syntaxhervorhebung mit 16 bzw. 256 Farben für mehr als 500 Programmiersprachen und Dateiformate. Die hervorragende
Dokumentation erleichtert das Einarbeiten in die Funktionsvielfalt.
-
Datenstromeditor
Sed:
Dient primär als Filter in Befehlsketten zur nicht interaktiven Textbearbeitung. Und bietet die schnellste Lösung für einfache Bearbeitungsschritte von Textdateien wie Suchen-und-alle-Ersetzen, Löschen und Einfügen von bestimmten
Zeilen. An die Zeilenlängengrenze bin ich noch nie gestoßen: 2 Gigabyte auf 32-Bit-Systemen, gesamter Arbeitsspeicher auf 64-Bit-Systemen.
-
Versionsverwaltung
Git:
Archiviert Versionsverlauf von beliebigen Dateien schnell und platzsparend.
-
Versionsverwaltung
Mercurial:
Archiviert Versionsverlauf von beliebigen Dateien. Ideal für den Datenaustausch zwischen Microsoft-Systemen von Kundschaften und meinen Linux-Systemen.
-
Dateisynchronisation
Rsync:
Praxisbeispiel ein Projekt aus ungefähr 1 200 Dateien über verschlüsselte Verbindung mit einem entfernten Server synchronisieren, 0,5 MB geänderte Dateien übertragen und inhaltliche Übereinstimmung der übrigen 20 MB des Projektes
prüfen: rsync erledigt das Ganze nach einer einzigen Befehlszeile und benötigt dafür weniger als 0,2 MB Datenverkehr über die Netzverbindung — ein genialer Algorithmus ermöglicht so erstaunlich effiziente Netzwerknutzung.
-
Internet-Client
ELinks:
Für das alltägliche „Surfen“ im Internet im Textmodus und ohne JavaSkript. Schneller und sicherer als jede Alternative mit grafischer Oberfläche, wenn ohne Unterstützung für JavaSkript, Ruby und Lua gebaut, und wenn
Verwendung von externen CSS ausgeschaltet wird. Ein perl-Skript erlaubt mir fast beliebiges, automatisches Anpassen von darzustellenden Dokumenten an meine Vorlieben, zum Beispiel Anpassung an breitere Terminals, Ausblenden
uninteressanter Dinge (Werbung …), Hervorheben interessanter Teile.
-
Internet-Client
Firefox:
Für das „Surfen“ im Internet in jenen seltenen Fällen, welche Grafikmodus oder JavaSkript unbedingt erfordern.
-
Grafikwerkzeug Gimp:
Bietet mir alles, was ich für Erstellen und Bearbeiten von Rastergrafiken benötige.
-
Grafikwerkzeug Inkscape:
Bietet mir alles, was ich für Erstellen und Bearbeiten von Vektorgrafiken benötige.