"Sicheres" pmount unter openSUSE 10.x/11.0

Status
Für weitere Antworten geschlossen.

Rain_Maker

Administrator
Teammitglied
"Sicheres" pmount unter openSUSE 10.x/11.0

Bis einschließlich openSUSE 10.0 wurde für Wechselmedien die Kombination "subfs/submount" verwendet

https://wwwbs.informatik.htw-dresden.de/svortrag/i01/Voigt/submount.html

welche unter anderem dazu führte, daß auch in einem Runlevel ohne GUI angestöpselte USB-Sticks automatisch gemountet wurden und kein händischer Mountbefehl als root notwendig war.

Seit nun vollständig auf hal/udev gesetzt wird, ist dies nicht mehr der Fall.

Eine der vielen Lösungen, wie man auch in der Konsole als nicht-privilegierter Benutzer (Wechsel)medien einbinden kann, ist pmount,

Willkommen bei piware! - Projekte

pmount - LinuxWiki.org - Linux Wiki und Freie Software

ein Wrapper für mount, welcher z.B. bei Debian und seinen Derivaten mittlerweile weit verbreitet ist.

Obwohl dieses Programm für openSUSE nicht zum offiziellen "Lieferumfang" gehört, findet man natürlich Pakete im openSUSE Build Service.

Webpin

Die Einrichtung und Verwendung ist dabei denkbar einfach.

Nach der Installation von pmount bearbeitet man als root mit dem Editor seiner Wahl die Datei

/etc/pmount.allow

und legt fest, welche Geräte/Partitionen per pmount oder pmount-hal (eine erweiterte Form von pmount, welche mit HAL zusammenspielt) eingebunden werden dürfen.

Code:
# /etc/pmount.allow
# pmount will allow users to additionally mount all devices that are
# listed here.
Die Angabe erfolgt als "/dev/Devicefile", also bei einem CD-ROM Laufwerk z.B. über "/dev/cdrom" oder direkt über die Gerätedatei (in meinem Fall wäre das /dev/sr0). Das Setzen von regulären Ausdrücken oder Wildcards ist ebenfalls möglich.

Hier eine Beispieldatei:

Code:
# /etc/pmount.allow
# pmount will allow users to additionally mount all devices that are
# listed here.
/dev/sd[a-f]*
/dev/cdr*
/dev/dvd*
/dev/fd*
Erlaubt sind also alle Partitionen auf den Festplatten/Usb-Sticks sda bis sdf, sowie alle optischen Geräte (/dec/cdrom, /dev/cdrecorder /dev/cdrw, /dev/dvd /dev/dvdrw) und alle Floppy Laufwerke (/dev/fd0, /dev/fd1, .....).

Das Mounten erfolgt über

Code:
pmount(-hal) /dev/Gerätedatei Label
wobei das entsprechende Device dann nach /media/Label eingehängt wird.

Will man also die erste Partition des USB-Sticks /dev/sdb nach /media/Usbstick einhägen, so wäre der Befehl:

Code:
pmount /dev/sdb1 Usbstick
oder (hal-Variante)

Code:
pmount-hal /dev/sdb1 Usbstick
Das Aushängen erfolgt über den Befehl pumount:

Code:
pumount /dev/Gerätedatei
oder

Code:
pumount Label
also in unserem Beispiel über:

Code:
pumount /dev/sdb1
oder

Code:
pumount Usbstick
Lässt man bei pmount die Eingabe des gewünschten Labels weg, so wird eine automatische Bezeichnung verwendet, z.B. bei Partitionen auf Festplatten/USB-Sticks die Gerätebezeichnung, die Partition /dev/sdb1 wird also auf /media/sdb1 eingehängt, verwendet man jedoch pmount-hal und die entsprechende Partition hat bei der Erstellung (oder später über tune2fs&co) ein Label verpasst bekommen, so wird dieses ausgelesen und verwendet.

Hier mal ein Beispiel:

Code:
ls -l /dev/disk/by-label/Archlinux
lrwxrwxrwx 1 root root 10  1. Okt 12:26 /dev/disk/by-label/Archlinux -> ../../sda6
Die Rootpartition meiner Archlinux-Installation auf /dev/sda6 hat von mir das Disklabel "Archlinux" verpasst bekommen (wer wissen will, wie das geht => man tune2fs oder man reiserfstune), nun einmal pmount und pmount-hal im Vergleich.

Code:
pmount /dev/sda6

mount |grep sda6
/dev/sda6 on [B]/media/sda6[/B] type ext3 (rw,noexec,nosuid,nodev,errors=continue)

pumount /dev/sda6

pmount-hal /dev/sda6

mount |grep sda6
/dev/sda6 on[B] /media/Archlinux[/B] type ext3 (rw,noexec,nosuid,nodev,errors=continue)
Des Weiteren bietet pmount zusätzliche Optionen für das Einhängen, siehe hierzu:

Code:
pmount --help

man pmount
Nun aber zum Hauptgrund für dieses HowTo, Erhöhung der Flexibilität und Sicherheit, gerade wenn man mehrere User auf seinem System hat.

Code:
ls -l /usr/bin/p*mount*

-rw[B]s[/B]r-xr-x    1 root    root            40344 Jun 18 21:33 /usr/bin/pmount
-rwxr-xr-x    1 root    root            31884 Jun 18 21:33 /usr/bin/pmount-hal
-rw[B]s[/B]r-xr-x    1 root    root            31432 Jun 18 21:33 /usr/bin/pumount
Wie man sieht, ist für pmount und pumount das SUID-Bit gesetzt (das ist auch notwendig) und anhand der Zugriffsrechte darf _jeder_ Benutzer die Binaries ausführen.

Das gefiel mir ehrlicherweise gar nicht, weshalb ich auf Basis der schon vorhandenen Pakete eigene RPMs "gestrickt" habe, die ein kleines Sicherheitsfeature eingebaut bekamen.

Code:
ls -l /usr/bin/p*mount*
-rwsr-x--- 1 root pmount 36248  2. Okt 18:04 /usr/bin/pmount
-rwxr-x--- 1 root pmount 31884  2. Okt 18:04 /usr/bin/pmount-hal
-rwsr-x--- 1 root pmount 27336  2. Okt 18:04 /usr/bin/pumount
Wie man sieht, gehören die Binaries nun nicht mehr "root:root" sondern "root[noparse]:p[/noparse]mount" und die Rechte sind so gesetzt, daß ausser root nur noch User, die der Gruppe "pmount" angehören, diese verwenden können.

(Diese Gruppe wird im Übrigen vom RPM bei der Installation automatisch angelegt.)

Nach der Installation des "sicheren" pmount-Pakets müssen also die Systembenutzer, die Zugriff auf pmount haben sollen

entweder via YaST => Sicherheit und Benutzer => Benutzer und Gruppenmanagement

oder mit

Code:
su

Passwort

groupmod -A [B]entsprechender_Username[/B] pmount
der Gruppe pmount hinzugefügt werden.

Diese Einstellungen werden allerdings erst bei der nächsten Anmeldung der entsprechenden User wirksam, ein bereits eingeloggter User muss sich also einmal abmelden und dann wieder anmelden.

Und "last, but not least" hier die Pakete:

//Edit:

Mittlerweile ist pmount bei packman erhältlich (thx@drcux)

PackMan :: Informationen zum Paket pmount

deshalb wurden die Downloads gelöscht. Bitte verwendet die Pakete von packman.

Greetz,

RM

P.S. Mit herzlichem Dank an "drcux" von Packman für den Hinweis aus Sicherheitsgründen lieber eine eigene Gruppe "pmount" anzulegen statt die schon vorhandene Gruppe "disk" zu verwenden und fürs anschliessende Übernehmen des Paketes ins Angebot von Packman.
 
Status
Für weitere Antworten geschlossen.
Oben