Topic 104 - Geräte, Linux-Dateisysteme, Dateisystemstandard

Topic 104.1 - Create partitions and filesystems

Ein kleiner Ausflug in die Dateitypen

Die sieben Linux-Dateitypen anhand von Beispielen kurz erklärt:

tux@deb8-2:~$ ### Reguläre Files
tux@deb8-2:~$ ls -l /etc/passwd /usr/bin/passwd
-rw-r--r-- 1 root root  2966 Feb  2 09:02 /etc/passwd
-rwsr-xr-x 1 root root 54192 Nov 18 09:11 /usr/bin/passwd

tux@deb8-2:~$ ### Directories
tux@deb8-2:~$ ls -ld /etc /tmp
drwxr-xr-x 1 root root 4196 Feb  2 09:02 /etc
drwxrwxrwt 1 root root  462 Feb  2 11:36 /tmp

tux@deb8-2:~$ ### Symbolische Links
tux@deb8-2:~$ ls -l /var/run /sbin/telinit
lrwxrwxrwx 1 root root 14 Nov 21 20:00 /sbin/telinit -> /bin/systemctl
lrwxrwxrwx 1 root root  4 Jan  7 12:24 /var/run -> /run

tux@deb8-2:~$ ### Gerätedateien (Character / Block)
tux@deb8-2:~$ ls -l /dev/ttyS0 /dev/sda
brw-rw---- 1 root disk    8,  0 Feb  2 07:48 /dev/sda
crw-rw---- 1 root dialout 4, 64 Feb  2 07:48 /dev/ttyS0

tux@deb8-2:~$ ### Prozesse via benannter Pipe und Unix-Domain-Socket
tux@deb8-2:~$ ls -l /dev/xconsole /tmp/.X11-unix/X0
prw-r----- 1 root adm  0 Feb  2 11:20 /dev/xconsole
srwxrwxrwx 1 root root 0 Feb  2 07:48 /tmp/.X11-unix/X0

Situation: Auf / wird der Plattenplatz knapp, Grund ist das installierte Dokumentenmanagementsystem 'Agorum' (/opt beinhaltet eine große DB)

AUFGABE: Gastsystem bitte herunterfahren, Festplatte einbauen…​ (8 GB)

Kontrollieren wir, ob die neue Festplatte da ist:

  • fdisk -l

  • dmesg

  • blkid

  • lsblk

  • parted (Automatische Auswahl von /dev/sda, Partitionen auflisten: print all, quit)

  • gdisk (zur Kontrolle: gdisk -l /dev/sdb

Partitionierung mit fdisk:

Die Vorgehensweise im Überblick:

  1. m - Ausgeben der integrierten fdisk-Befehle

  2. p - Ausgeben der Partitionstabelle, die zur Zeit noch leer ist

  3. n - (new) Neue Partition anlegen

  4. e - Typ festlegen: erweiterte Partition, Größe: vorgeschlagene Start- und Endwerte mit ENTER übernehmen (ganze Platte)

  5. n - eine weitere neue Partition anlegen

  6. l - Typ festlegen: logische Partition, Größe: vorgeschlagenen Startwert mit ENTER übernehmen, Endwert: '+1G'

  7. n - eine weitere neue Partition anlegen

  8. l - Typ festlegen: logische Partition, Größe: vorgeschlagenen Startwert mit ENTER übernehmen, Endwert: '+2G'

  9. p - ein Print zur Endkontrolle

  10. w - (write) Änderungen speichern und Programm beenden

Hier der Vorgang im einzelnen:

root@deb8-2:~# fdisk /dev/sdb
Willkommen bei fdisk (util-linux 2.25.2).
Änderungen werden vorerst nur im Speicher vorgenommen, bis Sie sich
entscheiden, sie zu schreiben.
Seien Sie vorsichtig, bevor Sie den Schreibbefehl anwenden.

Gerät enthält keine erkennbare Partitionstabelle.
Created a new DOS disklabel with disk identifier 0x23695331.

Befehl (m für Hilfe): m

Hilfe:

  DOS (MBR)
   a   (De)Aktivieren der bootfähig-Markierung
   b   verschachtelte BSD-Festplattenbezeichnung bearbeiten
   c   (De)Aktivieren der DOS-Kompatibilitätsmarkierung

  Generisch
   d   Eine Partition löschen
   l   Die bekannten Dateisystemtypen anzeigen
   n   Eine neue Partition anlegen
   p   Die Partitionstabelle ausgeben
   t   Einen Partitionstyp ändern
   v   Die Partitionstabelle überprüfen

  Sonstiges
   m   Dieses Menü anzeigen
   u   Die Einheit für die Anzeige/Eingabe ändern
   x   Zusätzliche Funktionen (nur für Experten)

  Speichern und Beenden
   w   Die Tabelle auf die Festplatte schreiben und das Programm beenden
   q   Beenden ohne Speichern der Änderungen

  Eine neue Bezeichnung erstellen
   g   Eine neue leere GPT-Partitionstabelle erstellen
   G   Eine neue leere SGI (IRIX)-Partitionstabelle erstellen
   o   Eine neue leere DOS-Partitionstabelle erstellen
   s   Eine neue leere Sun-Partitionstabelle erstellen


Befehl (m für Hilfe): p
Festplatte /dev/sdb: 8 GiB, 8589934592 Bytes, 16777216 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x23695331



Befehl (m für Hilfe): n
Partitionstyp
   p   Primär (0 primär, 0 erweitert, 4 frei)
   e   Erweitert (Container für logische Partitionen)
Wählen (Vorgabe p): e
Partitionsnummer (1-4, Vorgabe 1):
Erster Sektor (2048-16777215, Vorgabe 2048):
Letzter Sektor, +Sektoren oder +Größe{K,M,G,T,P} (2048-16777215, Vorgabe 16777215):

Eine neue Partition 1 des Typs »Extended« und der Größe 8 GiB wurde erstellt.

Befehl (m für Hilfe): p
Festplatte /dev/sdb: 8 GiB, 8589934592 Bytes, 16777216 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x23695331

Device     Boot Start      End  Sectors Size Id Type
/dev/sdb1        2048 16777215 16775168   8G  5 Extended


Befehl (m für Hilfe): n
Partitionstyp
   p   Primär (0 primär, 1 erweitert, 3 frei)
   l   Logisch (nummeriert ab 5)
Wählen (Vorgabe p): l

Logische Partition 5 wird hinzugefügt
Erster Sektor (4096-16777215, Vorgabe 4096):
Letzter Sektor, +Sektoren oder +Größe{K,M,G,T,P} (4096-16777215, Vorgabe 16777215): +1M

Eine neue Partition 5 des Typs »Linux« und der Größe 1 MiB wurde erstellt.

Befehl (m für Hilfe): p
Festplatte /dev/sdb: 8 GiB, 8589934592 Bytes, 16777216 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x23695331

Device     Boot Start      End  Sectors Size Id Type
/dev/sdb1        2048 16777215 16775168   8G  5 Extended
/dev/sdb5        4096     6143     2048   1M 83 Linux


Befehl (m für Hilfe): n
Partitionstyp
   p   Primär (0 primär, 1 erweitert, 3 frei)
   l   Logisch (nummeriert ab 5)
Wählen (Vorgabe p): l

Logische Partition 6 wird hinzugefügt
Erster Sektor (8192-16777215, Vorgabe 8192):
Letzter Sektor, +Sektoren oder +Größe{K,M,G,T,P} (8192-16777215, Vorgabe 16777215): +2G

Eine neue Partition 6 des Typs »Linux« und der Größe 2 GiB wurde erstellt.

Befehl (m für Hilfe): p
Festplatte /dev/sdb: 8 GiB, 8589934592 Bytes, 16777216 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x23695331

Device     Boot Start      End  Sectors Size Id Type
/dev/sdb1        2048 16777215 16775168   8G  5 Extended
/dev/sdb5        4096     6143     2048   1M 83 Linux
/dev/sdb6        8192  4202495  4194304   2G 83 Linux


Befehl (m für Hilfe): w

Die Partitionstabelle wurde verändert.
ioctl() wird aufgerufen, um die Partitionstabelle neu einzulesen.
Festplatten werden synchronisiert.

root@deb8-2:~#

Nun Kontrollieren wir die erfolgreiche Partitionierung:

root@deb8-2:~# ls -l /dev/sdb*
brw-rw---- 1 root disk 8, 16 Jan 27 12:58 /dev/sdb
brw-rw---- 1 root disk 8, 17 Jan 27 12:58 /dev/sdb1
brw-rw---- 1 root disk 8, 21 Jan 27 12:58 /dev/sdb5
brw-rw---- 1 root disk 8, 22 Jan 27 12:58 /dev/sdb6
root@deb8-2:~#

Es muss hierbei im Hintergrund so etwas wie 'partprobe' gelaufen sein, um udev über die Änderungen zu informieren und anzuweisen, neue Gerätedateien zu erzeugen.

Als nächstes können auch schon Dateisysteme aufgebracht werden:

root@deb8-2:~# mkfs /dev/sdb1
mke2fs 1.42.12 (29-Aug-2014)
In /dev/sdb1 wurde eine dos-Partitionstabelle gefunden
Trotzdem fortfahren? (j,n)

root@deb8-2:~# mkfs /dev/sdb5
mke2fs 1.42.12 (29-Aug-2014)
Ein Dateisystems mit 262144 (4k) Blöcken und 65536 Inodes wird erzeugt.
UUID des Dateisystems: 39aead11-c212-4372-8933-fa7ea1070152
Superblock-Sicherungskopien gespeichert in den Blöcken:
	32768, 98304, 163840, 229376

beim Anfordern von Speicher für die Gruppentabellen: erledigt
Inode-Tabellen werden geschrieben: erledigt
Die Superblöcke und die Informationen über die Dateisystemnutzung werden
geschrieben: erledigt

Diese neuen Dateisysteme wollen wir natürlich gleich einbinden:

root@deb8-2:~# mount /dev/sdb5 /mnt/
root@deb8-2:~#
root@deb8-2:~# mount | tail -3
tmpfs on /run/user/118 type tmpfs (rw,nosuid,nodev,relatime,size=102444k,mode=700,uid=118,gid=126)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=102444k,mode=700,uid=1000,gid=1000)
/dev/sdb5 on /mnt type ext2 (rw,relatime)
root@deb8-2:~#
root@deb8-2:~#
root@deb8-2:~# mke2fs -j  /dev/sdb6
mke2fs 1.42.12 (29-Aug-2014)
Ein Dateisystems mit 524288 (4k) Blöcken und 131072 Inodes wird erzeugt.
UUID des Dateisystems: 31c9d432-5648-4441-8067-e441a0f35f94
Superblock-Sicherungskopien gespeichert in den Blöcken:
	32768, 98304, 163840, 229376, 294912

beim Anfordern von Speicher für die Gruppentabellen: erledigt
Inode-Tabellen werden geschrieben: erledigt
Das Journal (16384 Blöcke) wird angelegt: erledgt
Die Superblöcke und die Informationen über die Dateisystemnutzung werden
geschrieben: erledigt

root@deb8-2:~#

Wir lassen uns den aktuellen Stand der Arbeiten ausgeben:

root@deb8-2:~# fdisk -l /dev/sdb | grep ^/dev
/dev/sdb1          2048 16777215 16775168   8G  5 Extended
/dev/sdb5          4096  2101247  2097152   1G 83 Linux
/dev/sdb6       2103296  6297599  4194304   2G 83 Linux
root@deb8-2:~#

Swap-Space erweitern

Die zweite Partition /dev/sdb6 soll für swap-Nutzung umgewidmet werden:

  • Dateisystemtyp ändern: Von 83 (Linux: ext*, xfs, reiserfs, btrfs, jfs) auf 82 (Swap)

    • fdisk /dev/sdb ⇒ Taste "t" drücken, eine "6" eingeben, dann mit "L" alle Typen auflisten

  • Vor der Erweiterung den aktuellen Zustand feststellen:

    • free -h

    • swapon -s

  • Partition für swap vorbereiten:

    root@deb8-2:~# mkswap /dev/sdb6
    mkswap: /dev/sdb6: Warnung: Alte ext3-Signatur wird gelöscht.
    Auslagerungsbereich Version 1 wird angelegt, Größe = 2097148 KiB
    keine Bezeichnung, UUID=71e5903e-41f2-41f2-8a20-70c649a042be
    root@deb8-2:~#
  • Die swap-Partition zuschalten: swapon

    root@deb8-2:~# swapon -v /dev/sdb6
    swapon /dev/sdb6
    swapon: /dev/sdb6: Swap-Signatur gefunden: Version 1d, Seitengröße 4, Byte-Reihenfolge gleich
    swapon: /dev/sdb6: Seitengröße=4096, Swapgröße=2147483648, Gerätegröße=2147483648
    root@deb8-2:~#
  • Vor der Erweiterung den aktuellen Zustand feststellen: Wie oben free und swapon -s

  • Wieder freigeben der swap-Partition:

    root@deb8-2:~# swapoff -v /dev/sdb6
    swapoff /dev/sdb6
    root@deb8-2:~#

**NICHT VERGESSEN: Dies ist nur temporär, am Ende muss die Datei '/etc/fstab' bearbeitet werden!

Dateisystem erzeugen und benutzen

ZIEL: Auf einer weiteren Partition sollen 4 GB für spätere Nutzung für /opt bereitgestellt werden. Als Dateisystem zuerst bitte ext2 verwenden, später soll ein Journal hinzugefügt werden (ext3).

Die Schritte im Überblick:

  • Die zweite Festplatte partitionieren (ID = 83)

  • Dateisystem aufbringen

  • Temporär nach /mnt mounten (selbständig Erfolg prüfen mit zwei verschiedenen Tools)

Ausführung dieser 3 Schritte:

root@deb8-2:~# fdisk /dev/sdb

Willkommen bei fdisk (util-linux 2.25.2).
Änderungen werden vorerst nur im Speicher vorgenommen, bis Sie sich
entscheiden, sie zu schreiben.
Seien Sie vorsichtig, bevor Sie den Schreibbefehl anwenden.


Befehl (m für Hilfe): n
Partitionstyp
   p   Primär (0 primär, 1 erweitert, 3 frei)
   l   Logisch (nummeriert ab 5)
Wählen (Vorgabe p): l

Logische Partition 7 wird hinzugefügt
Erster Sektor (6299648-16777215, Vorgabe 6299648):
Letzter Sektor, +Sektoren oder +Größe{K,M,G,T,P} (6299648-16777215, Vorgabe 16777215): +4G

Eine neue Partition 7 des Typs »Linux« und der Größe 4 GiB wurde erstellt.

Befehl (m für Hilfe): p
Festplatte /dev/sdb: 8 GiB, 8589934592 Bytes, 16777216 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x23695331

Device     Boot   Start      End  Sectors Size Id Type
/dev/sdb1          2048 16777215 16775168   8G  5 Extended
/dev/sdb5          4096  2101247  2097152   1G 83 Linux
/dev/sdb6       2103296  6297599  4194304   2G 82 Linux swap / Solaris
/dev/sdb7       6299648 14688255  8388608   4G 83 Linux


Befehl (m für Hilfe): w
Die Partitionstabelle wurde verändert.
ioctl() wird aufgerufen, um die Partitionstabelle neu einzulesen.
Das erneute Einlesen der Partitionstabelle ist fehlgeschlagen.: Das Gerät oder die Ressource ist belegt

Der Kernel benutzt noch die alte Tabelle. Die neue Tabelle wird beim nächsten Neustart verwendet werden oder
nachdem Sie partprobe(8) oder kpartx(8) ausgeführt haben.

root@deb8-2:~#

root@deb8-2:~# ls -l /dev/sdb*
brw-rw---- 1 root disk 8, 16 Jan 28 10:18 /dev/sdb
brw-rw---- 1 root disk 8, 17 Jan 28 10:18 /dev/sdb1
brw-rw---- 1 root disk 8, 21 Jan 28 10:18 /dev/sdb5
brw-rw---- 1 root disk 8, 22 Jan 28 10:18 /dev/sdb6
root@deb8-2:~#
root@deb8-2:~# partprobe
Warning: Unable to open /dev/sr0 read-write (Das Dateisystem ist nur lesbar). /dev/sr0 has been opened read-only.
Warning: Unable to open /dev/sr0 read-write (Das Dateisystem ist nur lesbar). /dev/sr0 has been opened read-only.
root@deb8-2:~#
root@deb8-2:~#
root@deb8-2:~# ls -l /dev/sdb*
brw-rw---- 1 root disk 8, 16 Jan 28 10:19 /dev/sdb
brw-rw---- 1 root disk 8, 17 Jan 28 10:19 /dev/sdb1
brw-rw---- 1 root disk 8, 21 Jan 28 10:19 /dev/sdb5
brw-rw---- 1 root disk 8, 22 Jan 28 10:19 /dev/sdb6
brw-rw---- 1 root disk 8, 23 Jan 28 10:19 /dev/sdb7        <===== Dank 'partprobe' wurde das Gerät erzeugt
root@deb8-2:~#

root@deb8-2:~# ### Jetzt erzeugen wir ext2 (ohne Journal) auf dreierlei Art:
root@deb8-2:~# mkfs /dev/sdb7
mke2fs 1.42.12 (29-Aug-2014)
Ein Dateisystems mit 1048576 (4k) Blöcken und 262144 Inodes wird erzeugt.
UUID des Dateisystems: 68fdb24b-e5f9-4edf-bcd2-8a0c4ef34edc
Superblock-Sicherungskopien gespeichert in den Blöcken:
        32768, 98304, 163840, 229376, 294912, 819200, 884736

beim Anfordern von Speicher für die Gruppentabellen: erledigt
Inode-Tabellen werden geschrieben: erledigt
Die Superblöcke und die Informationen über die Dateisystemnutzung werden
geschrieben: erledigt

root@deb8-2:~#
root@deb8-2:~# mkfs -t ext2 /dev/sdb7
mke2fs 1.42.12 (29-Aug-2014)
/dev/sdb7 hat ein ext2-Dateisystem
        auf Thu Jan 28 10:21:23 2016
 erzeugtTrotzdem fortfahren? (j,n) j
Ein Dateisystems mit 1048576 (4k) Blöcken und 262144 Inodes wird erzeugt.
UUID des Dateisystems: 71254867-c4b3-403c-aebc-1340e15cbd23
Superblock-Sicherungskopien gespeichert in den Blöcken:
        32768, 98304, 163840, 229376, 294912, 819200, 884736

beim Anfordern von Speicher für die Gruppentabellen: erledigt
Inode-Tabellen werden geschrieben: erledigt
Die Superblöcke und die Informationen über die Dateisystemnutzung werden
geschrieben: erledigt

root@deb8-2:~#
root@deb8-2:~# mke2fs  /dev/sdb7
mke2fs 1.42.12 (29-Aug-2014)
/dev/sdb7 hat ein ext2-Dateisystem
        auf Thu Jan 28 10:21:45 2016
 erzeugtTrotzdem fortfahren? (j,n) j
Ein Dateisystems mit 1048576 (4k) Blöcken und 262144 Inodes wird erzeugt.
UUID des Dateisystems: a13f6800-8a04-4b60-95b7-0a32f0b58ad7
Superblock-Sicherungskopien gespeichert in den Blöcken:
        32768, 98304, 163840, 229376, 294912, 819200, 884736

beim Anfordern von Speicher für die Gruppentabellen: erledigt
Inode-Tabellen werden geschrieben: erledigt
Die Superblöcke und die Informationen über die Dateisystemnutzung werden
geschrieben: erledigt

root@deb8-2:~#
root@deb8-2:~# mount /dev/sdb7 /mnt/
root@deb8-2:~#
root@deb8-2:~# mount | tail -1
/dev/sdb7 on /mnt type ext2 (rw,relatime)
root@deb8-2:~#
root@deb8-2:~# df -h /mnt
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/sdb7       4,0G    8,0M  3,8G    1% /mnt
root@deb8-2:~#
root@deb8-2:~# ls -l /mnt/
insgesamt 16
drwx------ 2 root root 16384 Jan 28 10:22 lost+found
root@deb8-2:~#

Neue Partition für /opt verwenden

Problem: /opt lässt sich nicht umbennen, um die neue Partition, die jetzt unter /mnt gemountet ist, anstelle dessen für /opt zu verwenden! Grund: Sie wird gerade benutzt, siehe das Listing offener Files:

  • lsof / | grep opt

  • fuser -mv /opt

  • ls -la /opt

⇒ Am besten sich eine Auszeit nehmen und in den sicheren Runlevel 1 wechseln, hier die Möglichkeiten bei Debian 8:

  • init 1

  • telinit 1

  • systemctl isolate runlevel1.target

  • reboot, dann den GRUB-Boorprompt editieren und dem Kernel eine "1" mitgeben (linux /boot/vmlinuz-VERSION …​ root=…​ …​ 1)

# In den abgesicherten Modus fahren
systemctl isolate runlevel1.target

# Das Originalverzeichnis umbenenn
mv /opt /opt.old
mkdir /opt

# Falls das Gerät noch von vorherigen Tests gemountet ist
umount /mnt

# Für robuste Gerätebezeichnungen Universally Unique Identifier benutzen
blkid /dev/sdb7 >> /etc/fstab

# File System Table editieren
vi /etc/fstab

Hier bitte Anpassen:

  • Einen Hash-Tag vor die lange Zeile setzen

  • Nach /dev/sdb7 einen Zeilenumbruch einfügen

  • Die Double Ticks (Gänsefüßchen) rings um die UUID entfernen

  • Die Zeile vervollständigen:

    # /dev/sdb7
    UUID=HEXWERT-OHNE-TICKMARKS  /opt  ext2  defaults   0 2

Die nächsten Schritte sind, das Ganze noch einmal zu kontrollieren, das Gerät zu mounten und die Daten auf dem neuen Volume bereitzustellen:

# Kontrolle
grep /opt /etc/fstab

# Jetzt mounten (alle Einträge der fstab, die nicht die Option 'noauto' aufweisen)
mount -a
df -h /opt
ls -la /opt

# Die originalen Daten herüberkopieren
cp -a /opt.old/* /opt

# In den grafischen Runlevel fahren
systemctl isolate runlevel5.target

Nach dem Wiedereinloggen auf der grafischen Oberfläche, den alten Ordner bitte nach ausgiebigen Tests noch mit \rm -r /opt.old löschen (der Backslash deaktiviert für den Moment der Ausführung einen möglicherweise vorhanden alias).

Damit ist die Aufgabenstellung der Datenmigration abgeschlossen.

Weitere Aufgaben

  • Betreffend /dev/sdb7: An das vorhande, in Benutzung befindliche ext2-Dateisystem ein Journal anfügen

  • Eine weitere Partition anlegen, die mit xfs zu formatieren ist

  • Auf die erste Partition der zweiten Festplatte das "Virtual File Allocation Table" Dateisystem aufbringen

Hier die drei Schritte relativ unkommentiert via Shell-Mitschnitt:

root@deb8-2:~# fdisk /dev/sdb

Willkommen bei fdisk (util-linux 2.25.2).
Änderungen werden vorerst nur im Speicher vorgenommen, bis Sie sich
entscheiden, sie zu schreiben.
Seien Sie vorsichtig, bevor Sie den Schreibbefehl anwenden.


Befehl (m für Hilfe): n
Partitionstyp
   p   Primär (0 primär, 1 erweitert, 3 frei)
   l   Logisch (nummeriert ab 5)
Wählen (Vorgabe p): l

Logische Partition 8 wird hinzugefügt
Erster Sektor (14690304-16777215, Vorgabe 14690304):
Letzter Sektor, +Sektoren oder +Größe{K,M,G,T,P} (14690304-16777215, Vorgabe 16777215):

Eine neue Partition 8 des Typs »Linux« und der Größe 1019 MiB wurde erstellt.

Befehl (m für Hilfe): p
Festplatte /dev/sdb: 8 GiB, 8589934592 Bytes, 16777216 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x23695331

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sdb1           2048 16777215 16775168    8G  5 Extended
/dev/sdb5           4096  2101247  2097152    1G 83 Linux
/dev/sdb6        2103296  6297599  4194304    2G 82 Linux swap / Solaris
/dev/sdb7        6299648 14688255  8388608    4G 83 Linux
/dev/sdb8       14690304 16777215  2086912 1019M 83 Linux


Befehl (m für Hilfe): w
Die Partitionstabelle wurde verändert.
ioctl() wird aufgerufen, um die Partitionstabelle neu einzulesen.
Das erneute Einlesen der Partitionstabelle ist fehlgeschlagen.: Das Gerät oder die Ressource ist belegt

Der Kernel benutzt noch die alte Tabelle. Die neue Tabelle wird beim nächsten Neustart verwendet werden oder
nachdem Sie partprobe(8) oder kpartx(8) ausgeführt haben.

root@deb8-2:~#



root@deb8-2:~# ls -l /dev/sdb8
ls: Zugriff auf /dev/sdb8 nicht möglich: Datei oder Verzeichnis nicht gefunden
root@deb8-2:~#
root@deb8-2:~# partprobe
Warning: Unable to open /dev/sr0 read-write (Das Dateisystem ist nur lesbar). /dev/sr0 has been opened read-only.
Warning: Unable to open /dev/sr0 read-write (Das Dateisystem ist nur lesbar). /dev/sr0 has been opened read-only.
root@deb8-2:~#
root@deb8-2:~# ls -l /dev/sdb8
brw-rw---- 1 root disk 8, 24 Jan 28 11:50 /dev/sdb8
root@deb8-2:~#
root@deb8-2:~#


### Wie man sieht fehlen einfach nur die XFS-Werkzeuge (Der Kernel muss es freilich unterstützen!)
root@deb8-2:~# mkfs.
mkfs.bfs      mkfs.cramfs   mkfs.ext3     mkfs.ext4dev  mkfs.minix    mkfs.ntfs
mkfs.btrfs    mkfs.ext2     mkfs.ext4     mkfs.fat      mkfs.msdos    mkfs.vfat
root@deb8-2:~# mkfs.

### Also die Programme einfach installieren:
apt-get install xfsprogs


root@deb8-2:~# mkfs.xfs /dev/sdb8
meta-data=/dev/sdb8              isize=256    agcount=4, agsize=65216 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=260864, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =Internes Protokoll     bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =keine                  extsz=4096   blocks=0, rtextents=0
root@deb8-2:~#

root@deb8-2:~# mkfs.vfat -F32 /dev/sdb5
mkfs.fat 3.0.27 (2014-11-12)
root@deb8-2:~#

Benutzung der xfs-Partition als HOME für neue User (weil es natives Quota beherrscht)

  • Mountpunkt: /Users

  • fstab-Eintrag erzeugen und Gerät mounten

  • User mit $HOME auf dieser Partition erzeugen

    • useradd -m -d /Users/susi -s /bin/bash susi && passwd susi

Hier ist die Lösung:

root@deb8-2:~# mkdir /Users
root@deb8-2:~#
root@deb8-2:~# blkid /dev/sdb8 >> /etc/fstab
root@deb8-2:~#
root@deb8-2:~# tilde /etc/fstab
root@deb8-2:~#
root@deb8-2:~# tail -3 /etc/fstab

#/dev/sdb8:
UUID=2cc89fa8-1601-47eb-b356-ed0b804dad51  /Users  xfs  defaults  0 2
root@deb8-2:~#
root@deb8-2:~# mount -a
root@deb8-2:~#
root@deb8-2:~# mount | tail -1
/dev/sdb8 on /Users type xfs (rw,relatime,attr2,inode64,noquota)
root@deb8-2:~#

root@deb8-2:~# useradd -m -d /Users/susi -s /bin/bash scgsusi && passwd susi
Geben Sie ein neues UNIX-Passwort ein:
Geben Sie das neue UNIX-Passwort erneut ein:
passwd: Passwort erfolgreich geändert
root@deb8-2:~#
root@deb8-2:~# ls -la /Users/susi/
insgesamt 12
drwxr-xr-x 5 susi susi   92 Jan 28 12:19 .
drwxr-xr-x 3 root root   17 Jan 28 12:19 ..
-rw-r--r-- 1 susi susi  220 Nov 13  2014 .bash_logout
-rw-r--r-- 1 susi susi 3515 Nov 13  2014 .bashrc
drwxr-xr-x 2 susi susi    6 Jan 22 10:23 Desktop
drwxr-xr-x 2 susi susi    6 Jan 22 10:23 Musik
-rw-r--r-- 1 susi susi  675 Nov 13  2014 .profile
drwxr-xr-x 2 susi susi    6 Jan 22 10:23 Video
root@deb8-2:~#

### Testweise mal schnell root werden
root@deb8-2:~# su - susi
susi@deb8-2:~$
susi@deb8-2:~$ pwd
/Users/susi
susi@deb8-2:~$
susi@deb8-2:~$ id
uid=1004(susi) gid=1004(susi) Gruppen=1004(susi)
susi@deb8-2:~$
susi@deb8-2:~$ groups
susi
susi@deb8-2:~$ exit
Abgemeldet
root@deb8-2:~#

Benutzung der vfat-Partition als Austausch-Ordner für Windows-User (weil wir nicht den Tuxera-Treiber für rw-NTFS einsetzen wollen und der Kernel selbst es nicht unterstützt).

  • Mountpunkt: /media/austausch

  • fstab-Eintrag erzeugen und Gerät nicht automatisch mounten lassen: Der User möge es selber tun.) ⇒ defaults,noauto,user

  • Weiteren Handlungsbedarf gibt es beim Zeichensatzmapping für UTF-8 - ISO8559-1 (siehe http://www.heise.de/ct/hotline/Linux-vermatscht-Umlaute-326142.html)

    Und hier ist die Lösung:

    root@deb8-2:~# mkdir /media/austausch
    root@deb8-2:~#
    root@deb8-2:~# blkid /dev/sdb5 >> /etc/fstab
    root@deb8-2:~#
    root@deb8-2:~# tilde /etc/fstab
    root@deb8-2:~#
    root@deb8-2:~# tail -2 /etc/fstab
    #/dev/sdb5:
    UUID=490D-7B8A  /media/austausch vfat defaults,noauto,user,iocharset=utf8  0  0
    root@deb8-2:~#
    root@deb8-2:~# ### Jetzt hibt uns 'mount -a' nicht mehr (wegen "noauto"), deshalb:
    root@deb8-2:~#
    root@deb8-2:~# su - susi
    susi@deb8-2:~$
    susi@deb8-2:~$ df -h /media/austausch/
    Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
    /dev/sda5        28G    6,5G   20G   25% /
    susi@deb8-2:~$
    susi@deb8-2:~$ mount /media/austausch/
    susi@deb8-2:~$
    susi@deb8-2:~$ df -h /media/austausch/
    Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
    /dev/sdb5      1022M    4,0K 1022M    1% /media/austausch
    susi@deb8-2:~$
    susi@deb8-2:~$
    susi@deb8-2:~$
    susi@deb8-2:~$ #### Verwirrend, dass 'disk free' uns den Superblock via Angabe irgendeines
        Unterverzeichnisses ansprechen lässt:
    susi@deb8-2:~$ df -h /usr/share/doc/bash
    Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
    /dev/sda5        28G    6,5G   20G   25% /
    susi@deb8-2:~$
    susi@deb8-2:~$
    susi@deb8-2:~$ exit
    Abgemeldet
    root@deb8-2:~#

Abschließende Aufgaben:

Topic 104.2 - Maintain the integrity of filesystems

Siehe Seite 170 ff

Wichtige Tools für den Dateisystem-Check

  • fsck - file system check (= Frontend für verschiedene Dateisysteme, die einzelnen Tool sind z.B.

    • e2fsck

    • fsck.ext3

    • fsck.ext4

    • fsck.xfs

  • shutdown - Das Kommando ist in der Lage, mit der Option '-f' einen evl. anstehenden Check zu unterbinden, mit '-F' wird dagegen beim nächsten Startvorgang eine Prüfung erzwungen (Force).

Wichtige Optionen:

  • -f - force (erzwingen), wird erforderlich, wenn die per Default versuchte, automatische Reparatur fehlgeschlagen ist, z.B. könnte das so aussehen:

    root@deb8-2:~# fsck -f -n /dev/sdb7
    fsck von util-linux 2.25.2
    e2fsck 1.42.12 (29-Aug-2014)
    Warnung! /dev/sdb7 ist eingehängt.
    Durchgang 1: Inodes, Blöcke und Größen werden geprüft
    Durchgang 2: Verzeichnisstruktur wird geprüft
    Durchgang 3: Verzeichnisverknüpfungen werden geprüft
    Durchgang 4: Referenzzähler werden überprüft
    Durchgang 5: Zusammengefasste Gruppeninformation wird geprüft
    Die Anzahl freier Blöcke ist falsch (1030066, gezählt=989364).
    Reparieren? nein
    
    Die Anzahl freier Inodes ist falsch (262133, gezählt=259988).
    Reparieren? nein
    
    /dev/sdb7: 11/262144 Dateien (1254.5% nicht zusammenhängend), 18510/1048576 Blöcke
    root@deb8-2:~#
  • -n - no repair, dry run (für Tests gut, keine Garantie dass die Aussagen stimmen!), besser also: Dateisystem aushängen

  • -A - alle Dateisystem, die in der /etc/fstab beschrieben sind prüfen

  • -y - Alle Fragen nach "fixed?" automatisch mit 'yes' beantworten

Tools für das Tuning und für Recovery

  • tune2fs - Tuningmöglichkeiten (S. 172 f)

    • Journal einem ext2-Dateisystem beifügen, Option: '-j'

    • Anzahl der max. Mountvorgänge: '-c' (count)

    • Intervall zwischen den Prüfungen [Tage]: '-i' (ohne Zeiteingabe wird die regelmäßige Überprüfung ausgeschaltet)

    • Den Zeitpunkt für den zuletzt stattgefunden Check manuell festlegen: '-T <TIME>'

  • dumpe2fs - einen Dateisystemdump erstellen, mit '-h' nur den Header ausgeben: dumpe2fs -h /dev/sdb7 | grep -i check

  • debugfs - ein interaktives Debugging und Recoverywerkzeug (Tipp: anstelle 'extundelete' verwenden)

  • xfs_growfs - ein XFS-Dateisystem vergrößern

  • xfs_quota - Diskquotas für XFS einrichten

  • df -i - Anzeigen der freien Inodes (Dateiknotennummer), ACHTUNG: dummerweise wird eine feste Anzahl bei den ext-Dateisystemen reserviert:

    root@deb8-2:/opt# df -i .
    Dateisystem    Inodes IBenutzt  IFrei IUse% Eingehängt auf
    /dev/sdb7      262144     2156 259988    1% /opt
    root@deb8-2:/opt#
    root@deb8-2:/opt# df -h .
    Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
    /dev/sdb7       4,0G    167M  3,6G    5% /opt
    root@deb8-2:/opt#
    root@deb8-2:/opt# while true; do echo > datei-`date +%s`.txt; done
    root@deb8-2:/opt#

Parallel kann man in einem anderen Terminal Monitoring betreiben: watch -n1 -d df -i /opt/

Topic 104.3 - Control mounting and unmounting of filesystems

Wichtiges Grundwissen: Aufbau der Datei /etc/fstab:

#<Ressource>      <Mountpunkt>    <Dateisystemtyp>     <Optionen>    <Sichern mit dump?>    <Prüfen mit fsck?>
# Wurzel:
UUID=9f9e3961-38c4-4dc8-b809-88b063ea905a /               btrfs   defaults        0       1

# Optionale Daten:
UUID=a13f6800-8a04-4b60-95b7-0a32f0b58ad7  /opt  ext2  defaults 0 2

# Network File System - Freigabe:
10.0.0.1:/srv/backup      /media/backup    nfs      soft,bg     0   0

# Windows-Freigabe (SMB, samba-Server):
//10.0.0.1/backup      /media/samba        cifs     guest,noexec,nosuid,umask=777   0    0

Die Optionen lassen sich natürlich auch beim manuellen Mounten übergeben:

=> mount -o guest //10.0.0.1/backup /media/samba
=> mount -o remount,rw /       # Siehe "root-Passwort vergessen":  GRUB/Kernel-Parameter: `init=/bin/sh` ...

Aufgabe: Studieren Sie die mount-Optionen, siehe Seite 182 f:

  • auto

  • noauto

  • usrquota

  • grpquota

  • suid (Dateien mit erhöhen Rechten akzeptieren)

  • nosuid (Dateien mit erhöhen Rechten ignorieren)

  • exec

  • noexec

  • ro

  • rw

  • user (Ein beliebiger Nutzer darf diese Ressource mounten, wobei nur derjenige, welcher sie gemountet hatte, auch wieder aushängen kann.)

  • nouser

  • users (Ein beliebiger Nutzer darf diese Ressource mounten; hier dürfen auch x-beliebige sie wieder aushängen)

  • defaults (= rw,suid,dev, exec,auto,nouser,async)

  • sync (Schreiboperationen sofort synchronisieren, keinen Cache nutzen)

  • async (asynchron arbeiten, bei gelegener Zeit Cache auf Platte schreiben)

Topic 104.4 - Manage disk quotas

ZIEL: Speicherplatzkontingentierung für viele Nutzer auf einer /home-Partition

Siehe Seite 184 ff

Praktische Vorgehensweise:

Software installieren

Unter Debian ist dies schnell erledigt:

apt-get install quota

Datei /etc/fstab anpassen

Die zu reglementierende Partition muss in Feld 4 als weitere Option entweder 'usrquota', 'grpquota' oder beides erhalten.

Danach muss die Partition neu eingehängt werden, um die Einstellung aktiv zu setzen. Hier lässt sich oft sehr gut mit der mount-Option 'remount' arbeiten:

mount -o remount /opt

Im Beispiel hier mal die betreffenden Zeilen:

root@deb8-2:~# grep quota /etc/fstab
UUID=a13f6800-8a04-4b60-95b7-0a32f0b58ad7  /opt  ext2  defaults,grpquota 0 2
root@deb8-2:~#
root@deb8-2:~#
root@deb8-2:~#
root@deb8-2:~# mount | grep quota
/dev/sda8 on /home type xfs (rw,relatime,attr2,inode64,noquota)
root@deb8-2:~#
root@deb8-2:~# mount -o remount /opt
root@deb8-2:~#
root@deb8-2:~# mount | grep quota
/dev/sda8 on /home type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sdb7 on /opt type ext2 (rw,relatime,grpquota)       <<<<<----------- Jetzt taucht hier 'grpquota' auf!
root@deb8-2:~#

Prüfen und einrichten der Quotierung

Dies geschieht mit

quotacheck -avum [-g]   # => Datei /aquota.user [/aquota.group] wird dabei erstellt

In manchen Fällen ist es erforderlich, den Schalter '-m' ('--no-remount') mitzunehmen, da ansonsten die Aktion fehlschlägt. Beim Check versucht nämlich dieses Kommando, die Partition read-only zu mounten.

root@deb8-2:~# quotacheck -agv
quotacheck: Prüfe /dev/sdb7 [/opt] fertig
quotacheck: Old user file name could not been determined. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file /opt/aquota.group: Datei oder Verzeichnis nicht gefunden. Usage
  will not be subtracted.
quotacheck: 546 Verzeichnisse und 1602 Dateien geprüft
quotacheck: Alte Datei nicht gefunden.
root@deb8-2:~#
root@deb8-2:~# ls -l /opt/
insgesamt 32
-rw------- 1 root root  6144 Jan 29 12:33 aquota.group
drwxr-xr-x 7 root root  4096 Jan 18 10:03 brackets
drwx------ 2 root root 16384 Jan 28 10:22 lost+found
drwxr-xr-x 9 root root  4096 Jan  7 12:57 VBoxGuestAdditions-4.3.34
root@deb8-2:~#

Quotas aktivieren

Je nachdem welche Quotaform man möchte, muss sie nun aktiviert werden:

=> quotaon -avu [-g]

In unserem Beispiel sieht das so aus:

root@deb8-2:~# quotaon -agv
/dev/sdb7 [/opt]: group Quotas angeschalten
root@deb8-2:~#

Ausflug ins Thema Benutzerverwaltung

root@deb8-2:~# groupadd technik
root@deb8-2:~#
root@deb8-2:~# useradd -m -g technik -G audio,video,lpadmin,plugdev -d /opt/heide heide
root@deb8-2:~# passwd heide
Geben Sie ein neues UNIX-Passwort ein:
Geben Sie das neue UNIX-Passwort erneut ein:
passwd: Passwort erfolgreich geändert
root@deb8-2:~#
root@deb8-2:~# ls -l /opt/
insgesamt 36
-rw------- 1 root  root     7168 Jan 29 12:33 aquota.group
drwxr-xr-x 7 root  root     4096 Jan 18 10:03 brackets
drwxr-xr-x 5 heide technik  4096 Jan 29 12:40 heide
drwx------ 2 root  root    16384 Jan 28 10:22 lost+found
drwxr-xr-x 9 root  root     4096 Jan  7 12:57 VBoxGuestAdditions-4.3.34
root@deb8-2:~#
root@deb8-2:~#
root@deb8-2:~# su - heide
$
$ bash
heide@deb8-2:~$
heide@deb8-2:~$ pwd
/opt/heide
heide@deb8-2:~$
heide@deb8-2:~$ quota
heide@deb8-2:~$
heide@deb8-2:~$ quota -g
Dateisystemquotas für group audio (gid 29): kein
Dateisystemquotas für group video (gid 44): kein
Dateisystemquotas für group plugdev (gid 46): kein
Dateisystemquotas für group lpadmin (gid 110): kein
Dateisystemquotas für group technik (gid 1005): kein
heide@deb8-2:~$
heide@deb8-2:~$ exit
$ exit
root@deb8-2:~#

Quotas für User/Group editieren

Allgemeine Syntax:

=> edquota -u max
=> [Für Gruppen-Quota: edquota -g users]

Hinweise zur Berechnung:

  • Als Einheit werden Blöcke in der Größe von 1kB angegeben.

  • Gehen wir von der Standard-Dateisystemblockgröße von 4096 Byte aus (siehe dumpe2fs -h /dev/sdb7| grep Block\ size), verbrauchen wir zwangläufig 4 Blöcke (zu je 1 kB), um eine winzige Datei von einem Byte speichern zu können:
    ⇒ echo > 1-byte-datei

  • 1MB beansprucht dann: 1kB * 1024 = 1024kB = 1024 Blöcke

  • Einfache Umrechnungshilfe: Angezeigte Blockgröße / 1024 = Größe in MB

Editieren wir nun als root die Gruppen-Quota und setzen testhalber einen Minimalwert, indem wir zum aktuellen Verbrauch (Spalte 2: Blöcke, im folgenden Beispiel '20') vier Blöcke hinzuaddieren. Am besten tun wir dies beim Soft- und Hardlimit gleichermaßen (weich = 24, hart = 24). Um einen kleineren Wert (z.B. 3 Blöcke) zu erhöhen, macht keinen Sinn - das Dateisystem gibt das 4-kByte-Raster vor!

Setzen wir dies nun praktisch um, sieht das so aus:

edquota -g technik

Wir befinden uns nun im Editiermodus, wobei der vorkonfigurierte Standardeditor aufgerufen wird
(Ein Ausweg wäre EDITOR=vi edquota -g technik):

Datenträgerquotas für group technik (gid 1005):
  Dateisystem                  Blöcke       weich      hart     Inodes     weich    hart
  /dev/sdb7                        20         24         24          5        0        0

Mit dieser Einstellung testen wir nun die Angelegenheit:

root@deb8-2:~# su - heide
$
$ bash
heide@deb8-2:~$ pwd
/opt/heide
heide@deb8-2:~$
heide@deb8-2:~$ ls -la
insgesamt 64
drwxr-xr-x 2 heide technik  4096 Jan 29 13:55 .
drwxr-xr-x 6 root  root    45056 Jan 29 12:40 ..
-rw------- 1 heide technik   303 Jan 29 13:33 .bash_history
-rw-r--r-- 1 heide technik   220 Nov 13  2014 .bash_logout
-rw-r--r-- 1 heide technik  3515 Nov 13  2014 .bashrc
-rw-r--r-- 1 heide technik   675 Nov 13  2014 .profile
heide@deb8-2:~$
heide@deb8-2:~$ echo > 1-byte-datei
heide@deb8-2:~$
heide@deb8-2:~$ echo > 1-byte-datei_No2
sdb7: write failed, group block limit reached.
bash: echo: Schreibfehler: Der zugewiesene Plattenplatz (Quota) ist überschritten.
heide@deb8-2:~$

Kontrolle der Einstellungen

  • Als User kan man sein Kontingent so prüfen: quota [-g]

  • root kann sich einen kompletten Report so ausgeben: repquota -a [-g]

Sicherheitshinweis

Wird mit Gruppen-Quotas gearbeitet, kann ein Benutzer die Restriktionen u.U. folgendermaßen überwinden:

  • Er schaut mit 'id' nach, in welchen (sekundären) Gruppen er außerdem Mitglied ist und betritt sie mit 'newgrp <GRUPPE>'.

    z.B.: 'newgrp audio' (per Default ohne Passwortabfrage möglich)
  • Mit dieser neuen primären Gruppe, für die es keine Beschränkung gibt, kann er nun wieder Daten ablegen!

Abhilfe: Entfernen des SUID-Bits von /usr/bin/newgrp (Damit schaltet man aber diesen Mechanismus komplett ab.)

Topic 104.5 - Manage file permissions and ownership

Zugriffsrechte im symbolischen Modus

Neben dem schon bekannten oktalen Modus, gibt es auch den symbolischen, der leichter bei einfachen Änderungen zu handhaben ist. In der Regel arbeitet er relativ zu dem bereits bestehenden Recht:

Z.B. ein Skript ausführbar machen:

echo "echo Hallo Welt..." > myworld.sh
chmod +x myworld.sh            # => -rwxr-xr-x     (ist die Kurzform von 'chmod a+x myworld.sh')

Möchte man, dass nur der Besitzer das Skript ausführen kann, müssen jetzt das x-Recht bei Gruppe und Others entziehen:

chmod go-x myworld.sh       # -rwxr--r--

Soll eine Datei keiner nutzen dürfen, kann das auf zweierlei Weise geschehen:

chmod ugo=--- myworld.sh
# Das folgende ist nur die Kurzform (leerer Wert bedeutet "auf Null setzen"):
chmod ugo= myworld.sh

Zugriffsrechte für Sonderfälle

Siehe Seite 193

Motivation: Gewisse Unix-Mechanismen würde ohne Sonder-Bits nicht funktionenen, z.B. könnte ein Benutzer sein Passwort nicht ändern.

Set User ID - mit Besitzerrechten ausführen

Beginnen wir mit dem ersten Sonderbit, das für erhöhte Rechte beim Ausführen eines Programmes sorgt: Der aufrufende, einfache Nutzer soll mit den Rechten arbeiten können, die sonst nur dem eingetragenen Besitzer zustehen würden.

ls -l /usr/bin/passwd      #  Man beachte das 's' bei User  anstelle des 'x':     rwsr-xr-x

Weil das 's' bei 'User' steht, bezeichnet man dies als Set User ID Bit (SUID).

Im praktischen Falle bedeutet dies, dass ein Nutzer die /etc/shadow nur dank dem SUID-Sonderbit ändern kann.

Wie setzt man das SIUD-Bit?

a) chmod 4755  /usr/bin/passwd
b) chmod u+s /usr/bin/passwd

Hier die im Zusammenhang stehenden Dateien und ihre Rechte:

root@deb8-2:~# ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 54192 Nov 18 09:11 /usr/bin/passwd
root@deb8-2:~

root@deb8-2:~# echo UNIX User DBMS:  ;  ls -l /etc/passwd /etc/shadow  /etc/group
UNIX User DBMS:
-rw-r--r-- 1 root root   1339 Feb  2 09:01 /etc/group
-rw-r--r-- 1 root root   2966 Feb  2 09:02 /etc/passwd
-rw-r----- 1 root shadow 2172 Feb  2 08:56 /etc/shadow
root@deb8-2:~#

Set Group ID - mit Gruppenrechten ausführen

Es wird benötigt, um erhöhte Aufgaben mit den Rechten einer bestimmten Gruppe auszuführen, beispielsweise Nachrichten auf Tele Types senden:

Kein anderer Nutzer könnte Mitteilungen auf mein Terminal senden bei dieser Rechtesituation (Lesen und Schreiben ist nur für mich selbst zulässig!)

tux@deb8-2:~$
tux@deb8-2:~$ tty
/dev/pts/0
tux@deb8-2:~$
tux@deb8-2:~$ ls -l /dev/pts/0
crw------- 1 tux tty 136, 0 Feb  2 10:57 /dev/pts/0
tux@deb8-2:~$

Der Schlüssel für das Problem liegt in den Sonderrechten des ausführbaren Programmes, mittels dessen wir dies nur bewerkstellen werden:

tux@deb8-2:~$ ls -lL /usr/bin/wall  /usr/bin/write
-rwxr-sr-x 1 root tty 27232 Mär 30  2015 /usr/bin/wall
-rwxr-sr-x 1 root tty 14592 Okt 17  2014 /usr/bin/write
tux@deb8-2:~$

Bitte beachten: Entscheidend ist die Gruppenzuodnung der Applications zu 'tty' bei gleichzeitigem Setzen des s-Bits beim Gruppenzugriffsrecht.

Und natürlich können das SUID- und das SGID-Bit gleichzeitig vorkommen:

tux@deb8-2:~$ find /usr/bin -perm 6755
/usr/bin/X
/usr/bin/at
/usr/bin/procmail
tux@deb8-2:~$

Der Sinn dahinter ist z.B. beim Zeitplaner 'at', Spool-Jobs unter '/var/spool/cron/' verwalten zu können. Die Rechte sehen bei Debian so aus:

drwxrwx--T 1 daemon daemon  36 Feb  2 10:48 atjobs

Wir sehen hier ein 'T' bei 'Others', was uns zum nächsten Sonderbit, dem Sticky-Bit führt.

Sticky Bit - nur der Besitzer/Ersteller darf modifizieren

Bedeutung: "klebrig" — es wurde früher Applications mitgegeben, die nicht aus dem Arbeitsspeicher verdrängt werden, sondern dort kleben bleiben sollten.

Heute wird es für eine Art Austausch-Verzeichnis eingesetzt, das erst einmal Schreibrechte für alle ermöglicht, wobei es dann einschränkend wirkt: Nur der Besitzer/Ersteller darf seine Files modifizieren (auch wenn er den Fehler begehen würde, Others Schreibrechte zu geben) Es ignoriert im Prinzip die gesetzten Rechte bei Group und Others.

Im Praxisbeispiel:

tux@deb8-2:~$ ls -ld /tmp/ /var/tmp/
drwxrwxrwt 1 root root 462 Feb  2 11:45 /tmp/
drwxrwxrwt 1 root root 160 Feb  2 07:51 /var/tmp/
tux@deb8-2:~$

Wollen wir die Auswirkungen testen, dann legen wir mit anderer Nutzerkennung Files an, und versuchen sie als anderer User zu bearbeiten:

  • Als Standardnutzer tux: echo Zeile 1 > /tmp/vonTux

  • Als 'linus': echo Zeile 2 >> /tmp/vonTux (FEHLER: Keine Schreibrechte!)

  • Als 'root': chmod o-t /tmp (Die Sicherheitsbarriere wird entfernt)

  • Als 'linus' den Versuch von b) wiederholen…​ (Funktioniert jetzt)

  • Am Schluss bitte wieder als 'root' das sticky-Bit hinzufügen mit chmod o+t /tmp, alternativ: chmod 1777 /tmp

In der Umsetzung sieht das so aus:

tux@deb8-2:~$ echo Zeile 1 > /tmp/vonTux
tux@deb8-2:~$ chmod 646 /tmp/vonTux
tux@deb8-2:~$ ls -l /tmp/vonTux
-rw-r--rw- 1 tux tux 8 Feb  2 12:27 /tmp/vonTux
tux@deb8-2:~$
tux@deb8-2:~$ su - linus
Passwort:
$ echo Zeile 2 >> /tmp/vonTux
$
$ rm /tmp/vonTux
rm: das Entfernen von „/tmp/vonTux“ ist nicht möglich: Die Operation ist nicht erlaubt
$
$ cat /tmp/vonTux
Zeile 1
Zeile 2
$
$ exit
tux@deb8-2:~$ /bin/su -
Passwort:
root@deb8-2:~# ls -ld /tmp
drwxrwxrwt 1 root root 474 Feb  2 12:24 /tmp
root@deb8-2:~# chmod o-t /tmp
root@deb8-2:~# ls -ld /tmp
drwxrwxrwx 1 root root 474 Feb  2 12:24 /tmp
root@deb8-2:~# exit
Abgemeldet
tux@deb8-2:~$ su - linus
Passwort:
$ rm /tmp/vonTux
$
$ echo 'Ätsch: ' ; ls -l /tmp/vonTux
Ätsch:
ls: Zugriff auf /tmp/vonTux nicht möglich: Datei oder Verzeichnis nicht gefunden
$ exit
tux@deb8-2:~$ /bin/su -
Passwort:
root@deb8-2:~# chmod o+t /tmp
root@deb8-2:~# ls -ld /tmp
drwxrwxrwt 1 root root 462 Feb  2 12:31 /tmp
root@deb8-2:~# exit
Abgemeldet
tux@deb8-2:~$

Ein gutes Dokument, was u.a. dieses Sticky-Bit gut erklärt, ist hier zu finden: http://ruban.de/wp-content/uploads/2012/02/Unix-s-bit-and-t-bit.pdf

Standardrechte für neue Files

Motivation: Wieso haben neue Dateien das Recht 644, neue Verzeichnisse aber 755?

Das Kommando 'umask' stellt Standardrechte zur Verfügung, die eine Negativmaske zu den eigentlichen Rechtebits darstellt. Mathematisch werden die Zahlen negiert und mit Und-Verknüpft.

Einfacher Ausgangspunkt: Das Executable-Recht muss für Dateien immer entfernt werden, es könnten ja die englischen Wörter in der Shell eine Sonderbeudeutung als Kommando haben!

a) Maximalrecht einer Datei: 666

b) Maximalrecht eines Verzeichnisses: 777

Davon wird nun der umask-Wert abgezogen, was herauskommt ist der tatsächliche Wert der neuen Dateisystemobjekte.

Beispiel Standard-umask-Wert 022:

a) Datei (Minus eins, tiefer als 0 ist nicht zulässig, ist das x-Recht schon abgezogen, gibt es kein -1)

   666
 - 022
--------
   644
========

b) Verzeichnis (Maximalwert: 7)

   777
 - 022
--------
   755
========

Je nach Distribution wird umask an anderen Stellen gesetzt, ursprünglich war die '/etc/profile' dafür gedacht, heute findet sich die Einstellung meist in der '/etc/login.defs' (UMASK 022). Eigene Einstellungen können diesen Wert natürlich überschreiben, eine Möglichkeit ist die Datei '~/.profile'.

Praxisübung

Temporär soll die Umask so gesetzt werden, dass KEINE Rechte für künftige neue Dateisystemobjekte gesetzt sind.

tux@deb8-2:~$ umask
0022
tux@deb8-2:~$ umask 027
tux@deb8-2:~$
tux@deb8-2:~$ touch datei-01
tux@deb8-2:~$ mkdir verzeichnis-01
tux@deb8-2:~$
tux@deb8-2:~$ ls -ld datei-01 verzeichnis-01/
-rw-r----- 1 tux tux 0 Feb  3 10:40 datei-01
drwxr-x--- 2 tux tux 6 Feb  3 10:40 verzeichnis-01/
tux@deb8-2:~$

Setzen Sie einen passenden umask-Wert, der dem Besitzer nur Lesen und Ausführen gibt, Gruppenmitglieden Lesen, Schreiben und Ausführen, der Rest erhält kein Recht.

=> umask 207

Erweitern Sie die Aufgabenstellung, so dass Dateien explizit Ausführungsrechte erhalten.

=> umask 107

ACHTUNG: Das bringt das Schreibrecht für den Besitzer, was nicht gewollt war. (7-1=6)! Diese Aufgabe lässt sich nicht umsetzten, da bei Dateien automatisch -1 gerechnet wird.

Umask         Created Files                 Created Directories
-------------------------------------------------------------
000         666 (rw-rw-rw-)      777         (rwxrwxrwx)
002         664 (rw-rw-r--)      775         (rwxrwxr-x)
022         644 (rw-r--r--)      755         (rwxr-xr-x)
027         640 (rw-r-----)      750         (rwxr-x---)
077         600 (rw-------)      700         (rwx------)
277         400 (r--------)      500         (r-x------)

Eigentümerschaft von Files ändern

⇒ Siehe Seite 195 f

Das Kommando 'chgrp' zum Ändern der Gruppenzugehörigkeit wird eher selten eingesetzt, weil man sowohl den Eigentümer wie auch den Gruppenbesitz mit dem Kommando 'chown' ändern kann:

root@deb8-2:~# chgrp audio /home/tux/Austausch
root@deb8-2:~#
root@deb8-2:~# ls -ld /home/tux/Austausch
drwxr-xr-x 2 root audio 6 Feb  3 11:39 /home/tux/Austausch
root@deb8-2:~#
root@deb8-2:~# chown .video /home/tux/Austausch
root@deb8-2:~#
root@deb8-2:~# ls -ld /home/tux/Austausch
drwxr-xr-x 2 root video 6 Feb  3 11:39 /home/tux/Austausch
root@deb8-2:~#
root@deb8-2:~# chown :plugdev /home/tux/Austausch
root@deb8-2:~#
root@deb8-2:~# ls -ld /home/tux/Austausch
drwxr-xr-x 2 root plugdev 6 Feb  3 11:39 /home/tux/Austausch
root@deb8-2:~#

Gibt es Inhalte, die auch mit bearbeitet werden sollen, muss die Option '-R' (Großes R!) Verwendung finden:

root@deb8-2:~# cp -v /etc/host* /home/tux/Austausch
„/etc/host.conf“ -> „/home/tux/Austausch/host.conf“
„/etc/hostname“ -> „/home/tux/Austausch/hostname“
„/etc/hosts“ -> „/home/tux/Austausch/hosts“
„/etc/hosts.allow“ -> „/home/tux/Austausch/hosts.allow“
„/etc/hosts.deny“ -> „/home/tux/Austausch/hosts.deny“
root@deb8-2:~#
root@deb8-2:~# ls -l /home/tux/Austausch
insgesamt 20
-rw-r--r-- 1 root root   9 Feb  3 11:42 host.conf
-rw-r--r-- 1 root root   7 Feb  3 11:42 hostname
-rw-r--r-- 1 root root 247 Feb  3 11:42 hosts
-rw-r--r-- 1 root root 411 Feb  3 11:42 hosts.allow
-rw-r--r-- 1 root root 711 Feb  3 11:42 hosts.deny
root@deb8-2:~#
root@deb8-2:~# chown -R tux /home/tux/Austausch/
root@deb8-2:~#
root@deb8-2:~# ls -l /home/tux/Austausch
insgesamt 20
-rw-r--r-- 1 tux root   9 Feb  3 11:42 host.conf
-rw-r--r-- 1 tux root   7 Feb  3 11:42 hostname
-rw-r--r-- 1 tux root 247 Feb  3 11:42 hosts
-rw-r--r-- 1 tux root 411 Feb  3 11:42 hosts.allow
-rw-r--r-- 1 tux root 711 Feb  3 11:42 hosts.deny
root@deb8-2:~#

#   => Wird nach dem Punkt oder Doppelpunkt keine Gruppe explizit benannt,
#      setzt das Kommando 'chown' automatisch die primäre Gruppe ein:
root@deb8-2:~# chown -R tux: /home/tux/Austausch/
root@deb8-2:~#
root@deb8-2:~# ls -l /home/tux/Austausch
insgesamt 20
-rw-r--r-- 1 tux tux   9 Feb  3 11:42 host.conf
-rw-r--r-- 1 tux tux   7 Feb  3 11:42 hostname
-rw-r--r-- 1 tux tux 247 Feb  3 11:42 hosts
-rw-r--r-- 1 tux tux 411 Feb  3 11:42 hosts.allow
-rw-r--r-- 1 tux tux 711 Feb  3 11:42 hosts.deny
root@deb8-2:~#

Einen Nutzer ohne Werkzeuge wie 'useradd' und 'passwd' aus dem Standard-Nutzer 'tux' erzeugen

Schritt 1: Es beginnt mit dem Bearbeiten der Benutzerdatenbankdateien, wobei wir das auf sichere Art tun wollen, nämlich über einen im Hintergund laufenden Locking-Mechanismus.

Kommando: vipw

Für Einsteiger sollen an dieser Stelle die Kommandos für das Bearbeiten im 'vi' mitgegeben werden:

    /^tux

    yy

    p

    Mit 'l' auf Zeile 4 wandern

    i    (INSERT), eine 2 an tux anfügen:   tux2

    ESC

    Mit 'l' weiterwandern: Ziel: User-ID auf 1200 ändern

    ESC

    Mit 'l' wieder weiterwandern: Ziel: Heimatverzeichnis auf  /home/tux2  ändern

    ESC

    :wq!

Nun muss entspechend auch die dazugehörige Datei '/etc/shadow' sicher bearbeitet werden:

Kommando: vipw -s

⇒ Nun das Ganze synonym zu oben anpassen, dh.

  • Wieder die Zeile von tux kopieren

  • Den Nutzernamen von 'tux' auf 'tux2' ändern.

Schritt 2: Heimatverzeichnis erzeugen und mit Standardinhalt befüllen

mkdir /home/tux2
cd /etc/skel
find | cpio -pdm /home/tux2

Schritt 3: Berechtigungen rekursiv anpassen:

root@deb8-2:~# chown -R -v tux2:  /home/tux2
der Eigentümer von „/home/tux2/.bash_logout“ wurde von root:root in tux2:tux geändert
der Eigentümer von „/home/tux2/.bashrc“ wurde von root:root in tux2:tux geändert
der Eigentümer von „/home/tux2/.profile“ wurde von root:root in tux2:tux geändert
der Eigentümer von „/home/tux2/Desktop“ wurde von root:root in tux2:tux geändert
der Eigentümer von „/home/tux2/Musik“ wurde von root:root in tux2:tux geändert
der Eigentümer von „/home/tux2/Video“ wurde von root:root in tux2:tux geändert
der Eigentümer von „/home/tux2“ wurde von root:root in tux2:tux geändert
root@deb8-2:~#

Schritt 4: Jetzt bitte noch Funktionstests durchführen:

  1. Klappt der Login mit 'tux2' und dem Passwort von 'tux'?
    Kommando: su - tux2

  2. Kann 'tux2' in '/home/tux2' Daten ablegen? Kommando: pwd && echo 456 >> datei && echo OK.
    Alternativ: pwd && echo 456 >> datei || echo Es ist etwas schiefgegangen

Troubleshooting

Sind die Datenbankeinträge OK?

root@deb8-2:~# grep tux2 /etc/passwd /etc/shadow
/etc/passwd:tux2:x:1200:1000:tux,,,:/home/tux2:/bin/bash
/etc/shadow:tux2:$6$SqfMZVZl$lmlVxeConR8hautrtW9eADNMergNUnikPIu0/6kKtQhEdS...m6e/:16834:0:99999:7:::
root@deb8-2:~#

Gibt es das Heimatverzeichnis mit den passenden Rechten?

Was macht die folgende Kommandozeile im Detail? Hinweis: Zwischen den Back Tick Marks ist eine Kommandozeilensubstitution eingebettet.

root@deb8-2:~# ls -ld `cut -d: -f6 /etc/passwd | grep tux2`
drwxr-xr-x 5 tux2 tux 104 Feb  3 12:16 /home/tux2
root@deb8-2:~#

Außerdem gibt es noch das Kommando 'pwck', um die Datenbankdateien auf korrekte Syntax zu prüfen.

Dateiattribute als weitere Moglichkeit, Berechtigungen zu verwalten

Einige Dateisysteme, u.a natürlich btrfs, gestatten die Nutzung von Attributen, wie

Immutable

Eine Änderung ist nicht mal von root möglich, Rechte setzen mit der Option '+i'

Append only

Nur Anhängen ist möglich, Rechte setzen mit der Option '+a'

Directory updates sync

Verzeichnisänderungen synchron auf HDD schreiben, Option: '+D'

Benutzung im Beispiel:

tar czf /root/etc-backup-`date +%F_%H:%M`.tar.gz /etc
chattr +i *backup*
lsattr  *backup*

Dieses Immutable-Recht kann mit '-i' wieder entfernt werden, geht es um eine ganze Verzeichnisstruktur, wo in einem unbekannten Verzeichnis eine solch immunisierte Datei liegt, dann kann zusätzlich '-R' verwendet werden, was aber einem groben 'überbügeln' entspricht.

Frage: Kann 'find' evl. schon diese Attribute finden: man find | grep -i -B3 -A3 attr

Wir erhalten keine Ausgabe; das bedeutet also nein: Wie es scheint, lässt sich so einfach nicht danach suchen.

Siehe Seite 199 ff

Es gibt zwei Arten von Links, die Hinweisschilder auf die eigentlichen Dateien bzw. Verzeichnisse darstellen.

Hard-Links
  • Vom Prinzip her handelt es sich nur um weitere Namen für ein und dieselbe Datei, dh. es wird kein zusätzlicher Speicherplatz auf dem Datenträger benötigt. Daraus ergibt sich, dass sie nicht partitionsübergreifend angelegt werden können.

  • Sie sind Grundlage für die Konstruktion von Verzeichnisstrukturen, so sieht man immer bei Verzeichnissen die Anzahl von Hardlinks als Unterverzeichniszähler.

  • Eine Verwendung von Hardlinks anstelle von Symlinks scheint nicht immer plausibel zu sein, betrachtet man aber das Dateisystem als Datenbank, in der es keine unnötigen Redundanzen geben soll, hilft das Hardlinken dabei, ein konsistentes System zu erhalten. Siehe auch unten bei "speicherschonende Snapshots" ('cp -al …​').

  • Hardlinks können nicht auf Verzeichnisse gesetzt werden.

Symbolische Links
  • Hier handelt es sich um die bestens bekannten Verküpfungen, die als Zeiger auf ein Verknüfungsziel zeigen.
    Man kann sie sich auch als Knauf für einen bequemen Zugriff vorstellen.

  • Anders als bei Hardlinks ist hier partitions- und netzwerkübergreifende Arbeitsweise möglich.

  • Symlinks lassen sich unter bestimmten Umständen verschieben (mittels relativer Pfade angelegt).

  • Sie können sowohl auf Dateien wie auch auf Verzeichnisse gesetzt werden.

Grundsätzlich benötigen Dateisystemstrukturen (Stichwort: Filesystem Hierarchy Standard "HFS") Hardlinks, um Unterverzeichnisse zu referenzieren, damit schließlich auch ein 'cd ..' funktioniert:

tux@deb8-2:~$ mkdir Container
tux@deb8-2:~$
tux@deb8-2:~$ ls -ld Container/
drwxrwxr-x 2 tux tux 6 Feb  4 10:23 Container/
tux@deb8-2:~$
tux@deb8-2:~$
tux@deb8-2:~$ ls -la Container/
insgesamt 8
drwxrwxr-x  2 tux tux    6 Feb  4 10:23 .
drwxr-xr-x 58 tux tux 4096 Feb  4 10:23 ..
tux@deb8-2:~$
tux@deb8-2:~$ mkdir Container/Kiste
tux@deb8-2:~$
tux@deb8-2:~$ ls -ld Container/
drwxrwxr-x 3 tux tux 18 Feb  4 10:23 Container/
tux@deb8-2:~$
tux@deb8-2:~$
tux@deb8-2:~$ cd Container/Kiste/
tux@deb8-2:~/Container/Kiste$
tux@deb8-2:~/Container/Kiste$ cd ..
tux@deb8-2:~/Container$
tux@deb8-2:~/Container$ cd ..
tux@deb8-2:~$
tux@deb8-2:~$ cd ..
tux@deb8-2:/home$
tux@deb8-2:/home$ cd ..
tux@deb8-2:/$

Erzeugen von Hardlinks am Beispiel (aus einem alten Windows NT Lehrbuch):

Ein Henkeltöpfchen mit zwei Anfassern
Bild 1: Ein Henkeltöpfchen mit zwei Anfassern
tux@deb8-2:~$ echo Spieglein, Spieglein... > spieglein
tux@deb8-2:~$  ln spieglein spiegel
tux@deb8-2:~$ ls -li spieg*        # WICHTIG: Beide Dateien haben die selbe Inode-Nummer
3760 -rw-rw-r-- 2 tux tux 24 Feb  4 10:28 spiegel
3760 -rw-rw-r-- 2 tux tux 24 Feb  4 10:28 spieglein
tux@deb8-2:~$

Eine weitere Einsatzmöglichkeit sind speicherschonende Snapshots (Kein Backupersatz!!). Dies kann vor größeren Auf- und Umräumaktionen sinnvoll sein, um vor ungewollten Datenverlust gewappnet zu sein.

cp -al Dokumente Dokumente.hardlinked

Erzeugen von symbolischen Links (Fortsetzung des obigen Beispiels aus dem alten Windows NT Lehrbuch):

Ein Henkeltöpfchen mit seinem Wegweiser
Bild 2: Ein Henkeltöpfchen mit seinem Wegweiser
tux@deb8-2:~$ ln -s spieglein mirror
tux@deb8-2:~$
tux@deb8-2:~$
tux@deb8-2:~$ ls -li spieg* mirror
2648738 lrwxrwxrwx 1 tux tux  9 Feb  4 10:53 mirror -> spieglein     # 'mirror' ist eine separate Datei
   3760 -rw-rw-r-- 2 tux tux 24 Feb  4 10:28 spiegel                 #    mit eigener Inode
   3760 -rw-rw-r-- 2 tux tux 24 Feb  4 10:28 spieglein
tux@deb8-2:~$

In der Praxis werden bestimmte Gerätedateien gerne über allgemeine Symlinks angesprochen:

# CDROM/DVD-Laufwerk (Brenner)
ln -s /dev/sr0 /cdv/cdrom

# Modem an COM 1
ln -s /dev/ttyS0 /dev/modem

Topic 104.7 - Find system files and place files in the correct location

Seite 204 ff

Ziel: Lage und Bezeichnung wichtiger Verzeichnispfade kennen und mit Tools herausfinden

Filesystem Hierarchy Standard (FHS)

Grundsätzlich unterscheidet man 3 Ebenen:

  • Wurzel ('/'): /bin, /sbin, /lib, /etc

  • Unix System Ressources (statisch): /usr/bin, /usr/sbin, /usr/lib (/usr kann read-only gemountet werden)

  • Unix System Ressources, eigene Software (statisch): /usr/local/bin, /usr/local/sbin, /usr/local/lib, /usr/local/etc

Wichtige Verzeichisse, die gesichert werden sollten:

  • Alle Nutzerdatenverzeichnisse: /home, /var/mail, /var/spool/mail, /tmp

  • Alle Serverfreigabeverzeichnisse: /srv

  • Konfigurationen: /etc, /usr/local/etc, /opt

  • Betriebssystemdaten: /bin, /sbin, /lib*, /boot, /etc, /usr, /root, /var

Sinnvollerweise brauchen NICHT gesichert werden: /proc, /sys, /run, /tmp

Suchen nach Dateisystemobjekten

a) Langsame Just-in-Time-Suche mit 'find' (siehe man-Page)

b) Schnelle Datenbank-basierte Suche: locate / updatedb

  • Paketname: 'slocate' = Secure locate, damit einfache Nutzer nicht die Daten anderer angezeigt bekommen

  • Aktualieren des Indizes: updatedb ('nice +19 updatedb &')

  • Speicherort des Datenbank-Indizes: '/var/lib/locatedb' (Debian: /var/lib/mlocate/mlocate.db)

  • Konfiguration von nicht mit zu indizierenden Verzeichnissen: '/etc/updatedb.conf'

    • EINSTELLUNG: PRUNEPATHS="/tmp /var/spool /media"

    • Ist es möglich, mit Pattern wie z.B. BACKUP zu arbeiten? man 5 updatedb.conf
      Leider nein: '"Each path name must be exactly in the form in which the directory would be reported by locate(1)."'

    • Dann eben einzeln: 'PRUNEPATHS="/tmp /var/spool /media /BACKUP /boot/BACKUP /var/BACKUP"'

Einen eigenen Index als einfacher Benutzer erzeugen und nutzen

⇒ Siehe 'man 8 updatedb', dieses Fallbeispiel ist dort im Prinzip beschrieben:

  • updatedb --require-visibility 0 --database-root /home/tux --output /home/tux/.my_locatedb

  • locate --database /home/tux/.my_locatedb .bashrc
    ⇒ dies findet '/home/tux/.bashrc'