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
3.1.3 Die Shadowdatei /etc/shadow
je Account eine Zeile
9 doppelpunkt-separierte Felder
3.1.4 Die Gruppendatei /etc/group
Jede Zeile einer Gruppe; 4 doppelpunkt-separierte Felder
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.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.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.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.0 Drucksysteme unter Linux
# BSD Drucker-Spooling-Mechanismus (lpr)
- gut dokumentiert
- weniger flexibel
# LPRng (lpr Next Generation)
- Erwiterung des BSD-Systems
- Rückwärtskompatibel
# Cups (Common Unix Printing System)
- verwndet Internet Printing Protocol (IPP)
- einfach konfigurierbar/administrabierbar
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)
- 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.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.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
# Linux Backup HOWTO
http://www.biochemistry.unimelb.edu.au/pscotney/backup/Backup-HOWTO.html
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