INodes: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(36 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt und dem Namen der Datei.
+
=Prinzip=
[[Bild:Datsys2.png]]
+
*Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder Indexeintrag bezeichnet.  
===Daten===
+
*Er fasst alle Attribute einer Datei zusammen außer dem Inhalt und dem Namen der Datei.
 +
{{#drawio:inodes-1}}
 +
=Daten=
 
{| border=1 cellpadding=2
 
{| border=1 cellpadding=2
 
|type
 
|type
Zeile 38: Zeile 40:
 
|}
 
|}
  
===Dateiarten===
+
=Dateiarten=
 
{| border=1 cellpadding=2
 
{| border=1 cellpadding=2
 
!Zeichen
 
!Zeichen
Zeile 73: Zeile 75:
 
|}
 
|}
  
====Normale Dateien====
+
==Normale Dateien==
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein.  
+
;Unter einer normalen Datei versteht man die Ansammlung von Daten.
Beispiel
+
;Dies kann ein Text, Programm, Bild oder sonstiges sein.  
root@zero:~# ls -l text | cut -c 1
+
Zu erkennen an einem '''-''' in ls -l
-
+
<pre>
 +
xinux@debi:~$ ls -l text | cut -c 1
 +
-
 +
</pre>
  
====Verzeichnisse====
+
==Verzeichnisse==
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich.  
+
;Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich.  
root@zero:~# mkdir -v Ordner
+
<pre>
mkdir: Verzeichnis „Ordner“ angelegt
+
xinux@debi:~$ mkdir -v Ordner
+
mkdir: Verzeichnis „Ordner“ angelegt
root@zero:~# ls -ld Ordner | cut -c 1
+
</pre>
d
 
  
====Gerätedateien (Block und Char)====
+
Zu erkennen an einem d in ls -l
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern
+
<pre>
 +
xinux@debi:~$ ls -ld Ordner | cut -c 1
 +
d
 +
</pre>
  
Beispiele
+
==Gerätedateien (Block und Char)==
 +
*Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des  Kernels den Zugriff auf die Hardwarekomponenten des Systems.
 +
*Ansprechbar über Major und Minor Nummern
 +
*Es gibt zweit Arten von Gerätedateien
 +
*Block und Character Devices
 +
*Block Devices werden gepuffert geschrieben.
 +
*Character Devices Zeichen für Zeichen.
 +
;Schaubild
 +
{{#drawio:block-char-1}}
 +
{| class="wikitable"
 +
! Block Devices !! Character Devices
 +
|-
 +
| Festplatte, SSD, RAID, USB-Stick || Tastatur, Maus, Serielle Schnittstellen, Soundkarte, Drucker
 +
|}
  
Sicherung des Master Boot Records der ersten Festplatte
+
==Block Device==
root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1
+
*ls -l /dev/sda | cut -c 1  
 
 
Block Device
 
root@zero:~# ls -l /dev/sda | cut -c 1  
 
 
  b
 
  b
  
Character Device  
+
==Character Device==
root@zero:~# ls -l /dev/ttyS0  | cut -c 1  
+
*ls -l /dev/ttyS0  | cut -c 1  
 
  c
 
  c
 
+
;Erstellen einer Gerätedatei
Erstellen einer Gerätedatei
+
*mknod sata1 b 8 0  
root@zero:/dev# mknod sata1 b 8 0  
+
*fdisk -l /dev/sata1  
root@zero:/dev# fdisk -l /dev/sata1  
 
 
   
 
   
 
  Platte /dev/sata1: 6442 MByte, 6442450944 Byte
 
  Platte /dev/sata1: 6442 MByte, 6442450944 Byte
Zeile 117: Zeile 133:
 
  /dev/sata1p5            744        783      321268+  82  Linux Swap / Solaris
 
  /dev/sata1p5            744        783      321268+  82  Linux Swap / Solaris
  
====Named Pipes====
+
==Named Pipes==
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander
+
*Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden  
verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind  
+
*Sie sind flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen.
flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).
+
*Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen
Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb  
+
*Es können Daten im Vollduplexbetrieb zwischen den Prozessen ausgetauscht werden.
zwischen den Prozessen ausgetauscht werden.
+
===Erstelle Named Pipe mit Namen /tmp/roehre===
+
;Schreibe "hallo welt" in die Pipe und bleibe
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe "hallo welt" in die Pipe und bleibe
+
*mkfifo /tmp/roehre
xinux@zero:~$ mkfifo /tmp/roehre
+
*echo hallo welt > /tmp/roehre  
xinux@zero:~$ echo hallo welt > /tmp/roehre  
+
===Gebe Inhalt der Pipe mit cat aus===
 
+
*cat < /tmp/roehre  
Gebe Inhalt der Pipe mit cat aus
 
root@zero:~# cat < /tmp/roehre  
 
 
  hallo welt
 
  hallo welt
root@zero:~# ls -l /tmp/roehre | cut -c 1
+
*ls -l /tmp/roehre | cut -c 1
 
  p
 
  p
  
====Sockets====
+
==Sockets (Geht über Grundlagen hinaus)==
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.
+
*Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.
 
+
*netstat  -lnxp | tail -1
root@lydia:~# netstat  -lnxp | tail -1
 
 
   unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede
 
   unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede
 
+
*ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1  
root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede  | cut -c 1  
 
 
  s
 
  s
 +
===Socket erstellen===
 +
*nc  -lkU a.sock
  
====Links====
+
==Links==
Bei Links handelt es sich um symbolische Verweise auf andere Dateien
+
*Bei Links handelt es sich um symbolische Verweise auf andere Dateien
 
+
===Softlink===
'''Softlink'''
+
;Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist.  
Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt  
+
;Wenn der originale Hardlink gelöscht wird, zeigt der Link ins Leere.  
der Link ins Leere.  
+
;Erstellen eines Softlinks
 
 
ln -s datei softlink
 
  
 
{| border=1 cellpadding=2
 
{| border=1 cellpadding=2
Zeile 157: Zeile 169:
 
|-
 
|-
 
| Nachteile
 
| Nachteile
| Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich
+
| Wenn der Hardlink gelöscht ist, ist kein Zugriff mehr möglich
 
|}
 
|}
  
Beispiel
+
;Beispiele
 
Normal
 
Normal
root@zero:~# ln -s text verweis
+
*ln -s text verweis
Verbose
+
;Verbose
root@zero:~# ln -sv text verweis
+
*ln -sv text verweis
 
  „verweis“ -> „text“
 
  „verweis“ -> „text“
Erzwungenes Überschreiben
+
;Erzwungenes Überschreiben
root@zero:~# ln -sf dat verweis
+
*n -sf dat verweis
Auswirkungen
+
;Auswirkungen
root@zero:~# ls -l dat verweis  
+
*ls -l dat verweis  
 
  -rw-r--r-- 1 root root 4 2009-07-29 13:56 dat
 
  -rw-r--r-- 1 root root 4 2009-07-29 13:56 dat
 
  lrwxrwxrwx 1 root root 3 2009-07-29 13:57 verweis -> dat
 
  lrwxrwxrwx 1 root root 3 2009-07-29 13:57 verweis -> dat
Kopieren(Original wird kopiert)
+
;Kopieren(Original wird kopiert)
root@lydia:~# cp -v verweis /tmp/
+
*cp -v verweis /tmp/
 
  „verweis“ -> „/tmp/verweis“
 
  „verweis“ -> „/tmp/verweis“
  root@lydia:~# ls -l /tmp/verweis  
+
*ls -l /tmp/verweis  
 
  -rw-r--r-- 1 root root 4 2009-07-29 13:59 /tmp/verweis
 
  -rw-r--r-- 1 root root 4 2009-07-29 13:59 /tmp/verweis
Kopieren(Link wird kopiert)
+
;Kopieren(Link wird kopiert)
root@lydia:~# cp -vd verweis /tmp/
+
*cp -vd verweis /tmp/
 
  „verweis“ -> „/tmp/verweis“
 
  „verweis“ -> „/tmp/verweis“
root@lydia:~# ls -l /tmp/verweis  
+
*ls -l /tmp/verweis  
 
  lrwxrwxrwx 1 root root 3 2009-07-29 14:00 /tmp/verweis -> dat
 
  lrwxrwxrwx 1 root root 3 2009-07-29 14:00 /tmp/verweis -> dat
  
 
+
===Hardlinks===
'''Hardlinks'''
+
*Eigentlich ist jede Datei ein Hardlink.
ln datei hardlink
+
*Ein Hardlink ist ein Verzeichniseintrag, der auf eine Inode verweist.
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag,
+
*Beim Erzeugen einer Datei verweist ein Eintrag auf eine Inode.
der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf
+
*Man kann dann weitere Verweise erzeugen.
eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird
+
*Der Linkcounter wird jeweils um 1 erhöht.  
jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert.
+
*Beim Löschen einer Datei wird er jeweils um 1 reduziert.
Wird der Wert 0 erreicht, ist die Datei gelöscht.
+
*Wird der Wert 0 erreicht, ist die Datei gelöscht.
 
{| border=1 cellpadding=2
 
{| border=1 cellpadding=2
 
| Vorteile
 
| Vorteile
|Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist.
+
|Zugriff auf die Daten, selbst wenn der erste Link gelöscht ist.
 
|-
 
|-
 
|Nachteile
 
|Nachteile
Zeile 199: Zeile 211:
 
Ist nur innerhalb einer Partion möglich.
 
Ist nur innerhalb einer Partion möglich.
 
|}
 
|}
 
+
;Beispiele
Beispiel
+
*touch 1
root@zero:~# touch 1
+
*echo "text" > 1
root@zero:~# echo "text" > 1
+
*ln 1 2
root@zero:~# ln 1 2
+
*more 2
root@zero:~# more 2
 
 
  text
 
  text
root@zero:~# echo "doch kein text" > 1
+
*echo "doch kein text" > 1
root@zero:~# more 1
+
*more 1
 
  doch kein text
 
  doch kein text
root@zero:~# more 2
+
*more 2
 
  doch kein text
 
  doch kein text
  
Weitere Optionen:
+
;Weitere Optionen:
 
  -b sichert Dateien, statt sie zu überschreiben  
 
  -b sichert Dateien, statt sie zu überschreiben  
 
  -f Überschreibt bestehende, gleichnamige Dateien
 
  -f Überschreibt bestehende, gleichnamige Dateien
 
  -i fragt vor dem Überschreiben nach Bestätigung
 
  -i fragt vor dem Überschreiben nach Bestätigung
 
  -v ausführliche Meldungen
 
  -v ausführliche Meldungen
Softlink mit dem Namen passwd im Homeverzeichnis angelegt
+
;Softlink mit dem Namen passwd im Homeverzeichnis angelegt
xinux@zero:~$ ln -vs /etc/passwd .
+
*ln -vs /etc/passwd .
 
  „./passwd“ -> „/etc/passwd“
 
  „./passwd“ -> „/etc/passwd“
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht)  
+
;Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht)  
xinux@zero:~$ ln -vs /etc/hund .
+
*ln -vs /etc/hund .
 
  „./hund“ -> „/etc/hund“
 
  „./hund“ -> „/etc/hund“
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt
+
;Hardlink mit dem Namen hosts im Homeverzeichnis angelegt
  xinux@zero:~$ ln -v /etc/hosts .
+
*ln -v /etc/hosts .
 
  „./hosts“ => „/etc/hosts“
 
  „./hosts“ => „/etc/hosts“
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!
+
;Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!
xinux@zero:~$ ln -v /etc/katze .
+
*ln -v /etc/katze .
 
  ln: Zugriff auf „/etc/katze“: No such file or directory
 
  ln: Zugriff auf „/etc/katze“: No such file or directory
 
==Suchen von Dateien==
 
===find===
 
find ab_wo_wird_gesucht was_wird_gesucht aktion
 
find [Pfad] [Bedingung] [Aktion]
 
 
====Nach Namen====
 
find [Pfad] '''-name''' [Name]
 
 
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus
 
root@zero:~# find /home -name test -print
 
/home/xinux/test
 
/home/test
 
 
Wie oben, jedoch mit Namensanfang test
 
root@zero:/home/xinux# find /home -name 'test*'
 
/home/xinux/testdatei
 
/home/xinux/test
 
/home/test
 
 
====Nach Benutzer(Eigentümer)====
 
root@zero:/tmp# find /tmp/ '''-user''' xinux
 
/tmp/datei
 
 
====Nach Gruppe====
 
root@zero:/tmp# find /tmp/ '''-group''' hacker
 
/tmp/datei3
 
/tmp/datei2
 
 
 
 
====Nach Typ====
 
Es wird nach Dateien anhand Ihrer Art gesucht:
 
find [Pfad] '''-type''' [Typ]
 
Typ:
 
* f: Normale Dateien
 
root@zero:~# find /tmp/ -type f
 
/tmp/mbr.img
 
/tmp/datei
 
/tmp/zeugs
 
/tmp/.X0-lock
 
* d: Verzeichnisse
 
root@zero:~# find /var/log -type d
 
/var/log
 
/var/log/apache2
 
/var/log/unattended-upgrades
 
/var/log/apparmor
 
/var/log/ConsoleKit
 
/var/log/dist-upgrade
 
/var/log/dist-upgrade/20090526-1052
 
/var/log/cups
 
/var/log/apt
 
/var/log/fsck
 
/var/log/samba
 
/var/log/samba/cores
 
/var/log/samba/cores/smbd
 
/var/log/samba/cores/nmbd
 
/var/log/samba/cores/winbindd
 
/var/log/installer
 
/var/log/gdm
 
/var/log/news
 
* c: Char Devices (Zeichenorientierte Gerätedatei)
 
root@zero:~# find / -type c
 
/lib/udev/devices/kmem
 
/lib/udev/devices/null
 
/lib/udev/devices/console
 
/lib/udev/devices/ppp
 
/lib/udev/devices/net/tun
 
* b: Block Devices (Blockorientierte Gerätedatei)
 
* p: Benannte Pipe
 
* l: Links
 
* s: Sockets
 
 
====Nach Permissions====
 
root@cardassia:~# find /usr/bin/ -perm +4000 -exec ls -l {} \;
 
-rwsr-xr-x 1 root root 115136 2008-09-01 15:17 /usr/bin/sudoedit
 
-rwsr-xr-x 1 root root 32988 2008-06-09 20:10 /usr/bin/passwd
 
 
====Nach Modifikation====
 
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden
 
root@zero:/var/log# find /etc/ -mtime 2 -print
 
/etc/apache2
 
/etc/apache2/mods-available
 
/etc/apache2/conf.d
 
/etc/apache2/sites-available
 
/etc/bash_completion.d
 
/etc/blkid.tab.old
 
/etc/firefox-3.0/profile
 
/etc/firefox-3.0/profile/chrome
 
/etc/firefox-3.0/pref
 
/etc/profile.d
 
/etc/ufw/applications.d
 
/etc/logrotate.d
 
/etc/xulrunner-1.9
 
/etc/blkid.tab
 
/etc/cron.daily
 
/etc/alternatives
 
/etc/alternatives/x-www-browser
 
/etc/alternatives/xulrunner
 
/etc/gre.d
 
/etc/hal/fdi/policy
 
/etc/dbus-1/system.d
 
/etc/udev/rules.d
 
 
====Nach Größe====
 
Finde Dateien in /tmp, die größer als 100 MByte sind
 
root@zero:/tmp# find /tmp/ -size +100M
 
/tmp/datei
 
 
Finde Dateien in /tmp, die kleiner als 100 KByte sind
 
root@zero:/tmp# find /tmp/ -size -100k
 
/tmp/
 
/tmp/datei3
 
/tmp/backup
 
/tmp/datei2
 
/tmp/.winbindd
 
/tmp/.winbindd/pipe
 
/tmp/mbr.img
 
/tmp/zeugs
 
/tmp/.ICE-unix
 
/tmp/.X0-lock
 
/tmp/datei1
 
/tmp/.X11-unix
 
/tmp/.X11-unix/X0
 
/tmp/pulse-PKdhtXMmr18n
 
 
====Nach Berechtigungen====
 
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)
 
root@zero:/var# find /home/ -perm 777
 
/home/samba
 
/home/xinux/Examples
 
/home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime
 
/home/test/Examples
 
 
====Nach Zeit====
 
Modifiziert in der letzten Minute
 
root@zero:~# find /var    -mmin -1
 
/var/log/debug
 
/var/log/kern.log
 
/var/log/syslog
 
/var/run/klogd/kmsg
 
 
Modifiziert vor mehr als 9 Tagen
 
root@zero:~# find /var    -mtime +9
 
 
Zugriff vor mehr als 9 Minuten
 
root@zero:~# find /var    -amin +9
 
 
Kenndaten geändert in den letzen 2 Tagen
 
root@zero:~# find /var    -ctime -2
 
 
 
Ausführen eines Befehls
 
root@zero:~# find / -name "xinux?" -exec ls -l {} \;
 
 
Ausführen eines Befehls mit Rückfrage
 
root@zero:~# find / -name "xinux?" -ok  rm  {} \;
 
< rm ... /tmp/xinux3 > ? y
 
< rm ... /tmp/xinux2 > ? n
 
< rm ... /tmp/xinux1 > ? y
 
 
===locate===
 
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht
 
akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem.
 
locate [Dateiname]
 
 
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also
 
wvidal.conf*
 
root@zero:~# locate wvdial.conf
 
/etc/wvdial.conf
 
/usr/share/man/man5/wvdial.conf.5.gz
 
/var/lib/dpkg/info/wvdial.conffiles
 
/var/lib/dpkg/info/wvdial.config
 
 
Lokalisiere die Datei wvdial.conf und nur diese
 
root@zero:~# locate -b '\wvdial.conf'
 
/etc/wvdial.conf
 
 
Aktualisieren des Indexes
 
root@zero:~# updatedb
 
 
==Wie wird ein Kommando lokalisiert==
 
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt
 
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie
 
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.
 
 
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in
 
einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/'
 
im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird
 
der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und
 
schließlich mit den Shellfunktionen verglichen.
 
 
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten
 
Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden,
 
gibt die Shell eine Fehlermeldung aus.
 
 
===which und type===
 
====which====
 
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.
 
 
which [-a] Dateiname
 
 
Optionen:
 
 
* -a : Alle Treffer ausgeben, nicht nur den ersten
 
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen
 
 
Beispiel
 
root@zero:~# which startx
 
/usr/bin/startx
 
 
====type====
 
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen
 
Shell befinden.
 
 
type [Optionen] Befehle
 
 
Beispiel
 
root@zero:~# type ls
 
ls is aliased to `ls --color=auto'
 
 
Optionen:
 
 
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde
 
root@zero:~# type '''-a''' ls
 
ls is aliased to `ls --color=auto'
 
ls is /bin/ls
 
 
* -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH
 
unterscheiden
 
root@zero:~# type '''-p''' apache2
 
/usr/sbin/apache2
 
 
* -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist
 
root@zero:~# type '''-t''' apache2
 
file
 

Aktuelle Version vom 28. November 2024, 11:44 Uhr

Prinzip

  • Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder Indexeintrag bezeichnet.
  • Er fasst alle Attribute einer Datei zusammen außer dem Inhalt und dem Namen der Datei.

Daten

type Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt
Permissions Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Die Zugriffsrechte können mit dem Kommando chmod verändert werden.
link count In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann

mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden.

owner Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der

Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat.

group Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten

Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist.

size Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an.
access time Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die

Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. (ls -l --time=atime) stat zeigt alle Zeiten an.

modification time Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX

die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares Format in der lokalen Zeitzone umgewandelt. (ls -l)

change time Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die

Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) (ls -lc)

Dateiarten

Zeichen Typ Zweck
- file normale Datei
d directory Verzeichnis
b block device Gerätedatei
c character device Gerätedatei
p named pipe Benannte Pipeline
s socket Netzwerkverbindung
l link Querverweis

Normale Dateien

Unter einer normalen Datei versteht man die Ansammlung von Daten.
Dies kann ein Text, Programm, Bild oder sonstiges sein.

Zu erkennen an einem - in ls -l

xinux@debi:~$ ls -l text | cut -c 1
-

Verzeichnisse

Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich.
xinux@debi:~$ mkdir -v Ordner
mkdir: Verzeichnis „Ordner“ angelegt

Zu erkennen an einem d in ls -l

xinux@debi:~$ ls -ld Ordner | cut -c 1
d

Gerätedateien (Block und Char)

  • Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des Kernels den Zugriff auf die Hardwarekomponenten des Systems.
  • Ansprechbar über Major und Minor Nummern
  • Es gibt zweit Arten von Gerätedateien
  • Block und Character Devices
  • Block Devices werden gepuffert geschrieben.
  • Character Devices Zeichen für Zeichen.
Schaubild
Block Devices Character Devices
Festplatte, SSD, RAID, USB-Stick Tastatur, Maus, Serielle Schnittstellen, Soundkarte, Drucker

Block Device

  • ls -l /dev/sda | cut -c 1
b

Character Device

  • ls -l /dev/ttyS0 | cut -c 1
c
Erstellen einer Gerätedatei
  • mknod sata1 b 8 0
  • fdisk -l /dev/sata1
Platte /dev/sata1: 6442 MByte, 6442450944 Byte
255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder
Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes
Disk identifier: 0x0005efab

      Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/sata1p1   *           1         743     5968116   83  Linux
/dev/sata1p2             744         783      321300    5  Erweiterte
/dev/sata1p5             744         783      321268+  82  Linux Swap / Solaris

Named Pipes

  • Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden
  • Sie sind flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen.
  • Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen
  • Es können Daten im Vollduplexbetrieb zwischen den Prozessen ausgetauscht werden.

Erstelle Named Pipe mit Namen /tmp/roehre

Schreibe "hallo welt" in die Pipe und bleibe
  • mkfifo /tmp/roehre
  • echo hallo welt > /tmp/roehre

Gebe Inhalt der Pipe mit cat aus

  • cat < /tmp/roehre
hallo welt
  • ls -l /tmp/roehre | cut -c 1
p

Sockets (Geht über Grundlagen hinaus)

  • Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.
  • netstat -lnxp | tail -1
 unix  2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede
  • ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede | cut -c 1
s

Socket erstellen

  • nc -lkU a.sock

Links

  • Bei Links handelt es sich um symbolische Verweise auf andere Dateien

Softlink

Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist.
Wenn der originale Hardlink gelöscht wird, zeigt der Link ins Leere.
Erstellen eines Softlinks
Vorteile Symbolische Links können auch auf Verzeichnisse angelegt werden
Sie sind partitionsübergreifend
Man kann sie auf Dateien anlegen, die noch nicht existieren
Nachteile Wenn der Hardlink gelöscht ist, ist kein Zugriff mehr möglich
Beispiele

Normal

  • ln -s text verweis
Verbose
  • ln -sv text verweis
„verweis“ -> „text“
Erzwungenes Überschreiben
  • n -sf dat verweis
Auswirkungen
  • ls -l dat verweis
-rw-r--r-- 1 root root 4 2009-07-29 13:56 dat
lrwxrwxrwx 1 root root 3 2009-07-29 13:57 verweis -> dat
Kopieren(Original wird kopiert)
  • cp -v verweis /tmp/
„verweis“ -> „/tmp/verweis“
  • ls -l /tmp/verweis
-rw-r--r-- 1 root root 4 2009-07-29 13:59 /tmp/verweis
Kopieren(Link wird kopiert)
  • cp -vd verweis /tmp/
„verweis“ -> „/tmp/verweis“
  • ls -l /tmp/verweis
lrwxrwxrwx 1 root root 3 2009-07-29 14:00 /tmp/verweis -> dat

Hardlinks

  • Eigentlich ist jede Datei ein Hardlink.
  • Ein Hardlink ist ein Verzeichniseintrag, der auf eine Inode verweist.
  • Beim Erzeugen einer Datei verweist ein Eintrag auf eine Inode.
  • Man kann dann weitere Verweise erzeugen.
  • Der Linkcounter wird jeweils um 1 erhöht.
  • Beim Löschen einer Datei wird er jeweils um 1 reduziert.
  • Wird der Wert 0 erreicht, ist die Datei gelöscht.
Vorteile Zugriff auf die Daten, selbst wenn der erste Link gelöscht ist.
Nachteile Man kann keine Hardlinks auf Verzeichnisse anlegen.

Ist nur innerhalb einer Partion möglich.

Beispiele
  • touch 1
  • echo "text" > 1
  • ln 1 2
  • more 2
text
  • echo "doch kein text" > 1
  • more 1
doch kein text
  • more 2
doch kein text
Weitere Optionen
-b sichert Dateien, statt sie zu überschreiben 
-f Überschreibt bestehende, gleichnamige Dateien
-i fragt vor dem Überschreiben nach Bestätigung
-v ausführliche Meldungen
Softlink mit dem Namen passwd im Homeverzeichnis angelegt
  • ln -vs /etc/passwd .
„./passwd“ -> „/etc/passwd“
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht)
  • ln -vs /etc/hund .
„./hund“ -> „/etc/hund“
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt
  • ln -v /etc/hosts .
„./hosts“ => „/etc/hosts“
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!
  • ln -v /etc/katze .
ln: Zugriff auf „/etc/katze“: No such file or directory