Die Linux Grundlagen
13. Dezember 2009 – 18:501.1 Allgemeines
• UNIX ca. 1969 für Großrechner
• ca. 1991 Linux für PCs
• Multiuser, Multitasking
• Verwaltet verschiedene Benutzergruppen
• Systemadministrator hat den Namen: root
• Herunterfahren des Systems (meist nur durch root); Befehl: shutdown –h now
• Unterscheidung zwischen Groß- und Kleinbuchstaben bei Dateinamen.
• Umlaute (ä, ü, ö, und ß) sind in Dateinamen nicht erlaubt.
• Lange Namen (bis 255 Zeichen) möglich.
• Verzeichnisse werden mit Slashen / und nicht durch Backslash \ dargestellt.
Bsp.: /home/raid/<username>
• Keine Laufwerksbezeichnungen
Geräte (und Partitionen) werden wie Verzeichnisse behandelt.
/dev/Lpr
Device/Drucker
/dev/fd0
Device/Diskettenlaufwerk
Erste Partition der ersten Festplatte:
/dev/hda1
Erste Partition (a) Erste Festplatte (1)
Zweite Partition der dritten Festplatte:
/dev/hdb3
Zweite Festplatte (b) Dritte Partition (3)
CDRom-Laufwerk:
/dev/cdrom
SCSI-Laufwerk:
/dev/scd0
Auf die Inhalte der Laufwerke kann nur zugegriffen werden nachdem diese
„gemounted“ worden sind. (Befehl: mount – t /dev/hda1 /windows)
Mount = montieren, einhängen
1.2 Linux Verzeichnisbaum
/bin = Programme und Befehlsdaten
/boot = Kernel, Boot-Dateien
/dev = Geräte
/home = Benutzerverzeichnisse
/root = Home-Verzeichnis des Administrators
/usr = Befehle + Anwendungprogramme für User
/usr/man = Manuels (=Handbücher)
/etc = Konfigurationsdateien bzw. Scripte
• Dateinamen dürfen mehrere Punkte enthalten.
• Linux kennt keine „Extensions“ (Dateierweiterungen wie bei DOS).
Einige wichtige Befehle:
ls = Verzeichnisinhalt anzeigen
cat = Dateiinhalt anzeigen
less = Dateiinhalt Seitenweise anzeigen
ln = Verknüpfung (Link) zu einer Datei erstellen
af = Anzeigen der Partitionen
1.3 Zugriffsrechte
Unterteilung von Benutzern
User – u = Eigentümer
Group – g = Gruppe des Eigentümers
Other – o = Andere, Rest der Welt
Änderung der Zugriffsrechte mit chmod
chmod u+x beispiel.sh
(User+Execute)
chmod 753 test.txt
7 = User: darf alles
5 = Group: Read, Execute
3 = Other: Write, Execute
Oktaldarstellung der Dateizugriffsrechte
r = 4 w = 2 x = 1
Befehl zum Ändern des Eigentümers:
(Durch Administrator oder Eigentümer)
chown <Benutzername> <Dateiname>
(= change owner)
Ändern der Gruppenzugehörigkeit:
chgrp <Gruppenname> <Dateiname>
I-Nodes (= Informationsknoten)
Diese enthalten Verwaltungsdaten von Dateien und Verzeichnisse
- Dateityp (z.B. Verzeichnis, Datei, usw.)
- Dateirechte
- Anzahl der Links auf die Datei
- Dateibesitzer
- Gruppe
- Datum der letzten Änderung
- Datum der letzten Benutzung
- Datum beim Ändern der Verwaltungsinformationen
- Physikalischer Ort auf dem Datenträger
I-Notes befinden sich in einem reservierten Bereich des Datenträgers (in den ersten
Blöcken).
Links (Verknüpfungen)
Ziel: schneller, bequemer Zugriff auf Dateien.
Bsp.:
/etc/passwd –> pass
Symbolischer Link:
ln –s /etc/passwd passlint
-s = Symbolisch
passwd = Quelldatei
passlinit = Zieldatei
- Falls Symbolischer Link gelöscht wird, bleibt die original Datei bestehen.
- Jeder Link steht in einem eigenen I-Node.
- Nach dem löschen der Originaldatei zeigt der Link in die leere, nach dem
wiederherstellen der Datei befindet sich im Link der aktuelle Inhalt.
Harter-Link:
- Keine eigene Datei, sondern nur eine weitere Verwaltungseinheit.
- Nach dem Löschen eines harten Links geht auch die Datei verloren.
- Nach dem löschen der Datei befindet sich der Inhalt im Link.
- Nach dem neuen Anlegen der Datei, befindet sich im harten Link dennoch
1.4 Mounten (=Einbinden)
Anwendungsbeispiel:
Einbinden von Windowspartition in das Linux-Dateisystem.
Befehl: mount –t <Quelle> <Ziel>
1. Beispiel: Windows Partition (erste Partition der Festplatte) soll im Verzeichnis
/LW_C gemountet werden.
mount –t vfat /dev/hda1 /LW_C
2. Beispiel: Mounten eines CD-Rom Laufwerkes
mount –t iso9660 /dev/cdrom /cdrom
(CD-Rom lässt sich erst nach dem unmount Befehl entnehmen).
3. Beispiel: Mounten von Disketten
mount –t vfat /dev/fd0 /flobby
4. Beispiel: Netzlaufwerke mounten
mount –t nfs penne:/home /mypenne
1.5 Linux-Partitionierung
• Linux SWAP 82 (Nummer –> Partitionsart)
Zum Auslagern zusätzlicher Arbeitsspeicher Kapazitäten
(Vergleichbar mit der SWAP Datei „win386.swp“ bei Windows).
• Linux nativ 83 (Nummer –> Kenngröße)
Eigentliche Linux-Partition
• Bisher Linux Loader LILO
benötigt zum Starten von Linux
• Heutiger Linux Bootmanager Grub
Bootmanager
MBR der Festplatte
Windows
SWAP Partition
Linux
Linux Nativ
1.6 Virtuelles Dateisystem
Linux unterscheidet verschiedene Dateisysteme:
reiser fs = Aktuelles Standartdateisystem
ext2, ext = Vorgängerdateisystem
iso9660 = CD-Rom’s
hpfs = OS/2
ntfs = WinXP
vfat = Win9x
Virtuelles Dateisystem = einheitliche Schnittstelle zum Betriebsystem
Prozesse sehen nur die Schnittstelle des Virtuellen Dateisystems. NFS
(Network File System) kann mit mount eingehängt werden. Vorraussetzung:
Zielverzeichnis muss angelegt sein (hier: penne).
1.7 Benutzerverwaltung
Verwaltung der Benutzer in der Datei passwd im Verzeichnis /etc , sie enthält
folgende Einträge:
Username : Passwort : UserIdentifikationsnummer (UID) : Group ID (GID) :
Userinformationen : Homeverzeichnis : Standart Shell
Statt dem Passwort ist meistens ein X eingetragen, das eigentliche Passwort ist in einer
Datei verschlüsselt eingetragen.
Gruppenverwaltung erfolgt in /etc/group:
Gruppenname : Gruppenpasswort : Group ID (GID) : Usernamen01, Username02, …
Einige Kommandos:
whoami „Wer bin ich“
who Liefert Informationen über eingeloggte User (am eigenen Rechner)
finger wie who, liefert auch Informationen vorn anderen Rechnern
users zeigt angemeldete User an
groups zeigt alle Gruppen an
groups <username> Anzeige der Gruppen, die zu <username> gehören.
passwd <user> Passwort für <user> ändern.
passwd –g <groupname> Gruppenpasswort für die Gruppe <groupname> ändern.
id <username> Anzeige der User ID.
id –g <username> Anzeige der GID von der Hauptgruppe
id –G <username> Anzeige aller GID’s
id –nG <username> Anzeige aller Gruppen
su <username> Identität wechseln (Beispiel User –> root)
sg <gruppenname> Gruppenidentität wechseln
Anlegen von Username durch den Administrator root:
useradd [Optionen] <username>
Optionen:
-e Kommentar
-d Homeverzeichnis
-e Verfallsdatum
-g Hauptgruppe
-G Gruppenliste (Gruppenname durch Kommata getrennt)
-m Homeverzeichnis anlegen
-u User ID
-s Standart Shell (Betriebsinterpreter)
Beispiel:
1. Anlegen des Users franz in bkik103
Useradd –m –g raid franz
2. User anlegen mit mehreren Optionen
useradd –u 4711 –g schueler /home/schueler/haeberle –s /bin/ksh –e
’Oberhofstr.27,Nussdorf’ haeberle
3. User entfernen
userdel –r <username>
Gruppe hinzufügen
groupadd [Optionen] gruppenname
Gruppe löschen
groupdel [Optionen] <gruppenname>
Ändern des Benutzeraccounts
usermod [Optionen] <username>
Bsp. User „max“ (UID 302) soll in „moritz“ geändert werden.
UID ermitteln:
id max
usermod –u 302 –l moritz –d /home/moritz –m
-u Userid
-l neuer Account
-d neues Homeverzeichnis
-m Heimatverzeichnis angelegt, Inhalte werden in das neue
Heimatverzeichnis verschoben.
Homeverzeichnis entfernen
Was tun, wenn root Passwort vergessen?
- Linux Rettungssystem von CD booten
- Wurzelpartition in ein Verzeichnis mounten
- chroot /<Verzeichnis> passwd
- mit exit System verlassen
1.8 Dämonen und Prozessverwaltung
Dämonen (‚daemons’) sind unter Linux „dienstbare Geister“, die im Hintergrund
verschiedene Aufgaben erledigen.
Bsp.:
Druckerdämon = Lpd
Metadaemon = inetd
httpd = Daemon für den Webserver
läuft immer, und startet gegebenenfalls
andere Dienstprogramme.
Syslogd-Dämon = wird zur Protokollierung der verschiedenen
Prozesse eingesetzt
bash:
Benutzerschnittstelle (Kommandointerpreter)
der im Hintergrund läuft.
Anzeige der laufenden Prozesse
ps
ps –u
zeigt: Prozess-ID PID, Zustand (STAT)
USER
Mögliche Prozess-Zustände (STAT)
D Nicht unterbrechbarer Schlaf
R laufend (run)
S schlafen (sleep)
T unterbrochener Prozess
Z Zombie – Prozesse
Anzeige der Daemon – Prozesse
ps –ux
Bsp.:
* Diskette „im Hintergrund“ kopieren
cp * /flobby &
& = Im Hintergrund
* Prozesse werde mit <STRG> + <Z> schlafen gelegt.
Prozesse in den Hintergrund schieben (Background)
Bsp.:
bg 117
* umgekehrt in den Vordergrund (Foreground)
fg 117
* Prozesse bzw. Befehle Prioritäten zuteilen
nice 3 <befehl>
3 = Prioritätennummer
Niedrigste Priorität: +19
Höchste Priorität: -20
Negative Prioritätsnummern kann nur der root vergeben.
* Prozess beenden
kill 117
117 = PID
1.9 Linux Bootprozesse
1. BIOS
Selbsttest der Hardware
2. Bootloader
Normalerweise im Master Boot Record (MBR)
(damals bis Linux 7.x LILO heute GRUB)
Bootbare Partition muss mit einem „bootable“ Flag versehen sein.
3. Initialisierung des Kernels
Suchen des init-Programms im Verzeichnis
/sbin bzw. in /etc oder in /bin
4. Laden von init
init-Prozess starten.
Konfiguration aus der Datei /etc/inittab entnehmen. (z.B. runlevel 2)
so genannte runlevel feststellen
(Einstellen des Runlevels durch Benutzer beim Booten)
5. Abarbeiten des Runlevel-Skripts
Runlevels
0 Systemhalt
S Singel User Modus nur US-Tastatur
1 Einzelnutzerbetrieb (Singel User)
2 Lokaler Mehrnutzerbetrieb ohne Netzwerk (NFS)
3 Voller Multibenutzerbetrieb im Netzwerk
4 frei, nicht benutzt
5 Voller Multibenutzerbetrieb mit grafischer Oberfläche (KDE, GNOME, …)
6 Systemneustart
Runlevelskript sind im Verzeichnis /etc/init.d untergebracht.
Für jeden Runlevel gibt es ein eigenes Verzeichnis.
Bsp.:
Jedes Skript ist zweimal als Link im entsprechenden Runlevel-Verzeichnis vorhanden.
/etc/rc.d/rc2.d
Verzeichnis für das
Runlevel 2 Skript
Als Administrator (root) kann man in ein Runlevel wechseln, mit dem Kommando:
init <levelnummer>
* Runlevel-Nummer beim Bootloader (LILO, GRUB) bei den Bootoptionen eintragen.
* Im grafischen „Runlevel-Editior“ kann man eintragen, welche Prozesse (installierte
Programmskripte) in welchen Runlevel gestartet werden sollen (Beispielsweise:
samba-Fileserver)
Konfigurationsdateien unter Linux (Auswahl), zu finden im Ordner /etc
fstab: Enthält Angaben über Dateisysteme, die beim Systemstart gemountet werden.
profil: Einträge zum Suchpfad, Umgebungsvariablen Alias (Änderungen durch root).
Benutzerspezifische Einträge (im Homeverzeichnis)
.forward E-Mailweiterleitungen
.profil Bsp.: Suchpfad ergänzen
Umgebungsvariablen, Alias
Linux Standartsuchpfad:
PATH = /sbin:/bin:/usr/bin
Ergänzen von PATH PATH=$PATH:/meinVerzeichnis
1.10 Linux im Netzwerk
o Rechnername max. 8 Zeichen
o Domainname: Logischer Teil im Netzwerk
o Gateway-Adresse: Verbindung zu entfernten Netzen (Intranet)
Auswahl von Netzkommandos
ping pasta
ping 10.2.106.1
Testnachricht wird gesucht, Antwort wird vom Server erwartet.
traceroute seon.de
Antwort: IP-Adresse bzw. der Name der Router, die auf der Route liegen.
WINDOWS: tracert
Telnet:
Terminalsitzung auf entfernten Servern (Telnet Daemon muss aktiv sein)
(Wegen Sicherheitsproblem nicht mehr Standart)
SSH:
Verschlüsselte Zugriff auf entfernte Server (Standart unter Linux)
Kommando: ssh <servername>
ssh benutzername@servername
(Windows: Putti-Tool)
ssh = secure shell
FTP (File Transfer Protocol):
Kommando: ftp <servername>
–> ftp-Shell
ftp> …
ftp-Shell-Kommandos:
ls Dateien auflisten
get <Dateiname> Datei holen
put <Dateiname> Datei uploaden
cd zum Wechseln der Verzeichnisses
Domain Name Server – DNS:
- Zuordnung von Domain-Namen zu IP-Adressen (auch Rechnernamen)
Network File System – NFS:
- Zugriff auf Netzwerkverzeichnisse von anderen NFS-Server (mounten)
Network Information System – NIS:
(Ursprünglicher Name YellowPages „Gelbe Seiten“)
- Übertragung von Benutzerdaten (Username, Passwort)
- Beispiel Elektronikschule:
NIS-Server: penne
NIS-Client: spaetzle, pasta
Auf der Linux-Workstation kann man sich auf dem NIS-Server penne einloggen.
(Falls NIS-Client aktiviert wurde)
2.11 Das grep-Kommando
„Global search for a Regular Expression and print out matched lines”
Globale Suche in mehreren Dateien oder in einer Datei nach einem Textmuster,
Anzeige der passenden Zeilen.
Kommando:
grep [–parameter] textmuster Dateiname [>Zieldatei]
Einige Parameter:
-c Anzahl der Zeilen, in denen, das Muster enthalten ist
grep –c raid /etc/passwd
-i Keine Unterscheidung zwischen Groß- und Kleinschreibung
-l Anzeige der Dateinamen wo Muster vorhanden sind
Beispiel zu grep –l
grep –l tcp /etc/host*
Bsp.: Ergebnis:
/etc/host.allow
/etc/hostc.deny

