Dateien, Verzeichnisse und Geräte


Partitionierung und Formatierung
inode
Superblock
mounten
Rechte
Verzeichnisse
Dateitypen - Flags
Quotas
Geräte

 

Partitionierung und Formatierung

FileSystem

Es gibt unzählige FS. Gebräuchlich sind ext2, ReiserFS(Typ83) und swap(Typ82). Während die Auslagerungsdatei stets den swap-FS Typ benutzt, kann ansonsten auch ext3, xfs, minix, FAT32, FAT16(wird mit MSDOS benannt), benutzt werden. ReiserFS kann nach einem Crash die Platte schnell reparieren und eignet sich auch für große Festplatten. Gründe zu partitionieren können sein:

  Performance
  Reparatur
  Diskquotas
  Schutz für /root
  Hardlinks sind Partitionsabhängig

Es existiert UNIX-weit ein FHS – File Hierarchie Standard, der Ort, Name, Funktion, Inhalt festlegt.
Programme fdisk, bequemer cfdisk, werden zur Partitionierung eingesetzt.

 

fdisk /dev/hda1 Partitionierung der ersten primäre Partition des Masters des ersten IDE-Kanals, d=delete, l=Liste der Paritionstypen, n=neue Partition, p=Partitionstabelle, w=write(nach jeder Änderung nötig), q=quit
tune2fs Feineinstallung der Partitionierung, ist nicht notwendig
partprobe Einlesen der Partitionierungsdaten, danach ist kein Reboot nötig

Formatierung mit mkfs

mkfs -t ext2 /dev/hdax /boot ext2 formatieren, auch mke2fs
mkfs -t reiserfs /dev/hdax /mnt reiserFS anlegen, auch mkreiserfs
mkfs -t vfat /dev/hda1 //mnt/dos Windows Dateisystem anlegen, auch mkdosfs oder mkfs.vfat
makeswap Swap-Partition formatieren

 

Dateisystemintigrität

Standardmäßig werden mit fsck -A alle Dateisysteme in der /etc/fstab überprüft.

e2fsck bzw. fsck.ext2 für das Überprüfen des Second Extended Filesystem, vorher umounten
fsck -f /dev/hda7 Partition überprüfen, f= force(Überprüfung auch bei gesetztem Valid-Flag), auch fsck.vfat oder fsck.xfs, vorher umounten
reiserfsck reiserFS überprüfen, vorher umounten
du -s -h /home/* Platzbedarf einzelner Dateien bzw. Verzeichnisse
df /mnt/hda5 freier Speicherplatz, hier gemountetes Laufwerk /dev/hda5, Ausgabe: Filesystem, Inodes, IUsed, IFree, IUse%, Mounted on

 

Seitenanfang oder Hauptseite

 

inode

Inhalt:

Typ, Rechte, Anzahl der Hardlinks, UID, GID, Größe der Datei, Zeitpunkt der letzten Änderung, Zeitpunkt der letzten Statusänderung, Zeitpunkt des letzten Zugriffs

Datenblockadresse 0-9, Datenblöcke 2. Ordnung 0-9, Datenblöcke 3. Ordnung 0-9, Datenblöcke 4. Ordnung 0-9

 

  /Block1    
inode1 <      
\Block2

 
  /Block1
inode2 <   /Block1
\2.Ordnung < /Block1
  \3.Ordnung <
  \Block2

Seitenanfang oder Hauptseite

 

Superblock

Ein Unix-Dateisystem besitzt einen sogenannten Superblock, einen Block, der die grundlegenden Informationen wie
die Größe des Dateisystems in Blöcken
die Größe der Blöcke in Bytes
Zeiger auf den ersten freien Datenblock
Zeiger auf erste freie I-Node
Verschiedene Statusbits (Flags)zum Dateisystem selbst
enthält.

Das wesentliche an dieser Struktur ist, daß der Superblock beim Mounten eines Dateisystems in den Speicher gelesen wird und alle Veränderungen dort vorgenommen werden. Erst beim Wiederabhängen des Dateisystems werden diese Veränderungen physikalisch auf der Platte gespeichert. Das erklärt auch, daß es nach einem Systemabsturz zu Inkonsistenzen in einem Dateisystem kommen kann.

Noch vor dem Superblock steht der sogenannte Bootblock auf der Platte, der in etwa dem Bootsektor der DOS-Partitionen entspricht, dann kommt der Superblock, dann die inodes und dann kommen die eigentlichen Daten

Seitenanfang oder Hauptseite

 

mounten – Einbinden von Verzeichnissen und Geräten

Befehl –Option Argument(Quellpfad) Argument(Zielpfad) Ziel
Feste Eintragungen erfolgen in der Datei /etc/fstab.

mount -t nfs 10.0.0.10:/daten/install /mnt Install-Ordner auf entferntem Rechner
mount -t ext2 /dev/hda1 /boot boot-Partition
mount -t iso9660 /dev/hdc /media CD-ROM
mount -t nfs -o remount 10.0.0.55:/client/usr /usr remounten für Verzeichnis, das nicht umountet werden kann

Ein gemountetes Laufwerk kann man mit umount /mnt wieder aushängen, wenn es nicht gerade in Benutzung ist.
anschauen:

vi /etc/fstab Geräte werden beim booten gemounted
vi /etc/mtab momentan gemountete Laufwerke, wird nicht editiert, wird beim runterfahren geleert

 

Verzeichnis Um-mounten am Beispiel /home

1. Partition mounten nach /mnt
2. Inhalt von /home mit Rechten nach /mnt kopieren: cp -a /home/* /mnt , versteckte .*-Dateien mit mc kopieren
3. umount /mnt
4. mount /dev/hda7 /home
5. cp -a /mnt/* /home
6. umount /home
7. rm -r /home/* und /mnt leer machen
8. mount /dev/hda7 /home
9. in /etc/fstab mountbefehl eintragen

anderes Um-mounten:

1. mit tar packen /var
2. mv /var /var_backup
3.mkdir /var
4. mount /var
5. entpacken mit tar

 

/etc/fstab - festes Einbinden von Verzeichnissen und Geräten

Gerät, Quelle Mountpoint Filesystem Optionen

dump Archivbit,

zum benutzen = 1

fsck, Reihenfolge

0 = kein filecheck

/dev/hda7 /home reiserfs defaults,user
0
1
192.168.6.130:/clients/opt /opt nfs auto,rsize=8192,wsize=8192
0
0
/dev/fd0 /floppy auto defaults,noauto,user
0
0
/dev/hda4 swap swap defaults
0
3
/dev/hda3 /home reiserfs default,userquota,groupquotas
1
2

 

Optionen
default
Kommentar
defaults   rw, suid, dev, exec, auto, nouser und async
noauto
per Hand mounten , CD, Floppy
auto
+
das Dateisystem gemountet, wenn mount mit der Option -a aufgerufen wird
noexec
verhindert Ausführen von Dateien
exec
+
Erlaubt die Ausführung von Binärdateien auf dem Dateisystem.
nosuid
+
verhindert Ausführen von Dateien mit SUID
nouser
+
nur root darf mounten
rw
+
readWrite - das Dateisystem wird ReadWrite (les- und schreibbar) gemountet, auch ro möglich
rsize, wsize
Lese- und Schreibblöcke, 1024 ist Standard, aber KDE, etc. benutzen eher Größere
suid
SUID und SGID Bits werden interpretiert
userquotas, groupquotas
zur Benutzung von Quotas, ein Recht davon reicht aus
dev
+
Gerätedateien auf dem Dateisystem sind gültig und werden interpretiert
sync
kein Puffer, alle Ein- und Ausgabeoperationen werden synchron durchgeführt(für das Floppylaufwerk)
atime
+
Die Zugriffszeit der inodes wird bei jedem Zugriff gesetzt.
async
+
alle Ein- und Ausgabeoperationen werden vor dem Schreiben gecached

 

Seitenanfang oder Hauptseite

Rechte

umask - Rechte beim Anlegen von Dateien und Verzeichnissen

Verzeichnis System 777
  Minus umask 022
  effektive Rechte beim Anlegen 755
     
Datei System 666
  Minus umask 022
  effektive Rechte beim Anlegen 644

Die umask ist abgelegt in /home/.bashrc

Änderung der umask beispielsweise mit echo "umask 002" >> /etc/skel/.bashrc

x=1(binär 001), w=2(binär 010), r=4(binär 100), macht zusammen 7(binär 111), wobei x für Ausführen, w für Schreiben und r für Lesen steht.
Der user ist Besitzer der Datei/verzeichnis und kann die Rechte mit chmod -R 700 Datei ändern. möglich ist auch
chmod -Ro /home/fred , wobei other die Rechte auf freds home-Verzeichnis entzogen werden, auch chmod o=0 /home/fred
Sinnvoll sind Dateirechte 7, 6, 5, 4, 0(x braucht r)und Verzeichnisrechte 7,5,3, 0.

Sonderrechte

rwx rwx rwt sticky Bit ohne x

rws rws rwT
set UserID on execution set GroupID on Execution sticky Bit mit x-Ausführungsrecht

mit chmod 1777 /usr/bin/passwd root shadow (=chmod +s)können die Sonderrecht eingerichtet werden, wobei hier nur die 1. Ziffer betrachtet wird.

0 kein Sonderrecht  
1 sticky Bit Löschrecht unterhalb des Verzeichnisses
2 SGID Dateien gehören zur Gruppe der Verzeichnisgruppe
3 1+2  
4 SUID Prozesse ausführen, (Bsp. passwd, gpasswd, mount, ping) die normalerweise kein user ausführen darf(root-Rechte)
5 1+4  
6 2+4  
7 1+2+4  

suchen nach einer Datei mit den Rechten rwx r-s r-x mit find / -perm 2755

weitere Sonderrechte - Attribute zu ext2

Anzeigen mit lsattr Datei ergibt -----d---
Ändern mit chattr +a ergibt ---a-d--- oder chattr -d ---a-----
Löschen der Attribute mit chattr Datei

Vererbung

Fred: mkdir fred, chmod 775
Wilma: touch /fred/wilma.txt, vi Inhalt, chmod 700, mkdir /fres/wilma-verz, chmod 700, touch /fred/wilma-verz/wilma2.txt
Fred kommt weder an die Datei wilma.txt, noch an das Verzeichnis wilma-verz ran.

Seitenanfang oder Hauptseite

 

Verzeichnisse

Verzeichnis
auslagerbar
booten
sichern
Kommentar
/
 
 
root-Stammverzeichnis, von dem sich alle Verzeichnisse ableiten, hier gibt es keine Dateien
/bin
 
+
 
grundlegenden Systemprogramme(z.B. mount), kleine ausführbare Programme für jeden User
/dev
 
 
Geräte und Treiber
/etc
 
+
+
Konfigurationsdateien für alle möglichen Programme
/lib
 
+
Biliotheken(wie Windows-dll), in /lib/modules sind die Kernel-Module, /lib/modules sichern bei eigenem Kernel
/sbin
 
+
+
ausführbare SystemProgramme für User root, Programme für den Startvorgang
/usr
+
 
+
Unix System Recource, Anwendungsprogramme, wie X11, Bibliotheken, Include-Dateien für C, Quellcode, man, howto, docs, Deamons, read only mouten, außer beim Installieren
/var
+
 
variable Daten, wie Druckerwarteschlange, Mails und Proxy-Cache, Lock-Dateien, ProzessIDs
möglichst die schnellste Platte benutzen, /var/log sichern
/home
+
 
+
Homeverzeichnisse der normalen User, Achtung: die Standardeinstellung ist für alle lesbar(chmod), Quotas sind sinnvoll
/tmp
+
 
 
temporäres Verzeichnis für Alle, Achtung: Dateien sind für alle lesbar
/boot
+
 +
+
Kernel(ca. 10 MB), möglichst innerhalb der ersten 1024 Zylinder(ca.1 Gbyte) installieren, empfohlene extra ext2-Partition(20 Mbyte), bei LBA-Modus im BIOS ist diese Auslagerung nicht nötig, sichern bei eigenem Kernel
/root
 
 
+
Homeverzeichnis für Administrator Namens root
/mnt
+
 
 
zum temporärem mounten(einbinden) von Verzeichnissen, Geräten
/opt
+
 
 
große Programme, kommerzielle Software, wie Office, Browser
/proc
 
 
 
Kopie der inneren Prozesse des Rechners(cache, Interrupt, etc.), Unterverzeichnisse für /proc/ sind interrupts, ioports, dma, iomem, cpuinfo, devices, partitions, pci, bus, scsi, net, ide, cmdline, fiesystems, meminfo, modules, mounts, version
schreibend z.B. mit echo 1 > /proc/sys/net/ipv4/ip_forward, um den Rchner als Router funngieren zu lassen , siehe /proc
/media
+
 
 
SuSE-Verzeichnis für CD, etc.
swap
+
 
die Auslageungsdatei, empfohlen 128 MB, bekommt schon bei der Installation eine eigene Partition von Typ 82, mit mkswap vorbereiten

mit find Datei kann man Dateien aufspüren.
Ein neues Verzeichnis incl. Unterverzeichnis erstellt man mit
mkdir -p /Verzeichnis/Unterverzeichnis, mit
rmdir -p
kann man leere Verzeichnisse löschen. Mit
rm -r
kann man auch Verzeichnisse incl. Dateien und Unterverzeichnisse löschen.

 

Seitenanfang oder Hauptseite

 

Dateitypen - Flags


Der Befehl ls zeigt Beispielsweise diese Information für eine Datei:
drwxr-xr-x Datei

Das erste Zeichen bezeichnet den jeweiligen Dateityp(flag) der Datei

Flag
Datei oder Gerät
Kommentar
-
Datei
reguläre Datei
d
Datei
Verzeichnis
l
Datei
link
- (in roter Farbe)
Datei
reguläre Datei(ausführbar)
b
Gerät
Block Device(Floppy, CD-ROM)
c
Gerät
char(tty1, tty2, Drucker
P
 
pipe(/dev/|xconsole)
s
 
socket(/dev/ =log) zum Austausch für spez. Programme

weitere Infos von ls

l
rwx
rwx
rwx
1
Nutzer
Gruppe
Größe
Datum
Dateiname
Flag
UserRechte
GruppenRechte
Rechte für alle
link-counter
(größer 1=Hardlink)
Username
Gruppenname
 
Datei2 -> Datei1
(hier ist Datei2 ein symbolischer Link auf Datei1)

Mit ls -a kann man auch versteckte Dateien anzeigen lassen.

 

Links

symbolic hard
Linkeintrag in anderer Inode Linkeintrag in gleicher Inode(gleiche Partition)
mehrere Links sind möglich
es handelt sich um die gleiche Datei
Rechte sind verschieden
beim Kopieren werden die Rechte neu gesetzt
Rechte sind gleich

Hat man einen Hardlink gefunden, kann man mit dem Befehl ln -li Datei find / -inum Inodennummer herausfinden, welche weiteren Links mit der Datei verbunden sind.
find /usr -xdev -inum 92550 -print gibt jetzt alle zugehörigen Hardlinks aus.
Das gleiche Ergebnis erhält man mit ls -ilR /usr | grep "^ *92550"

ln Orginaldatei Linkname Hardlink erzeugen
ln -s Orginaldatei Linkname symbolic link erzeugen

Kopiert man mit cp einen Link, so wied eine reguläre Datei erzeugt. Mit cp -l und cp -s kann man auch Links erzeugen.

maskieren

touch /tmp/x/\ \ \ \ Datei erstellen mit 4 Leerzeichen als Name
touch /tmp/\* Datei erstellen mit * als Name
touch Eigene\ Dateien Datei erstellen mit einem Leerzeichen darin
ls /tmp/\* *-Datei anzeigen

 

Pfad

Ein eingegebener Befehl wird erst als alias, dann im Pfad und dort der Reihenfolge(zu sehen mit $PATH) gesucht.
Der Pfad kann erweitert werden mit PATH=$PATH:/usr/local/foo/bin; export Path
Um eine Datei auszuführen, obwohl sie nicht im Pfad steht, braucht man das x-Ausführungsrecht und muß die Datei auf eine der folgenden Weise ansprechen:

./xDatei
. bin/xDatei
. ~/bin/xDatei

leere Dateien beliebiger Größe anlegen

dd if=/dev/zero of=meinfile bs=1024 count=1024 Datei ist leer, hat eine Größe von 1024*1024=1 Kbyte

 

Seitenanfang oder Hauptseite

 

Quotas

zur Einschränkung von Plattenplatzverschwendung, auf Partitionsebene, nur mit Kernelunterstützung
Paket quota installieren
Yast-system-runleverEditor: Quota und quotad in runlevel 3 und 5 eintragen.
Platte muß bei Änderung ev. umounted und wieder mounted werden
Verwendung in /etc/fstab

quota ansehen
quotacheck -avug Analyse, root legt 2 Dateien an: u=/home/quota.user, g=/home/quota.group
edquota -u username Blocks softlimit hardlimit Inode soft hard user eintragen , blocks=schon benutzt, softlimit=Warnung, hardlimit=Schluß in kbyte, Inodenzahl=schon benutzt, soft=Warnung, hard=Schluß, oder edquota franz und den Rest per Hand
edquota -p frank -u dirk elvira Quotadefinition frank wird zu dirk und elvira definiert
edquota -T fred 8hour 8 Stunden Warnzeit bei Überschreiten des Softlimits
repquota -a Bericht erstellen
quotaon -avug Quotas aktivieren
quotaoff Quotas deaktivieren

 

Seitenanfang oder Hauptseite

Geräte

Festplatten

IDE


Geräte-Datei Hardwareanschluß Partitionstyp
/dev/hda 1.IDE-Platte Primärer Master 1. primäre Partition
/dev/hda1 1.IDE-Platte Primärer Master 1. erweiterte Partition
/dev/hda2 1.IDE-Platte Primärer Master 2. primäre Partition
/dev/hda3 1.IDE-Platte Primärer Master 3. primäre Partition
/dev/hda4 1.IDE-Platte Primärer Master 3. erweiterte Partition
/dev/hda5 1.IDE-Platte Primärer Master 3. erweiterte Partition 1.logische Partition
/dev/hda6 1.IDE-Platte Primärer Master 3. erweiterte Partition 2.logische Partition
/dev/hda7 1.IDE-Platte Primärer Master 3. erweiterte Partition 3.logische Partition
/dev/hdb1 2.IDE-Platte b Sekundärer Master 1. primäre Partition
/dev/hdb2 2.IDE-Platte b Sekundärer Master 2. primäre Partition
/dev/hdb3 2.IDE-Platte b Sekundärer Master 3. primäre Partition
/dev/hdb5 2.IDE-Platte b Sekundärer Master 3. primäre Partition 1.logische Partition
/dev/hdc1 3.IDE-Platte c Primärer Master 1. primäre Partition
/dev/hdd1 4.IDE-Platte d Primärer Master 1. primäre Partition
/dev/hde 1. RAID-Platte    
/dev/hdf 2. RAID-Platte    
/dev/hdg 3. RAID-Platte    
/dev/hdh RAID space-Disk Ersatzplatte  

Normalerweise gibt es 2 IDE-Controller mit je 2 Anschlüssen(a+b) für insgesamt 4 Platten(oder IDE-CD-ROM-Laufwerken) auf dem Motherboard. Sie werden unter dem Verzeichnis /dev/ eingetragen. Pro Platte gibt es 4 primäre Partitionen oder 4 erweiterte Partitionen. Jede erweiterte Partitionen kann bis 4 logische Laufwerke haben.

SCSI


/dev/sda1 1.SCSI-Platte an 1. Controller
/dev/sda2 2.SCSI-Platte an 1. Controller
/dev/sda3 3.SCSI-Platte an 1. Controller
/dev/sdb1 1.SCSI-Platte an 2. Controller

Jeder SCSI-Controller kann bis zu 7(wide-scsi 15) Geräte anschließen. CD-ROM-Laufwerke(auch IDE-Geräte) werden als SCSI-Geräte eingebunden. Der Controller erhält die SCSI-ID 7. Eine Bootplatte braucht ID 0. Pro SCSI-ID kann man gleichwertige Geräte(z.B. nur Festplatten) mit einer LUN-Nummer versehen. Mehrere SCSI-Adapter kann man mit einer Busnummer unterscheiden. Eindeutig zuordnen läßt sich ein Gerät mit Busnummer,SCSI-ID,LUN.
Mit scsi_info /dev/sda läßt sich die aktuelle SCSI-Konfiguration festtellen.


weitere Geräte


/dev/usb Universal(UHCI)-Teiber von Intel und VIA, Open(OHCI)-Treiber mit Compaq, Ali, SiS, NEC, Opti Chipsatz , siehe auch usb
/dev/tty1 erste Konsole(eigene shell, aufzurufen mit Alt-F1 oder Alt-STRG-F1)
/dev/tty7 erste X-Konsole(X ist das grafische System, aufzurufen mit Alt-F7
/dev/mouse1 erste Maus
/dev/cdrom Link zu CD-ROM z.B. /dev/hda3
/dev/floppy Diskettenlaufwerk

 

neue Konfiguration am Beispiel Numlock

vi /etc/sysconfig/Keyboard , echo $KBD_NUMLOCK oder mittels SuSEconfig

Seitenanfang oder Hauptseite