Linux-Server für Dummies - Arnold Willemer - E-Book

Linux-Server für Dummies E-Book

Arnold Willemer

0,0
24,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

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:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 455

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Linux-Server für Dummies

Schummelseite

WELCHER SERVER MACHT WAS?

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

LINUX-SHELL-BEFEHLE

anzeigen: ls [Optionen] [Dateien]Dateien kopieren: cp [Optionen] Quelldateien ZielDateien löschen: rm [Optionen] Dateienaktuelles Verzeichnis anzeigen: pwdVerzeichnis wechseln: cd [Zielverzeichnis]Verzeichnis anlegen: mkdirZielverzeichnisseleeres Verzeichnis löschen: rmdirZielverzeichnisseverschieben: mv [Optionen] Quelldateien Zielverzeichnisumbenennen: mv [Optionen] Quelldatei Zieldateiname

VERWALTEN DER SERVERPROZESSE

systemctl startdienst

startet den Server.

systemctl stopdienst

stoppt den Server.

systemctl restartdienst

stoppt den Server und statrtet ihn sofort wieder neu.

systemctl reloaddienst

Der Server liest seine Konfigurationsdatei neu ein.

systemctl disabledienst

sorgt dafür, dass der Server beim nächsten Boot nicht automatisch gestartet wird.

systemctl enabledienst

Beim nächsten Boot wird der Server wieder gestartet.

systemctl statusdienst

erkundet, wie es dem Server so geht.

BOOLESCHER AUSDRUCK

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 ))

FERNWARTUNGSBEFEHLE

einloggen: ssh [Benutzer@]Hostnamekopieren: scp [[Benutzer@]Hostname:]Quelldateien [Hostname:]Ziel

SHELL-SKRIPT-ABFRAGEN/SCHLEIFEN

ifBoolescherAusdruck; thenAnweisung; elseAnweisung; fiwhileBoolescherAusdruck: doAnweisung; doneforVariableinDateiliste; doAnweisung; done

LINUX-PROGRAMME

Handbuchinformationen: man [Optionen] Programm|KonfigurationEditor (Anfänger): nanoDateienEditor (fortgeschritten): viDateiennach Begriff in Dateien suchen: grep [Optionen] Begriff DateienDateien suchen: find [Optionen] Ausgangspfad [Anweisungen]

 

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

Über den Autor

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

Inhaltsverzeichnis

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

Tabellenverzeichnis

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

Illustrationsverzeichnis

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

Orientierungspunkte

Cover

Titelblatt

Impressum

Über den Autor

Inhaltsverzeichnis

Einleitung

Fangen Sie an zu lesen

Abbildungsverzeichnis

Stichwortverzeichnis

End User License Agreement

Seitenliste

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

Einleitung

Über dieses Buch

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.

Törichte Annahmen über den Leser

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.

Wie dieses Buch aufgebaut ist

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.

Konventionen in diesem Buch

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.

Symbole, die in diesem Buch verwendet werden

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.

Wie es weitergeht

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

Grundlagen von Linux

IN DIESEM TEIL …

Administratoren bevorzugen die Shell und haben gute Gründe dafür.

Kapitel 1

Linux

IN DIESEM KAPITEL

Dateien, Namen und VerzeichnisseDateien, ihre Besitzer und deren RechteMit Links auf die gleiche Datei verweisenVerzeichnisbaum statt LaufwerkeProzesseBenutzerverwaltung

Linux hat mehrere Besonderheiten, die es weitgehend von UNIX geerbt hat. Diese unterscheiden sich häufig von anderen Betriebssystemen.

Ein Blick in die Geschichte

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).

Dateien und Verzeichnisse

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.

Betrachten der Dateien

Mit dem Befehl ls können Sie sich Dateien und Verzeichnisse im aktuellen Verzeichnis anschauen.

Optionen

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.

Argumente und Wildcards

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.

Die Eigenschaften der Dateien anzeigen

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.

Mit Verzeichnissen arbeiten

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.

Erzeugen

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.

Löschen

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.

Wechseln

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.

Mit Dateien arbeiten

Sie können Dateien auch auf dem Terminal kopieren, umbenennen, verschieben und löschen.

Dateien kopieren

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.

Dateien verschieben oder umbenennen: mv

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.

Dateien löschen

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.

Datei- und Verzeichnisnamen

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.

Groß- und Kleinschreibung

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.

Verborgene Dateien mit Punkt

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.

Fortgeschrittene Dateibefehle

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.

Dateiinhalte anzeigen

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

Seitenweise blättern: more und less

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.

Durchsuchungsbefehl: grep

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

Suchen und Agieren: find

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.

Filter

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.

Filtern nach Dateinamen: -name und -iname

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.

Dateityp: -type

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.

Berechtigungen: -perm

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

Besitzfragen: -user, -uid, -group und -gid

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

Filtern nach Zeitstempel

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.

Die Größe der Datei

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

Ausführung von Befehlen

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 {} \;

Verknüpfungen von Optionen

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 {} \;

Verweis auf andere Dateien: Links

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.

Anlegen eines harten Links

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.

Der symbolische Link

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.

Spezielle Dateien: Sockets, Pipes und Gerätedateien

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.

Gerätedateien

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 und Pipes

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.

Der Linux-Verzeichnisbaum