24,99 €
Linux-Server aufsetzen, administrieren und absichern: Arnold Willemer zeigt Ihnen in diesem Buch, wie Sie Ihren Debian/GNU Linux oder Ubuntu Server von Anfang an gut im Griff haben. Schritt für Schritt erklärt er Ihnen, wie Sie den Server installieren, Laufwerke und Netzwerke einrichten und Benutzerkonten anlegen. Außerdem lernen Sie, wie Sie effizient mit der Shell arbeiten und per Remote-Zugriff administrieren. Einen weiteren großen Themenkomplex bildet die Sicherung von Daten, die Systemdiagnose sowie das Härten des Servers gegen Angreifer von außen. In weiteren Kapiteln erfahren Sie, wie Sie Datenbanken anlegen oder einen Dateiserver mit SAMBA einrichten. Und auch Mail- und Webserver kommen nicht zu kurz. Alle Themen werden anschaulich und von Grund auf erklärt, sodass Sie den Beschreibungen auch dann leicht folgen können, wenn Sie bisher noch nicht mit Linux-Servern gearbeitet haben. Zudem eignet sich dieses Buch auch hervorragend als Nachschlagewerk. So gerüstet steht Ihrem sicheren und performanten Server nichts mehr im Weg!
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 455
Linux-Server für Dummies
Dienst/Server
Protokoll
Implementierung
Webserver
HTTP, HTTPS
Apache, Nginx
Dateiserver (Windows)
SMB
samba
Dateiserver (POSIX)
NFS
NFS4
Fernwartung, Remote Login
SSH
openssh-server
Mail-Server
SMTP
Postfix
Mail-Client-Verwaltung
IMAP, POP3
Dovecot
Cloud
WebDAV
Nextcloud
Zentrale Authentifizierung
LDAP
OpenLDAP
Namensdienst
DNS
bind9
IP-Adresszuordnung im LAN
DHCP
isc-dhcp-server
startet den Server.
systemctl stopdienststoppt den Server.
systemctl restartdienststoppt den Server und statrtet ihn sofort wieder neu.
systemctl reloaddienstDer Server liest seine Konfigurationsdatei neu ein.
systemctl disabledienstsorgt dafür, dass der Server beim nächsten Boot nicht automatisch gestartet wird.
systemctl enabledienstBeim nächsten Boot wird der Server wieder gestartet.
systemctl statusdiensterkundet, wie es dem Server so geht.
Der Befehl test leitet einen booleschen Ausdruck ein. Seine Parameter und Optionen bestimmen den Ausdruck.
Ausdruck
Bedeutung
test -fName
Ist Datei Name eine existierende Datei?
test -dName
Ist Name ein existierendes Verzeichnis?
testStr
Ist Str eine nicht leere Zeichenkette?
testStr1=Str2
Sind die Zeichenketten Str1 und Str2 gleich?
testStr1!=Str2
Sind die Zeichenketten Str1 und Str2 ungleich?
testNr1-eqNr2
Ist die Zahl Nr1 gleich Nr2?
testNr1-neNr2
Ist die Zahl Nr1 ungleich Nr2?
testNr1-geNr2
Ist die Zahl Nr1 größer oder gleich Nr2?
testNr1-gtNr2
Ist die Zahl Nr1 größer als Nr2?
testNr1-leNr2
Ist die Zahl Nr1 kleiner oder gleich Nr2?
testNr1-ltNr2
Ist die Zahl Nr1 kleiner als Nr2?
Der Befehl test kann durch ein Paar rechteckige Klammern ersetzt werden. Diese müssen allerdings von Leerzeichen umgeben sein. Bei der Verwendung von zwei runden Klammern können let-Ausdrücke verwendet werden und damit auch Größer- und Kleiner-Zeichen.
if test $zahl -lt 12if [ $zahl -lt 12 ]if (( $zahl < 12 ))
Linux-Server für Dummies
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.
1. Auflage 2023
© 2023 Wiley-VCH GmbH, Boschstraße 12, 69469 Weinheim, Germany.
Wiley, the Wiley logo, Für Dummies, the Dummies Man logo, and related trademarks and trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates, in the United States and other countries. Used by permission.
Wiley, die Bezeichnung »Für Dummies«, das Dummies-Mann-Logo und darauf bezogene Gestaltungen sind Marken oder eingetragene Marken von John Wiley & Sons, Inc., USA, Deutschland und in anderen Ländern.
Das vorliegende Werk wurde sorgfältig erarbeitet. Dennoch übernehmen Autoren und Verlag für die Richtigkeit von Angaben, Hinweisen und Ratschlägen sowie eventuelle Druckfehler keine Haftung.
Coverfoto: ArchMen – stock.adobe.comKorrektur: Isolde Kommer
Print ISBN: 978-3-527-72080-4ePub ISBN: 978-3-527-84253-7
Guten Tag, mein Name ist Arnold V. Willemer.
Ich habe an der Universität Frankfurt/Main mein Diplom in Informatik abgelegt. Anschließend habe ich viele Jahre als Software-Entwickler insbesondere im Bereich der Netzwerkprogrammierung gearbeitet. Seit 2016 bin ich an der Hochschule Flensburg tätig.
Bei meiner Arbeit als Entwickler ergab es sich, dass ich immer wieder mit der Administration der Kunden-Server zu tun hatte und dabei viel darüber lernte.
Seit 2001 schreibe ich Bücher, unter anderem zum Thema Server. Angefangen hat es mit »Wie werde ich UNIX-Guru?«. Das letzte Buch zu diesem Thema war »Linux-Server für Einsteiger«. Dieses Buch erscheint nun in der Dummies-Reihe, die dafür steht, ein Thema für Leser aufzuschließen, die sich damit bislang nicht befasst haben.
Im Wintersemester 2022/23 habe ich eine Wahlpflichtveranstaltung »Serveradministration« an der Hochschule Flensburg durchgeführt. Die Teilnehmer erhielten das Vorgängerbuch »Linux-Server für Einsteiger« als Basis für ihre eigenen Hausarbeiten zur Verfügung gestellt. Diese Arbeiten halfen mir wiederum bei der Erstellung dieses Buches. Einige Arbeiten zeigten Verständnisschwierigkeiten auf, einige waren wirklich gut bis brillant. Darum halte ich es für fair, hier einige der Teilnehmer auch namentlich aufzählen: Philipp Borucki hat eine kompetente Abhandlung zum Thema LDAP geschrieben. Davon habe ich mich in dem Kapitel stark inspirieren lassen. Wichtige Beiträge kamen von Nils Porsche, Richard Weber, Carsten Richardsen und Linus Bumann. Ich bedanke mich für die Mitarbeit.
Der Verlag stellte mir dieses Mal zwei Lektoren zur Verfügung. Begonnen hat das Buchprojekt mit Marcel Ferner, der mich kennt und vor allem bei der Planung und dem Entwurf des Buches half. Nach einigen Monaten wurde er von Sebastian Kestel abgelöst, der nun die Abschlussarbeiten übernimmt und das Buch sozusagen in die Regale geleitet. Beide haben Hinweise gegeben, sich um das Erscheinungsbild gekümmert und den Verlag überzeugt, dass das Buch so aussehen muss, wie es jetzt ist. Vielen Dank dafür.
Arnold WillemerNorgaardholz
Cover
Titelblatt
Impressum
Über den Autor
Einleitung
Über dieses Buch
Törichte Annahmen über den Leser
Wie dieses Buch aufgebaut ist
Konventionen in diesem Buch
Symbole, die in diesem Buch verwendet werden
Wie es weitergeht
Teil I: Grundlagen von Linux
Kapitel 1: Linux
Ein Blick in die Geschichte
Dateien und Verzeichnisse
Fortgeschrittene Dateibefehle
Verweis auf andere Dateien: Links
Spezielle Dateien: Sockets, Pipes und Gerätedateien
Der Linux-Verzeichnisbaum
Besitzer, Gruppen und Rechte
Prozesse
Benutzerkonten
Kurzfristig den Benutzer wechseln: su
Administrationsaufgaben starten: sudo
Privilegierung durch Dateirechte
Kapitel 2: Die Shell
Starten der Shell
Tastenkombinationen
Manpage als Bedienungsanleitung
Befehlsempfänger Shell
Datenströme
Kapitel 3: Editoren
Der Editor nano
Die Editoren vi und vim
Reguläre Ausdrücke
Kapitel 4: Shell-Skripte
Skripte ausführen
Variablen
Abfragen: if
Bedingungen
Schleife
Bearbeitung mehrerer Objekte mit der for-Schleife
Fallunterscheidung
Auf Parameter zugreifen
Kapitel 5: Administration per Fernsteuerung
Ein Terminal aus der Ferne
Dateien sicher übertragen mit scp
SSH-Server
Kapitel 6: Diagnose
Arbeitsspeicher und Swapping
Wie geht es der Festplatte?
Die Last mit der Last
Der Syslog-Dämon und die Protokolldatei
Teil II: Hardware
Kapitel 7: Laufwerke, Datenspeicher und Dateisysteme
Hardwarezugriff per Gerätedatei: /dev
Die Hardware der Festplatte
Die Festplatte einrichten und aufteilen
Der Umgang mit Dateisystemen
Swap
Verbund mehrerer Partitionen
Festplatten haben begrenzte Kapazitäten
Festplattenplatz zuteilen: Quota
Kapitel 8: Netzwerk
Anschluss und Medium
TCP/IP
Die IP-Adresse
Netzwerkverbindungen mit ping prüfen
Routing: Netzwerke verbinden
Dynamische IP-Adressen (DHCP)
Mehr IP-Adressen für die Zukunft: IPv6
Ports, Dienste und die Datei /etc/services
Network Address Translation NAT
Namen auflösen
Notiz
Teil III: Datenbanken
Kapitel 9: Datenbanken
Datenbanken funktionieren mit Tabellen
MySQL und MariaDB
PostgreSQL
Teil IV: Internet-Server
Kapitel 10: Der Webserver Apache
Ein Server für Surfer
Installation und Start des Webservers
Die Konfigurationsdateien
Benutzeradministration mit .htaccess
Logbücher
Virtuelles Hosting
Gesicherte Übertragung per HTTPS
Dynamische Websites mit PHP
Kapitel 11: Der Mailserver
Ein kurzer Blick zurück
Der Mailserver Postfix
Empfänger und ihre Clients
Lokale Mail an fremden Server senden
Mails abholen mit IMAP und POP3
Der Mailserver als Internet-Site
Postablage: Mbox oder Maildir
Wartung des Mailservers
Post einsammeln
Ausblick
Teil V: Dateiserver
Kapitel 12: SAMBA – die Windows-Connection
Laboreinstellungen
Installation
Eine einfache Freigabe
Zugriffsrechte
Besonderheiten
Kapitel 13: NFS – Network File System
Laborumgebung
Ein einfacher NFS-Server
Ein einfacher NFS-Client
Erlaubte Client-Computer
Einstellungen der Exportdatei
Benutzer
Automatisches Mounten
Kombination aus LDAP und Automounter
Kapitel 14: Die eigene Cloud mit Nextcloud
Installation
Administration
Dateien
Datensicherung
Teil VI: Services im Intranet
Kapitel 15: Verzeichnisdienstprotokoll LDAP
Verzeichnisdienst
Installation eines LDAP-Servers
LDAP-Client Login
Kapitel 16: Gemeinsam Texte im Wiki schreiben
Installation und Konfiguration
Die Datenbankverbindung
Setup per Browser
Start des Wikis
Benutzerkonten
Datensicherung
Teil VII: Sicherheit
Kapitel 17: Verschlüsselung
Verfahren und Ideen
Wir basteln einen SSH-Key
Wir basteln ein Zertifikat mit OpenSSL
Verschlüsselte Dateien und Dateisysteme
Kapitel 18: Datensicherung
Vorüberlegungen zur Datensicherung
Wohin mit der Datenflut?
dump sichert komplette Dateisysteme
Daten sichern mit dem Verpackungskünstler tar
Verzeichnisse kopieren: rsync
Medien kopieren: dd
Automatisierte Datensicherung
Teil VIII: Labor und virtuelle Maschinen
Kapitel 19: Netzwerklabor mit VirtualBox
Das Konzept einer virtuellen Maschine
VirtualBox, der PC im Fenster
Eine virtuelle Maschine
Eine virtuelle Maschine für Linux Mint MATE
Klonen
Kapitel 20: Virtueller Router
Anschlüsse des Routers
DHCP: Clients automatisch konfigurieren
Forwarding
Lokales Netzwerk mit dem Internet verbinden: NAT
Den Namensdient DNS durchreichen
Kapitel 21: Virtueller Server
Netzwerkeinstellungen in der VirtualBox
Statische Adresse
Den Server im Namensdienst DNS eintragen
Kapitel 22: Docker
Installation
Installation aus dem Distributions-Repository
Laden und Starten von Containern
Eigene Container erstellen
Erstellen eines Containers mit einer Docker-Datei
Teil IX: Der Top-Ten-Teil
Kapitel 23: Die Top-10, warum man Linux als Server verwendet
Kostet nichts
Weit verbreitet
Das bessere System
Skalierbar
Festplatte einfach wechseln
Der Hersteller kann mich mal!
Sicher aus dem Repository
Zukunftssicher
Und überhaupt: sicher
KISS
Abbildungsverzeichnis
Stichwortverzeichnis
End User License Agreement
Kapitel 1
Tabelle 1.1: Einheiten der Option
-size
Tabelle 1.2: Die Rechte für Dateien
Kapitel 3
Tabelle 3.1: Kommandos von nano
Tabelle 3.2: Die Sonderzeichen in Suchmustern regulärer Ausdrücke
Kapitel 6
Tabelle 6.1: Herkunftsbeschreibung in der Konfiguration von
rsyslog
Tabelle 6.2: Schwere des Fehlers in fallender Gewichtung
Kapitel 7
Tabelle 7.1: Optionen von quotatool
Kapitel 8
Tabelle 8.1: MAC- und IP-Adresse meines Laptops
Tabelle 8.2: Die privaten IP-Adressen für lokale Netzwerke
Kapitel 9
Tabelle 9.1: Informationen über Datenbanken und Tabellen
Tabelle 9.2: Rollenattribute
Tabelle 9.3: Befehle der PostgreSQL-Shell
Kapitel 12
Tabelle 12.1: Einige Optionen von
smbpasswd
Kapitel 18
Tabelle 18.1: Optionen von
rsync
Kapitel 1
Abbildung 1.1: Bildungsregel für chmod-Optionen
Kapitel 3
Abbildung 3.1: Der Editor nano mit der Datei /etc/passwd
Kapitel 7
Abbildung 7.1: Das Programm gparted
Abbildung 7.2: Partitionseinbindung in den Verzeichnisbaum
Kapitel 8
Abbildung 8.1: Switch mit Kabeln
Abbildung 8.2: TCP/IP-Paket im Ethernet-Paket
Abbildung 8.3: Aufbau einer IPv6-Adresse
Abbildung 8.4: Network Address Translation (NAT)
Kapitel 10
Abbildung 10.1: Der Apache macht Männchen gegenüber dem Browser
Kapitel 11
Abbildung 11.1: Übersicht über das Mailingsystem
Kapitel 12
Abbildung 12.1: Mit dem MATE-Dateimanager CAJA einen SMB-Server anzeigen
Kapitel 14
Abbildung 14.1: Nextcloud Setup Wizard im Browser
Abbildung 14.2: Datenbankanbindung der Nextcloud
Abbildung 14.3: Nextcloud-Installation
Abbildung 14.4: Nextcloud-Installation
Abbildung 14.5: Der Kalenderbereich von Thunderbird
Kapitel 16
Abbildung 16.1: Erster Besuch des Wikis
Abbildung 16.2: Der Wiki ist installiert.
Kapitel 19
Abbildung 19.1: Der Hauptbildschirm von VirtualBox
Abbildung 19.2: Linux Mint MATE vor der Installation
Abbildung 19.3: Netzwerkeinstellungen einer virtuellen Maschine
Kapitel 20
Abbildung 20.1: Auswahl des Installationsmediums
Abbildung 20.2: Innerer Netzwerkadapter der VirtualBox für den Router
Kapitel 22
Abbildung 22.1: Docker-Hub
Abbildung 22.2: Login für GitLab im Docker
Cover
Titelblatt
Impressum
Über den Autor
Inhaltsverzeichnis
Einleitung
Fangen Sie an zu lesen
Abbildungsverzeichnis
Stichwortverzeichnis
End User License Agreement
1
2
5
6
7
21
22
23
24
25
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
103
104
105
106
107
108
109
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
229
230
231
232
233
234
235
236
237
238
239
240
241
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
337
338
339
340
341
342
343
344
345
347
348
349
350
351
353
357
358
359
360
361
362
Server sind fleißige Dienstleister im Netzwerk. Man kennt sie als Webserver und Mailserver im Internet oder als Dateiserver im LAN. Mal stehen sie als Schränke in Rechenzentren mit Klimaanlage, mal sind es kleine Einplatinencomputer als kleine Helferlein im LAN.
Wenn Sie also darüber nachdenken, privat einen Server einzurichten, der Ihre Fotos verwaltet, wenn Sie eine Webpräsenz für Ihren Verein erstellen, wenn Sie eine Ausbildung als Administrator anstreben oder schlicht wissen wollen, was Ihr Administrator den ganzen Tag tut, dann sollte dieses Buch Ihnen weiterhelfen.
Viele Informationen zu dem Thema finden Sie im Internet, und mir erzählte letzthin ein Zeitgenosse, dass er noch nie ein Buch durchgelesen habe. Ich war natürlich dankbar für den Hinweis auf mein nutzloses Tun. Da aber dennoch das eine oder andere Buch von mir verkauft wird, möchte ich hier meine Vorgehensweise kurz skizzieren.
Ich versuche, jedes Thema allgemein verständlich zu beschreiben und die Abläufe zu erklären. Die Umsetzung erfolgt an einem Beispiel, das möglichst nah an den typischen Anforderungen liegt. Das Ergebnis ist eine funktionstüchtige Installation. Bei Besonderheiten verweise ich auf die eine oder andere Webseite.
Dieses Buch behandelt nur Linux als Server-Betriebssystem. Das hat seinen Grund vor allem darin, dass Linux von vornherein für solche Aufgaben gedacht ist und darum üblicherweise auch dafür verwendet wird.
Wer erstmals mit Servern experimentieren will, braucht dazu eigentlich einige Computer und ein paar Netzwerkkomponenten. Wer das nicht hat, kann sein Netzwerk in einem Laborrechner virtualisieren. Wie Sie sich so ein virtuelles Labor völlig kostenlos selbst erstellen, erkläre ich Ihnen in Kapitel 19. Sie benötigen dazu zwar einen Computer mit reichlich Platz, aber dafür ersparen Sie sich die Angst, versehentlich Ihr Netzwerk außer Betrieb zu nehmen.
Ich gehe davon aus, dass ein Leser, der sich mit Servern beschäftigen will, bereits mit Computern umgehen kann. Vermutlich werden Sie auch mit dem Buch zurechtkommen, wenn Sie noch nichts mit Linux zu tun hatten.
Ansonsten gibt es eigentlich keine Voraussetzung außer der, die immer wichtig ist: Sie müssen Interesse und Neugierde mitbringen. Was man nicht mag, kann man nicht lernen. Versuchen Sie also, die Welt der Server liebzugewinnen. Es wird Ihnen helfen.
Der Schwerpunkt dieses Buches liegt in der Einrichtung und Wartung von Servern. Während die Arbeitsplatz-PCs noch weitgehend von Windows dominiert sind, spielt Windows im Bereich der Server kaum eine Rolle. Aus mehreren Gründen ist hier Linux der Platzhirsch.
Eine große Zahl von Lesern wird vermutlich eher Erfahrungen mit Windows haben, aber mit Linux etwas fremdeln. Darum beginnt das Buch mit den Besonderheiten der Linux-Plattform.
Windows- und Mac-Benutzer mögen sich die Augen reiben: Linux-Administratoren benutzen meist die Kommandozeile, unter Linux auch Shell genannt. Während sich bei üblichen Computeranleitungen Screenshot an Screenshot reiht, finden Sie hier im Buch haufenweise Kommandozeilenbefehle oder textuelle Konfigurationsdateien. Immerhin spart das Platz und ich habe so mehr Inhalt zwischen die Buchdeckel bekommen.
Allerdings benötigen Sie als angehender Administrator Kenntnisse über die Kommandos und Programme von Linux. Dabei werde ich Ihnen auch eine Einführung in die Skript-Programmierung zeigen. Damit können Sie wiederholende Abläufe automatisieren.
Diese Art der Administration zahlt sich bei der Fernwartung aus. Sie müssen dabei keine grafischen Bildschirme übertragen, die sich bei jedem Mausschubser ändern. Es reicht, die Kommandos und deren Ergebnisse auf Textbasis zu übertragen. Dadurch ist es sogar möglich, mehrere Fernwartungssitzungen parallel auf demselben Server auszuführen.
Bevor Sie nun mit dem Einrichten eines Computers beginnen, sollten Sie vielleicht noch einmal auf das Kapitel 19 schauen. Dort wird das Programm VirtualBox gezeigt und die Möglichkeiten, sich ein kleines Labor aufzubauen. Ich habe lange damit gerungen, das Kapitel weiter nach vorn zu ziehen, aber es werden dort Kenntnisse vorausgesetzt, die in den anderen Kapiteln stehen.
Zwischendurch befassen wir uns noch mit den Hardware-Komponenten. Sie werden mit Festplatten und dem Netzwerk konfrontiert sein und sollten Grundkenntnisse darin haben. Diese legen wir in Kapitel 7 und Kapitel 8.
Das Thema Datenbanken spielt bei Servern eine wesentliche Rolle. Bei vielen Firmen verwalten sie Warenbestände oder Kunden. Aber auch viele Server verwenden Datenbanken, um beispielsweise die Webseiten zu speichern. Sie werden in dem entsprechenden Kapitel sicher nicht zum Datenbankexperten, erhalten aber die Informationen, die ein Administrator haben sollte.
Im Teil »Internet-Server« geht es dann endlich mit dem Webserver los, der vielleicht am häufigsten mit dem Thema Server assoziiert wird. Wir befassen uns auch mit Mailservern. Diese werden oft allein dafür benötigt, um Fehlermeldungen des Servers zum Administrator zu schaffen.
Im lokalen Netzwerk stehen die Dateiserver häufig im Mittelpunkt. Sind alle Dateien eines Unternehmens für alle Mitarbeiter direkt zugreifbar, läuft die Zusammenarbeit wie geschmiert. Leider ist aber auch das Risiko durch die »Hacker-Angriffe«, die meist Verschlüsselungsviren sind, am höchsten. In diesem Zusammenhang wird ein klassisches Windows-Netzwerk SMB mit Samba eingerichtet. Alternativ lernen Sie NFS für die Bereitstellung von POSIX-Dateisystemen kennen. Die Alternative zu offenen Dateien, die schnell leichte Beute von Verschlüsselungsviren werden, stellt Nextcloud dar, die nebenher auch Kalender und Kontakte für die Smartphones verwalten kann.
Der Dienst LDAP ist eigentlich ein Universalgenie für die Bereitstellung beinahe beliebig strukturierter Daten. Die häufigste Anwendung ist die Speicherung von Benutzerkennung und Passwort für die interne Netzwerkstruktur.
Beim Thema Sicherheit spielt Verschlüsselung eine bedeutende Rolle. Die mathematischen Hintergründe und genauen Verfahren stellen wir in diesem Buch zurück. Es geht vor allem um das Verständnis, was Zertifikate und Schlüssel eigentlich sind, wie man sie verwendet und erzeugt.
Der andere zentrale Aspekt der Sicherheit ist und bleibt die Datensicherung. Wer sich allein auf die Verlässlichkeit seiner Laufwerke und die Einbruchsicherheit des Netzwerks verlässt, kann damit seine Firma schnell in den Ruin führen.
Sie müssen die Installationen nicht auf Computern ausprobieren. Sie können dafür virtuelle Maschinen verwenden, die in einem Fenster Ihres PCs laufen. Sie werden sehen, wie Sie ein lokales Netzwerk in Ihrem Computer aufspannen können und darin all die Installationen des Buches testen können. Sie werden sehen, wie Sie einen typischen Server und einen Client erstellen. Mit einem Router können Sie das lokale Netzwerk auf dem PC sogar mit dem Internet verbinden.
Eine andere Art der Virtualisierung stellt Docker dar. Damit können komplexere Software-Umgebungen in einen Container gepackt werden, die auf einem beliebigen Computer gestartet werden können. Die Anpassungen an den lokalen Computer entfallen dadurch. Das Thema ist für Webanwendungen interessant, aber auch bei der Installation komplexerer Serversysteme, für die es oft fertige Container gibt.
Für Schlüsselworte, Bezeichner und ähnliche Dinge verwende ich die nichtproportionale Schrift. Wenn ich Begriffe erläutere, werden Sie kursive Schrift sehen. Auch Dateien und Pfade werden in kursiver Schrift gesetzt.
Für Menüs, Buttons oder Beschriftungen von Programmen oder Webseiten werden KAPITÄLCHEN verwendet.
URLs werden in nichtproportionaler Schrift gesetzt. Im Falle von eBooks kann es, je nach Reader, sogar funktionieren, diese direkt anzuklicken.
Ich werde Sie in diesem Buch so lange Siezen, bis wir uns persönlich kennenlernen und Sie mir erklären, von mir geduzt werden zu wollen. Danach dürfen Sie gern mit einem Rotstift durch das Buch gehen und jedes »Sie« durch ein »du« ersetzen.
Sie finden manchmal Symbole neben eingerückten Texten. Diese haben tatsächlich eine Bedeutung. Vielleicht kennen Sie die Symbole auch schon aus anderen Büchern der Dummies-Reihe. Hier ist meine Interpretation, wie ich die Symbole verstehe.
Was hinter so einem Symbol steht, sollte man sich vielleicht merken. Es ist quasi die Aufforderung, einen virtuellen Spickzettel anzulegen.
Dieses Symbol zeigt an, dass es etwas technisch wird. Sie sollten es sich nicht gar so zu Herzen nehmen, wenn Sie es nicht auf Anhieb verstehen, was hinter so einem Symbol steht. Stellen Sie sich vor, dass der Informatiker in mir durchgegangen ist. Ignorieren Sie den Text aber nicht sofort. Ich hatte ja schließlich meinen Grund, ihn aufzuschreiben.
Manchmal gibt es Wege, sich das Leben zu vereinfachen. Dieses Symbol weist Ihnen den Weg.
Mit diesem Symbol möchte ich Sie darauf hinweisen, dass Ihre Aufmerksamkeit gefragt ist.
Bei so einem Zeichen mache ich mir etwas Sorgen. Schauen Sie bitte genauer hin. Sie könnten in eine Situation geraten, die Ihnen nicht gefällt.
Hier plaudere ich mal aus dem Informatikerkästchen. Das müssen Sie sich nicht merken und auch nicht unbedingt lesen, um an Ihr Ziel zu gelangen.
Sie werden hoffentlich das Buch lesen. Dafür habe ich es nämlich geschrieben. Sehr wahrscheinlich werden Sie das Buch nicht wie einen Roman von vorn nach hinten durchlesen, sondern nur die Passagen, die Sie benötigen. Das macht auch nichts. Es gibt eh kein Happy End.
Ich habe für dieses Buch eine Webseite erstellt:
http://willemer.de/linuxserver4dummies
Dort finden Sie Korrekturen und Verweise, die bei der Drucklegung noch nicht zur Verfügung standen. Ich hoffe, es werden nicht allzu viele.
Darüber hinaus verweise ich auf Seiten, auf denen ich meine Erfahrungen festgehalten habe. Hier stehen auch Links zu meinen bisherigen Büchern zum Thema.
Unter der URL www.willemer.de finden Sie eine E-Mail-Adresse, unter der Sie mich erreichen können. Sollte ich Mist gebaut haben, dürfen Sie mich auf diesem Weg darauf hinweisen. Das hilft mir, das nächste Buch besser zu machen, und wenn Sie Glück haben, habe ich sogar eine schnelle Lösung für Ihr Problem.
Teil I
IN DIESEM TEIL …
Administratoren bevorzugen die Shell und haben gute Gründe dafür.
Kapitel 1
IN DIESEM KAPITEL
Dateien, Namen und VerzeichnisseDateien, ihre Besitzer und deren RechteMit Links auf die gleiche Datei verweisenVerzeichnisbaum statt LaufwerkeProzesseBenutzerverwaltungLinux hat mehrere Besonderheiten, die es weitgehend von UNIX geerbt hat. Diese unterscheiden sich häufig von anderen Betriebssystemen.
Warum die Wahl bei Servern so oft auf Linux fällt, ließe sich durch einen intensiven Blick in die Betriebssystemarchitektur leicht erklären. Linux ist für den Mehrbenutzerbetrieb gebaut, hat also von Anbeginn an Konzepte, Benutzer anzulegen, deren Dateien von denen anderer zu trennen und im Zweifelsfall einen Fremdzugriff zu verteidigen. Anschaulicher wird es, wenn man in die Historie zurückblickt.
1970
Das Betriebssystem UNIX entstand aus der Anregung von MULTICS, einem Versuch, über Firmengrenzen hinaus ein Universalbetriebssystem zu erstellen, also eine Eier legende Wollmilchsau. Wie das immer wieder bei diesen Tieren ist, lassen sie sich letztlich doch nicht umsetzen. Die damals verfügbare Hardware schaffte es nicht. Ken Thompson und Dennis Ritchie von AT&T erstellten aus den Konzepten von MULTICS eine schlankere Version und nannten sie UNIX. Seinerzeit wurden Betriebssysteme in Maschinensprache geschrieben und waren damit abhängig von der Hardware, insbesondere der CPU. Um UNIX portabel zu machen, entwickelten sie die Programmiersprache C.
AT&T durfte zu jenem Zeitpunkt aus kartellrechtlichen Gründen keine Software verkaufen. So wurde UNIX inklusive C-Compiler der Berkeley-Universität zur Verfügung gestellt, die auf dieser Basis eine eigene Variante von UNIX namens BSD erstellte.
Auf diesem Wege entstanden auch viele kommerzielle UNIX-Varianten. Um einen Standard zu erhalten, definierte man IEEE 1003, der später als POSIX bezeichnet wurde.
In den frühen 1980er-Jahren durfte AT&T wieder Software verkaufen und das inzwischen populäre UNIX wurde kommerzialisiert. Der Code durfte nicht mehr veröffentlicht werden. Das verärgerte viele Mitprogrammierer an UNIX, die zur Verbreitung beigetragen hatten, aber die Ergebnisse selbst nicht nutzen durften. Es entstand die GNU-Bewegung (GNU's Not Unix), die schrittweise ein freies POSIX-konformes Betriebssystem auf eigener Code-Basis entwickelte und vor allem dafür sorgte, dass die Sourcen durch eine entsprechende Open-Source-Lizenz immer frei zugänglich bleiben sollten.
1973
1973 begannen die ersten Entwicklungen zu TCP/IP. Ziel war es, eine Netzwerkverbindung über mehrere Netzwerke mit diversen Übertragungstechniken zu schaffen. Das Verteidigungsministerium der USA stieß diese Entwicklung entscheidend an. Das führte dazu, dass die Sourcen öffentlich finanziert waren und damit nach amerikanischem Recht auch öffentlich zugänglich sein mussten. 1975 wurde erstmals ein Netzwerk zwischen Stanford und der University College London eingerichtet.
1980
Für den Prozessor 8086 erstellte Tim Paterson ein Basisbetriebssystem unter dem Namen QDOS – Quick and Dirty Operating System, weil eine CP/M-Version für diesen Prozessor nicht verfügbar war.
QDOS wurde von Microsoft aufgekauft und 1981 zu MS-DOS. Es wurde Standardbetriebssystem auf dem IBM PC und Geräten, die zum IBM PC kompatibel waren. MS-DOS war ein Einbenutzerbetriebssystem, das kein Multitasking erlaubte und zunächst nicht einmal Verzeichnisse, da es für den Diskettenbetrieb geschaffen war.
1984
Der Mac erschien 1984 als erster kommerziell erfolgreicher Computer mit einer grafischen Oberfläche. Das Betriebssystem des Mac war zu diesem Zeitpunkt ein Einbenutzersystem ohne Multitasking-Fähigkeiten.
1985
Bill Gates ließ Windows als ersten Versuch einer Mac-Kopie für MS-DOS entwickeln. Windows hatte in dieser Version allerdings keinen Erfolg. Erst 1990 konnte Windows 3.0 ernsthaft am Markt Fuß fassen.
1991
Linus Torvalds veröffentlichte seinen Kernel für 80386-PCs, der später Linux genannt werden sollte und schließlich unter GNU-Lizenz stand.
Der Kernel wurde schnell mit der bereits entwickelten GNU-Umgebung kombiniert und so stand damit bald ein freies POSIX-konformes System zur Verfügung.
1992
Berkeley befreit sein BSD von lizenzrechtlich problematischen Quelltexten und stellt dieses frei zur Verfügung.
TCP/IP konnte sowohl für BSD als auch für Linux frei implementiert werden.
1993
Microsoft positioniert Windows NT als Konkurrenz zu Novell NetWare. NetWare stellte einen Dateiserver auf der Basis eines eigenen Netzwerk-Protokolls dar. NT lieferte außerdem erstmalig TCP/IP standardmäßig für eine Windows-Version aus.
1998
Steve Jobs kehrte zu Apple zurück. Er hatte nach seinem Ausscheiden bei Apple 1985 die Firma NeXT gegründet. NeXT stellte High-Level-Computer mit einem hochmodernen Betriebssystem auf der Basis einer UNIX-Variante her. Nachdem NeXT von Apple aufgekauft wurde, wurde Mac OS X als Betriebssystem des Macs herausgegeben, welches auf NeXTStep und BSD-UNIX basierte.
Aufgrund der freien Lizenz von Linux findet man dieses inzwischen in allen möglichen Geräten wie Routern, Fernsehern, Autos, Smartphones oder Kleingeräten des Internet of Things (IoT).
Wie andere Betriebssysteme auch verwendet Linux Dateien und ordnet sie in Verzeichnissen an. Interessant sind die Eigenschaften, die bereits vollständig auf ein Mehrbenutzersystem vorbereitet sind.
Als Administrator werden Sie meist vom Terminal aus operieren. Darum lernen Sie hier gleichzeitig die grundlegenden Befehle und die Besonderheiten des Dateisystems kennen.
Damit Sie die Beispiele ausführen können, benötigen Sie also ein Terminal. Dazu gibt es mehrere Wege:
Wenn Ihr Linux keine grafische Oberfläche hat, werden Sie nach dem Einloggen automatisch im Terminal landen.
Die grafischen Oberflächen bieten Programme an, die eine Terminalsitzung in einem Fenster starten können. Diese Programme tragen das Wort »Terminal« im Namen und sind meist der Gruppe Systemwerkzeuge zugeordnet.
Mit der Tastenkombination ++ verschwindet Ihre grafische Oberfläche. Sie können sich unter Ihrer Kennung an einem Terminal anmelden. Wenn Sie fertig sind, loggen Sie sich mit dem Befehl
exit
wieder aus und schalten mit der Tastenkombination ++ wieder zurück in Ihren grafischen Desktop.
Mit dem Befehl ls können Sie sich Dateien und Verzeichnisse im aktuellen Verzeichnis anschauen.
Optionen beginnen immer mit einem Minuszeichen und bestehen aus einem Buchstaben. Es gibt allerdings auch Optionen mit zwei Minuszeichen. Dahinter dürfen dann auch ganze Wörter als Option stehen. Das ist anschaulicher, aber auch anstrengender zu tippen, steigert also den Kalorienverbrauch.
Sie können neben den Optionen auch Argumente angeben. Das wären dann beispielsweise die Dateien, die Sie einzeln betrachten wollen. Wenn Sie mehrere Dateien anschauen wollen, können Sie einen Stern als Platzhalter verwenden. M*us steht für alle Namen, die mit einem M beginnen und mit us enden, also beispielsweise Mus, Maus oder auch Markenstatus. Ein Fragezeichen steht für genau einen Buchstaben. Ma?s passt also auf Mais oder Maus, aber nicht auf Markenstatus. Diese Platzhalter werden als Wildcards bezeichnet.
Der Befehl ls gibt nur die nackten Dateinamen aus. Wird der Befehl ls -l abgesetzt, erscheint eine Liste von Dateien, die weitere Informationen enthält. Dazu gehören Eigenschaften, Rechte, Besitzer, Größe, letzter Änderungszeitpunkt und eben der Name der Datei.
Das erste Zeichen der Ausgabezeile von
ls -l
verrät die Art der Datei. Eine normale Datei hat ein Minuszeichen, ein
d
steht für ein Verzeichnis und ein
l
für einen symbolischen Link.
Die neun Zeichen dahinter beschreiben die Zugriffsrechte.
r
steht für Lesen,
w
für Schreiben und
x
für Ausführen. Die Rechte werden dreimal aufgeführt. Die erste Rechtekombination gilt für den Besitzer, die zweite für die Gruppe und die letzte für den Rest der Anwender. Das Thema wird im Zusammenhang mit den Dateirechten und dem Befehl
chmod
weiter ausgeführt.
Die Spalte danach zeigt die Verweise an, die es für diese Datei gibt. Bei Verzeichnissen sind das die Dateien und Verzeichnisse, die sich im Verzeichnis befinden. Bei Dateien ist es die Anzahl der harten Links auf die Datei.
Die nächste Spalte nennt den Besitzer der Datei.
Es folgt die Gruppe, der die Datei gehört.
Es folgt die Größe der Datei in Byte.
Datum und Uhrzeit der letzten Änderung. Die erste Spalte gibt den Monatsnamen und die zweite den Tag an. Die dritte Spalte enthält das Jahr oder, wenn die Datei noch nicht älter als ein Jahr ist, die Uhrzeit.
Zuletzt wird der Dateiname angezeigt. Bei symbolischen Links sehen Sie auch nach dem angedeuteten Pfeil, wohin der Link zeigt.
Der Befehl ls hat eine ganze Stange von Optionen. Mit dem Befehl man ls erhalten Sie den passenden Handbucheintrag. Oft ist eine Kombination die optimale Lösung. Meine Lieblingsoption ist übrigens ls -lrt. Bei einbuchstabigen Optionen können diese zusammengestellt werden und sind so leichter zu tippen als ls -l -r -t. Der Befehl zeigt die Langdarstellung (l). Alle Dateien werden zeitlich sortiert (t), aber in umgekehrter Reihenfolge (r). Damit sind die zuletzt geänderten Dateien ganz unten, also direkt oberhalb der neuen Eingabe. Denn meistens sind es genau diese, die wirklich interessant sind.
Verzeichnisse sind Sammelbehältnisse für Dateien. Sie werden durch das d am Anfang der Zeile bei einem Aufruf von ls -l gekennzeichnet. Gibt man den Verzeichnisnamen als Argument an, dann schaut der ls allerdings in das Verzeichnis hinein. Will man das verhindern, um beispielsweise die Rechte des Verzeichnisses zu sehen, muss man die Option -d angeben.
Der Verzeichnistrenner ist der einfache Schrägstrich, nicht der Backslash \, wie er bei MS-DOS eingeführt wurde, weil der Schrägstrich dort schon als Optionszeichen verwendet wurde, als MS-DOS noch keine Verzeichnisse kannte.
Der Befehl mkdir erzeugt die Verzeichnisse, die ihm als Argument übergeben werden. Mit der Option -p kann eine komplette Hierarchie angelegt werden. Beispiel:
$ mkdir -p eins/zwei/drei/vier
Gab es noch kein Verzeichnis namens eins, wird die komplette Verzeichnislinie angelegt. Falls es schon das Verzeichnis eins/zwei gab, werden nur drei und vier erzeugt. Ohne -p müsste der Pfad eins/zwei/drei existieren, damit der Befehl fehlerfrei arbeitet.
Der Befehl rmdir löscht leere Verzeichnisse. Befindet sich eine Datei im Verzeichnis, weigert sich rmdir, diese und auch das Verzeichnis zu löschen. Sie müssten in diesem Fall den Befehl rm -r verwenden. Dieser löscht alle angegebenen Verzeichnisse und auch die darin enthaltenen Verzeichnisse und Dateien, also rekursiv.
Gerade wenn Sie rekursiv löschen, kann es Ihnen passieren, dass sich ein Dateirecht querstellt. Mit der Option -f oder --force zwingen Sie rm dazu, keine Rückfragen zu stellen.
Mit dem Befehl cd wechseln Sie in ein Verzeichnis, das damit zum Arbeitsverzeichnis wird. Die Eingabe von cd ohne Argument führt zur Wurzel des Heimatverzeichnisses zurück. Auch die Tilde (˜) bezeichnet das Heimatverzeichnis.
Mit dem Befehl pwd erhalten Sie das Verzeichnis, in dem Sie sich gerade befinden. Allerdings erscheint das Verzeichnis immer im sogenannten Prompt links neben dem Cursor.
Sie können Dateien auch auf dem Terminal kopieren, umbenennen, verschieben und löschen.
Der Befehl cp kopiert Dateien. Als Argumente erwartet der Befehl zunächst die zu kopierenden Dateien und als Letztes den Namen der Zieldatei oder das Zielverzeichnis. Sie können also durch Aufzählung oder durch Verwendung von Wildcards mehrere Dateien auf einen Schlag kopieren, müssen dann aber ein Verzeichnis als Ziel angeben.
Dateirechte übernehmen: -p
Der Befehl cp erzeugt immer eine neue Datei mit dem aktuellen Datum. Der Aufrufer des Befehls wird automatisch zum Besitzer der Datei. Sollen allerdings die Eigenschaften der Originaldatei übernommen werden, geben Sie die Option -p an.
Rekursive Kopie: -r
Mit der Option -r können komplette Verzeichnisbäume kopiert werden. So wird der folgende Befehl das Verzeichnis verzeichnis und alle darunterliegenden Dateien und Verzeichnisse in das Verzeichnis /tmp kopieren:
$ cp -r verzeichnis /tmp
Update: -u
Mit der Option -u können Sie erreichen, dass nur ältere Dateien durch neuere ersetzt werden.
Mit dem Befehl mv können Sie Dateien verschieben. Als Argument erwartet er beliebig viele Dateien. Das letzte Argument muss ein Verzeichnis sein, in das die Dateien verschoben werden. Hier werden alle Dateien, die auf *.txt enden, in das Verzeichnis eins/zwei verschoben.
$ mv *.txt eins/zwei
Wird als Argument nur eine Datei oder ein Verzeichnis angegeben und das Ziel ist kein existierendes Verzeichnis, wird der Befehl den Namen ändern.
$ mv saulus paulus
Das Verschieben von Dateien geschieht oft erstaunlich schnell. Linux kann erkennen, wenn Quelle und Ziel auf dem gleichen Dateisystem sind, und wird dann die Einträge in den Verzeichnissen umschieben und die dahinterstehenden Daten dort lassen, wo sie sind.
Da verschobene Dateien nicht neu angelegt werden, behalten sie auch ihre ursprünglichen Eigenschaften bezüglich Eigentümern, Rechten und dem letzten Änderungsdatum.
Mit dem Befehl rm löschen Sie alle Dateien, die Sie als Argumente angeben. Da das Löschen von Dateien so endgültig ist, gibt es die Möglichkeit, durch die Option -i den Anwender bei jeder einzelnen Datei noch einmal zu fragen, ob es wirklich sein Ernst ist.
Unter Linux kann ein Dateiname fast jedes beliebige Zeichen enthalten. Die folgenden Zeichen sollten Sie allerdings in Dateinamen nicht verwenden:
Schrägstrich
Der Schrägstrich dient unter Linux als Verzeichnistrenner.
Doppelpunkt
Der Doppelpunkt wird im Netzwerk dazu verwendet, einen fremden Rechner anzusprechen.
Minuszeichen am Namensanfang
Das Minuszeichen wird von den Kommandozeilenprogrammen als Zeichen für eine Option verwendet. Diesen Programmen wird es also schwerfallen, eine solche Datei zu bearbeiten, weil sie den Dateinamen nicht erkennen und ihn für eine Option halten.
Stern und Fragezeichen
Beide Zeichen werden von der Kommandozeile aus als Wildcard verwendet. Es ist zwar möglich, diese Zeichen durch Anführungszeichen in ihrer Sonderfunktion »auszublenden«, es wird aber in jedem Fall eine gewisse Verwirrung auftreten.
Internationale Sonderzeichen
Im deutschen Sprachraum ist die Versuchung des Anwenders groß, Dateinamen auch aus Umlauten zu bilden. Andererseits möchten Sie vermutlich auch nicht nach den skandinavischen Sonderzeichen auf Ihrer Tastatur suchen, wenn ein Däne auf die gleiche Weise vorgeht.
Linux unterscheidet bei den Dateinamen zwischen großen und kleinen Buchstaben. Im selben Verzeichnis kann die Datei Makefile neben der Datei makefile stehen. Windows sieht das leider vollkommen anders.
Dateien und Verzeichnisse, die mit einem Punkt beginnen, werden von den Standardbefehlen nur dann zur Kenntnis genommen, wenn die Option -a eingesetzt wird oder der Name direkt angesprochen wird. Auf diese Weise sind Dateien und Verzeichnisse, die mit einem Punkt beginnen, quasi unsichtbar. Dieses Verhalten wird teilweise auch von grafischen Dateimanagern übernommen. Beim Dateimanager Caja beispielsweise können Sie mit der Tastenkombination + hin- und herschalten.
Dieser Effekt wird gern in den Benutzerverzeichnissen verwendet, um Konfigurationsdateien etwas aus dem Sichtfeld zu schaffen.
Unter Linux werden Konfigurationen gern in Textdateien gehalten. Auch Fehlermeldung werden sorgfältig in Textdateien abgelegt, Programmierer verwenden solche Dateien, weil Compiler an hübscher Gestaltung der Texte kein Interesse haben. Passend dazu liefert Linux ein Arsenal von Befehlen, mit denen man Textdateien durchsuchen, analysieren und verändern kann.
Der Befehl cat liest eine oder mehrere Dateien aus und befördert die Inhalte in die Standardausgabe. Das ist in der Regel der Bildschirm. Der folgende Befehl stellt den Inhalt der Benutzerdatei /etc/passwd auf dem Bildschirm dar:
$ cat /etc/passwd
Um Textinhalte anzusehen, die größer sind, macht cat keinen Spaß. Da ist das Programm more deutlich nützlicher, denn es zeigt immer eine Bildschirmseite an und wartet, bis Sie mit der Leertaste weiterblättern.
$ more /etc/passwd
Neben der Leertaste beherrscht more noch ein paar Tasten mehr:
Die Leertaste blättert seitenweise.
Die Taste blättert zeilenweise.
Mit der Taste können Sie die Ausgabe abbrechen.
Die GNU-Version von more heißt less und getreu dem Motto »less is more than more« kennt less noch ein paar Tricks mehr. So kann less die normalen Cursortasten einsetzen, aber vor allem kann less auch rückwärts blättern.
Der Befehl less erlaubt sogar das Suchen im Datenstrom. Dazu verwenden Sie wie im vi den Schrägstrich, und geben den Suchbegriff ein und schließen ihn mit ab.
Wozu benötigen Sie more, wenn less doch alles besser kann? Um vor- und zurückgehen zu können, muss less die Datei in den Hauptspeicher holen. Das kann bei extrem großen Dateien schwierig werden. Hier ist more also im Vorteil.
Wollen Sie nur die ersten zehn Zeilen einer Datei betrachten, hilft der Befehl head. Nach der Option -n können Sie auch eine andere Anzahl von Zeilen sehen.
$ head /etc/passwd
Was vorn geht, geht auch hinten. Mit dem Befehl tail können Sie sich die letzten zehn Zeilen einer Datei ansehen. Gerade bei der Fehlerdatei in /var/log/syslog sind die neuesten Ereignisse logischerweise am Schluss.
$ tail /var/log/syslog
Richtig spannend aber wird es, wenn man eine Live-Übertragung der Fehlerentstehung mitverfolgen kann. Wenn Sie dem Befehl tail die Option -f spendieren, führt es dazu, dass der Befehl mit der Datei verbunden bleibt. Werden neue Zeilen in die Datei angehängt, werden diese zeitgleich ausgegeben.
# tail -f /var/log/syslog
Wenn Sie nun einen USB-Stick einstecken, werden Sie sehen, wie die neue Hardware erkannt und behandelt wird. Beim Start eines Servers können Sie mitverfolgen, wenn dieser scheitert, und bekommen darüber hinaus eine Ahnung, warum das passiert. Die Übertragung mit tail -f wird durch die Tastenkombination + beendet.
Der Befehl grep durchsucht Textdateien nach Textmustern. Findet er eine Zeile, in der das Muster auftaucht, zeigt er die Zeile an. Das folgende Beispiel zeigt, wie grep die Zeichenkette »href« in allen Dateien des Verzeichnisses sucht, die auf .htm enden.
$ grep href *.htm
Da in HTML der href sowohl klein- als auch großgeschrieben werden kann, können Sie mit der Option -i nach beiden Fällen suchen.
$ grep href -i *.htm
Der Suchbegriff sollte in Anführungszeichen gesetzt werden, wenn er Leerzeichen oder auch Sonderzeichen enthält, die von der Shell (siehe Kapitel 2 interpretiert werden könnten.
Der Befehl grep kennt einige Optionen, von denen folgende häufiger eingesetzt werden:
-i
ignoriert Groß- und Kleinschreibung.
-l
erstellt eine Liste der Dateien mit einem Treffer.
-v
zeigt die Zeilen, in denen der Begriff nicht vorkommt. In Kombination mit -l werden nur die Namen der Dateien angezeigt, die den Suchbegriff nicht enthalten.
Sie können nach zwei Begriffen in einer Zeile suchen, indem Sie das Ergebnis eines grep-Befehls mit einem senkrechten Strich in einen zweiten grep-Befehl weiterleiten. Wenn Sie in Ihren Dateien alle Links auf Wikipedia suchen, könnte der Befehl so ergänzt werden:
$ grep href *.htm | grep wikipedia
Der Befehl find sucht nach Dateien in einem Verzeichnis und dessen Unterverzeichnissen. Er spürt die Dateien nicht nur anhand des Namens auf, sondern auch aufgrund des Alters, der Größe oder anderer Eigenschaften. Sie können find dazu bewegen, auf die gefunden Dateien Befehle einwirken zu lassen.
Durch geschickte Kombinationen und Aktionen können Sie veraltete Datensicherungen entsorgen, prüfen, ob irgendwo übermäßig große Dateien auftreten, oder beispielsweise Dateien eines bestimmten Besitzers archivieren, die ein gewisses Alter überschritten haben.
Der Aufbau eines find-Befehls:
Direkt auf den Befehl
find
folgt der Pfadname des Verzeichnisses, das das Kommando durchsuchen soll. Oft ist es genau das Verzeichnis, in dem Sie sich gerade befinden, sodass hier ein Punkt angegeben wird.
Sie können mit Optionen die gewünschten Dateien ausfiltern, beispielsweise nach deren Dateiname oder Alter.
Mit der Option
-exec
können Sie Befehle auf die gefundenen Dateien loslassen.
Mit verschiedenen Optionen können Sie die Ergebnisse von find filtern. Durch die Kombination mehrerer Optionen schränken Sie die Ergebnismenge von find immer weiter ein.
Nach Eingabe des Befehls find und des Ausgangsverzeichnisses wird für die Suche nach Dateinamen die Option -name gefolgt von dem gesuchten Namen angegeben.
$ find . -name 11exceptions.tex./tex/java/11exceptions.tex
Falls Sie sich nicht mehr genau an den Namen der Datei erinnern, aber noch wissen, dass der Dateiname das Wort exception enthält, können Sie einen Stern als Dateimaske einsetzen. Allerdings sollten Sie in dem Fall den Dateinamen mit Anführungszeichen umgeben:
$ find . -name “*exception*”./tex/cpp/listings/exception.cpp./tex/java/11exceptions.tex
Nun hat find schon zwei Dateien gefunden. Wenn Sie die Option -iname verwenden, wird auch noch Groß- und Kleinschreibung ignoriert.
Die Option -type sucht nach Dateien eines bestimmten Typs. Welchen Typ Sie suchen, geben Sie als weiteren Parameter an.
-type d
Verzeichnisse
-type f
Dateien
-type l
symbolische Links
-type b
Blockgerätedateien
-type c
Zeichengerätedateien
-type s
Socket-Kommunikationspunkte
-type p
Pipe-Kommunikationspunkte
Das folgende Beispiel zeigt alle Verzeichnisse unterhalb des aktuellen Verzeichnisses an.
$ find . -type d../pic./example
Wenn Sie die Suche darüber hinaus auf spezielle Dateisysteme (siehe Abschnitt 7) einschränken wollen, hilft Ihnen die Option -fstype. Als Parameter benötigt sie einen Dateisystemtyp, wie er auch bei mount (siehe Abschnitt 7) verwendet wird.
Mit der Option -perm (für »permission«) können Sie nach Berechtigungen filtern. Die Berechtigung geben Sie in der Zahlendarstellung an, die auch bei dem Befehl chmod üblich ist.
$ find . -perm 644
Dieser Befehl zeigt alle Dateien und Verzeichnisse an, die vom Besitzer schreib- und lesbar sind und von der Gruppe und der Welt nur lesbar sind.
Wollen Sie alle Dateien haben, die mindestens die angegebenen Rechte besitzen, müssen Sie der Zahl ein Minuszeichen voranstellen.
$ find . -perm -644
Sie können die Ergebnisse auch nach dem Besitzer oder der Gruppe filtern. Je nach Art der Frage ist die Kennung oder die ID als Parameter zu übergeben.
-user
sucht nach dem Benutzernamen
-uid
sucht nach der Benutzernummer
-group
sucht nach dem Gruppennamen
-gid
sucht nach der Gruppennummer
Sie können auch über das Alter der Dateien filtern. Damit können Dateien selektiert werden, die seit einem bestimmten Zeitpunkt verändert wurden oder schon älter und vielleicht nicht mehr wichtig sind.
Bei der Option -mmin geben Sie an, wie viele Minuten höchstens seit der letzten Änderung vergangen sein dürfen. Die Option mtime verwendet ebenfalls eine Zahl. Diese ist dann allerdings die Anzahl der Tage.
Hat die Zahl, die als Parameter für -mmin oder mtime angegeben wird, kein Vorzeichen, muss diese Zeit exakt auf die Dateizeit passen. Bei -mmin +10 werden die Dateien angezeigt, die mindestens vor 10 Minuten geändert wurden. -mmin -10 gilt für diejenigen Dateien, deren Änderung höchstens zehn Minuten her ist.
Sollen beispielsweise alle Dateien gelöscht werden, die auf backup.tar enden und älter als eine Woche sind, würde der Befehl lauten:
find . -mtime +7 -name "*backup.tar" -exec rm {} \;
Lassen Sie sich nicht von der Option -exec erschrecken. Diese wird weiter unten beschrieben. Im Augenblick müssen Sie mir einfach glauben, dass die Dateien gelöscht werden.
Die Option -newer vergleicht nicht mit einem Datum, sondern erwartet als weiteren Parameter eine Datei und vergleicht, ob die gefundene Datei neuer ist als die angegebene.
Sie können mit der Option -empty nach leeren Dateien suchen. Über die Option -size können Sie die Größe der gesuchten Datei angeben. Dabei wird an die Zahl ein Buchstabe für die Größeneinheit angehängt:
Zeichen
Einheit
b
Anzahl der Blöcke
c
Byte
k
Kilobyte
M
Megabyte
G
Gigabyte
Tabelle 1.1: Einheiten der Option -size
Ein + als Vorzeichen der Parameterzahl bewirkt, dass die Datei mindestens, und ein -, dass sie höchstens so groß sein darf. Der folgende Befehl sucht alle Dateien unterhalb des aktuellen Verzeichnisses, die kleiner als 700 Byte sind.
$ find . -size -700c
Die Option -exec ermöglicht es, Befehle auf die gefundenen Dateien anzuwenden. Den Befehl, den Sie anwenden wollen, schreiben Sie direkt hinter die Option -exec.
Der Befehl erwartet als Argument vermutlich eine Datei. Die Idee ist natürlich, dass der Befehl jeweils auf die gefundene Datei angewendet wird. Als Stellvertreter für die jeweils gefundene Datei verwendet find ein Paar geschweifter Klammern.
Der Befehl der Option -exec muss mit einem Semikolon abgeschlossen werden. Damit dieses Semikolon nicht von der Shell ausgewertet wird und so verschwindet, müssen Sie einen Backslash davorstellen. So würde der Befehl, der alle Dateien löscht, deren Name exception enthält, folgendermaßen lauten:
$ find . -name "*exception*" -exec rm {} \;
Sie müssen sich den Ablauf eines find-Befehls so vorstellen, dass alle Dateien des angegebenen Pfades nacheinander betrachtet werden. Dabei werden alle Filteroptionen geprüft, ob sie auf die gefundene Datei jeweils zutreffen. Sind mehrere Optionen angegeben, müssen alle erfüllt sein. Es handelt sich nach der Aussagenlogik also um eine UND-Verknüpfung.
Wenn Sie beispielsweise feststellen, dass in den letzten drei Tagen die bis vor Kurzem noch fast leere Festplatte voll ist, werden Sie wissen wollen, wo sich große Dateien befinden, die in den letzten drei Tagen entstanden sind. Dazu gehen Sie an das Wurzelverzeichnis der Festplatte und geben den folgenden Befehl ein:
$ find . -size +1G -mtime -3
Die angezeigten Dateien sind über ein Gigabyte groß und wurden in den letzten drei Tagen verändert.
Neben der UND-Verknüpfung, die nur wahr ist, wenn alle Teilbedingungen erfüllt sind, können Sie auch eine ODER-Verknüpfung anwenden, die wahr ist, wenn wenigstens eine der Bedingungen erfüllt ist. Um zwei Optionen per ODER zu verknüpfen, müssen Sie zwischen die Optionen die Option -o stellen.
Sie können sehr komplexe boolesche Ausdrücke basteln. Dazu stehen Ihnen die folgenden Möglichkeiten zur Verfügung:
ODER können Sie mit
-o
definieren.
AND ist die Vorgabe, kann aber durch
-a
explizit genannt werden.
Eine Negierung ist über ein Ausrufezeichen zu realisieren.
Um die Ausdrücke zusammenzufassen, können Sie Klammern verwenden, müssen diese aber jeweils mit einem Backslash versehen, um Missverständnisse mit der Shell zu vermeiden.
Das folgende Beispiel löscht alle Dateien namens .rhosts, die unterhalb des Verzeichnisses /home liegen und nicht die Rechtekombination 0600 haben:
$ find /home -name .rhosts -a ! -perm 0600 -exec rm {} \;
Mit Links ist es nicht nur möglich, dass mehrere Dateinamen auf dieselbe Datei verweisen. Es gibt sogar zwei Arten solcher Verweise, die gern als Link bezeichnet werden.
Der sogenannte »harte« Link entsteht, wenn zwei oder mehr Einträge in Verzeichnissen auf ein und denselben Datenblock verweisen. Dazu muss der Verweis auf dem gleichen Dateisystem stehen. Das Dateisystem zählt die Anzahl der Verweise mit und löscht den Datenblock erst, wenn der letzte Verweis gelöscht wird.
Der symbolische Link enthält dagegen den kompletten Dateinamen inklusive der Verzeichnisse und kann auf beliebige Dateien oder Verzeichnisse im Dateisystem zeigen, allerdings auch auf solche, die inzwischen vielleicht entfernt worden sind.
Der Befehl für das Erzeugen von Verweisen lautet ln.
Der Befehl ln ähnelt syntaktisch dem Kopierbefehl cp und erwartet als erstes Argument eine existierende Datei und als zweites Argument einen neuen Dateinamen für diese Datei.
Das spielen wir gleich mal durch: Mit dem Befehl ls -l sehen wir uns das aktuelle Verzeichniss genau an. Die Ausgangsdatei heißt hier original. Wir erzeugen dann mit dem Befehl ln einen Link mit dem Namen dublette und schauen dann noch einmal hin.
$ ls -l original-rw-r--r-- 1 arnold arnold 5267 Okt 18 17:37 original$ ln original dublette$ ls -l original dublette-rw-r--r-- 2 arnold arnold 5267 Okt 18 17:37 dublette-rw-r--r-- 2 arnold arnold 5267 Okt 18 17:37 original$ diff original dublette$
Nach der Ausführung des Befehls sehen Sie, dass die Zahl zwischen den Dateirechten und dem Besitzernamen erhöht wurde. Dies ist der Linkzähler, der normalerweise immer 1 ist. Weiter sehen Sie, dass die Dateien bezüglich Datum, Uhrzeit, Rechten und Größe gleich aussehen.
Auch der Befehldiff, der jegliche Unterschiede zwischen Dateien aufzeigt, bestätigt, dass die Dateien gleich sind. Was Sie nicht auf Anhieb sehen können, ist, dass der zusätzliche Link keinen zusätzlichen Festplattenplatz für die Daten benötigt.
Die Verweise müssen nicht im gleichen Verzeichnis liegen, aber aus technischen Gründen auf dem gleichen Dateisystem.
Während nach dem Setzen eines harten Links das Original vom Duplikat nicht mehr zu unterscheiden ist, ist ein symbolischer Link lediglich ein textueller Verweis auf eine Datei. Ein symbolischer Link wird ebenfalls mit dem Befehl ln angelegt, allerdings wird die Option -s hinzugefügt.
$ ln -s original link$ ls -l-rw-r--r-- 2 arnold arnold 5267 Okt 18 17:37 dublettelrwxrwxrwx 1 arnold arnold 8 Okt 18 17:47 link -> original-rw-r--r-- 2 arnold arnold 5267 Okt 18 17:37 original$ diff original link$
Der Linkzähler verändert sich beim Setzen eines symbolischen Links nicht. Der Befehl ls -l zeigt einerseits ein kleines »L« ganz links beim symbolischen Link. Darüber hinaus wird auch der Zielort des symbolischen Links rechts hinter einem stilisierten Pfeil angezeigt. Tatsächlich enthält ein symbolischer Link auch nur den Dateinamen, auf den er verweist. Darum ist die Datei link auch nur acht Byte groß. Der Vergleich über den Befehl diff zeigt, dass die Dateien link und original identisch sind. Tatsächlich betrachten also die Linux-Befehle symbolische Links fast immer genauso wie die Datei, auf die sie verweisen.
Der symbolische Link ist sehr flexibel.
Er kann quer über alle Dateisysteme und Festplatten hinweg verweisen, weil er ja nur den Ort der Datei bezeichnet.
Der symbolische Link ist nicht auf Dateien beschränkt. Sie können auch einen symbolischen Link auf ein Verzeichnis setzen und er wird als Verzeichnis behandelt.
Die Einschränkung ist, dass das Dateisystem den symbolischen Link nicht kontrolliert. Wird das Original gelöscht, verschwindet der symbolische Link nicht automatisch, sondern verweist ins Leere. Sie müssen wohl selbst für Ordnung sorgen.
Für die Kommunikation verwendet Linux sowohl Socket- als auch Pipe-Dateien. In den meisten Fällen haben Sie damit wenig zu tun, außer dass Sie Dateien finden, die ein kleines s oder ein p in der ersten Spalte einer Ausgabe von ls -l haben.
Diese Dateien dienen als Kommunikationsendpunkte und manche Programme verwenden sie für interne Zwecke. Das Hauptproblem für den Administrator besteht darin, dass sie nicht einfach durch Kopieren zu sichern sind.
Ganz besondere Dateien finden Sie im Verzeichnis /dev. Diese Dateien sind keine echten Dateien, sondern dienen als Zugriffspunkte für Hardware. Beispielsweise werden wir damit Festplatten und Partitionen bearbeiten. Sie können diese Dateien in vieler Hinsicht mit üblichen Dateibefehlen behandeln.
Sockets sind vor allem als Netzwerkverbindungen bekannt. Es ist aber auch möglich, Sockets im Dateisystem anzulegen. Dabei wird eine Datei angelegt, die als Kommunikationsknotenpunkt zwischen zwei Prozessen angelegt wird.
Ganz ähnlich verhält es sich mit Pipes. Dies sind Daten, die von einem Prozess an einen anderen weitergereicht werden und dazu das Dateisystem verwenden.
In beiden Fällen entstehen diese Dateien durch eine Kommunikation zwischen Prozessen, verschwinden aber auch wieder, wenn sie nicht mehr benötigt werden. Aus Sicht des Administrators sind diese nicht so interessant. Sie müssen und können auch gar nicht gesichert werden.