Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess...

61
Einführung in UNIX 182.711 Betriebssysteme UE Armin Wasicek WS 2011

Transcript of Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess...

Page 1: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Einführung in UNIX 182.711 Betriebssysteme UE

Armin Wasicek

WS 2011

Page 2: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Inhalt

UNIX Systeme

Login

Prozesse

Signale

Files & Directories

Shell Kommandos

2 24.10.2011 Einführung in UNIX

Page 3: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 4: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Aufbau eines UNIX Systems (2)

UNIX ist ein

Mehrbenutzer und

Mehrprozess

Betriebssystem.

.

4

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

24.10.2011 Einführung in UNIX

Page 5: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Aufbau eines UNIX Kernels (3)

Process

management

component

Signal handling

Process/Thread

creation/termination

CPU Scheduling

Memory

management

component

Virtual memory

Paging page

replacement

Page cache

IO and networking component

Sockets

Network

stacks

Network

device

drivers

Terminals

line

dis

cip

line

Character

devices

drivers

File systems

Generic

block layer

Block device

drivers

IO scheduler

Virtual file system

System call interface

Interrupts Dispatcher

5 24.10.2011 Einführung in UNIX

Page 6: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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) 24.10.2011 6 Einführung in UNIX

Page 7: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Geschichte von UNIX (1)

After Silbermann, 2006

7 24.10.2011 Einführung in UNIX

Page 8: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Geschichte von UNIX (2)

Source: http://de.wikipedia.org/wiki/Geschichte_von_Unix

See also: http://www.levenez.com/unix/ 24.10.2011 8 Einführung in UNIX

Page 9: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Inhalt

UNIX Systeme

Login

Prozesse

Signale

Files & Directories

Shell Kommandos

9 24.10.2011 Einführung in UNIX

Page 10: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 11: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 12: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 13: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 14: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 15: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Inhalt

UNIX Systeme

Login

Prozesse

Signale

Files & Directories

Shell Kommandos

15 24.10.2011 Einführung in UNIX

Page 16: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 17: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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

24.10.2011 18 Einführung in UNIX

Page 19: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 20: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Datenstrukturen zur Prozessverwaltung

Prozesstabelle in Linux besteht aus Einträgen der task_struct Struktur

Tabelle hat einen Eintrag pro laufendem Prozess

Immer resident

Verkettet 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; }

10/24/2011 20 Einführung in UNIX

Page 21: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 22: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 23: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 24: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 25: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Inhalt

UNIX Systeme

Login

Prozesse

Signale

Files & Directories

Shell Kommandos

28 24.10.2011 Einführung in UNIX

Page 29: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Signale (kill –l) Signaltyp Bedeutung S

R Anwendung Nr

SIGKILL uncatchable termination

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

9

SIGTERM catchable termination

T Wie SIGKILL, jedoch sind auch andere Reaktionen als die Standardreaktion zulässig.

15

SIGSEGV segmentation violation

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 = Standardreaktion: 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 · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 32: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Inhalt

UNIX Systeme

Login

Prozesse

Signale

Files & Directories

Shell Kommandos

33 24.10.2011 Einführung in UNIX

Page 34: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 35: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Aufbau des Filesystems

Hierarchische Struktur von Dateien

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

plain files (stream of characters)

directories (Interpretation durch das OS)

character-, block special files (Geräte; z.B. Terminal, Festplatte)

named pipes

sockets (z.B. TCP/IP sockets, UNIX domain sockets)

symbolic links (Verweise)

35

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

configuration files

/lib /man /local

/

/usr

24.10.2011 Einführung in UNIX

Page 36: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Mounten von Dateisystemen

36

Zusammenfassen mehrerer File-Systeme in einer Verzeichnisstruktur

Eingebundenes Dateisystem ist entweder:

lokal verfügbar (z.B. untersch. Partition oder Festplatte, 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 gleichzeitig verwendbar

24.10.2011 Einführung in UNIX

Page 37: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Virtuelles Filesystem (VFS)

> 15 physikalische Dateisysteme unter Linux in Verwendung

Kompatibilitä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 Abstraktionsebene

einheitliche Schnittstelle (super block, inode, Verzeichnisse, Dateien)

transparentes Mounten verschiedener physikalischer Dateisysteme (Partitionen) in eine Directory-Struktur

37 24.10.2011 Einführung in UNIX

Page 38: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Struktur einer Partition

Der Superblock enthält die grundlegenden Informationen zum Dateisystem.

Jede Partition (Festplatte) 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 Dateiattribute, Größe usw. gespeichert sind.

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

38 24.10.2011 Einführung in UNIX

Page 39: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Inodes und stat

Der Systemcall stat ruft den Inodeinformation 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; ... }

24.10.2011 39 Einführung in UNIX

Page 40: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Beispiel: Ext2 Inode

ähnliche Information 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 24.10.2011 Einführung in UNIX

Page 41: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Beispiel zur Navigation

$ cd

$ pwd

/home/users/sysprog/702/s012

6123

$ ls

Mydir/ test.c

$ cd Mydir

$ pwd

/home/users/sysprog/702/s012

6123/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 24.10.2011 Einführung in UNIX

Page 42: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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

24.10.2011 Einführung in UNIX

Hinweis: Autovervollständigen auf der

Kommandozeile mit <tab>

Page 43: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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) 24.10.2011 Einführung in UNIX

Page 44: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 45: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 46: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 47: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 48: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 49: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 50: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 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 · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 52: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Inhalt

UNIX Systeme

Login

Prozesse

Signale

Files & Directories

Shell Kommandos

52 24.10.2011 Einführung in UNIX

Page 53: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

Shell Befehle

Program Typical use

cat Concatenate files to stdout

chmod Change file protection mode

cp Copy files

grep Search file for some pattern

ls List directory

gcc Compile files to build a binary

ipcs Provide information 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

24.10.2011 Einführung in UNIX

Page 54: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 55: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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.

24.10.2011 Einführung in UNIX

Page 56: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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

24.10.2011 Einführung in UNIX

Page 57: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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

24.10.2011 Einführung in UNIX

Page 58: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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

24.10.2011 Einführung in UNIX

Page 59: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 60: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

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 24.10.2011 Einführung in UNIX

Page 61: Einführung in UNIX · Aufbau eines UNIX Systems (2) UNIX ist ein Mehrbenutzer und Mehrprozess Betriebssystem. . 4 UNIX unterstützt die gemeinsame Benutzung der Betriebsmittel durch

ENDE

Danke für die

Aufmerksamkeit!

24.10.2011 61 Einführung in UNIX