Linux-Training
Teil 1: Konzepte


Johannes Franken
<jfranken@jfranken.de>




Caution:
Please note: This document is available in german only. An english translation for this document is in progress
 

Contents

  1. Grundlagen
    1. Hardware-Architekturen
    2. x86-Hardware
    3. Betriebssysteme
    4. Der Kernel
  2. Filesysteme
    1. Das "Virtual Filesystem" (VFS)
    2. Block-Devices
    3. Filesystem-Typen
    4. Mounten
    5. Filesystem-Elemente
    6. Meta-Informationen
    7. Der Filesystem Hierarchy Standard (FHS)
  3. Der Bootvorgang
    1. Grober Ablauf
    2. Runlevel
    3. init
    4. init.d-Scripts
  4. Zugriffsrechte
    1. User
    2. Gruppen
    3. Filesystem-Permissions
      1. Konzept
      2. Filesystem-Permissions anzeigen (ls)
      3. Nummerische Darstellung
      4. Permissions ändern (chmod)
      5. Eigentümer und Gruppe ändern (chown, chgrp)
  5. Konsolen
  6. Shells
    1. Funktion
    2. verschiedene Shells
  7. Logfiles
    1. syslogd
    2. syslog-Kategorien
    3. Kernel-Meldungen
    4. Eingeloggte User
  8. Dokumentation
 

Grundlagen

Hardware-Architekturen

Es gibt verschiedene Hardware-Architekturen, z.B. Für jede dieser Hardware-Architekturen gibt es mindestens eine Linux-Distribution.

x86-Hardware

 

Betriebssysteme

Ein Betriebssystem besteht aus Im Lieferumfang enthalten sind meist zusätzlich: Verbreitete Betriebssysteme:

Der Kernel


Figure: Kernel

Der Kernel dient als Abstraktionsschicht für die Hardware. Er besteht aus einer Programm-Datei (meist vmlinuz) und einer Menge von Moduln, welche bei Bedarf hinzugeladen werden können.

Die Programme können z.B. über Devices auf Funktionen des Kernels zugreifen. Zum Beispiel ist das Device /dev/sda der ersten SCSI-Festplatte zugeordnet.

 

Filesysteme

Das "Virtual Filesystem" (VFS)


Figure: Virtual Filesystem (VFS)

Das VFS ist hierarchisch angeordnet, d.h. es gibt genau ein Root-Verzeichnis (/). Im Gegensatz zu Windows kommen keine Laufwerksbuchstaben zum Einsatz, sondern die verschiedenen Filesysteme werden an verschiedenen Stellen in das VFS "hinein-gemounted".

Die einzelnen Filesysteme können auf verschiedenen Festplatten-Partitionen, Wechselmedien oder auf Fileservern im Netz liegen.

Block-Devices

Festplatten sind Block-Devices. Sie werden über Controler angesprochen.

Man unterscheidet folgende Controler:

 

Filesystem-Typen

Filesysteme auf Blockdevices: Netzwerkfilesysteme (von Fileservern): Besondere Filesysteme:

Mounten

Befehle:

In Datei /etc/fstab steht, welche Block-Devices beim Bootvorgang gemounted werden sollen:

# <file system> <mount point> <type> <options>                  <dump> <pass>
/dev/hda1       /             ext3   noatime,errors=remount-ro  0      1
/dev/hda3       /tmp          ext3   noatime,nosuid             0      2
/dev/hda5       /var          ext3   noatime                    0      2
/dev/hda6       /export       ext3   noatime,nosuid,nodev       0      0

# technical devices:
/dev/hda2       none          swap   sw,pri=2                   0      0
proc            /proc         proc   defaults                   0      0

# removable media:
/dev/cdrom      /mnt/cdrom    auto   noauto,user,nodev,nosuid   0      0
/dev/fd0        /mnt/floppy   auto   noauto,user,nodev,nosuid   0      0
Listing: /etc/fstab

 

Filesystem-Elemente

Folgende Elemente können in einem Verzeichnis enthalten sein: *: nicht bei allen Filesystemtypen

Meta-Informationen

Zu jedem Element werden folgende Meta-Informationen gespeichert: *: nicht bei allen Filesystemtypen
 

Der Filesystem Hierarchy Standard (FHS)

Der FHS beschreibt die Organisation innerhalb des VFS:

Unterhalb des Rootverzeichnisses liegen folgende Unterverzeichnisse:

Kriterien zur Einteilung in die Verzeichnisse:

Beispiele:

  shareable unshareable
static /usr /etc
dynamic /home /var
 

Der Bootvorgang

Grober Ablauf


Figure: Linux-Bootvorgang

Der Bootvorgang erfolgt in fünf Phasen:
 

Runlevel

init bringt das System in einen der folgenden Runlevel:
Debian SuSE RedHat Solaris
Runlevel 0 Herunterfahren
Runlevel 1 Wartung (ohne Hintergrundprozesse)
Runlevel 2 Normalzustand Textmodus (ohne X) ohne Serverdienste
Runlevel 3 - Normalzustand
Runlevel 4 -
Runlevel 5 - Normalzustand Hardwareerkennung Herunterfahren
+Ausschalten
Runlevel 6 Herunterfahren
+Neu starten
Beispiele:
 

init

Konfigurationsdatei: /etc/inittab


# The default runlevel.
id:2:initdefault:

# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS

# What to do in single-user mode.
~~:S:wait:/sbin/sulogin

# /etc/init.d executes the S and K scripts upon change of runlevel
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6

# What to do when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

# /sbin/getty invocations for the runlevels.
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

# Fax/Dialin/Anrufbeantworter (Modem und ISDN)
I0:2345:respawn:/usr/sbin/vboxgetty -d /dev/ttyI0
I1:2345:respawn:/sbin/mgetty ttyI0
I2:2345:respawn:/sbin/mgetty ttyS0
Listing: /etc/inittab

Der "Default"-Runlevel, welcher beim Hochfahren automatisch angesteuert wird, ist in /etc/inittab in der Zeile id:2:initdefault: angegeben.

init.d-Scripts

(Abweichende Pfade bei einigen Distributionen)

Beispiel: /etc/init.d/apache2 restart

 

Zugriffsrechte

User

Verschiedene User können sich gleichzeitig am System anmelden und haben eigene

Userliste: /etc/passwd . Pflege mit useradd, userdel, usermod

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
[...]
jfranken:x:1000:100:Johannes Franken,,,:/export/home/jfranken:/bin/bash
bfranken:x:1001:100:Beate Franken,1,-12,:/export/home/bfranken:/bin/bash
[...]
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
Listing: /etc/passwd

Passwörter werden nicht aus Sicherheitsgründen nicht gespeichert. Allerdings werden die Hashwerte (z.B. md5-Checksumme) der Passwörter in /etc/shadow hinterlegt:

root:$1$4zU1GhCL$8yk51.RNza60JWJm4GA0U.:13363:0:99999:7:::
daemon:*:10810:0:99999:7:::
bin:*:10810:0:99999:7:::
[...]
jfranken:t73jV3leib7Bw:11331:0:99999:7:::
[...]
Listing: /etc/shadow

Linux überprüft das beim Login eingegebene Passwort, indem es dessen Hashwert mit dem hinterlegten Hashwert vergleicht. Eine "Entschlüsselung" der Hashwerte ist derzeit nur über Brute-Force-Methoden möglich, z.B. mit den Tools qcrack oder john.

Die hinterlegten Hashwerte können mit dem passwd-Kommando geändert werden.

 

Gruppen

Jeder User gehört einer oder mehreren Gruppen an.

Gruppenliste: /etc/group

root:x:0:
[...]
fax:x:21:jfranken,bfranken
cvs:x:103:wml,jfranken,bfranken
[...]
nogroup:x:65534:
Listing: /etc/group

Gruppen hinzufügen, umbenennen und löschen mit groupadd, groupdel, groupmod

Primären Gruppe eines Users zuordnen:

Weitere Gruppen eines Users zuordnen:
Caution:
usermod -G ersetzt alle vorhandenen weiteren Gruppenzuordnungen. Daher unbedingt die vollständige Gruppenliste angeben.
Änderungen an der Gruppenzuordnung wirken erst beim nächsten Login.
 

Filesystem-Permissions

Konzept

Unix unterscheidet folgende Berechtigungen:
(Symlinks erben die Berechtigungen ihres Zieles.)

Für jedes Filesystem-Element ist festgelegt, welche dieser Berechtigungen

auf ihm haben.

Zusätzlich gibt es noch die "Sonderrechte" (special bits), die aber nur selten erforderlich sind:

 

Filesystem-Permissions anzeigen (ls)

Beispiel:
$ ls -l /etc/passwd
-rw-r--r--  1 root staff 3020 2006-12-15 17:06 /etc/passwd

Bedeutung der Spalten:
  1. Typ (hier: -):
  2. Rechte:
    User Group Others ("world")
    read(r) write(w) execute(x)/
    setuid(s)
    read(r) write(w) execute(x)/
    setgid(s)
    read(r) write(w) execute(x)/
    sticky(t)
    r w - r - - r - -
  3. Link-Count (hier: 1): wieviele Verzeichniseinträge auf diesen Dateiinbalt zeigen.
  4. User (hier: root), dem die Datei gehört (Eigentümer)
  5. Group (hier: staff), auf die sich die o.g. Gruppenrechte beziehen
  6. Dateigröße (hier: 3020)
  7. Modification-Time (hier: 2006-12-15 17:06)
  8. Dateiname (hier: /etc/passwd)

Ergebnis: Jeder kann die Datei /etc/passwd lesen, aber nur der Eigentümer (User=root) kann sie ändern.

Nummerische Darstellung

Man kann die Dateirechte nummerisch darstellen:
Special bits User Group Others ("world")
setuid (u+s) setgid (g+s) sticky (o+t) read(r) write(w) execute(x) read(r) write(w) execute(x) read(r) write(w) execute(x)
4 2 1 4 2 1 4 2 1 4 2 1
addieren
(0 kann entfallen)
addieren addieren addieren

Beispiel:

$ ls -l /etc/passwd
-rw-r--r--  1 root staff 3020 2006-12-15 17:06 /etc/passwd
 

Permissions ändern (chmod)

chmod ändert die Dateirechte.


Figure: chmod-Aufruf


Beispiele:

Eigentümer und Gruppe ändern (chown, chgrp)

chown und chgrp ändern Eigentümer und Gruppe.


Figure: chown und chgrp-Aufruf


Beispiele:

Konsolen


Figure: Konsole

 

Shells

Funktion


Figure: Aufgaben der Shell

verschiedene Shells

Standard-Shell unter Linux: Darüber hinaus gibt es noch einige weitere Shells, z.B. sowie
Caution:
Shells sind nicht zwangsläufig kompatibel zwischen verschiedenen Releases und Betriebssystemen. Daher kann beim Umzug auf einen anderen Rechner eine Anpassung Ihrer Shellscripts erforderlich sein.
 

Logfiles

syslogd


Figure: syslogd


# First some standard logfiles.  Log by facility.
auth,authpriv.*           -/var/log/auth.log
*.*;auth,authpriv.none    -/var/log/syslog
cron.*                    -/var/log/cron.log
daemon.*                  -/var/log/daemon.log
kern.*                    -/var/log/kern.log
lpr.*                     -/var/log/lpr.log
local2.*                  -/var/log/ppp.log

# Logging for the mail system.
mail.info                 -/var/log/mail.info
mail.warn                 -/var/log/mail.warn
mail.err                   /var/log/mail.err

# Emergencies are sent to everybody logged in.
*.emerg                    *

# Ausgewaehlte Nachrichten auf Konsole 8 ausgeben (Alt-F8)
daemon,mail.*;*.=debug;*.=info;*.=notice;*.=warn    /dev/tty8
Listing: /etc/syslog.conf

Mit dem logger-Programm kann Nachrichten an den syslogd senden (z.B. in Shellscripts)
 

syslog-Kategorien

Facility:
  • auth (=security)
  • authpriv
  • cron
  • daemon
  • ftp
  • kern
  • lpr
  • mail
  • mark
  • news
  • syslog
  • user
  • uucp
  • local[0-7]
    Priority: (aufsteigende Wichtigkeit)
  1. debug
  2. info
  3. notice
  4. warning (früher: warn)
  5. err (früher: error)
  6. crit
  7. alert
  8. emerg (früher: panic)

Kernel-Meldungen


Figure: Kernel-Meldungen

Der Kernel speichert Kernelmeldungen in einem Ringpufffer, den man
$ dmesg
usb-storage 1-1:1.0: usb_probe_interface - got id
scsi5 : SCSI emulation for USB Mass Storage devices
  Vendor: Maxtor    Model: OneTouch III      Rev: 0344
  Type:   Direct-Access                      ANSI SCSI revision: 02
SCSI device sda: 1465149168 512-byte hdwr sectors (750156 MB)
sda: assuming drive cache: write through
 sda: sda1
Attached scsi disk sda at scsi5, channel 0, id 0, lun 0
atkbd.c: Keyboard on isa0060/serio0 reports too many keys pressed.
IN=ppp0 OUT= MAC= SRC=192.168.100.253 DST=84.178.163.142 LEN=61 TOS=0x00 PREC=0x00 TTL=120 ID=49363 PROTO=ICMP TYPE=8 CODE=0 ID=512 SEQ=11833
Adding 1959920k swap on /dev/hda2.  Priority:2 extents:1
eth2: link down
eth2: link up, 10Mbps, half-duplex, lpa 0x0000
e100: eth0: e100_watchdog: link up, 100Mbps, full-duplex
Listing: dmesg

 

Eingeloggte User

werden in /var/log/wtmp (Binärdatei) protokolliert.

Auslesen mit last:
$ last
jfranken pts/11   gericom.jfranken Sat Mar 10 12:52   still logged in
bfranken pts/2    motte.jfranken.d Sat Mar 10 10:22    gone - no logout
jfranken ttyS0    mgetty - /dev/tt Fri Mar  9 10:54 - 13:39  (02:45)
bfranken pts/11   motte.jfranken.d Thu Mar  8 22:04 - 07:26  (09:21)
hrother  pts/2    p54b07827.dip.t- Thu Mar  8 21:54 - 06:44  (08:49)
fax_inc  ttyS0    +49 641 9750230  Thu Mar  8 07:54 - 07:54  (00:00)
bfranken pts/1    hummel.jfranken. Tue Mar  6 20:34 - 21:17  (00:42)
fax_inc  ttyS0    +49 6654 8354    Tue Mar  6 11:26 - 11:27  (00:00)
bfranken pts/2    hummel.jfranken. Tue Mar  6 07:21 - 21:15  (13:54)
jfranken pts/11   gericom.jfranken Mon Mar  5 20:39 - 10:34 (1+13:54)
[...]
Listing: last

Dokumentation


$Id: linux1.wml,v 1.3 2009-10-01 18:15:41 jfranken Exp $ [ChangeLog]
$Id: template.inc,v 1.82 2010-09-04 12:58:17 jfranken Exp $ [ChangeLog]
© Johannes Franken. Imprint and disclaimer
Valid XHTML 1.0!