Linux für blutige AnfängerWorkshop auf dem AdminCamp 2006
Carsten Schütte und Michael HolztDie Linux Manufaktur
http://www.linuxmanufaktur.de
Agenda
1. Das erste Mal2. Lost in Space3. Röhren und Kanäle4. Prozesse und Signale 5. Netzwerkereien6. Muschelsuppe7. Kirschkerne
Aufbau des Workshop
Jede Lektion folgt dem gleichen Aufbau:
1. Aufgabe aus dem Alltag
2. Erklärung der notwendigen Werkzeuge
3. Selbst ausprobieren!
Lektion 1:“Das erste Mal”
Lektion 1: “Das erste Mal”
Aufgaben aus dem Alltag:
● Wie komme ich da rein?● Wo bin ich eigentlich?
● Wer hilft mir in der Not?
Lektion 1: “Das erste Mal”
Vorgestellte Werkzeuge:
● login (kein wirkliches “Werkzeug”)● whoami und id● date und hwclock● hostname● man und info● passwd
Lektion 1: “Das erste Mal”
Eine Sekunde mal... Wo ist die Maus?
● Üblich: Nutzung der Kommandozeile● Linux hat keine Standard-GUI!
● Welche Maus hat schon 200 Kilometer Anschlussleitung?
Lektion 1: “Das erste Mal”
login
“Und die Welt hebt an zu singen, triffst Du nur das Zauberwort”
● Achtung: Benutzerkennungen sind abhängig von Groß/Kleinschreibung!
Lektion 1: “Das erste Mal”
whoami und id● Wer bin ich?● Zu welchen Gruppen gehöre ich?
date und hwclock● Stimmt die Systemzeit?● Wichtig für Protokollvergleiche etc.● Gute Systeme synchronisieren per NTP!
Lektion 1: “Das erste Mal”
hostname● Wo bin ich? Auf dem richtigen System?● Hostname steht häufig auch im Prompt!
man und info● Was macht dieser Befehl? Welche
Parameter kennt er?
Lektion 1: “Das erste Mal”
passwd● Mein geheimes Erkennungszeichen
lautet...● Root kann für alle Benutzer ändern,
Benutzer nur ihr eigenes Passwort (und müssen ihr altes kennen!)
Lektion 1: “Das erste Mal”
Selber machen:
● Anmelden● Wie bekommt man die Version von
whoami heraus?● Aktuelles Datum im Format “DiSep06”
ausgeben lassen● Optionen von hostname?● Passwort ändern
Lektion 2:“Lost in Space”
Lektion 2: “Lost in Space”
Mögliche Problemstellungen:
● Navigation im Dateisystem● Dateien und Ordner anlegen, kopieren
und verschieben● Umgang mit Editoren● Dateiinhalte ansehen und suchen● Dateiberechtigungen● Dateien komprimieren und archivieren
Lektion 2: “Lost in Space”
Das Dateisystem ist hierarchisch aufgebaut:
/
bin dev sbinusretc varhome
libcarsten
scripte
src
linux
Lektion 2: “Lost in Space”
Übliche Verzeichnisse unter / (1/2):
/bin Grundbefehle für alle Nutzer/boot Dateien des Bootloaders/dev Gerätedateien/etc Konfiguration/home Benutzerverzeichnisse (optional)/lib Kernel-Module und dyn. Bibliotheken/media Wechseldatenträger einhängen
Lektion 2: “Lost in Space”
Übliche Verzeichnisse unter / (2/2):
/mnt Allgemeiner Einhängepunkt/opt Komplette Softwarepakete/root Home-Verzeichnis für root/sbin Wichtige Systembefehle/tmp Temporäre Dateien/usr Programme, Bibliotheken usw./var Variable Daten/Laufzeitdaten
Lektion 2: “Lost in Space”
Aufgaben aus dem Alltag:
● Dateien verschieben und verlinken● Textdateien ansehen und editieren
Lektion 2: “Lost in Space”
Vorgestellte Werkzeuge:
● pwd, cd● ls● mkdir, rmdir● touch, cp, rm
Lektion 2: “Lost in Space”
pwd● Ausgabe des aktuellen Pfades
cd● Fast, aber nur fast, wie bei DOS● Unter Linux muß jeder Befehl von den
Parametern abgetrennt werden!
Lektion 2: “Lost in Space”
ls● Inhalte des aktuellen Verzeichnis zeigen
ls -l zeigt Listenformatls -lh ist “human readable”ls -lt sortiert nach Zeitstempells -al zeigt alle Dateien ls -o Listenformat ohne Gruppenls -R, ls -Sl, ls -laR, ...
Lektion 2: “Lost in Space”
mkdir und rmdir● Verzeichnis erstellen und wieder löschen
touch● eigentlich: Zeitstempel ändern● oft verwendet zum Datei erzeugen
rm● Dateien (und Verzeichnisse) löschen
Lektion 2: “Lost in Space”
cp● Dateien und Verzeichnisse kopieren
cp -r rekursivcp -i Vor überschreiben nachfragen
-f, -i, -p, -r, -u, -v, -a
Lektion 2: “Lost in Space”
Selber machen (1/2):
● In das Heimatverzeichnis von 'benutzer' wechseln. Dort eine Ordnerstruktur 'dokumente/notes' anlegen und darin eine Datei mit dem Namen 'ohneinhalt'.
● Diesen Verzeichnisbaum in das Homedir von root kopieren
Lektion 2: “Lost in Space”
Selber machen (2/2):
● Das ursprünglich angelegte Verzeichnis und die Datei wieder löschen.
● Inhalt des Konfigurationsverzeichnis anzeigen lassen.
Lektion 2: “Lost in Space”
Aufgaben aus dem Alltag:
● Im Dateisystem zurechtfinden● Dateien und Verzeichnisse anlegen,
löschen und kopieren
Lektion 2: “Lost in Space”
Vorgestellte Werkzeuge:
● mv, ln● less, more● cat● head, tail● sort● vi, joe, nano
Lektion 2: “Lost in Space”
mv● Dateien und Verzeichnisse verschieben
bzw. umbenennen
ln● Einen (i.d.R. symbolischen) Link
(“Verweis”) auf eine Datei erzeugen
Lektion 2: “Lost in Space”
more und less● Dateien seitenweise anzeigen bzw.
Blättern erlauben● Steuerung mit “g”, “G”, “d”, “b”, “=”,
“q”
cat● Datei ausgeben● Mehrere Dateien aneinanderhängen
Lektion 2: “Lost in Space”
head● Erste Zeilen einer Datei anzeigen
tail● Letzte Zeilen der Datei anzeigen● -f - fortwährend neue Zeilen anzeigen
sort● Daten sortieren, -n, -r
Lektion 2: “Lost in Space”
Editoren unter Unix – ein heikles Thema...
Lektion 2: “Lost in Space”
vi und vim● Beenden mit <ESC>:q● Hilfe mit <ESC>viusage<CR>
emacs● Der eierlegende Wollmilch-Editor● Geschätzte 3 Jahre Einarbeitungszeit,
kann dafür dann alle außer Kaffeekochen – behaupten zumindest Kenner
Lektion 2: “Lost in Space”
joe und nano● Deutlich einfachere Bedienung im
Vergleich zu vi oder emacs● joe: Tastenbefehle ähnlich dem Turbo
Editor (<CTRL>KB, <CTRL>KK usw...)● Werden gerne belächelt, aber sogar
Linux-Kernel-Entwickler Alan Cox verwendet joe...
Lektion 2: “Lost in Space”
Selber machen (1/3):
● Editor “nano” aus “/bin” nach “/sbin” verschieben und Symlink erzeugen, daß Aufruf als “nona” aus “/bin” möglich ist.
● Wieviele Zeilen hat “/var/log/syslog”?
Lektion 2: “Lost in Space”
Selber machen (2/3):
● Eine Datei “/home/benutzer/biersorten” erzeugen und mindestens zehn Biere eintragen
● Diese Datei sortiert ausgeben. Die ersten zwei Zeilen ausgeben. Die letzten zwei Zeilen ausgeben.
Lektion 2: “Lost in Space”
Selber machen (3/3):
● vi starten und damit eine Datei in “/home/benutzer” mit beliebigem Inhalt anlegen.
Lektion 2: “Lost in Space”
Aufgaben aus dem Alltag:
● In Dateien suchen● Entweder einfache Texte oder komplexe
“reguläre Ausdrücke”
Lektion 2: “Lost in Space”
Vorgestellte Werkzeuge:
● grep
Lektion 2: “Lost in Space”
grep
● Suchen von Mustern in Dateien● Wo steht etwas mit “notes” drin?
grep notes *
grep “^notes” *
grep -nrvl “^notes” *
Lektion 2: “Lost in Space”
Selber machen:
● Alle Dateien im Baum der Konfigurationsdateien finden, in denen der Text “local/notesdata” enthalten ist.
Lektion 2: “Lost in Space”
Aufgaben aus dem Alltag:
● Finden von Dateien mit bestimmten Eigenschaften
Lektion 2: “Lost in Space”
Vorgestellte Werkzeuge:
● find
Lektion 2: “Lost in Space”
find
● Findet Dateien und Verzeichnisse mit bestimmten Eigenschaften
● find -iname lotus -print● find -type d -user notes -print● find -type f -user notes -and -size +100k -print
Lektion 2: “Lost in Space”
Selber machen:
● Welche Verzeichnisse in “/var/spool” sind leer?
● Welche Dateien der Gruppe “notes” sind über 1MB gross?
Lektion 2: “Lost in Space”
Aufgaben aus dem Alltag:
● Wieviel Platz habe ich eigentlich noch im Dateisystem?
● Diesmal direkt selber machen..
Lektion 2: “Lost in Space”
Vorgestellte Werkzeuge:
● df● du
Lektion 2: “Lost in Space”
df
● Zeigt die Speicherausnutzung auf Mountpoints an.
du
● Wie gross ist “/local/notesdata/help”, aber bitte in “human readable”..
Lektion 2: “Lost in Space”
Aufgaben aus dem Alltag:
● Hat der Domino Server alle Rechte auf seinen Datenbanken, und auch nur er?
Lektion 2: “Lost in Space”
Vorgestellte Werkzeuge:
● Dateirechte (Nein, auch wieder kein Werkzeug.)
● chmod● chown
Lektion 2: “Lost in Space”
Dateirechte
● Dateien und Verzeichnisse haben Besitzer und Gruppen und “alle anderen”.
● Rechte für diese drei gesetzt.● Lesbar● Schreibbar● Ausführbar (Verzeichnis: betretbar)● Übergeordnete Rechte beachten.
Lektion 2: “Lost in Space”
chmod
● Dateirechte verändern.● g / o / u / a +-= r / w / x ● Numerisch: 1=x, 2=w, 4=r Z.B. 740
chown
● Besitzer und Gruppe einer Datei setzen
Lektion 2: “Lost in Space”
Selber machen:
● Alle Verzeichnisse und Dateien ab dem Ordner „/local/notesdata“ dem Benutzer (und der Grupppe) „notes“ zuweisen.
● „notes“ darf lesen und schreiben, seine Gruppe lesen und sonst niemand.
● Danach bitte mit „find“ kontrollieren! :)
Lektion 2: “Lost in Space”
Aufgaben aus dem Alltag:
● Kleines Backup gefällig?
Lektion 2: “Lost in Space”
Vorgestellte Werkzeuge:
● gzip / bzip2● zcat / zless● tar
Lektion 2: “Lost in Space”
gzip / bzip2
● Komprimiert Dateien / Verzeichnisse.● Originaldaten werden ersetzt.● Oder Ausgabe in Pipe (später).
zcat / zless
● Komprimierte (Text-)Dateien ausgeben.
Lektion 2: “Lost in Space”
tar
● Archive erstellen.● tar vczf /tmp/help.gz /local/notesdata/help
● Zur Not auch komprimiert● Ursprünglich für Bandlaufwerke
Lektion 2: “Lost in Space”
Selber machen:
● Ein tar-Archiv mit der „notes.ini“ in „/tmp/“ anlegen.
● Inhalt des tar-Archiv kontrollieren.● Dann wieder nach “/home/benutzer” entpacken.
● gzip’en● Mit zcat ansehen.
Lektion 3:“Röhren und Kanäle”
Lektion 3:“Röhren und Kanäle”
Aufgaben aus dem Alltag:
● Prozesse miteinander verknüpfen● Ausgabe in Datei umlenken
Lektion 3:“Röhren und Kanäle”
Vorgestellte Werkzeuge:
● Pipeline “|”● Datenkanäle verändern “>”, “<”● Listen “||”, “&&”
Lektion 3:“Röhren und Kanäle”
Pipelines
● Ausgabe des einen Prozesses als Eingabe des nächsten Prozesses
● Zeichen für Pipeline “|”● ls -al | less● tail -f /local/notesdata/console/console.log | grep „SMTP“
Lektion 3:“Röhren und Kanäle”
Datenkanäle
● Umleitung von Ein- oder Ausgabe in Dateien● echo “Hallo Welt” >/tmp/welt ● echo “Weite Welt” >>/tmp/welt ● ls -a | sort >/tmp/listing.txt
Lektion 3:“Röhren und Kanäle”
Datenkanäle
● Umleitung von (Fehler-)Ausgabe in Dateien● tar cvzf ./hier ./da 1>/tmp/ausgabe ● tar cvzf ./hier ./da 2>/tmp/ausgabe● tar cvzf ./hier ./da >/tmp/ausgabe 2>&1
Lektion 3:“Röhren und Kanäle”
Listen
● Bedingte Ausführung zweier Kommandos● cat /etc/fstab && echo Bitteschön● cat /tmp/eingabe || echo Wo denn?
Lektion 3:“Röhren und Kanäle”
Selber machen:
● Alle Webzugriffe auf die Datenbank „mail/carsten.nsf“ extrahieren, komprimieren und dann als Datei ablegen. In einem Schritt :)
● Den Domino Server auf tty8 umleiten.
Lektion 3:“Röhren und Kanäle”
Selber machen:
● Den Domino Server auf tty8 umleiten:
cat /local/notesdata/.passwd|/opt/lotus/bin/server >> /dev/tty8 2>&1 < /dev/tty8
Lektion 4:“Prozesse und
Signale”
Lektion 4:“Prozesse und Signale”
Aufgaben aus dem Alltag:
● Prozesslast im System anzeigen● Prozesse anzeigen und beenden● Welche Last zieht mein Domino Server?● Welche Tasks laufen und wie kann ich ihn „hart“ beenden?
Lektion 4:“Prozesse und Signale”
Vorgestellte Werkzeuge:
● top● ps● kill
Lektion 4:“Prozesse und Signale”
top
● Zeigt Nutzung von Speicher und CPU im System
● Zeigt die “aktivsten” Prozesse
ps
● Zeigt alle laufenden Prozesse an mit -ax
Lektion 4:“Prozesse und Signale”
kill
● Sendet Signale an Prozesse● Signal 9 entspricht SIGKILL = sofort beenden ● kill -9 /opt/lotus/bin/server
Lektion 4:“Prozesse und Signale”
Selber machen:
● Hmm...
Lektion 5:“Netzwerkereien”
Lektion 5:“Netzwerkereien”
Aufgaben aus dem Alltag:
● Netzwerkinterfaces anzeigen● Erreichbarkeiten prüfen● Lauschende Ports finden● Wer ist wer?● Die AS/400 Leute behaupten, der Domino würde keine SMTP Mails annehmen!
Lektion 5:“Netzwerkereien”
Vorgestellte Werkzeuge:
● ifconfig● ping● traceroute● netstat● telnet● whois
Lektion 5:“Netzwerkereien”
ifconfig
● Abfragen der Netzwerkinterfaces● eth0 ist erstes Ethernet NIC
ping
● Sendet ICMP (Steuerinformation) an ein Ziel● Firewalls könenn ICMPs blocken!
Lektion 5:“Netzwerkereien”
traceroute
● Schon wieder ICMP● Zeichnet den Weg der Pakete auf ● Übliches Theater bei Firewalls
whois
● Zu wem gehört eine IP / Domain?
Lektion 5:“Netzwerkereien”
netstat
● Zeigt die “offenen” Ports im System● Gibt Auskunft über bestehende Verbindungen
telnet {port}
● Klingelmännchen.. aber ein praktisches.
Lektion 5:“Netzwerkereien”
Selber machen:
● Belegen wir mal, dass der SMTP auch brav läuft und antwortet.
Lektion 6:“Muschelsuppe”
Lektion 6:“Muschelsuppe”
Aufgaben aus dem Alltag:
● Die Bash verwenden● Umgebungsvariablen bearbeiten● Einfache Skripte schreiben● Wiederkehrende Aufgaben automatisieren
Lektion 6:“Muschelsuppe”
Vorgestellte Werkzeuge:
● bash● printenv● export● bash-Skripting● cron, at
Lektion 6:“Muschelsuppe”
bash
● Die wichtigste Shell unter Linux● “Kommandozeile”
printenv
● Umgebungsvariablen anzeigen lassen
Lektion 6:“Muschelsuppe”
export
● Shellvariablen in Umgebung exportieren● Kein wirklicher Befehl, sondern bash-builtin● Für die Bash besteht kein Unterschied zwischen einer Shell- und einer Umgebungsvariable – erst export exportiert die Variable in die Umgebung
Lektion 6:“Muschelsuppe”
bash-scripting
● Backticks liefern die Ausgabe eines Befehls zurück. Beispiel: XYZ=`ls`
● Schleifen mit Backtick: for i in `seq 1 10`do echo $idone
Lektion 6:“Muschelsuppe”
bash-scripting
● Bedingte Ausführungif [ “$1” = “test” ]then echo “Parameter war test”else echo “Parameter war nicht test”done
Lektion 6:“Muschelsuppe”
bash-scripting
● Bedingte Ausführung komplexerif [ “$1” = “x” ] && [ “$2” = “y” ]then echo “x und y”done
Lektion 6:“Muschelsuppe”
cron
● Befehle wiederholt ausführen lassen● Es existiert eine systemweite Crontab (/etc/crontab) und crontabs für jeden Benutzer (editieren mit crontab -u <user> -e). Erstere hat ein leicht anderes Format!
Lektion 6:“Muschelsuppe”
cron
● Systemweite crontab: Minute, Stunde, Tag, Monat, Wochentag Benutzer Befehl
5 * * * * root /usr/local/sbin/xyz ● Auch Angaben wie 0-5, */5 5,15,25 möglich
Lektion 6:“Muschelsuppe”
at
● Einen Befehl einmalig zu einem bestimmten Zeitpunkt ausführen
● at -f skript 21:35
Lektion 6:“Muschelsuppe”
Selber machen:
● In /home/benutzer ein Shellskript anlegen, welches bei Aufruf mit Parameter 'd' das aktuelle Datum ausgibt, ansonsten “Hallo”. Skript ausprobieren. Wie muß es aufgerufen werden, damit das System es findet?
● Den Pfad so anpassen, daß das Skript direkt aufgerufen werden kann. Warum ist das riskant?
Lektion 6:“Muschelsuppe”
Selber machen:
● Ein zweites Shellskript schreiben, welches Datum und Uhrzeit sowie den aktuellen Benutzer an die Datei /tmp/test anhängt.
● Dieses Shellskript automatisch von cron einmal pro Minute als Benutzer root aufrufen lassen
Lektion 7:“Kirschkerne”
Lektion 7:“Kirschkerne”
Aufgaben aus dem Alltag:
● Kernelversion prüfen● Geladene Module anzeigen
Lektion 7:“Kirschkerne”
Vorgestellte Werkzeuge:
● uname● lsmod
Lektion 7:“Kirschkerne”
uname
● Kernelversion anzeigen lassen● uname -a zeigt alles
lsmod
● Geladene Module anzeigen
Lektion 7:“Kirschkerne”
Selber machen:
● Nur die Kernelversion (“release”) des Kernels anzeigen lassen
● Module auflisten lassen. Sind davon Module unbenutzt?
Linux für blutige Anfänger
Ende des Workshops