Inhaltsverzeichnis

 

1 Einleitung

1.1  Aufgaben in der Systemadministration

1.2  Allgemeine Strategien und Methoden

1.3  Rootzugang

 

2 Administrationstools

2.1 Systemkonfiguration

2.2 Administrationswerkzeuge

 

3 Benutzerverwaltung

3.1 Accountinformationen

3.2 Accountverwaltung

 

4 Software Installation

4.1 Linux – Softwarequellen

4.2 Sourcepackages

4.3 Software – Package – Management

 

5 Speichermanagement

5.1 Speicherverwaltung

5.2 Monitoring

 

6 Scheduling

6.1 Ein „Real World“ Beispiel

6.2 Benutzung von cron, at und batch

 

7 Drucker

7.1 Das Drucksystem

7.2 Druckeradministration

 

8 Dateisysteme

8.1 Praktischer Umgang mit Dateisystemen

8.2 Dateien und Dateisystemen

8.3 Das ext2 – Dateisystem

8.4 Journaling: ext3 und ReiserFS

 

9 Backup

9.1 Backupstrategien

9.2 Werkzeuge

 

10 Kernel Compilieren

10.1 Kernel – Module

10.2 Kernel Compilieren Warum?

10.3 Kernel – Quellcode

10.4 Kernel Compilieren – Eine Kurzanleitung

10.5 Kernel Konfiguration – Einige Details

 

11 Shell Scripts

 

12 Grundlagen der Security und Logging

12.1 Spezielle Dateiberechtigungen

12.2 PAM

12.3 Logging

12.4 Sicherheit   Allgemeine Diskussion

12.5 Sicherheit - Lösungsansätze

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Technische Praxis der Computersysteme

 

1. Einleitung

 

 

1.1  Aufgaben in der Systemadministration

 

Benutzerverwaltung: Accounts anlegen, löschen

Software: Installation und Upgrade

Hardware: Wechsel der HW , Einbau, Kaufentscheidung

Backup: wichtig!!

Systemmonitoring: Sicherheit und Performance

Troubleshooting: Problem- und Fehlersuche und –behebung

Benutzerbetreuung: Anfragen (Politik!)

 

1.2  Allgemeine Strategien und Methoden

 

1.2.1 „Politik“

Sysadmin im Spannungsfeld

 

# Verantwortung und Infrastruktur

# Eigendynamik von Computersystemen

# Organisationsstrukturen

# Security

 

empfohlen

 

# niedergeschriebene Regeln

# Übereinstimmung mit Management

# überprüfen rechtlicher Aspekte

 

1.2.2 Policy

 

# verfügbarer Service

# Rechte und Pflichten der User

# Rechte und Pflichten des Sysadmins

# Gastaccountvergabe

 

1.2.3 Procedure

 

# Dokumentation und Standards

# weniger Fehler, mehr Konsistenz

 

für folgende Situationen

 

# Anlegen neuer Benutzer

# Einbinden neuer Hosts

# Sicherheitskonfiguration

# Backup and Restore

# Upgrade und Installation von Software

# Security Alarm, Notfälle

# Recovery from Desaster

 

1.3  Rootzugang

1.3.1        Der Rootzugang

 

# Account des Systemadministration

# definiert durch User Identity (UID) = 0

#  “allmächtig”

# große Verantwortung

# gefährlich in ungeübten oder böswillligen Händen

# sparsame Verwendung; NUR wenn wirklich nötig

 

1.3.2        Rootrechte

 

Jede gültige Operation an einer Datei oder in einem Prozess vornehmen

 

# Dateiberechtigungen gelten für Root nicht

# kann Dateibesitzer ändern

# Prozessbesitzer ändern

# Runlevel ändern

# Hostnamen setzen

# Netzwerkgeräte konfigurieren

# Systemzeit setzen

# Devicefiles erzeugen

# negative „Nicewerte“ setzen

 

„Sit on your Hands before you press Enter“!!!

 

1.3.3        Root Login

 

# nur wenn wirklich nötig

# nicht unter X Window

# nicht direkt auf der Konsole

# nicht über unsichere Netzwerkverbindung

# richtig:

-         lokal: su- Kommando

-         remote: ssh, SSL bei webbasierten Tools

 

1.3.4        Schutz des Rootaccounts

 

# Rootpasswort

-         sicher wählen

-         in unregelmäßigen Abständen ändern

-         verschiedene Rootpasswörter auf verschiedenen Systemen

 

# immer zuerst als Benutzer anmelden dann su auf Root

# unsicheres Remotelogin für Root abstellen

# Führen eines „Logbuchs“

#  eingeschränkte Root-Rechte mit sudo

 

 

2. Administrationstools

 

2.1 Systemkonfiguration

 

2.1.1 Systemkonfiguration

 

# gesamte Unix-Konfiguration in Textdateien gespeichert

-         Beherrschung eines Editors (vi!)

-         Beherrschung der Kommandozeile

 

# meiste Konfigurationsarbeit durch Scripts erledigt

-         Beherrschung der sh-Skriptsprache

-         Für große Projekte: Perl

 

2.1.2 Konfigurationsdateien

 

# meist in /etc/ und Unterverzeichnissen

manchmal /adm/, /var/adm/, ...

 

# viele Unterschiede zwischen Unix-Varianten und Linux-Distributionen

# RedHat: einzelne Dateien in /etc/sysconfig/

zB network , keyboard, mouse

#SuSE: globale Datei /etc/rc.config

Dienst rc.SuSEconfig erstellt einzelne Dateien

 

2.2 Administrationswerkzeuge

 

2.2.1 Administrationstools

 

# distributionsunabhängig

-         Kommandozeile (natürlich..)

-         Linuxconf (Konsole, graphisch, Netzwerkinterface)

-         Webmin (Netzwerkbasiert)

 

# distributionsspezifisch

-         YaST, YaST2 (SuSE)

-         Lisa (Caldera)

-         Kontrol-panel (RedHat)

 

2.2.2 Linuxconf

 

# mächtiges Konfigurationstool

# praktisch für das ganze System

# geschrieben und gewartet von Jacques Gelinas

# Homepage www.solucorp.qc.ca/linuxconf

# verwendet übersichtliche Baumstruktur

 

2.2.3 Linuxconf verwenden (1)

 

# nur root!

# 4 Betriebsarten

-         Kommandozeile (Scripts!)

-         Charakterzellen (interaktivv, textbasiert)

-         X-Window-basiert (interaktiv, GUI)

-         Netz-basiert (interaktiv, remote)

 

#Logfile /var/log/netconf.log

 

2.2.4 Linuxconf verwenden (2)

 

# browse Linuxconf-Baum

# mache Änderungen

# Aktiviere Änderungen

# verlassen

 

2.2.5 Linuxconf-Netzwerkinterface

 

# standardmäßig deaktiviert

# einschalten

-         Config; Network; Misc; Linuxconf Net Access

-         Internetdaemon ((x)inetd) muss laufen

 

# erreichbar am Port 98 (http://myhost.mydomain:98)

# Sicherheit!!

Hostaccess, verschlüsseltes Passwort, Browser speichert Passwort

 

2.2.6 Webmin

 

# webbasierte Konfigurationstool

# unterstüzt neben Linux alle wichtigen Unix-Versionen

# Open-Source (BSD open source license)

# modulare Struktur

# plattformunabhängige Konfigurationsumgebung

 

2.2.7 Distributionsspezifische Tools

 

# YaST, YaST2 (SuSE

# Lisa (caldera open linux)

# kontrol-panel (RedHat, Mandrake,…)

-         Systemdienste

-         Zeit

-         Netzwerk

-         Modem oder Isdn Anschluß

-         Usermanager

-         Authentifizierung

 

3. Benutzerverwaltung

 

3.1 Accountinformationen

 

3.1.1 Accounts

 

# Daten des Benutzers

-         Texte Tabellen Bilder Mail

-         Persönliche Konfigurationen z.B der Desktopsysteme, Netscape, Mailreader,...

 

# Informationen über den Benutzer

-         Loginname, Passwort, Gruppenzugehörigkeit,...

-         Gespeichert in globalen Konfigurartionsdateien

·        etc/passwd

·        /etc/group

·        /etc/shadow

 

3.1.2 Die Passwortdatei /etc/passwd

 

jede Zeile ein Account, 7 doppelpunkt-separierte Felder

 

  1. Benutzername (Account oder Loginname)
  2. Passwortfeld (DES oder MD5 verschlüsselt), oft Shadowpasswörter
  3. UID (User-identity) : 32 Bit Integer, max 65535
  4. GID (Group Identity): definierte Logingruppe
  5. GECOS: voller Name; Adresse und Telefon
  6. Homedirectory
  7. Loginshell (/etc/shells)

 

3.1.3 Die Shadowdatei /etc/shadow

 

je Account eine Zeile

9 doppelpunkt-separierte Felder

 

  1. Benutzername
  2. verschlüsseltes Passwort
  3. Letzter Passwortwechsel (Tage seit 1.1. 19709
  4. Min. Tage zwischen Wortwechsel
  5. Max. Tage zwischen Passwortwechsel
  6. Anzahl Tage Warnung vor Passwortablauf
  7. Anzahl Tage Accountablauf nach Passwortablauf
  8. Accountablauf
  9. Flags (unbenutzt)

 

3.1.4 Die Gruppendatei /etc/group

 

Jede Zeile einer Gruppe; 4 doppelpunkt-separierte Felder

  1. Gruppenname
  2. Gruppenpasswort
  3. GID
  4. Gruppenmitglieder als kommaseparierte Liste

 

3.1.5 Ändern/Abfragen der Accountinformationen

 

# passwd         Passwort ändern

# chsh              Loginshell ändern

# chfn              GECOS ändern

# finger            Benutzerinfo abfragen

# groups          Gruppenzugehörigkeit abfragen

# newgrp         Gruppenlogin

 

3.2 Accountverwaltung

 

3.2.1 Accountverwaltung

 

# User: Ändern der Accountinformationen

(Passwort, Loginshell, GECOS)

# root:

-         Anlegen

-         Konfigurieren

-         Sperren

-         Löschen

 

Von Accounts

 

3.2.2 Editieren der Konfigfiles

 

# kleinster gemeinsamer Nenner auf  allen Unix-Systemen

# statt normalem Editoraufruf (Locking!)

-         vipw

-         vigr

 

# Gefährlich! Tippfehler können ganze Dateien invalidieren

vor root-Logout testen !!!

 

3.2.3 Utilities

 

# Kommandozeilenwerkzeuge

-         Anlegen: useradd, passwd, groupadd

-         Konfig: usermod, groupmod

-         Löschen: userdel, groupdel

-         Automatisierung durch Skripts

 

# graphische Tools

YaST, Linuxconf, Webmin, Kuser, ...

 

3.2.4 Account anlegen

 

# Benutzungsordnung

# Einträge in Passwort-; Gruppen- und Shadowdatei

# Anfangspasswort setzen

# Homedirectories erstellen

# Anfangskonfigurationsdateien erstellen

# ...

 

3.2.5 Accounterstellung (Kommandozeile)

 

# useradd  erzeugt

-         Einträge in Passwort-;Gruppen-; (Logingr.) – und Shadowdatei

-         Homedirectory

-         Anfangskonfigurationsdateien aus /etc/skel/

 

# passwd   Anfangspasswort setzen

# groupadd, groupmod    für weitere Gruppenzugehörigkeit

 

3.2.6 Accounts sperren

 

# nicht interaktive Loginshell (/bin/false)

# * im Passwortfeld

# ! am Anfang des Passworts (passwd –l , -u )

# Tailscript (Benachrichtigung!)

# /etc/nologin-File (alle Benutzer und Nachricht)

 

3.2.7 Benutzer entfernen

 

# Deaktivieren des Accounts

# Einverständnis/Benachrichtigung des Users

# Entfernen der relevanten Zeilen aus

/etc/passwd, /etc/group, /etc/shadow

 

zB mit userdel

 

# löschen des Home-Verzeichnisses (ev. Vorher Backup)

# löschen der Mailbox (in /var/spool/mail), anderer Daten in /var (cron und Druckerjobs)

# übrige Dateien des Benutzers (find / - user name) (Backup!!!)

# Automatisierung, Karteileichen sind Sicherheitsrisiko

 

4 Software – Installation

 

4.0.1 Softwarepakete

 

# Tarballs (gezippte Tarfiles)

-         Sourcecode zum selber Compilieren

-         Anleitung, Dokumentation

-         Beispielkonfigurationsdateien

 

# Package-Management

-         distributionsspezifische Standards

-         „fertige“ Programme

 

4.0.2 Package Management

 

# Distributionen definieren eigene Standards (Pfade, Konfiguration, ...)

# Packages für Distribution

enthalten

-         Programmdateien, Bibliotheken

-         Dokumentation, Programminformation

-         Konfigurationsfiles,...

 

Ermöglicht einfaches und vereinheitliches

-         (De-)Installieren

-         Paketabfrage und –verifikation

-         Upgrade

-         Abhängigkeitsinformation

 

Formate

-         rpm RedHat, SuSE, Mandrake, ...

-         deb Debian, Corel

 

4.2 Sourcepackages

 

4.2.1 Sourcepackages installieren

 

# Paket herunterladen

# Mit tar entpacken

# In das erzeugte Verzeichnis wechseln

# README und INSTALL lesen

# Gibt es ein configure?

Wenn ja ./configure ausführen

 

# make

# make install als root

sonst Binaries in eigenen Suchpfad kopieren

 

4.3 Softwarepackage-Management

 

4.3.1 rpm – Pakete

 

# Paketdateiname= Paketname+Versionsnr.+Releasenr.+Architektur.rpm

zB diald-0.16.4-1.i386.rpm

 

# enthalten

-         Name, Version, Beschreibung, Info

-         Paketabhängigkeitsinformationen

-         Das Programmpaket selbst (gezippt)

-         Pre- und Postinstallationsscripts

 

# herausgegeben von RedHat oder anderen

(mit rpm kann man selbst Pakete erzeugen)

 

4.3.2 rpm verwenden

 

# 5 Grundverwendungsarten

-         Installieren

-         Upgraden und Freshen

-         Deinstallieren

-         Abfragen (query)

-         Verifizieren (verify)

 

# für Fortgeschrittene: Paket erzeugen

4.3.3 RPMS abfragen

 

# Syntax: rpm –q Paketname [Optionen]

# Output: Versions- und Releasenummer

# Optionen:

-         -a frage alle installierten Pakete ab

-         -i zeige Paketinformationen an

-         -l liste alle Dateien im Paket

-         -d liste alle Dokumentationsfiles im Paket

-         -c liste alle Konfigurationsfiles im Paket

-         -f file zu welchem Paket gehört file

-         -p Paketdatei für nicht installierte Pakete

 

4.3.4 RPMS verifizieren

 

# Syntax : rpm –V Paketname [Optionen]

# Output : 5STUGM

veränderte MD5- Prüfsumme, Größe, Mtime, Besitzer, Gruppe, Mode (Berechtigung, Typ)

# Optionen:

-         -f file verifiziere file

-         -a verifiziere alle installierten Pakete

-         -p package-filename.rpm verifiziere gegenüber package-filename.rpm statt Datenbank

 

4.3.5 rpm – Erweiterungen

 

# Graphische Interfaces

-         GnoRPM (Gnome Desktop)

-         Kpackage (KDE)

 

# automatische updates

-         up2date (RedHat)

-         autorpm

-         autoupdate

-         rpmfind

-         apt-get auch rpm-Format

 

5 Speichermanagement

 

5.1 Speicherverwaltung

 

5.1.1 Linux-Speichermanagement

 

# Gesamtspeicher = RAM + Swapspeicher

# unterteilt in (memory)Pages (4KB)

# für Prozesse verfügbarer Speicher = RAM + Swap Space – 1 MB

-         1 MB reserviert für Kernel

-         Rest für Prozesse

 

# Pages im RAM verwenden – wenn nötig – auf HD ausgelagert

# Unbenutztes RAM wird als Disk-Cache verwendet

# effektiver Algorithmus, nicht konfigurierbar

 

5.1.2 Swap – Partition

 

# Größe

-         minimal 10 Pages (40KB); maximal 2GB

-         maximal 8 Partitionen

 

# Anlegen

-         Partition erzeugen mit fdisk (Typ 82)

-         Swap – Partition mit mkswap anlegen (formatieren)

 

# Management

-         aktivieren mit swapon /dev/hdxy

-         deaktivieren mit swapoff /dev/hdxy

 

·        ohne Reboot möglich

·        nur wenn genug Speicher vorhanden ist

 

5.1.3 Swap – File

 

# weniger effizient als Partition (Notfall !!)

# Anlegen

-         finde Platz für Swap- File (df)

-         erzeuge großes file

z.B dd if=/dev/zero of=swapfile bs 1024 count=64000

-         verwandle es in ein swapfile mkswap swapfile

-         aktivieren swapon swapfile

 

5.2 Monitoring

 

5.2.1 Monitoring-Tools

 

# top zeigt Speicher-, CPU- und Prozessstatistik an

# ps , pstree zeigt Prozesse/Prozesshirachie an

# free zeigt Speicherstatistik an

# vmstat detaillierte VM Statistik

# uptime zeigt uptime uns Systemlast

 

fürs GUI

 

# xosview zeigt Systemüberblick an

# xload zeigt  Systemlast

# xsysinfo zeigt Systeminformationen an

 

6 Scheduling

 

6.0.1 Scheduling

 

# Automatisiertes ausführen von Programmen (ohne eingeloggt zu sein)

# Standardoutput in Mail umgeleitet

-         periodische starten von Prozessen, Routinetasks z.B. ( Backup, /tpm-löschen, logrotate, ...)

-         Prozesse ein Mal zu einem spezifischen Zeitpunkt in der Zukunft starten

-         Prozesse starten, wenn Systemlast niedrig (genug)

 

6.0.2 Scheduling aber wie??

 

# periodische Aufgaben

-         in Crontab-Dateien festgelegt

/etc/crontab fürs System

/var/spool/cron/$USER für Benutzer

-         crond liest diese und startet Prozesse

-         anacron: auch wenn Rechner nicht durchgehend in Betrieb

 

# einmalige Aufgaben

-         zu einem bestimmten Zeitpunkt: at – Kommandozeileninterface

-         wenn Systemlast gering: batch – Kommandozeileninterface

-         beide von atd gemanagt

 

6.0.3 Systemcrontab (1)

 

# in /etc/crontab festgelegt

# führt standardmäßig Scripts in den folgenden Verzeichnissen aus

-         /etc/cron.hourly

-         /etc/cron.daily

-         /etc/cron.weekly

-         /etc/cron.monthly

 

6.2 Benutzung von cron, at und batch

 

6.2.1 crontab bearbeiten

 

# crontab listen

-         crontab –l

 

#crontab editieren

-         crontab –e

-         default=vi, mittels Umgebungsvaraible EDITOR konfigurierbar

 

# crontab löschen

-         crontab –r

 

# GUI : kcron ( Taskmanager des KDE )

 

6.2.2 at Jobs

 

# Jobs in Queue eintragen

-         at 4am (now+xx min)

-         who

-         ctrl d

-         at –f myatjob 16:00 + 2 days

-         Output als Mail an Auftraggeber

 

# Queue listen: atq, at –l

# Job löschen: atrm jobnr, at –d jobnr

 

6.2.3 batch  - Jobs

 

# Kommando ausgeführt wenn Systemlast gering (default <0.8)

# Jobs in queue eintrgaen : analog at

-         $ batch

-         at> echo System wenig ausgelastet

-         <ctrl d>

 

# Output als Mail an Auftraggeber

# Jobs listen/löschen: atq, atrm

# Zugangsbeschränkung zum atd

-         /etc/at.allow (stärker)

-         /etc/at.deny

 

7 Drucker

 

7.0 Drucksysteme unter Linux

 

# BSD Drucker-Spooling-Mechanismus (lpr)

-         gut dokumentiert

-         weniger flexibel

 

# LPRng (lpr Next Generation)

-         Erwiterung des BSD-Systems

-         Rückwärtskompatibel

-         http://www.lprng.com

 

# Cups (Common Unix Printing System)

-         verwndet Internet Printing Protocol (IPP)

-         einfach konfigurierbar/administrabierbar

-         http://www.cups.org

 

7.1 Das Drucksystem

 

7.1.1 Drucksystem: Grundlagen

 

# Client/Server System lpr/lpd (cupsd)

# Benutzer erzeugt Druckauftrag mittels lpr

# lpr Syntax: lpr [-P Queue] file

-         Kommandozeile oder aus Anwendung

 

# lpr sendet Druckauftrag an Warteschlange

# lpd wartet auf Benachrichtigung von lpr

# lpd arbeitet Druckaufträge in der Reihenfolge des Eintreffens gemäß seiner Konfiguration über die Drucker ab

 

7.1.2 Drucksystem: Weitere Funktionen

 

# mehrere Warteschlangen für einen Drucker

# mehrere Drucker von einer Warteschlange bedient

(nur LPRng, Cups)

# Verschieben von Aufträgen zwischen Warteschlangen

# Prioritätäensetzung für Druckaufträge

# Authentifizierung

# Accounting

 

7.1.3 Benutzerkommandos (BSD, LPRng, Cups)

 

# Drucken

-         lpr [-P queue] filename

-         pr filename | lpr [-P queue] (formatiert Textdateien)

 

# Warteschlange listen lpq [-P queue]

# Druckaufträge löschen lprm [-P] jobnr

# Standarddrucker festlegen  export PRINTER=queue

 

7.1.4 Netzwerkdruckserver

 

# BSD lpd

Clients müssen am Server explizit ausgegeben werden

-         /etc/hosts.lpd (nur Druckerclients)

-         /etc/hosts.equiv (lpd, rlogind, etc,...)

-         rs Option im Printcapfile

 

# LPRng lpd feinere Abstimmung

-         /etc/lpd.perms

-         /etc/lpd.conf

 

# LPRng lpr Client kann Remotequeues bedienen

-         lpr –P Queue1@host file

-         LPRng lpd daher nur nötig auf Hosts wo Drucker oder Queue

 

# cupsd Netzwerkzugang in /etc/cups/cupsd.conf geregelt

 

7.2 Druckeradministration

 

7.2.1 Druckermanagement

 

# mit dem lpc Kommando

-         Druckerstatus anzeigen

-         Drucker en/disablen

-         Queue en/disablen

-         Druckaufträge löschen

-         Druckauftrag an die Spitze einer Queue stellen

-         Signale an lpd senden

 

# GUI klpq, ...

 

7.2.2 lpc – Syntax

 

# Kommandozeile: lpc [Optionen] [Kommando [Argument]]

-         Optionen: -P queue, -a=-P all

-         Kommandos: start, Stopp, status, redirect, topq, lprm

-         (nur LPRng) : move Queue1 [jobid] Queue2

 

# Interaktiv Modus

 

§ lpc

lpc$>$ start lp

lpc$>$ status lp

lpc$>$ exit

$

 

7.2.3 Installation; Konfiguration

 

# BSD/LPRng

-         /etc/printcap

-         RedHat Printtool

·        lokaler Drucker

·        remote Unix Queue (lpd)

·        LAN (SMB, Netware)

 

# Cups Webinterface

 

8 Dateisysteme

 

8.1 Praktischer Umgang mit Dateisystemen

 

8.1.1 Partitionierung

 

# maximal 4 primäre Partitionen

# davon eine als erweiterte Partition

# Erweiterte Partitionen sind Behälter für max. 12 logische Partitionen

# alle Partitionen (logisch oder primär) lassen sich gleich ansprechen

# Partitionstypen bezeichnen das verwendete Dateisystem

# Namensgebung unter Linux

-         DIE: /dev/hd[a-h], SCSI: /dev/sd[a-z]

-         Primär: /dev/?d?[1-4]

-         Logisch: /dev/?d? [5-16]

 

8.1.2 Erstellen von Dateisystemen/Formatieren

 

# erstellt Strukturen des FS auf Partition

# bereitet die Partition auf den Einsatz vor

# Filesystemtyp muß mit Partitionstyp übereinstimmen

# kann später nicht mehr geändert werden

# Front-End für alle Typen:

-         mkfs [-t type] [-c] Device

 

# Einzelne Tools :

-         mke2fs = mkfs.ext2 [Optionen] device für Feintuning

 

 

8.1.3 Mounten/Unmounten

 

# mounten: mount [-t FsType] Gerät Mountpoint

# gemountete Dateisysteme listen

-         mount

-         df

-         less  /etc/mtab

 

# unmounten: umount Gerät oder Mountpoint

-         FS darf nicht geöffnet sein (Files, Programme, Directories)

-         Fuser, lsof zeigt Prozesse, die FS verwenden

-         Kann nicht erzwungen werden

 

/etc/fstab

 

8.2 Dateien und Dateisysteme

 

8.2.1 Gerätedateien

 

# jedes Gerät wirdüber eine Gerätedatei angesprochen

# es gibt zwei Arten von Geräten

-         Random – Acces Block Devicees

-         Character-Devices

 

# die Gerätedatei existiert auch, wenn es das Gerät auch nicht gibt

# Gerätedateien besitzen ganz normale Berechtigungen

 

 

8.2.2 Files und Filesysteme

 

# eine Datei ist eine fortlaufende Anzahl von Bytes

-         unabhängig vom tatsächlichen Ort auf dem Speichermedium

-         Metadateien beinhalten Verwaltungsüberbau

 

8.2.3 Unterstüzte Filesysteme

 

# ext2...2nd extended FS, Linuxstandard

# ReiserFS, ext3…JournalingFS für Unix/Linux

# JFS, XFS...JournalingFS von IBM, SGI

# iso 9660, udf...(CDROM)

# Fat –12, -16, -32, VFAT...(Win 3x, 9x)

# NTFS…Win NT (read only!?)

# minix, ex xiafs, System V, Xenix, Coherent…UNIX

# HPFS, HFS, AFFS…OS/2, Mac, Amiga (read only)

# UMSDOS…Unix like on top of MSDOS

# /proc…Linux Kernel und Prozessinfo

# NFS...Network File System

# SMBFS…SMB

# NCPFS…Novell

 

8.3 Das ext2 – Dateisystem

 

8.3.1 Das ext2 – Filesystem

 

# aufgeteilt in Blöcke gleicher Größe

# 6 Gruppen von Blöcken: Bootblock, Superblock, Inodes Bitmap, Datablock Bitmap, Inodes, Datablocks (Redundanz!)

# wichtigste Bestandteile

-         Superblock

-         Inode (Index Node, Informationsknoten)

-         (double, triple) indirekter Block

-         Datenblock

 

 

8.3.2 Indirekte Adressierung

 

# Inode zeigt auf ersten 12 Datenblöcke

# Indirekte Blöcke (ID): 256 Zeiger auf Datenblöcke

# Doppelt indirekte Blöcke (IID): 256 Zeiger auf ID

# 3-fach indirekte Blöcke (IIID) : 256 Zeiger auf IID

# theoretische Maximalgröße für Dateien 16 GB; praktisch 2GB

 

8.3.3 Superblocks, Inodes und Datenblöcke

 

# Superblock

-         256 Bytes (4/Block)

-         Benutzer, Gruppe, Berechtigungen, s/c/a/m-time

-         Zeiger auf Datenblöcke (max129

-         Zeiger auf indirekte Blöcke (3 Levels)

 

# Datenblöcke

-         eigentliche Daten der Dateien

-         Verzeichnisse (Inode- Tabellen)

 

 

8.3.4 Inode- Dichte, Blockgröße

 

# wichtigste Komponenten: Inodes und Datenblöcke

# FS voll, wenn

-         keine freien Datenblöcke, ODER

-         keine freien INODES

 

# Finetuning des Filesystems (nach Byte/File)

-         Blockgröße (1024, 2048, 4096)

-         Bytes/Inode (4096)

 

 

8.3.5 Nützliche Kommandos

 

# fsack Konsistenzüberprüfung von FS

# debugfs Debugging

# badblocks, überprüft auf defekte Blöcke

# tune2fs Finetuning (Blockreservierung für root)

# df zeigt freien Platz auf dem Dateisystem an

# du zeigt Größe von Files/Directories

 

8.4 Journaling: ext3 und ReiserFS

 

8.4.1 Journaling

 

# Herkömmliche FS

-         Metadata redundant

-         Langer Dateisystemcheck nach Fehlern

 

# Journaling

-         Journal/Log für Metadatenänderung

-         Dateisystemprüfung durch Auswerten des Journals

-         Mehr Schreibzugriffe

 

# Journaling – Filesysteme

-         ext3 (3rd extended FS; Nachfolger von ext2)

-         ReiserFS

-         JFS, XFS

 

9 Backup

 

9.1 Backupstrategien

 

9.1.1 Warum Backup

 

# Daten teurer/schwerer (wieder) zu beschaffen als Hardware

# Disasterrecovery

-         Hard-/Softwareschaden

-         Schaden aufgrund von Installation/Upgrade

-         Unabsichtliches löschen

-         Böse Benutzer, Hacker

 

# Langzeitarchiv

# Systemadministration

-         Datentransfer zwischen Systemen

-         Reorganisation des Filesystems

-         Checkpoint vor und nach Upgrade

 

9.1.2 Backupstrategie

 

# Backupschema

-         voll/inkrementell, System/Daten

 

# Backupprogramm/tools

# Medium

-         Band, CDR, HD, Floppy(?), Zip, Jaz, Netzwerk

 

# Lagerung?

# Dokumentation

 

9.1.3 Ein Beispielbackupschema

 

# volles gesamtbackup jeden Monat

# Systemdaten: volles Backup

-         vor und nach Systemumstellungen

 

# Userdaten:

-         volles Backup jedes Wochenende

-         inkrementell jede Nacht

 

 

9.1.4 Wichtige Tipps

 

# nicht nur Sysadmin soll Backup machen können, DOKUMENTATION

# immer mit dem schlimmsten Fall rechen

# Hardcopies aller verwendeten Scripts aufheben

# Installationsmedien und Backuptools mit Backup aufheben

# Backupmedien beschriften

# regelmäßig neue Medien benutzen

# Recovery testen

# alte Backups regelmäßig prüfen

 

9.2 Werkzeuge

 

9.2.1 Linux – Backuptools

 

# tar

-         Backup individueller Files

-         Weit verbrietet (Unix – Standard)

-         Datentransfer zwischen Plattformen

 

# cpio

-         Backup individueller Files

-         Weit verbreitet

-         Probleme mit Symlinks

 

# dump

-         Backup ganzer Filesysteme

-         Inkrementelle Backups

 

 

9.2.2 tar

 

# traditionelles UNIX Tape-Archive Kommando

# Basis Syntax

-         backup: tar cvf tarfile.tar directorie_or_file_to_tar

-         restore: tar xvf tarfile.tar

-         listen: tar tvf tarfile.tar

-         zusätzlich komprimieren: tar xvzf tarfile.tar

-         komprimieren mit bzip2: tar xvjf tarfile.tar

-         Multivolume: tar cvMf /dev/fd0 files_to_tar

(keine Komprimierung, alternativ: split)

 

9.2.3 cpio

 

# UNIX – Standard

# backup: cpio –ov files > device

                 find /home | cpio –ov > /dev/fd0

# restore: cpio –iv[-dum] [files] < device

                cpio –ivdum “/home/j*<< /dev/fd0

 

# listen : cpio –itv < device

 

9.2.4 dump

 

# Backup kompletter Filesysteme

# auch Symlinks und spezielle Files (/dev)

# inkrementelles Backup bis zu 9 Stufen

# backup: dump – O –a –u –f /dev/fd0    /home

# restore cd /home; restore –r –f /dev/fd0

 

9.2.5 Weitere Tools und Tipps

 

# Taper: menügesteuertes Band – Backup

# BRU2000: http://www.bru.com

# Lone – Star : http://www.cactus.com

# ADSL/TSL: Netzwerkbackup, IBM

# http://www.linux-backup.net

# Linux Backup HOWTO

            http://www.biochemistry.unimelb.edu.au/pscotney/backup/Backup-HOWTO.html

 

 

10 Kernel Compilieren

 

10.0.1 Kernel – Version

 

# uname –r 2.4.10-4GB

# dmesq| head –1

 

# version : 2

# Patchlevel: 4; (un)gerade bedeutet (in)stabil

# Sublevel: 10; (Bugfixes innerhaöb 2.4)

# Release: SuSE – Kernel mit Unterstützng für 4GB RAM

 

10.1 Kernel – Module

10.1.1 Kernel – Module

 

# Teile (Treiber) des Kernels als Modul

# können im fortlaufenden Betrieb geladen werden

# Vorteile; kleinerer Kernel, schnelles Booten

# Nachteil : Laden braucht Zeit

# Nur für Hardware, die nicht beim booten benötigt wird

 

10.1.2 Umgehen mit Modulen

 

# listen: lsmod

# Laden : insmode (einfach), modprobe (clever)

# Entfernen: rmmod (nur wenn unbenutzt)

# Weiters: depmod, modinfo

# Automatisch: /etc/modoules.conf

 

10.2 Kernel – Compileren Warum ?

 

10.2.1Kernel – Compilieren Warum?

 

# Standard – Kernel nicht adäquat , weil

-         vorhandene Hardware nicht Unterstützt

-         zu viele nicht benötigte Hardwareunterstützungen

-         Speicherverbrauch

-         Booten dauert länger

 

# Upgrade auf neue Version

-         neue Hardwareunterstützung

-         neue Protokolle, Dateisysteme, ...

-         bugs, Sicherheitslücken

 

10.3 Kernel- Quelcode

 

10.3.1 Kernel – Quellen

 

# Kernel RPMS

            nur installieren, nicht compilieren

# Kernel – Source RPMS

            installieren dann compilieren

# nicht Kernel SRPMS

            Quelle zum Neupaken der RPMS mit rpm

# Kernel – Quellcode Tarballs

 

10.4 Kernel – Compilieren – Eine Kurzanleitung

 

10.4.1 Kernel compilieren

 

cd /usr/src/linux

 

make xconfig

(auch : make menuconfig, make config)

make dep

(make clean)

make bzImage

(auch: make zImage)

make modules

make modules_install

 

vi /etc/lilo.conf

lilo

reboot

 

11 Shell Scripts (Bash)

 

11.1 Wozu Shellscripts

 

11.1.1 Wozu Shell – Scripts

 

# Automatisierung von (Sysadmin) Aufgaben an der Shell

# „quick and dirty“

# nicht wenn

-         Geschwindigkeit wichtig

-         Sicherheitsmechanismen wichtig

-         Hohe Komplexität

-         GUI

 

# Alternativen:

-         Perl

-         Compilersprachen

 

11.1.2 Was ist ein Shell –Script

 

Ein Shell – Script ist eine Textdatei bestehend aus

-         Programm und Funktionsaufrufen

-         Shell internen Kontrollstrukturen

-         Variablezuweisungen

 

Das schreiben von Shell – Scripts verlangt wissen über

-         shell – interne Kontrollstrukturen

-         möglichst viele Unix – Programme und deren Optionen

 

11.1.3 Kommentare & Interpreter

 

# Interpreter : Angabe des Interpreters

 

#!/bin/bash

 

11.2 Variablen

 

11.2.1 Shellscripts aufrufen

 

# Interpreteraufruf

-         bash helloworld oder sh helloworld

-         in Sunshell ausgeführt

-         nur r-Bit nötig

-         überschreibt Interpreterangabe im Script

 

# direkter Aufruf

-         ./helloworld

-         in Subshell ausgeführt

-         r- x-Bits nötig

-         Interpreterangabe im Script verwendet, wenn keine angegeben, dann in verwendeter Shell

# Sourcen

-         . helloworld oder source helloworld

-         in aktueller Shell ausgeführt

-         nur r- Bit nötig

 

11.2.2 Variablen

 

# Variablennamen bestehen aus Buchstaben, Underscore( _ ) und Ziffern

# Zuweisung über

            $VARIABLENNAMEN=wert

#  auf den Wert zugreiffen mit $

            $ echo $VARIABLENNAMEN

# unterschiedliche Variablenarten mit Beispielen

-         selbstdefinierte Variablen

·        $FOO, $BAR,...

-         systemweite Variablen

·        $HOSTNAME, $HOSTTYPE

-         built – in Variablen:

·        $HOME, $PS1, $PATH, …

 

# Variablen exportieren

            $export VARIABLENNAMEN

# interaktiv einlesen

   &nb