next | next | up | down | Inhalt | Uebungen | Complete | Kommentar

all, section 3.4.

3.4.  Dateien

Bei der Anmeldung erhält man eine Benutzer- und Gruppennummer. Wenn ein neues Objekt im Dateisystem angelegt wird, erhält es diese als Besitzer- und Gruppennummer. Zugriff auf das Objekt wird durch die Rechte

--
Lesen
--
Schreiben
--
Ausführen

festgelegt. Wobei dies in die Kategorien Besitzer, Besitzer-Gruppe, Rest der Welt eingeteilt ist.

Die Ausführrechte bei Katalogen bedeutet, daß man einen Suchzugriff bekommt.

Zugriffsrechte ändern: (chmod, chown, chgrp)

$ chgrp gruppe pfad...       # Besitzer-Gruppe ändern.
$ chown besitzer pfad...     # Besitzer ändern.

$ chmod +x pfad...           # Ausführung erlauben.
$ chmod -w pfad...           # Schreiben verbieten.

Diese Änderungen darf nur der Besitzer (oder der Super-User) vornehmen. chmod akzeptiert die Rechte oktal (640 erlaubt Lesen für Besitzer und Gruppe, Schreiben für Besitzer) oder als Formel, wobei mehrere Operationen durch Komma getrennt werden:

u   für Besitzer,
g   für Gruppe,
o   für Rest

mit + - = kann man Rechte hinzufügen, wegnehmen, absolut einstellen:

Mit u+s oder 4000 definiert man, daß bei Ausführung eines binären Programms temporär die Besitzernummer der Datei als effektive Benutzernummer des Prozesses verwendet wird, (setuid(3)) die den Zugriff auf Dateien regelt. Analog führt g+s oder 2000 die Gruppennummer der Datei als effektive Gruppennummer ein. Damit kann zum Beispiel ein normaler Benutzer für genau kontrollierte Operationen die Rechte des Super-Users erhalten.

Wie könnte man sonst drucken?

Analog führt +t oder 1000 dassticky-Bit ein. Dies bedeutet, falls

Wie könnte man sonst vernünftig mit einer tmp arbeiten?

Die Verwendung des sticky-Bit kann zu einer effizienteren Nutzung der Ressourcen führen.

Src ## 9 ls -ld Sticky sticky
drwxr-xr-x   2 root     inform       1024 Apr 23 08:55 Sticky
-rwxr-xr-x   1 bischof  inform      24576 Apr 23 08:50 sticky

verdi Src ## 10 chmod +t Sticky
verdi Src ## 11 ls -ld Sticky
drwxr-xr-t   2 root     inform       1024 Apr 23 08:55 Sticky

verdi Src ## 12 chmod 1755 sticky
verdi Src ## 13 ls -l sticky
-rwxr-xr-t   1 bischof  inform      24576 Apr 23 08:50 sticky

Eine Datei, viele Namen: (ln)

$ ln alteDatei neuerName	# Einer Datei einen weiteren Namen geben.
$ ln alteDatei... katalog	# mehrere Dateien in einem Katalog

$ ls -l orig
-rw-r--r--   1 bischof  inform          0 Apr 16 11:04 orig
$ ln orig orig.ln 
$ ls -li  orig orig.ln
  14639 -rw-r--r--   2 bischof  inform          0 Apr 16 11:04 orig
  14639 -rw-r--r--   2 bischof  inform          0 Apr 16 11:04 orig.ln
$ rm  orig
$ ls -li  orig.ln
  14639 -rw-r--r--   1 bischof  inform          0 Apr 16 11:04 orig.ln

Diese mehrfache Benennung ist nur im gleichen Dateisystem möglich. Bei vielen Systemen kann man symbolische Links eintragen:

$ ln -s ersatzPfad ziel	# Verweis auf andere Datei eintragen.

Mehrfache Benennung von Katalogen ist nur mit symbolischen Links erlaubt. Dies kann zu Dateisystemen führen, die sehr verwirrend sind.

$ ln -s / root
$ ls -l root
lrwxrwxrwx   1 bischof  inform          1 Apr 16 11:12 root -> /
$ ls -L root | sed  1q
artemis_sd0a
$ cd root
$ pwd
/export/home/bischof/Vorlesung/Sp_97/Skript/root
$ /bin/pwd 
/

Mir der Option -f kann der super user einen harten Link zwischen Katalogen erzwingen. Davon ist abzuraten.

Fifo: (mknod)

Es gibt unter Unix folgende Dateitypen/Geräte

Blockgeräte       Magnetband, Platte
Charactergeräte   Platte, Terminal
Datei             Fifo, reguläre Dateien, Sockets, Links, symbolische Links
Katalog

$ mkfifo FIFO
$ ls -l FIFO
prw-r--r--   1 bischof  inform          0 Apr 18 14:28 FIFO
$ echo `date` > FIFO &
[1] 17064
$ ls -l FIFO
prw-r--r--   1 bischof  inform          0 Apr 18 14:28 FIFO
$ cat FIFO
Fri Apr 18 14:29:02 MET DST 1997
[1]+  Done                    echo `date` >FIFO
$ 

Dies kann nicht über Rechnerkanten hinweg funktionieren, weil die Synchronisatzion innerhalb des Kerns geregelt wird.

Datei-Listing: (ls)

$ ls -option pfad...	# Dateinamen und Informationen zeigen.

Es gibt sehr viele, kombinierbare Optionen, zum Beispiel:

-a    auch Dateinamen mit Punkt am Anfang
-d    Katalog zeigen, nicht seinen Inhalt
-i    mit inode-Zahl
-l    mit langer Information
-r    rückwärts sortiert
-R    rekursiv durch Unterkataloge
-s    mit Größe (in 512-Byte Blöcken)
-t    nach Schreibzeit sortiert
-ut   nach Zugriffszeit sortiert

Umbenennen: (mv)

Eine Datei wird im gleichen Dateisystem durch einen Aufrufe von mv umbenannt. Andernfalls muß sie kopiert und gelöscht werden; dabei gehen aber Links verloren.

$ mv alteDatei neuerName        # Einer Datei einen anderen Namen geben.
$ mv alteDatei... katalog       #  mehrere Dateien in einem Katalog

Löschen: (rm)

$ rm datei...           # Dateien löschen.
$ rm -f datei...        # ohne Rückfrage
$ rm -i datei...        # im Dialog
$ rm -r pfad...         # rekursiv

Wenn der letzte Link gelöscht wird, wird der Platz der Datei wieder verfügbar.

Zeitstempel aktualisieren: (touch)

$ touch pfad...            # Zeitstempel neu setzen.
$ touch mmddhhmmyy pfad... # explizit
$ touch -c pfad...         # falls nicht-existent, nicht erzeugen

touch liest und schreibt das erste Zeichen der Datei, sonst würde sich über NFS nichts ändern.

Es gibt Probleme, wenn das Dateisystem via NFS von NeXTStep auf SunOS 4.1.3 montiert wird.

SunOS mozart 4.1.3_U1 1 sun4m echo xx > to_old_to_rock
SunOS mozart 4.1.3_U1 1 sun4m ls -l to_old_to_rock
-rw-r--r--   1 bischof  inform          3 Apr 18 14:34 to_old_to_rock
SunOS mozart 4.1.3_U1 1 sun4m touch to_old_to_rock
SunOS mozart 4.1.3_U1 1 sun4m ls -l to_old_to_rock
-rw-r--r--   1 bischof  inform          3 Jan  1  1970 to_old_to_rock


back | next | up | down | Inhalt | Uebungen | Complete | Kommentar


Created by unroff & hp-tools. © by Hans-Peter Bischof. All Rights Reserved (1997).

Last modified 03/July/97