[[Vorlage(Baustelle, 30.06.2012, Max-Ulrich_Farber)]] [[Vorlage(Getestet, precise, oneiric)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Programme_starten: Starten von Programmen] [:Terminal: Ein Terminal öffnen] [:sudo: Mit Administrator-Rechten arbeiten] [:mount: Datenträger temporär einbinden (mount)] [:fstab: Datenträger statisch einbinden (fstab)] [:ln: Eine Verknüpfung zu einer Datei erstellen] }}} [[Inhaltsverzeichnis(2)]] Normalerweise erfordert das Einbinden ("Mounten") [5] von Datenträgern Administrator-Rechte [4]. Sollen auch gewöhnliche Benutzer Datenträger einbinden können, muss der Befehl "mount" durch entsprechende Einträge in der Datei '''/etc/fstab''' für jeden dieser Datenträger einzeln dafür "freigeschaltet" werden. Mit dem Tool '''pmount''' ("policy mount") können auch gewöhnliche Benutzer alle blockorientierten externen Datenträger (also Floppy-Disks, Festplatten, USB-Sticks, SD-Karten, CD- und DVD-Laufwerke) bzw. die auf diesen befindlichen Partitionen ohne Administrator-Rechte einbinden, ohne dass dafür vorher besondere Vorkehrungen zu treffen sind. Außerdem lassen sich mit pmount auch verschlüsselte Datenträger einbinden, sofern diese DM-Verschlüsselung und LUKS Metadaten verwenden. Die einzubindenden Datenträger oder Partitionen werden vielfach auch allgemein mit "Gerät" (engl. "device") bezeichnet. = Installation = pmount kann direkt aus den Quellen installiert werden [1] {{{#!vorlage Paketinstallation pmount }}} Das Programm kann dann sofort verwendet werden [2]. = Anwendung = == Bedingungen == Damit pmount ein Gerät einbinden kann, müssen folgende Bedingugnen erfüllt sein: * Das Gerät ist block-orientiert und in '''/dev/''' eingetragen * Für das Gerät besteht kein Eintrag in '''/etc/fstab''' (was in desem Fall geschieht, [#pmount-und-etc-fstab s.u.]) * Das Gerät ist noch nicht eingebunden, d.h es besteht dafür noch kein Eintrag in '''/etc/mtab ond '''/proc/mounts. * Wenn der Mountpunkt bereits existiert, muss er ein leerer Ordner sein, unter dem auch noch kein anderes Gerät gemountet ist. * Es handelt sich entweder um ein entfernbares Gerät (z.B. USB, FireWire, MMC ...), oder das Gerät muss in der Datei '''/etc/pmount.allow''' aufgeführt sein. * Das Gerät darf nicht gesperrt sein. Insbesondere bedeutet dies, dass pmount nicht zum Einbinden von Netzwerk-Freigaben geeignet ist. === Die Datei /etc/pmount.allow === In dieser Datei können mit Administrator-Rechten [4] weitere blockorientierte Geräte eingetragen werden, die zusätzlich noch mittels pmount eingebunden werden dürfen. Für jedes Gerät ist eine eigene Zeile vorzusehen; zusammenfassungen von der Art `/dev/sda[123]` sind jedoch zulässig. == Externe Datenträger nicht mittels GUI einbinden == Die Desktop-Umgebunden (GUI) [:GNOME:]/[:Unity:], [:KDE:] und [:Xfce:] binden externe Datenträger standardmäßig bei Systemstart oder [wikipedia_en:hotplug:Hotplug] automatisch ein. Es kann jedoch trotzdem Gründe geben, dies lieber selbst vorzunehmen: * Es steht keine geeignete GUI zur Verfügung (Ubuntu Server). * Man möchte vielleicht vermeiden, dass immer alle angeschlossenen externen Datenträger automatisch eingebunden werden. * Man möchte einzelne Datenträger mit anderen Optionen einbinden. * Man möchte für einzelne Anwender einen individuellen "Automount" zusammenstellen. * Man möchte externe Datenträger oder Teile davon im Netzwerk freigeben und benötigt deshalb eine sichere Identifikation derselben. * Man verwendet verschlüsselte Partitionen und möchte diese nicht vor dem Einbinden von Hand entschlüsseln. == Syntax == Die Syntax (Struktur) einer Begehlszeile mit pmount ist denkbar einfach: {{{#!vorlage Befehl pmount OPTIONEN GERÄT LABEL }}} GERÄT bezeichnet die Geräteadresse ("Node") für das einzuhängende Gerät. Normalerweise ist dies der vom Kernel vorgenommene Eintrag in dem Geräteverzeichnis '''/dev/'''. Es kann aber auch ein mit einer [:udev:]-Regel erstellter Node oder ggf. auch einen Softlink zu diesem sein ([#Geraete-eindeutig-zuordnen s.u.]). OPTIONEN und LABEL brauchen nur bei Bedarf angegeben zu werden, sodass sich die Befehlszeile im einfachsten Fall auf Folgendes reduziert: {{{#!vorlage Befehl pmount GERÄT }}} === Mountpunkt und Softlink === pmount bindet GERÄT unter ein Verzeichnis in /media/ ein wenn die Richtlinien dies erlauben (siehe pmount(1) für Details). Wenn LABEL gegeben ist, wird als Bindungsverzeichnis '''/media/LABEL''' verwendet, ansonsten '''/media/GERÄT'''. Wenn dieses Verzeichnis nicht existiert, wird es erstellt. === Besitz- und Zugriffsrechte === * Bei UNIX- (Linux-) Dateisystemen (z.B. ext4, ReiserFS) wird auch auf externen Datenträgern eine Rechte-Verwaltung eingerichtet. Da der Eigentümer und die Gruppe immer über die UID und GID indentifiziert werden, arbeitet die Linux-Rechteverwaltung auf einem anderen Rechner nur dann korrekt, wenn dort für Benutzer und Gruppen gleichen UID und GID verwendet werden * Beim Dateisystem VFAT (FAT-12, FAT-16 und FAT-32) gibt es auf dem Datenträger keine Verwaltung von Besitz- und Zugriffsrechten; diese werden auf jedem Rechner unabhängig simuliert, an dem der Datenträger eingesteckt ist. Es gibt deshalb beim Umstecken hinsichtlich UID und GID nichts zu beachten. * Das Dateisystem NTFS wird standardmäßig gleich wie VFAT behandelt. Befindet sich aber auf dem USB-Datenträger eine (versteckte) Datei '''.NTFS-3G/UserMapping''', so richtet der verwendete Dateisystem-Treiber ntfs-3g dort automatisch eine echte Rechteverwaltung wie auf einem UNIX-Dateisystem ein. Dann gelten beim Wechsel auf einen anderen Linux-Rechner auch die gleichen Regeln für die UID und GID. Konkurrierende Mount-Parameter werden dann nicht beachtet. Siehe dazu [:NTFS-3G#Rechte-auf-externen-Partitionen:]. === Parameter und Optionen === "pmount" unterstützt nur einen Teil der Optionen von "mount". Die Bezeichnungen dafür stimmen nicht mit denen bei "mount" überein. {{{#!vorlage Tabelle <-3 tablestyle="width: 97%;" rowclass="titel"> Optionen +++ Kurzform Langform Bedeutung +++ `-r` `--read-only` Nur mit Leserecht einbinden +++ `-w` `--read-write` Mit Lese- und Schreibrecht einbinden. Wenn weder `-r` noch `-w` angegeben ist, wählt der Kernel je nach Dateisystem eine geeignete Option. +++ `-s` `--sync` Schreibvorgänge erfolgen ohne Pufferung (siehe [:mount#Optionen:hier]). Vermindert die Gefahr von Datenverlust bei unnbedachtem Entfernen (Ausstecken) des Datenträgers. Sehr umfangreiche Dateien werden dabei jedoch in viele einzelne Schreibvorgänge aufgespalten. Weil bei Flash-Datenträgern (USB-Sticks, SD-Karten) die Anzahl der Schreibvorgänge begrenzt ist, sollte man von dieser Option nur mit Bedacht Gebrauch machen! +++ `-A` `--noatime` Siehe [:mount#Optionen:hier]. Default: "atime" bzw. "" +++ `-e` `--exec` Siehe [:mount#Optionen:hier]. Default: "noexec". +++ `-t DATEISYSTEM` `--type DATEISYSTEM` Siehe [:mount#Optionen:hier]. Gängige Dateisysteme werden automatisch erkannt und brauchen keine Angabe. Da dabei (im Gegensatz zu "mount") nicht auf das Dateisystem zugegriffen wird, ist die automatische Erkennung hier zeitaufwendig und deshalb eine Angabe des Dateisystems sinnvoll. +++ `-c ZEICHENSATZ` `--charset ZEICHENSATZ` Siehe [:mount#Optionen:hier]. Default ist `utf8`. Deshalb ist eine Angabe meist nicht nötig. +++ `-u MASKE` `--umask MASKE` Simulierte Zugriffsrechte bei Windows-Dateisystemen VFAT und NTFS (siehe [:mount#Windows-Dateisysteme:hier]). Für "uid" und "gid" werden die Werte des mountenden Benutzers eingesetzt; abweichende Angaben sind bei "pmount" nicht möglich. +++ (keine) `--dmask MASKE` Wie `--umask`, jedoch nur für Ordner. +++ (keine) `--fmask MASKE` Wie `--umask`, jedoch nur für Dateien. +++ `-p DATEI` `--passphrase DATEI` Bei verschlüsselten Datenträgern ([#Verschluesselte_Datentraeger s.u.]) wird die Passphrase aus der Datei "DATEI" eingelesen und nicht im Terminal erfragt. }}} === Sperren und entsperren === {{{#!vorlage Befehl pmount --lock }}} Sperrt weitere pmount-Aufrufe für bis es wieder entsperrt wird. gibt die ID des Prozesses an, der die Sperre hält. Dies ermöglicht das Sperren eines Gerätes von mehreren unabhängigen Prozessen (Sperren von nichtexistierenden Prozessen werden gelöscht, bevor eine Einbindung versucht wird). {{{#!vorlage Befehl pmount --unlock }}} Hebt die Sperre auf durch den Prozess wieder auf. == Geräte eindeutig zuordnen == Pmount identifiziert einzubindende Geräte ausschließlich über ihre Geräteadressen ("Nodes") in der Gerätedatei '''/dev'''; eine direkte Identifikation über das [:Labels:Label] oder die [:UUID:] ist nicht möglich. Die im Geräteverzeichnis '''/dev/''' eingetragenen Gerätenamen werden den Geräten vom Kernel zugeteilt und können sich ändern, je nach der Reihenfolge, in der die Geräte angeschlossen bzw. erkannt werden. Dieses Problem umgeht man, wenn man den einzelnen Datenträgern oder Partitionen mit einer [:udev:]-Regel feste Symlinks zu ihren Nodes zuordnet. Hierzu muss man zuerst einteutige, in einer udev-Regel verwertbare Merkmale des betreffenden Geräts ermitteln. Bei USB-Geräten genügt es üblicherweise, in einem Terminal [3] den Befehl `lsusb` auszuführen. Man erhält dann eine Ausgabe folgender Art: {{{#!vorlage Befehl NAME@Desktop-PC:~$ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 002: ID 04a9:2214 Canon, Inc. CanoScan LiDE 80 Bus 002 Device 002: ID 15a4:9016 Afatech Technologies, Inc. AF9015 DVB-T USB2.0 stick Bus 001 Device 003: ID 0781:5151 SanDisk Corp. Cruzer Micro Flash Drive Bus 002 Device 003: ID 0471:0828 Philips (or NXP) }}} Die beiden letzten Zeilen betreffen die eingesteckten Datenträger, einen USB-Stick und eine externe Festplatte. Die beiden auf `ID` folgenden vierziffrigen Zahlen sind die Hersteller-Kennung `idVendor` und die Gerätekennung `idProduct`. In den meisten Fällen genügen diese Angaben, um die USB-Geräte eindeutig zu identifizieren. Nun muss man im Ordner '''/lib/udev/rules.d/''' eine Regel-Datei anlegen. Hierzu sind Administrator-Rechte nötig. Der Dateiname muss mit einer zweiziffrigen Zahl beginnen und mit '''.rules''' enden, z.B. '''80-mount.rules'''. Für den oben identifizierten USB-Stick könnte diese dann so lauten: {{{ # SanDisk Corp. Cruzer Micro Flash Drive BUS=="usb", ATTRS{idVendor}=="0781", ATTRS{idProduct}=="5151", \ NAME="%k", SYMLINK="Sandisk-Stick" }}} Die Variable "%k" bezeichent den Kernel-Namen des Geräts, z.B. "sda1". Es wird empfohlen, diesen nicht zu verändern, sondern lieber zur Erkennung des Geräts eine charakteristische symbolische Verknüpfung (Symlink) [7] auf diesen einzurichten. Der angegebene Symlink deutet nun stets auf den Node dieses Datenträgers und kann mit pmount angesprochen werden. Sollte dieser Weg der Identifikation einmal nicht ausreichen, erhält man über {{{#!vorlage Befehl udevadm info -a -p `udevadm info -q path -n /dev/sda1` }}} eine sehr umfangreiche Auflistung aller in einer udev-Regel zur Identifikation des Gerätes mit dem Node '''/dev/sda1''' geeigneten Attribute. Falls vorhanden, ist die Seriennummer `ATTRS{serial}` immer eine sichere Angabe. == Datenträger aushängen == == Automount der GUI unterbinden == == Automount individualisieren == == pmount und /etc/fstab == Wenn ein Gerät bereits eingebunden ist, nimmt pmount dies anhand der Dateien '''/etc/mtab''' oder '''/proc/mounts''' zur Kenntnis und mountet das Gerät nicht nochmal an anderer Stelle. Sollte aber für das Gerät ein Eintrag in '''/etc/fstab''' mit der Option `noauto` bestehen, oder war zum Zeitpunkt, zu dem '''fstab''' abgearbeitet wurde, das Gerät noch nicht verfügbar, dann ist das Gerät noch nicht eingebunden. Der Befehl `pmount` wird dann trotzdem nicht ausgeführt, sondern statt dessen bewirkr `pmount`, dass statt dessen der Befehl `mount` [4] mit dem in '''fstab''' angegebenen Mountpunkt und den dort eingetragenen Optionen mit der Identität des jeweils eingeloggten Benutzers ausgeführt wird. Davon abweichende Optionen im Befehl `pmount` werden dabei ignoriert. if it is, pmount executes mount device as the calling user to handle this transparently == Verschlüsselte Datenträger == = Beispiele = = Problembehandlung = = Links = ==Intern== * [:Automount:]: Datenträger und Netzwerk-Freigaben automatisch einbinden. * [:Externe Laufwerke statisch einbinden:] * [:NTFS-3G:]: Der für das Dateisystem NTFS verwendete Dateisystem-Treiber. * [:Windows-Partitionen einbinden:] * [:MS-Windows Integration:]: Hinweise zum Parallel-Betrieb von Linux und Windows. ==Extern== * [http://manpages.ubuntu.com/manpages/lucid/man1/pmount.1.html Ubuntu Manpage: pmount] {en} #tag: System