61
Das Bild kann nicht angezeigt werden. Dieser Computer verfügt möglicherweise über zu wenig Arbeitsspeicher, um das Bild zu önen, oder das Bild ist beschädigt. Starten Sie den Computer neu, und önen Sie dann erneut die Datei. Wenn weiterhin das rote x angezeigt wird, müssen Sie das Bild möglicherweise löschen und dann erneut einfügen. Einführung in UNIX 182.711 Betriebssysteme UE Armin Wasicek SS 2012

Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Das Bild kann nicht angezeigt werden. Dieser Computer verfügt möglicherweise über zu wenig Arbeitsspeicher, um das Bild zu öffnen, oder das Bild ist beschädigt. Starten Sie den Computer neu, und öffnen Sie dann erneut die Datei. Wenn weiterhin das rote x angezeigt wird, müssen Sie das Bild möglicherweise löschen und dann erneut einfügen.

Einführung in UNIX 182.711 Betriebssysteme UE 

Armin Wasicek SS 2012

Page 2: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Inhalt

-  UNIX Systeme   Login   Prozesse   Signale   Files & Directories   Shell Kommandos

2 07.03.12  Einführung in UNIX 

Page 3: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Aufbau eines UNIX Systems (1)

  Hardware •  Computersystem

(CPU, Speicher) •  Peripheriegeräte

(zur Eingabe, Ausgabe)

  Software •  Betriebsystem

(Kernel + Gerätetreiber) •  Benutzerprogramme

(Shell, Compiler, Browser, etc.)

3 07.03.12  Einführung in UNIX 

Page 4: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Aufbau eines UNIX Systems (2)

UNIX ist ein   Mehrbenutzer und   Mehrprozess Betriebssystem. .

UNIX unterstützt die gemeinsame Benutzung der BetriebsmiAel durch mehrere Benutzer 

07.03.12  Einführung in UNIX 

Page 5: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Aufbau eines UNIX Kernels (3)

P roces s  management c omponent

S ignal handling

P rocess/Thread creation/termination

C PU S cheduling

Memory management c omponent

Virtual memory

P aging page replacement

P age cache

IO and networking  c omponent

S ockets

Network s tacks

Network device drivers

Terminals

line 

discipline

C haracter devices  drivers

F ile systems

Generic block layer

B lock device drivers

IO  scheduler

Virtual file system

S ystem call interface

Interrupts   D ispatcher

5 07.03.12  Einführung in UNIX 

Page 6: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Was ist ein Betriebssystem?

a)   Erweiterte Maschine

  Abstraktion zur Verringerung der Komplexität der Hardware

  Bereitstellen von Schnittstellen und APIs für Applikationen (Systemcall Interface)

b)  Ressourcen Manager   Aufteilen (Multiplexen)

und verwalten von Ressourcen

  Über Zeit: Rechenzeit, Netzwerkzugriff

  Über Raum: Speicher, Ein-/Ausgabegeräte (z.B. Fenster am Monitor)

07.03.12  6 Einführung in UNIX 

Page 7: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Geschichte von UNIX (1)

AGer Silbermann, 2006 

7 07.03.12  Einführung in UNIX 

Page 8: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Geschichte von UNIX (2)

Source: http://de.wikipedia.org/wiki/Geschichte_von_Unix See also: hAp://www.levenez.com/unix/ 07.03.12  8 Einführung in UNIX 

Page 9: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Inhalt

  UNIX Systeme -  Login   Prozesse   Signale   Files & Directories   Shell Kommandos

9 07.03.12  Einführung in UNIX 

Page 10: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Login

Was passiert beim login?   Anmeldung am System   Authentifizierung des Benutzers durch - Benutzernamen z.B. s0725845 - Passwort **** (geheim)

→ Benutzer ist anwesend → Sitzung beginnt, erstes Programm (Shell) startet

10 07.03.12  Einführung in UNIX 

Page 11: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Schlechte Passwörter

  Kein Passwort

  Kurze Passwörter („ich“)

  Leicht zu erratende Begriffe („sysprog“)

  Namen z.B. den eigenen, von Freunde, Bekannten (Schauspieler), Verwandten, Feinden

  Korrekt geschriebene Wörter

  Rückwärts geschriebene Wörter („ollaH“)

11 07.03.12  Einführung in UNIX 

Page 12: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Wie findet man ein fremdes Passwort heraus?   Über die Schulter schauen   Keylogger Programme   Login-Prozedur fälschen   Fragen („social engineering“)   Standard Passwort   Durchprobieren wahrscheinlicher Passwörter

(manuell oder automatisiert)   Durchsuchen des Mistkübels

12 07.03.12  Einführung in UNIX 

Page 13: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Gute Passwörter

Verwenden:   Groß- und Kleinbuchstaben, Sonderzeichen, Ziffern   Sinnlose aber leicht zu merkende Zeichenfolgen   mindestens 8 Zeichen Wie merke ich mir das? Zb.: Akronyme: AmE:sadS: (Alle meine Entchen :schwimmen auf dem See: ) Self Assessment: http://www.passwordmeter.com/ 13 07.03.12  Einführung in UNIX 

Page 14: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Shell

  Nach dem Einloggen wird als erster Prozeß eine Shell gestartet.

  Die Shell liest und interpretiert Befehle.   Befehle haben folgende Form:

  Konvention: Optionen beginnen mit einem Bindestrich

$ Befehl [Optionen] [Files] ... $ ls –l test.c a.out $ cd /tmp $ pwd

14 07.03.12  Einführung in UNIX 

Page 15: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Inhalt

  UNIX Systeme   Login -  Prozesse   Signale   Files & Directories   Shell Kommandos

15 07.03.12  Einführung in UNIX 

Page 16: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Prozesse

Ein Prozess ist der Ablauf eines Programms:  Speicherabbild des Programms  Speicher für Programmdaten  Kontext (Betriebssystem, Prozessor, Ressourcen)

In einem UNIX System laufen viele Prozesse parallel ab Prozesszustände:

16 07.03.12  Einführung in UNIX 

Page 17: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Prozesshierachien (pstree) init─┬─acpid

├─ahc_dv_0

├─ahc_dv_1

├─bash

├─clock-applet

├─crond

├─cups-config-dae

├─cupsd

├─2*[dbus-daemon-1]

├─dbus-launch

├─dhcpd

├─gdm-binary─┬─gdm-binary─┬─X

│ │ └─gdmgreeter

│ └─gdm-binary───gnome-session───ssh-agent

├─2*[sendmail]

├─sesam_server─┬─sesam_server

│ └─sesam_server───9*[sesam_server]

├─smbd───5*[smbd]

├─sshd─┬─sshd───sshd───bash───pine-secure.sh───pine

│ ├─sshd───sshd───bash───pine

│ ├─3*[sshd───sshd───bash]

│ └─sshd───sshd───bash───xterm───bash───pstree 17 

Page 18: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Dämonen und Zombies

  Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt

  httpd, crond, cupsd, sshd

  Läuft entkoppelt vom aufrufenden Prozess

  Direkter Kindprozess des Hauptprozesses init

  Windows: Systemdienste

  Ein Zombie ist ein Prozess, der zwar beendet ist, aber trotzdem noch im System registriert ist.

  Das passiert solange bis der aufrufende Prozess (Elternprozess) den Status abfragt

  Alternativen dazu sind Adoption und Eliminierung

07.03.12  18 Einführung in UNIX 

Page 19: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Task Liste

  Der Kernel hat eine Liste von aktiven Prozessen, die “Task List“ .

  Jeder Prozess existiert -  im Kernel space (process

descriptor) und im -  User space (Datensegment,

Programm Code).

  Ausgeben mit Befehl ‘ps‘

[armin@apps1 ~]$ ps PID TTY TIME CMD 7232 pts/0 00:00:00 bsp1 7233 pts/0 00:00:00 bsp2 7277 pts/0 00:00:00 ps 31297 pts/0 00:00:00 bash

19 07.03.12  Einführung in UNIX 

Page 20: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Datenstrukturen zur Prozessverwaltung 

  Prozesstabelle in Linux  besteht aus Einträgen der   task_struct Struktur 

  Tabelle hat einen Eintrag  pro laufendem Prozess 

  Immer resident 

  VerkeAet Prozesse in -  Queues (z.B. run queue) -  Eltern‐Kind Hierachien 

struct task_struct {     volatile long state; /* ‐1 unrunnable, . . .              0 runnable, >0 stopped */    struct list_head run_list;    struct task_struct *next_task, *prev_task;  . . .  /* task state */     int exit_code, exit_signal;     pid_t pid;  . . . /* pointers to (original) parent process, etc.*/     struct task_struct *p_opptr, *p_pptr,  . . .  *p_cptr, *p_ysptr, *p_osptr;  /* open file information */     struct files_struct *files;  . . . /* signal handlers */     struct signal_struct *sig;  }  

07.03.12  20 Einführung in UNIX 

Page 21: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Starten von Programmen in UNIX

  Aufruf indirekt über die Shell - Eingeben des Programmnamens (Benutzer) - Registrieren eines neuen Prozesses (Shell) - Laden des Programmcodes (Kernel) - Übergabe des Prozessors an den neuen

Prozess durch den Scheduler (Kernel)

  Aufruf direkt durch den system call (z.B. execve)

Neuer Prozess erbt Rechte/Resourcen vom aufrufenden Prozess. 

21 07.03.12  Einführung in UNIX 

Page 22: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Scheduling

  Wenn sich mehrere Prozesse eine CPU teilen, wählt das Betriebssystem den auszuführenden Prozess für die nächste Zeitscheibe aus.

  Dieser Teil des Betriebssystems heißt Scheduler.

  Wie die Auswahl getroffen wird bestimmt der Scheduling Algorithmus.

  Ziel des Scheduling ist es, die Rechenzeit des CPU optimal auszunutzen.

22 07.03.12  Einführung in UNIX 

Page 23: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Vorder- und Hintergrundprozesse

  Vordergrundprozess blockiert die Eingabe an der Shell

  Hintergrundprozess läuft transparent für den Benutzer

  Absetzen eines Hintergrundprozesses mit ‘&‘.

  Terminologie nur im Zusammenhang mit der Shell sinnvoll, für den Scheduler sind alle Prozess gleich!

  Alle von einer Shell aufgerufenen Prozesse sind in deren jobs Liste.

$ emacs & [1] 20847 $ ps PID TTY TIME CMD 1820 pts/6 00:00:00 bash 20847 pts/6 00:00:00 emacs 20848 pts/6 00:00:00 ps 

23 07.03.12  Einführung in UNIX 

Page 24: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Terminals

  Der Kernel enthält eine Menge an physischen und virtuellen Terminals.

  Jeder Prozess ist über pipes zu einem Terminal verbunden, entweder lokal (ttyX) oder remote (ptsX).

  Die Verbindung ist die Standard Ein-/Ausgabe.

24 07.03.12  Einführung in UNIX 

Page 25: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Standard Ein-/Ausgabe

  Standardeingabe (stdin, 0) üblicherweise mit der Tastatur verbunden; Umleitung mit „<“

  Standardausgabe (stdout ,1) üblicherweise mit dem Bildschirm verbunden; Umleitung mit „>“

  Standarderror (stderr, 2) üblicherweise mit dem Bildschirm verbunden; Umleitung mit „2>“

Prozess stdin stdout

stderr

Page 26: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Umleitung von pipes

Zeichen <, >, 2>, >>

Die Umleitung wird durch die Shell durchgeführt.

$ ls > outfile $ cat < infile $ gcc 2> errorfile $ ls >> append_to_outfile

$ sort < chaos > order 2> errors $ ls *.c >> c_files

Page 27: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Unnamed Pipes

  Verbinden Prozesse mit einem unidirektionalen FIFO Kanal

  Werden mit dem ‚|‘ Operator instanziiert:

Exkurs: Design pattern pipes-and-filters kommt oft in Scripts vor

  Filter: Ein Filter ist ein Verarbeitungsschritt. Eingehende Daten werden umgewandelt und ausgegeben

  Pipes: Eine Pipe stellt eine Verbindung zwischen den einzelnen Verarbeitungsschritten

$ cmd_1 file | cmd_2 | ... | cmd_n

$ cat /etc/passwd | grep :: | sort

Page 28: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Inhalt

  UNIX Systeme   Login   Prozesse -  Signale   Files & Directories   Shell Kommandos

28 07.03.12  Einführung in UNIX 

Page 29: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Signale

  Signale sind asynchrone Ereignisse und bewirken eine Unterbrechung auf des Programmablaufs.

  Ein unterbrochener Prozess kann auf ein Signal reagieren: -  Ausführen einer benutzerdefinierten Funktion -  Ignorieren des Signals -  Die voreingestellte Standardaktion verwenden

  Signalnummer wird im entsprechenden Prozesstabelleneintrag hinterlegt („pending signal“).

  Der Kernel stellt dem Prozess beim Scheduling das Signal zu

  Anhand einer Tabelle von Zeigern auf Funktionen wird überprüft, wie auf das Signal reagiert wird.

Page 30: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Signale (kill –l) Signaltyp  Bedeutung  S

RAnwendung  Nr 

SIGKILL  uncatchable terminabon 

T  Dient zum Prozessabbruch (z.B. ab Kommandozeile mit Befehl »kill«). Nur Standardreakbon möglich! 

SIGTERM  catchable terminabon 

T  Wie SIGKILL, jedoch sind auch andere Reakbonen als die Standardreakbon zulässig. 

15 

SIGSEGV  segmentabon violabon 

C Wird erzeugt, wenn ein unerlaubter Speicherzugriff versucht wird (Schutzverletzung) 

11 

SIGPIPE  broken pipe  T  Wird erzeugt, wenn in Pipe geschrieben wird, deren Ausgang geschlossen ist (keine Leser vorhanden) 

13 

SIGCHLD  child stopped or terminated 

I  Wird erzeugt, wenn ein Kindprozess terminiert oder gestoppt wird (geht an Elternprozess) 

17 

SR = Standardreakbon: C für Terminierung mit Core Dump, T für Terminierung ohne Core Dump, I für Ignorieren des Signals  30 

Page 31: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Signale zum Beenden von Prozessen

  Normales Beenden mit SIGTERM

  Mit dem „Holzhammer“ wenn er sich weigert!

  Alle Kindprozesse einer Shell und die Shell selbst beenden:

$ kill –TERM 1234 $ kill –15 %1

$ kill –9 1234 $ kill –KILL %1

$ exec kill –9 0

31 07.03.12  Einführung in UNIX 

Page 32: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Signale mit der Tastatur erzeugen

  <Ctrl-Z> stoppt den aktuellen Vordergrundprozess - fg [%n] holt den n. Job in den Vordergrund - bg [%n] setzt den n. Job im Hintergrund fort - jobs zeigt alle gestoppten Jobs und alle

Hintergrundprozesse an

  <Ctrl-C> terminiert den aktuellen Vordergrundprozess

  <Ctrl-D> erzeugt ein End-Of-File (EOF) Token (Kein Signal!)

Page 33: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Inhalt

  UNIX Systeme   Login   Prozesse   Signale -  Files & Directories   Shell Kommandos

33 07.03.12  Einführung in UNIX 

Page 34: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Files & Directories

  Filenamen bis zu 255 Zeichen lang   Filenamen „formatfrei“ (nicht wie in DOS .com

oder .exe)   Directories baumförmig organisiert   „Root Directory“ heißt „/“   Filenamen sind durch „/“ getrennt (nicht „\“)   Directory Einträge zeigen auf sogenannte I-Nodes   I-Nodes enthalten alle Information über das File,

außer dem Namen 34 07.03.12  Einführung in UNIX 

Page 35: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Aufbau des Filesystems   Hierarchische Struktur  

von Dateien 

  Verschiedenste Dateitypen in einer gemeinsamen  Verzeichnisstruktur: „everything is a file“ 

-  plain files (stream of characters) -  directories (Interpretabon durch das OS) -  character‐, block special files (Geräte; z.B. Terminal, FestplaAe) -  named pipes -  sockets (z.B. TCP/IP sockets, UNIX domain sockets) -  symbolic links (Verweise) 

35 

/bin  /dev  /etc  /var commands  devices  startup and 

configurabon files 

/lib  /man  /local 

/usr 

07.03.12  Einführung in UNIX 

Page 36: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Mounten von Dateisystemen 

36 

  Zusammenfassen mehrerer File‐Systeme in einer Verzeichnisstruktur   Eingebundenes Dateisystem ist entweder: 

-  lokal verfügbar (z.B. untersch. Parbbon oder FestplaAe, Wechseldatenträger), 

-  verfügbar via Netzwerk (z.B. über NFS), 

-  oder befindet sich selbst in einem File (z.B. loop device für ISO‐Images) 

  Vorteil: untersch. Filesysteme  gleichzeibg verwendbar 

07.03.12  Einführung in UNIX 

Page 37: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Virtuelles Filesystem (VFS)   > 15 physikalische Dateisysteme unter Linux in Verwendung 

-  Kompabbilität zu anderen Systemen  (z.B. NTFS, FAT) 

-  Sicherheit, Zuverlässigkeit der Daten  (z.B. Ext3, ReiserFS) 

-  Performance (z.B. XFS)  

 

  Einführung einer zusätzlichen Abstrakbonsebene -  einheitliche SchniAstelle (super block, inode, Verzeichnisse, Dateien) -  transparentes Mounten verschiedener physikalischer Dateisysteme (Parbbonen) in eine  

Directory‐Struktur 

37 07.03.12  Einführung in UNIX 

Page 38: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Struktur einer Parbbon 

  Der Superblock enthält die grundlegenden Informabonen zum Dateisystem. 

  Jede ParAAon (FestplaAe) enthält ein Dateisystem, dieses Dateisystem wiederum enthält eine Art Inhaltsverzeichnis, die Inode Liste. 

  Die einzelnen Elemente der Inode‐Liste sind die Dateiköpfe, also diese Strukturen enthalten DateiaGribute, Größe usw. gespeichert sind. 

  Die einzelnen Inodes verweisen direkt bzw. indirekt auf die Speicherblöcke im Datenbereich. 

38 07.03.12  Einführung in UNIX 

Page 39: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Inodes und stat 

  Der Systemcall stat ruG den Inodeinformabon einer Datei ab (man [1|2] stat) 

  Die Struktur (struct stat) enthält nur einen Teil des  Inodes (struct  inode) 

  Aufruf der  Inode Nummer: ls ‐i 

struct stat {     dev_t   st_dev;       /* device */     ino_t   st_ino;       /* inode */     mode_t  st_mode;      /* protection */     nlink_t st_nlink;     /* number of hard links */      uid_t   st_uid;       /* user ID of owner */     gid_t   st_gid;       /* group ID of owner */     dev_t   st_rdev;      /* device type (if inode device) */     off_t   st_size;      /* total size, in bytes */     blksize_t st_blksize; /* blocksize for filesystem I/O */     blkcnt_t st_blocks;   /* number of blocks allocated */     time_t   st_atime;    /* time of last access */     time_t   st_mtime;    /* time of last modification */     time_t   st_ctime;    /* time of last status change */ }; 

struct inode {   struct super_block      *i_sb;   struct list_head        i_list;   struct file_operations  *i_fop;   unsigned long           i_ino;   umode_t                 i_mode;   unsigned int            i_nlink   uid_t                   i_uid;   gid_t                   i_gid; ... } 

07.03.12  39 Einführung in UNIX 

Page 40: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Beispiel: Ext2 Inode   ähnliche Informabon wie in VFS i‐nodes (Zugriffsrechte, Größe, …)   zusätzlich Zeiger auf Datenblöcke der Datei  

  direkte Zeiger,    indirekte Zeiger und    zweifach indirekte Zeiger 

40 07.03.12  Einführung in UNIX 

Page 41: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Beispiel zur Navigation

$ cd $ pwd /home/users/sysprog/702/

s0126123 $ ls Mydir/ test.c $ cd Mydir $ pwd /home/users/sysprog/702/

s0126123/Mydir $ _

←  Wechselt ins home – Verzeichnis ←  Zeigt akutelles Verzeichnis an

←  Zeigt den Inhalt des aktuellen Verzeichnisses an

←  Wechselt ins Verzeichnis ‚Mydir‘ ←  Zeigt aktuelles Verzeichnis an

41 07.03.12  Einführung in UNIX 

Page 42: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Filenamen   Absolute

Dateinamen beginnen mit / und beziehen sich auf das Root Directory

  Relative Dateinamen beginnen nicht mit / und beziehen sich auf das aktuelle Directory

42 

$ more /etc/printcap $ cat /etc/profile

$ more test.c $ cat ../../tmp/tmp00

07.03.12  Einführung in UNIX 

Hinweis: Autovervollständigen auf der Kommandozeile mit <tab>

Page 43: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Zugriffskontrolle (1)

  3 Klassen von Personen -  Besitzer (Erzeuger)

(user) -  Gruppe

(group) -  Andere

(other)

  3 Arten von Zugriffen -  Lesen

(read) -  Schreiben

(write) -  Ausführen

(execute)

43 

Diese können unabhängig voneinander vergeben werden (nur vom Besitzer bzw. root)

07.03.12  Einführung in UNIX 

Page 44: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Zugriffskontrolle (2)

Zugriffsmatrix:

d  rwx  rwx  rwx Directory  User  Group  Others 

$ ls –l Makefile -rw-r--r-- 1 s0126123 sys00 130 Feb 12 23:55 Makefile

$ ls –l /bin/rm -rwxr-xr-x 2 bin bin 24576 Apr 12 1999 /bin/rm

$ ls –ld privat drwx------ 1 s0126123 sys00 2804 Feb 1 17:15 privat

44 07.03.12  Einführung in UNIX 

Page 45: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Zugriffkontrolle (3)

  Ändern der Permissions mit chmod: $ chmod permissions file [file ...] $ chmod 644 Makefile

$ chmod 755 /bin/rm

$ chmod 700 privat

$ chmod u=r,go=rwx privat

$ chmod u+rwx,g-rwx privat

Nur der Eigentümer oder root kann die Permissions ändern!

4 2 1 r w x

45 07.03.12  Einführung in UNIX 

Page 46: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Zugriffskontrolle (4)

Bedeutung rwx bei Directories:

  „read“: Liste der Einträge kann gelesen werden z.B. ls (nur wenn zusätzlich execute gesetzt ist).

  „write“: Im Directory können Files angelegt und gelöscht werden.

  „execute“: Zugriffe in dieses Verzeichnis sind erlaubt und das Wechseln in dieses Verzeichnis ist möglich.

46 07.03.12  Einführung in UNIX 

Page 47: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Zugriffskontrolle (5)

  Sticky bit (t). Historisch: ausführbare Programme bleiben im Speicher und müssen nicht bei jedem Aufruf neu geladen werden

  setuid (set user id): Programm wird mit Rechten des Eigentümers und nicht des Aufrufers ausgeführt

  setgid (set group id) bit: Programm wird mit Rechten der Gruppe und nicht des Aufrufers ausgeführt

  In gemeinsam genutzten Verzeichnissen darf nur der Eigentümer einer Datei oder des Verzeichnisses Dateien eines Users löschen/bearbeiten

  Ein Prozess unter dem User oder der Gruppe der aufgerufenen Programmdatei ausgeführt

47 07.03.12  Einführung in UNIX 

Page 48: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Wildcards (1)

Wildcards sind Platzhalter für andere Zeichen, z.B. * steht für eine beliebige Zeichenfolge (auch

die leere Zeichenfolge) ? steht für ein beliebiges Einzelzeichen [xyz] steht entweder für „x“ oder „y“ oder „z“ [a-i] steht für ein Zeichen aus {„a“, „b“, ..., „i“}   Die Interpretation der Metazeichen erfolgt durch die Shell   Metazeichen können als normale Zeichen verwendet werden, wenn

man sie in einfache oder doppelte Anführungszeichen stellt oder einen Backslash „\“ davorstellt

48 07.03.12  Einführung in UNIX 

Page 49: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Wildcards (2)

$ ls Hugo hugo2 proG.c prog.c prog t1 t2 t3 t4 test1 test1.c

wird expandiert zu * (alle obigen files) t* t1 t2 t3 t4 test test.c t? t1 t2 t3 t4 pr*.c proG.c prog.c t[12] t1 t2 *[1-4].c test1.c

49 07.03.12  Einführung in UNIX 

Page 50: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Shellvariablen

  Es gibt nur den Typ String   Werden durch die erste Zuweisung erzeugt $ export FILE=/tmp/dummy.txt

[Kein Leerzeichen vor und nach „=“]

$ ls /tmp

dummy.txt dummy.txt.bak

$ rm $FILE ${FILE}.bak

  Ausgeben einer Variablen mit $ echo $FILE

50 07.03.12  Einführung in UNIX 

$ export FILE=/tmp/dummy.txt

$ ls /tmp dummy.txt dummy.txt.bak $ rm $FILE ${FILE}.bak

$ echo $FILE

Page 51: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Systemvariablen

$HOME Homedir $PATH Suchpfad für Programme $PS1 Prompt (meist $) $PS2 zweiter Prompt (meist >) $USER Benutzername $$ Prozeßnummer (für temp files) $? Status des letzten Kommandos env…Kommando zum Ausgeben aller Umgebungsvariablen

51 07.03.12  Einführung in UNIX 

Page 52: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Inhalt

  UNIX Systeme   Login   Prozesse   Signale   Files & Directories   Shell Kommandos

52 07.03.12  Einführung in UNIX 

Page 53: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Shell Befehle

Program  Typical use 

cat  Concatenate files to stdout 

chmod  Change file protecbon mode 

cp  Copy files 

grep  Search file for some paAern 

ls  List directory 

gcc  Compile files to build a binary 

ipcs  Provide informabon on IPC 

53 

Program  Typical use 

make  Manage several soure files 

mkdir  Make a directory 

ps  List running processes 

pstree  List running processes in a tree 

rm  Remove a file 

rmdir  Remove a directory 

sort  Sort a file of lines  

07.03.12  Einführung in UNIX 

Page 54: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Online Manual

Manualseiten gibt es auch online! $ man 3 printf $ man 3 intro

$ apropos editor

Sections: 1.  Commands 2.  System Calls 3.  Library Functions 4.  Special Files (kaum

wichtig)

5.  File Formats 6.  Spiele (leider) nicht installiert 7.  Miscellaneous information 8.  System maintenance

Mit man n intro bekommt man eine Übersicht über die Section n.

54 07.03.12  Einführung in UNIX 

Page 55: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

mv und cp

  Mit cp kann man Files kopieren.

55 

$ ls PROGS a.out test.c $ mv a.out PROGS/test $ mv test.c PROGS $ ls PROGS $ ls PROGS test test.c 

$ ls PROGS $ ls PROGS test test.c $ cp PROGS/test.c . $ ls PROGS test.c

  Mit mv Files und directories umbenennen bzw. verschieben.

07.03.12  Einführung in UNIX 

Page 56: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

ln und ls

  Mit ln wird ein link auf ein File oder Directory gemacht

56 

$ ln quelle ziel $ ls PROGS a.txt $ ln a.txt b.txt $ ln –s PROGS P $ ls P PROGS a.txt b.txt

$ ls –a . .. P Progs a.txt b.txt $ ls –ld PROGS drwxr-x--- 3 s0126123 700 8192 Jan 30 12:43 PROGS

  Mit ls kann der Inhalt eines Directories angezeigt

07.03.12  Einführung in UNIX 

Page 57: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

mkdir und rmdir

57 

$ mkdir dirname $ ls PROGS a.txt $ mkdir MeineCProgs $ ls MeineCProgs PROGS a.txt

$ ls MeineCProgs PROGS a.txt $ rmdir PROGS rmdir: File exists $ rmdir MeineCProgs $ ls PROGS a.txt

  Mit mkdir wird ein Directory erzeugt

  Mit rmdir wird ein Directory gelöscht

07.03.12  Einführung in UNIX 

Page 58: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

rm und cat   Mit rm wird ein File

gelöscht

Vorsicht! $ rm ${VAR}*

58 

$ ls PROGS a.txt $ rm a.txt $ ls PROGS

$ ls Gemuese.txt Obst.txt $ cat Obst.txt Apfel; Birne; Kirsche;

  Mit cat kann man den Inhalt einer (Text) Datei auf dem Bildschirm ausgeben

Scrollen mit “…| more“ oder “…| less“.

07.03.12  Einführung in UNIX 

Page 59: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Editoren

emacs   Emacs benutzt Metataste (strg, esc) um

Kommandos auszuführen: C-X C-c # close down emacs [C=Strg]

  Erweiterbar und anpassungsfähig

vi [vim]   Editor Modus und Kommando Modus:

i # start editing

  Kleine Größe, nur Textmodus http://en.wikipedia.org/wiki/Editor_war#Humor

59 07.03.12  Einführung in UNIX 

Page 60: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

Zusammenfassung

  Wie ist ein UNIX System aufgebaut?   Was passiert beim Login?

  Was ist eine ‚Shell‘?

  Wie funktioniert die Zugriffskontrolle?

  Wie kann ich einem Prozess Befehle geben?

  Wie arbeite ich beim Entwickeln eines Programms?

  Welches ist der bessere Editor, vi oder emacs?

60 07.03.12  Einführung in UNIX 

Page 61: Einführung in UNIX · Dämonen und Zombies Ein Demon ist ein Programm, das im Hintergrund läuft und Dienste zur Verfügung stellt httpd, crond, cupsd, sshd Läuft entkoppelt vom

ENDE

Danke für die Aufmerksamkeit!

07.03.12  61 Einführung in UNIX