• Keine Ergebnisse gefunden

Speichermedien und Partitionen 2 Speichermedien und Partitionen 1 Bedeutungen des Wortes Dateisystem Inhalt Dateisystem

N/A
N/A
Protected

Academic year: 2021

Aktie "Speichermedien und Partitionen 2 Speichermedien und Partitionen 1 Bedeutungen des Wortes Dateisystem Inhalt Dateisystem"

Copied!
13
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Foliensatz 4

Dateisystem

Inhalt

• Dateisysteme in Linux

• Virtual Filesystem Switch (VFS)

• Filesystem Hierarchy Standard (FHS)

• Befehle für Verzeichnisse, Dateien und Dateisysteme

• Einschub: Berechtigungen

• Harte und symbolische Links

Bedeutungen des Wortes Dateisystem

• Hat drei unterschiedliche Bedeutungen:

• Ein physisches Dateisystem, die Struktur auf einem Speichermedium

• Die Softwarekomponente für ein physisches Dateisystem (FAT, ext3, NTFS, …)

• Die Abstraktionsschicht im Kernel

Speichermedien und Partitionen 1

• Jedes Medium (USB-Stick, Festplatte, DVD) ist einfach eine Folge von Bits, hat keine Struktur; oft in Blöcke unterteilt, die nur auf einmal gelesen werden können.

• Das Dateisystem organisiert die Daten in einem hierarchischen System bestehend aus Verzeichnissen und Dateien.

• Ein physisches Medium kann mit einem einzigen Dateisystem versehen sein oder mehrere Teile (Partitionen) besitzen, mit eventuell unterschiedlichen Dateisystemen. Das ist z.B. für das Aufteilen eines Systems in eine Betriebssystem-Partition und eine Daten-Partition nützlich.

Es gibt unterschiedliche Varianten, Partitionen auf einem physischen Medium zu kennzeichnen.

Früher wurde auf x86-Rechnern ein MBR (Master Boot Record) und die darin enthaltene Partitionstabelle verwendet, der Nachfolger nennt sich GPT (GUID Partition Table).

Speichermedien und Partitionen 2

• Partitionen einer Festplatte können mittels fdisk -l /dev/[sdX|hdX] angezeigt werden. Partitionen einer Platte /dev/[sdX|hdX] heißen /dev/[sdX|hdX][1,2,3,...], wobei X ein Kleinbuchstabe ist.

Dies ist jedoch nur eine gängige Konvention, es könnte auch anders sein!

• $ fdisk -l /dev/sda

Disk /dev/sda: 160.0 GB, 160041885696 bytes

255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors

(2)

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000b57a2

   Device Boot Start End Blocks Id System /dev/sda1 * 16065 34668269 17326102+ 83 Linux

/dev/sda2 34668270 43054199 4192965 82 Linux swap / Solaris /dev/sda3 43070326 312576704 134753189+ f W95 Ext'd (LBA) /dev/sda5 43070328 312576704 134753188+ 83 Linux

• Ein gutes CLI-Programm für die Anzeige und Bearbeitung von Partitionen ist parted (es gibt auch eine GUI-Variante namens gparted).

Speichermedien und Partitionen 3

Wichtige Dateisysteme

• Windows: FAT, NTFS

• Linux/Unix: Ext2-4, ReiserFS, XFS, JFS, ZFS, Btrfs (in Entwicklung)

• Netzwerk: NFS, SMB/CIFS (Windows), Lustre (Supercomputing)

Linux Virtual Filesystem (VFS)

Der Linux-Kernel bietet eine Abstraktion von den Spezifika eines Dateisystems und dem Medium, auf dem es liegt, das sogenannte virtuelle Dateisystem (bietet sowohl Abstraktion Richtung spezifische Dateisysteme als auch Richtung Benutzer). Der Pfad, unter welchem eine Datei erreicht werden kann, gibt daher keinen Aufschluss darauf, wo die Datei physisch tatsächlich liegt.

• Es gibt ein einziges, zentrales Basisverzeichnis, das mit / bezeichnet wird und „root“ heißt.

(3)

• Verzeichnisse und Unterverzeichnisse werden mit / voneinander getrennt.

• Spezifische Dateisysteme werden unter Verzeichnisnamen in dieses virtuelle Dateisystem eingehängt.

Nähere Information zum VFS: Kernel Hackers‘ Guide: A tour of the Linux VFS und The „Virtual File System“ in Linux

Dateien

• GROSZ- und kleinschreibung in Dateinamen machen (in der Regel, hängt vom spezifischen Dateisystem ab) einen Unterschied.

• Versteckte Dateien beginnen mit einem Punkt (z.B. .bash_profile)

• Dateien können auch für Geräte stehen, Verzeichnisse für Prozesse, System- und Kerneleinstellungen, Statusinformationen, …

• Dateiendungen haben i.a. keine Bedeutung, Linux orientiert sich am tatsächlichen Inhalt (Befehl file).

Es gibt verschiedene Dateitypen (mit deren Kurzbezeichnung):

• Reguläre Datei (-): Beinahe jede Datei

• Verzeichnis (d): Sammlung von Dateien

• „Character device“ (c): Für zeichen-basierte IO (z.B. Terminal)

• „Block device“ (b): Für block-basierte IO (z.B. Festplatten)

• „Named pipe“ (p): Für Interprozesskommunikation (IPC)

• Socket (s): Erlaubt auch Interprozesskommunikation, flexibler als named pipes

• Link (l): Spezielle Datei, zeigt auf eine andere Datei/ein anderes Verzeichnis

Filesystem Hierarchy Standard (FHS)

Damit Unix-ähnliche Betriebssystem zueinander kompatibler sind und die Interoperabilität von Computerprogrammen gefördert wird, gibt es den Filesystem Hierarchy Standard. Dieser legt die Lage und Bezeichnung von wichtigen Verzeichnissen und Dateien fest.

Beispiele:

• /bin/ → Verzeichnis mit grundlegenden Systembefehlen für alle Benutzer

• /bin/ls → Datei ls ist das Programm zum Zeigen eines Verzeichnisinhalts

• /home/<BENUTZERNAME>/ → Benutzerdaten eines Benutzers

• /home/Name/Dokumente/ → Dokumentenverzeichnis für den Benuzter „Name“

• /proc/cpuinfo → Virtuelle Textdatei, die Infos über die CPU(s) enthält

• /media/ → Verzeichnis mit eingebundene Wechselmedien wie (DVD, USB-Stick, Digitalkamera, …)

• /media/cdrom/file.odf → ODF Dokument auf einer CD-ROM Referenz: Filesystem Hierarchy Standard bzw. Manpage hier

Befehle für Verzeichnisse 1 (pwd, cd)

pwd - Zeigt das aktuelles Verzeichnis an.

» „print working directory“, bash-Befehl

» Jeder gestartete Prozess hat ein assoziiertes Arbeitsverzeichnis. Es hängt davon ab, von welchem Verzeichnis aus ein Programm gestartet wird (Beispiel: ls arbeitet auf dem aktuellen Verzeichnis).

» $ pwd

(4)

/home/thomas/work/praxis_website cd - Wechselt das aktuelle Verzeichnis.

» „change directory“, Bash-Befehl; erster Parameter ist Zielverzeichnis

» Ohne Parameter nach $HOME (Umgebungsvariable)

» Ist der Parameter -, wechselt man in das letzte Verzeichnis.

Tipp: Besser als cd - sind popd und pushd (bash-Befehle).

» $ cd /; pwd /

$ cd -

/home/thomas/work/praxis_website

$ cd; pwd /home/thomas

Befehle für Verzeichnisse 2 (ls)

ls - Listet Verzeichnisse auf.

» „listing“, listet alle Dateien im aktuellen oder angegebenen Verzeichnis auf

» Viele Optionen, z.B.: -l → langes Format‘; -h → Größen sinnvoller ausgeben; -a → alles, auch versteckte Dateien, anzeigen; -t → nach Zeit sortieren; -d → Verzeichnis statt Inhalte

» $ ls -lt total 36

-rw-rw-r-- 1 thomas thomas 3694 Oct 10 20:01 unterlagen.page drwxrwxr-x 2 thomas thomas 4096 Oct 9 17:23 scripts

drwxr-xr-x 7 thomas thomas 4096 Oct 8 16:19 src drwxrwxr-x 2 thomas thomas 4096 Oct 8 16:14 ext drwxrwxr-x 2 thomas thomas 4096 Oct 2 12:56 tmp drwxrwxr-x 7 thomas thomas 4096 Oct 2 12:56 out

-rw-rw-r-- 1 thomas thomas 147 Sep 30 12:18 webgen.config -rw-rw-r-- 1 thomas thomas 245 Sep 29 09:05 notizen.org drwxrwxr-x 4 thomas thomas 4096 Mar 5 2012 out_old

» Hinweis: Die Bedeutung der ersten vier Spalten wird später bei „Benutzer, Gruppen, Rechte“

erklärt. Ab der 5. Spalte sieht man die Dateigröße, das Datum der letzten Modifikation und den Namen.

Befehle für Verzeichnisse 3 (mkdir, rmdir)

mkdir - Erstelle ein oder mehrere Verzeichnisse.

» „make directory“, Parameter sind die zu erstellenden Verzeichnisse

» Mit der Option -p werden auch Elternverzeichnisse erstellt

» $ ls example/test

ls: cannot access example/test: No such file or directory

$ mkdir -p example/test

$ ls example test

rmdir - Löscht ein oder mehrere Verzeichnisse.

» „remove directory“; Parameter sind die zu löschenden Verzeichnisse

» Funktioniert nur, wenn das Verzeichnis leer ist!

» Mit der Option -p werden auch (leere) Elternverzeichnisse gelöscht

» $ rmdir example

rmdir: failed to remove `example': Directory not empty

$ rmdir -p example/test

(5)

$ ls example

ls: cannot access example: No such file or directory

Befehle für Dateien 1 (touch, cat, tac)

touch - Legt eine Datei an.

» Falls die Datei schon existiert, wird die Zugriffs- und Modifikationszeit auf die aktuelle Zeit gesetzt.

» -t [[CC]YY]MMDDhhmm[.ss] gibt das zu benutzende Datum an.

» $ touch file1

$ ls -l file1

-rw-rw-r-- 1 thomas thomas 0 Oct 11 10:37 file1

$ touch -t 201001010001 file1

$ ls -l file1

-rw-rw-r-- 1 thomas thomas 0 Jan 1 2010 file1 cat - Gibt den Inhalt einer oder mehrerer Dateien aus.

» „concatenate“; Parameter sind die Dateien. tac macht das gleiche, nur rückwärts.

» $ echo -e "hallo\ndu" > file1

$ cat file1 hallo du

$ tac file1 du

hallo

Befehle für Dateien 2 (split)

split -Spaltet eine Datei in Teile auf.

» Die Dateien können mit cat wieder zusammengefügt werden.

» Syntax: split [Optionen] Datei [Präfix] (Präfix ist standardmäßig ‚x‘)

» Optionen: -l N → N Zeilen pro Ausgabedatei, -b N → N Bytes pro Ausgabedatei, -n N → N Ausgabedateien erzeugen, -d → numerischen Suffix verwenden

» $ split -n 3 -d /etc/passwd passwd

$ split -l 10 /etc/passwd passwd

$ ls -l passwd*

-rw-r--r-- 1 thomas thomas 823 Dez 7 09:57 passwd00 -rw-r--r-- 1 thomas thomas 823 Dez 7 09:57 passwd01 -rw-r--r-- 1 thomas thomas 823 Dez 7 09:57 passwd02 -rw-r--r-- 1 thomas thomas 344 Dez 7 09:57 passwdaa -rw-r--r-- 1 thomas thomas 459 Dez 7 09:57 passwdab -rw-r--r-- 1 thomas thomas 642 Dez 7 09:57 passwdac -rw-r--r-- 1 thomas thomas 575 Dez 7 09:57 passwdad -rw-r--r-- 1 thomas thomas 449 Dez 7 09:57 passwdae

$ cat passwdac | wc -l 10

Befehle für Dateien 3 (stat, file)

stat - Liefert Details zu einer Datei.

» $ stat file1   File: `file1'

  Size: 9 Blocks: 8 IO Block: 4096 regular file

(6)

Device: 806h/2054d Inode: 1485015 Links: 1

Access: (0664/-rw-rw-r--) Uid: ( 1515/ thomas) Gid: ( 1515/ thomas) Access: 2012-10-11 10:41:25.635363400 +0200

Modify: 2012-10-11 10:41:24.539366907 +0200 # Zeitstempel Änderung Inhalt Change: 2012-10-11 10:41:24.539366907 +0200 # Zeitstempel Änderung Metadaten  Birth: -

file - Erkennt Dateiformate.

» Das sind nicht die Dateitypen von Linux!

» Das Programm benutzt mehrere Algorithmen, um das Dateiformat einer Datei zu erkennen. In der Regel ist die Ausgabe korrekt.

» $ file tutorial.html

tutorial.html: HTML document text

$ file 20090708.txt

20090708.txt: ASCII text, with CRLF, CR, LF line terminators, with overstriking

$ file dokument1

dokument1: PDF document, version 1.4

Befehle für Dateien 3 (mv, cp, rm)

mv - Verschiebt eine Datei.

» „move“, wird auch zum Umbennen von Dateien verwendet.

» Hier wird entweder nur der Pfad geändert (im selben Dateisystem, sehr schnell), oder eine Kopie mit anschließendem Löschen gemacht.

» $ mv file1 file2

cp - Kopiert eine oder mehrere Dateien.

» „copy“, bei mehr als zwei Parametern muss der letzte ein Verzeichnis sein.

» Der Inhalt einer Datei wird in eine neue, unabhängige Datei geschrieben.

» Nützliche Optionen: -a → archivieren (Attribute identisch), -r → rekursiv kopieren, -i → beim Überschreiben nachfragen

» $ cp -a file2 file1

rm - Löscht eine oder mehrere Dateien.

» „remove“, Parameter sind die zu löschenden Dateien.

» Der Eintrag im Verzeichnis wird gelöscht. Die Daten könnten weiterhin erreichbar sein, wenn mehrere Dateinamen auf dieselbe Datei verweisen (harte Links).

» $ rm file1 file2

Sonstige Befehle (find)

find - Sucht nach Dateien in einem Verzeichnisbaum.

» Sehr mächtiges Werkzeug, sollte man sich gut ansehen!

» Syntax: find [OPTIONEN] [PFAD...] [AUSDRUCK]

» Ein Ausdruck besteht aus Optionen, Tests und Aktionen, separiert mit Operatoren:

• Optionen (beeinflussen die gesamte Suche):

• -mindepth → minimale Suchtiefe

• -maxdepth → maximale Suchtiefe.

• Tests (selektieren Dateien):

• -name PATTERN → Dateien, die dem Muster entsprechen.

• -iname PATTERN → Wie -name, aber Groß-/Kleinschreibung egal.

(7)

• -type TYP → Dateien eines bestimmten Linux-Dateityps.

• -perm [-/]MODE → Dateien nach Berechtigungen filtern.

• -size N → Dateien nach Größe filtern.

Sonstige Befehle (find)

find…

» • Aktionen (machen etwas mit gefundenen Dateien):

• -print → Namen der Datei ausgeben, danach Zeilenumbruch.

• -print0 → Namen der Datei ausgeben, danach Null-Zeichen.

• -delete → Datei löschen.

• -exec BEFEHL ; → Befehl auf Datei ausführen ({} wird mit Dateiname ersetzt)

• Operatoren:

• -or/-not/-and → Logische Verknüpfung (default ist -and).

• ( AUSDRUCK ) → Gruppieren von Anweisungen.

» Von der Shell verwendete Zeichen (z.B. (, ), ;, …) müssen mit dem Maskierungszeichen („escape character“) \ versehen werden, damit die Shell sie nicht interpretiert.

Verwenden von Dateisystemen

• Wie erwähnt, müssen Dateisysteme in das VFS eingehängt („gemountet“) werden, damit sie verwendet werden können. Wenn ein Dateisystem nicht mehr gebraucht wird, kann es ausgehängt werden.

• Ein Dateisystem kann unter einem beliebigen Verzeichnis (dem Mountpoint) eingehängt werden. Die vorher unter diesem Verzeichnis verfügbaren Dateien und Verzeichnisse sind dann solange nicht mehr erreichbar, bis das Dateisystem wieder ausgehängt wird.

Achtung: Neue Dateisysteme nicht unter Systemverzeichnisse (z.B. /bin/, /etc/, …) einhängen!

• Um ein Dateisystem einzuhängen braucht man das Gerät, auf dem es liegt (z.B. das DVD-Gerät und eine Festplattenpartition) und ein Verzeichnis. Falls der Typ des Dateisystems (z.B. FAT, EXT4, …) nicht erkannt wird, muss auch diesen zusätzlich angeben.

• Bei aktuellen Linux-Distributionen werden Wechselmedien wie USB-Sticks und -Festplatten sowie DVDs automatisch erkannt und, falls möglich, eingehängt (in automatisch erstellten Verzeichnissen unter /media/).

Befehle für Dateisysteme 1 (mount)

mount - Hängt Dateisysteme in das VFS ein und listet sie auf

» Ohne Parameter werden die eingebundenen Dateisysteme aufgelistet (Hinweis: mit mount | column -t bekommt man eine schönere Ausgabe)

» $ mount

/dev/sda1 on / type ext3 (rw,errors=remount-ro) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) udev on /dev type devtmpfs (rw,mode=0755)

none on /run/shm type tmpfs (rw,nosuid,nodev)

(8)

/dev/sda5 on /scratch type ext3 (rw,nosuid)

rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw) //share2/profiles on /profiles type cifs (rw)

Befehle für Dateisysteme 2 (mount)

mount…

» $ mount | column -t

/dev/sda1 on / type ext3 (rw,errors=remount-ro) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) udev on /dev type devtmpfs (rw,mode=0755)

none on /run/shm type tmpfs (rw,nosuid,nodev) /dev/sda5 on /scratch type ext3 (rw,nosuid) rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw)

//share2/profiles on /profiles type cifs (rw)

» In der obigen Ausgabe sieht man zum Beispiel, dass das EXT3-Dateisystem auf dem Gerät /dev/sda1 (also der ersten Partition auf der ersten Festplatte) unter /, dem Wurzelverzeichnis eingehängt ist. Weiters sieht man mehrere „virtuelle“ Dateisysteme (wie z.B. sysfs) und auch ein Netzwerkdateisystem (CIFS).

Befehle für Dateisysteme 3 (mount, umount)

mount…

» Im folgenden Beispiel wird ein NTFS-Dateisystem mit einigen Optionen unter /media/windows eingebunden.

» $ mount -o ro,noexec -t ntfs /dev/sdb1 /media/windows umount - Hängt Dateisysteme aus dem VFS aus.

» Als Parameter sind ein oder mehrere Mountpoints anzugeben.

» Wenn das Dateisystem noch in Verwendung ist, kann es nicht ausgehängt werden!

» $ umount /media/windows

Befehle für Dateisysteme 4 (df)

df - Zeigt die Festplattenbelegung an.

» „disk free“, Option -h („human readable“) nützlich.

» Eine Zeile pro eingehängtem Dateisystem.

» $ df -h

Filesystem Size Used Avail Use% Mounted on /dev/sda1 14G 8.1G 5.0G 62% /

udev 3.8G 4.0K 3.8G 1% /dev tmpfs 1.6G 1.1M 1.6G 1% /run none 5.0M 0 5.0M 0% /run/lock none 3.9G 2.3M 3.8G 1% /run/shm /dev/sda6 79G 72G 2.3G 97% /home /dev/sda4 9.6G 273M 8.9G 3% /data

Befehle für Dateisysteme 5 (du)

du - Zeigt den Platzverbrauch von Dateien/Verzeichnissen an.

» „disk usage“, als Parameter können Dateien/Verzeichnisse angegeben werden

» Standardeinheit der Größen ist 1024 Byte

(9)

» Verzeichnisse werden rekursiv behandelt

» Nützliche Optionen: --apparent-size → tatsächliche Größe anzeigen, -h → Größen sinnvoller ausgeben, -s → nur die Zusammenfassung, -c → Gesamtgröße ausgeben

» $ du -sc src tmp 1176 src 168 tmp 1344 total

$ du -sch src tmp 1.2M src 168K tmp 1.4M total

$ du --apparent-size -sch src tmp 988K src

159K tmp 1.2M total

Dateibesitzer und Berechtigungen 1

• Jede Datei gehört einem Benutzer (dem Besitzer) und einer Gruppe.

• Jedem Benutzer/jeder Gruppe ist eine eindeutige Nummer zugeordnet: die UID („User-ID“) dem Benutzer und die GID („Group-ID“) der Gruppe. Im Dateisystem selbst sind nur die UID/GID gespeichert!

• Diese Zuordnung kann auf jedem Linux-System anders sein (d.h. ein Benutzer auf System A muss nicht die selbe UID haben wie der gleiche Benutzer auf System B).

• Zusätzlich sind für jede Datei Zugriffsrechte definiert: Ein Set für den Besitzer (symbolisch u), eines für die Gruppe (symbolisch g) und eines für den Rest (symbolisch o, das sind alle außer dem Besitzer und den Gruppenmitgliedern). Es gibt drei verschiedene Arten von Zugriffsrechten:

• Lesen (symbolisch: r, numerisch: 4)

• Schreiben (symbolisch: w, numerisch: 2)

• Ausführen/Verzeichnis öffnen (symbolisch: x, numerisch: 1)

Manche Dateisysteme bieten darüber hinaus zusätzliche Dateiattribute an (z.B. EXT2/3/4-Attribute, POSIX ACLs).

Dateibesitzer und Berechtigungen 2

• Die Darstellung der Zugriffsrechte erfolgt immer in der Reihenfolge Lesen, Schreiben und Ausführen für den Besitzer, die Gruppe und den Rest.

• Falls ein Zugriffsrecht nicht gesetzt ist, wird in der symbolischen Schreibweise ein - an dessen Stelle geschrieben.

Zum Beispiel bedeutet rwxr-xr--, dass der Besitzer alle Rechte hat, die Gruppe darf Lesen und Ausführen und der Rest darf nur Lesen.

• Die numerische Schreibweise bedient sich dem Oktalsystem, d.h. den Ziffern von 0 bis 7. Die Werte der gesetzten Rechte werden dabei addiert.

Berechnung: r → 4 = 2^2, w → 2 = 2^1, x → 1 = 2^0

In der Oktalschreibweise würden die Zugriffsrechte beim obigen Beispiel 754 sein.

(10)

Besitzer Gruppe Rest

symbolisch rwx r-x r--

Bits 111 101 100

Berechtigungen - SUID/SGID/Sticky-Bit 1

Zusätzlich zu den genannten Zugriffsrechten gibt es noch drei spezielle Rechte:

• „Set-User-ID“ bzw. SUID-Bit (symbolisch: s, numerisch: 4)

Die Datei (nur sinnvoll auf Programmdateien) wird mit den Rechten des Besitzers ausgeführt, nicht mit den Rechten des Benutzers, der das Programm aufruft.

• „Set-Group-ID“ bzw. SGID-Bit (symbolisch: s, numerisch: 2)

Die Datei (nur sinnvoll auf Programmdateien) wird mit den Rechten der Gruppe ausgeführt, nicht mit den Rechten der primären Gruppe des Benutzers, der das Programm aufruft.

• „Restricted Deletion Flag“ oder „Sticky-Bit“ (symbolisch: t, numerisch: 1)

Verbietet in einem Verzeichnis einem unpriviligierten Benutzer das Löschen von Dateien/Verzeichnissen, wenn er nicht deren Besitzer ist. Wird normalerweise z.B. auf das /tmp -Verzeichnis gesetzt.

Auf eine Datei angewandt, macht es jetzt nichts mehr. Früher würde das Programm in den Swap- Speicher geschrieben, damit es bei mehrmaligem Aufruf schneller ausgeführt wird.

Berechtigungen - SUID/SGID/Sticky-Bit 2

• In der symbolischen Schreibweise werden diese Rechte wie folgt dargestellt:

Ausführen SUID-Bit Besitzer SGID-Bit Gruppe Sticky-Bit Rest

x - x - x - x

x s s s s t t

- s S s S t T

• In der Oktalschreibweise werden die Werte der drei Rechte addiert und als vierte Ziffer den anderen dreien vorangestellt, z.B. ergibt das 6754 für das obige Beispiel, falls SUID und SGID gesetzt sind.

Siehe auch info coreutils 'Mode Structure'

Dateibesitzer und Berechtigungen - Anzeigen

Den Besitzer, die Gruppe sowie die zugehörigen Rechte von Dateien kann man sich mittels ls -l anzeigen lassen:

$ ls -ltd *

-rw-rw-r-- 1 thomas thomas 3694 Oct 10 20:01 unterlagen.page drwxrwxr-x 2 thomas thomas 4096 Oct 9 17:23 scripts

(11)

drwxr-xr-x 7 thomas thomas 4096 Oct 8 16:19 src drwxrwxr-x 2 thomas thomas 4096 Oct 8 16:14 ext drwxrwxrwt 2 thomas thomas 4096 Oct 2 12:56 tmp drwxrwxr-x 7 thomas thomas 4096 Oct 2 12:56 out

-rw-rw-r-- 1 thomas thomas 147 Sep 30 12:18 webgen.config -rw-rw-r-- 1 thomas thomas 245 Sep 29 09:05 notizen.org

$ ls -l /usr/bin/passwd

-rwsr-xr-x 1 root root 42824 Apr 9 2012 /usr/bin/passwd

• 1. Spalte: Linux-Dateityp (erstes Zeichen) und Zugriffsrechte.

• 2. Spalte: Link-Zähler (wird später bei „Harte und symbolische Links“ erklärt)

• 3. Spalte: Besitzer

• 4. Spalte: Gruppe

Die Rechte können mit chmod geändert werden, die Gruppe mit chgrp und der Besitzer mit chown.

Dateibesitzer und Berechtigungen - Befehle (chmod)

chmod - Ändert die Zugriffsrechte.

» Zwei Aufrufvarianten:

• chmod [OPTION]... OKTAL DATEI...: Mittels Oktalschreibweise.

• chmod [OPTION]... [ugoa...][+-=][rwxXst] DATEI...: Mittels symbolischer Schreibweise.

• u → Besitzer, g → Gruppe, o → Rest, a → Alle

• + → hinzufügen, - → löschen, = → exakt auf die Rechte setzen

• rwxst → klar (siehe oben), X → x setzen, falls auf ein Verzeichnis angewandt oder irgendein Benutzer schon das Recht hat

» Die Option -R erlaubt das rekursive Setzen der Zugriffsrechte.

» $ chmod a=rwx datei; ls -l datei

-rwxrwxrwx 1 thomas thomas 0 Oct 17 19:15 datei

$ chmod o-rwx datei; ls -l datei

-rwxrwx--- 1 thomas thomas 0 Oct 17 19:15 datei

$ chmod a-x,o+r datei; ls -l datei

-rw-rw-r-- 1 thomas thomas 0 Oct 17 19:15 datei

$ chmod 6744 datei; ls -l datei

-rwsr-Sr-- 1 thomas thomas 0 Oct 17 19:15 datei

Dateibesitzer und Berechtigungen - Befehle (chown, chgrp)

chown - Ändert den Besitzer (und optional auch die Gruppe) einer Datei.

» Syntax: chown [OPTION]... [BESITZER][:[GROUP]] DATEI...

» Option -R für rekursives Ändern.

» $ chown root datei

chown: changing ownership of `datei': Operation not permitted

$ sudo chown root datei; ls -l

-rw-rw-r-- 1 root thomas 0 Oct 17 19:29 datei

$ sudo chown thomas:adm datei; ls -l

-rw-rw-r-- 1 thomas adm 0 Oct 17 19:29 datei chgrp - Ändert die Gruppe einer Datei.

» Syntax: chgrp [OPTION]... GRUPPE DATEI...

» Option -R für rekursives Ändern.

(12)

» $ sudo chgrp staff datei; ls -l

-rw-rw-r-- 1 thomas staff 0 Oct 17 19:29 datei

Dateibesitzer und Berechtigungen - Befehle (umask)

umask - Zeigt und ändert die Maske der Standarddateiberechtigungen.

» Ist ein eingebauter Bash-Befehl!

» Die Maske wird von den Berechtigungen (normalerweise 666 für Dateien und 777 für Verzeichnisse) abgezogen!

» Die Option -S gibt die Maske in symbolische Schreibweise aus.

» $ umask 0002

$ umask -S u=rwx,g=rwx,o=rx

$ umask 022

$ umask 0022

$ umask u=rwx,g=rx,o=

$ umask 0027

$ touch file; ls -l file; rm -f file

-rw-r--- 1 thomas thomas 0 Oct 17 20:04 file

Harte und symbolische Links

• Alle Informationen (Besitzer, Gruppe, Berechtigungen, Anzahl und Speicherort der Datenblöcke, …) zu einer Datei, bis auf den Namen, werden im VFS in einem sogenannten „inode“ („index node“) verwaltet. D.h. einer Datei entspricht immer ein inode.

• Zugriff auf eine Datei erhält man, indem man in einem Verzeichnis einen Namen mit dem inode der Datei verbindet. Dieses Zuordnen eines Namens zu einer Datei bezeichnet man als „linken“ und so einen Eintrag als harten Link (oder Hardlink).

Harte Links sind auf Grund der engen Verbundheit mit dem Dateisystem immer nur innerhalb eines physischen Dateisystems möglich!

• Es ist möglich, mehrere harte Links auf die selbe Datei zu setzen, auch in unterschiedlichen Verzeichnissen des selben Dateisystems. Aber man kann nur einen harten Link auf ein Verzeichnis setzen!

Harte und symbolische Links 2

• Neben den harten Links gibt es auch noch die sogenannten symbolischen Links (oder Softlinks).

• Im Unterschied zu harten Links verweisen symbolische Links nur auf eine andere Datei. Das bedeutet, das beim Anlegen eines symbolischen Links eine neue Datei erstellt wird, dessen Inhalt der Pfadname auf die verwiesene Datei ist.

Dieser Pfadname kann absolut (vom Wurzelverzeichnis ausgehend) oder relative (zum Verzeichnis, in dem der symbolische Link liegt) sein.

Wenn das Ziel des symbolischen Links nicht (mehr) existiert, dann verweist der symbolische Link

„ins Leere“. Man spricht dann von einem „dangling or broken link“.

(13)

• Symbolische Links sind im Gegensatz zu harten Links auch auf Verzeichnissen und dateisystemübergreifend erlaubt.

Harte und symbolische Links - Befehle (ln)

ln - Legt harte oder symbolische Links an.

» Meistgenutzte Syntax: ln [-s] ZIEL [LINK_NAME]

» Die Option -s erlaubt das Anlegen von symbolischen statt harten Links.

» $ touch datei; ln datei hardlink; ln -s datei softlink; ls -il * 1485109 -rw-rw-r-- 2 thomas thomas 0 Oct 18 07:51 datei

1485109 -rw-rw-r-- 2 thomas thomas 0 Oct 18 07:51 hardlink

1485447 lrwxrwxrwx 1 thomas thomas 5 Oct 18 07:52 softlink -> datei

$ echo inhalt &gt; datei; cat datei hardlink softlink inhalt

inhalt inhalt

$ rm datei; cat hardlink softlink inhalt

cat: softlink: No such file or directory

$ cp hardlink datei; ln softlink softlink.2; ls -l * 1484535 -rw-rw-r-- 1 thomas thomas 7 Oct 18 07:53 datei 1485109 -rw-rw-r-- 1 thomas thomas 7 Oct 18 07:53 hardlink

1485447 lrwxrwxrwx 2 thomas thomas 5 Oct 18 07:52 softlink -> datei 1485447 lrwxrwxrwx 2 thomas thomas 5 Oct 18 07:52 softlink.2 -> datei Mit Hilfe von cp -l kann man auch massenhaft harte Links erzeugen.

Harte und symbolische Links - Befehle (readlink)

readlink - Liest den Verweise eines symbolischen Links aus.

» Mit der Option -f wird der kanonische Dateiname (vollständiger Pfad mit aufgelösten symbolischen Links) zurückgegeben.

» $ readlink datei

$ readlink -f datei

/home/thomas/work/praxis_website/tmp/link/datei

$ readlink softlink datei

$ readlink -f softlink

/home/thomas/work/praxis_website/tmp/link/datei

Copyright und Lizenz

• Copyright: Thomas Leitner thomas.leitner@univie.ac.at

• Basiert teilweise auf den Folien von Harald Schilly harald.schilly@univie.ac.at

• Lizenz: Creative Commons CC BY-NC-SA

„Namensnennung-Keine kommerzielle Nutzung-Weitergabe unter gleichen Bedingungen 3.0 Österreich.“ - http://creativecommons.org/licenses/by-nc-sa/3.0/at/

Referenzen

ÄHNLICHE DOKUMENTE

[r]

Weidenhaus:: schattiger Platz für Gespräche, zum Entspannnen, Bühne für open- Air- Konzerte, Ort der Besinnung eines Rund- Radweges (&#34;Wege der Besinnung&#34;) durch die

Zudem wurde als Grundlage für die weitere Planung eine umfassende Analyse des bestehenden Raum- und Saalangebots ins Auge gefasst (siehe Anzug Oehen und Kons. Diese ist

 Kompensationspflicht für fossil-thermische Kraftwerke (max. 50 Prozent im Ausland).  CO 2 -Abgabe auf Brennstoffen und

„Es bleibt noch ein Altar infra Sacellum, subtus Or- ganum, innerhalb der Kapelle, unter der Orgel, doch wann und zu wessen Ehre er geweiht wurde, das weiß ich nicht.” Also

Man legt eine Gerade durch den Punkt und ermittelt die Anzahl der Schnitt- punkte mit dem Polygon (der Fl¨ache).. Eine ungerade Anzahl zeigt an, dass der Punkt im Polygon liegt,

Renate Goebl, Vorsitzende des Österreichischen Kunsthistorikerverbands, Günter Brucher, Institutsvorstand am Institut für Kunstgeschichte der Universität Salzburg?.

Auch hier müssen die Daten für die Maschine aber erst von Experten gela- belt werden.. Dies wird Segmentierung ge- nannt, bei der Teilbereiche der Bilder