Kann ich ein Dateisystem-Image ohne Root-Berechtigung mounten? Normalerweise würde ich tun:
mount -o loop DISK_IMAGE FOLDER
Gibt mount
es eine geeignete Möglichkeit, dies zu tun, ohne sudo zu verwenden oder suid zu aktivieren ?
Ich weiß, dass ich fusermount
mit einigen ISO-Images arbeiten kann, aber das ist ziemlich begrenzt. Selbst bei ISO-Images können einige meiner Images nicht gemountet werden, mount
funktionieren aber immer.
mount
Binärdatei keine SUID-Berechtigungen erfordert, sollten Sie in der Lage sein, fakeroot ohne Probleme zu verwenden.fakeroot
hilft hier nicht weiter: Es gibt vor, dass der Dateibesitz anders ist, kann Ihnen jedoch keine Berechtigungen erteilen, die Sie nicht haben, z. B. zum Aufrufen,mount(2)
wenn Sie nicht als Root angemeldet sind.Antworten:
Sie können nichts bereitstellen, für das der Administrator Ihnen nicht die Berechtigung zum Bereitstellen erteilt hat. Nur root kann den
mount
Systemaufruf aufrufen. Der Grund dafür ist, dass es viele Möglichkeiten gibt, Berechtigungen durch das Mounten zu eskalieren, z. B. das Mounten von Daten über einen Systemspeicherort, das Erscheinen von Dateien als Eigentum eines anderen Benutzers und das Ausnutzen eines Programms, das auf Dateibesitz angewiesen ist, das Erstellen von Setuid-Dateien oder das Ausnutzen von Fehlern in Dateisystemtreibern.Der
mount
Befehl lautet setuid root. Damit können Sie jedoch nur die Dinge einbinden, die in erwähnt werdenfstab
.Der
fusermount
Befehl lautet setuid root. Hiermit können Sie nur Dinge über einen FUSE-Treiber mounten und Ihre Möglichkeiten einschränken, Dateien auf diese Weise mit willkürlichem Eigentum oder Berechtigungen zu versehen (bei den meisten Setups gehören alle Dateien auf einem FUSE-Mount Ihnen).Am besten suchen Sie sich ein FUSE-Dateisystem , mit dem Sie Ihr Disk-Image lesen können. Für ISO 9660 Bilder, versuchen beide fuseiso und UMfuse der ISO 9660 - Unterstützung (unter Debian als
fuseiso9660
Paket ).quelle
sudo
(obwohl das SUID-Bit gesetzt ist) nur ein Benutzerfstab
Einträge mounten kann . Daraus folgt, dass (a) das SUID-Bit Sinn macht, da ein regulärer Benutzerfstab
Einträge mounten kann (und denmount
Syscall ausführen darf ) und (b) es diemount
Einschränkung des Dienstprogramms ist,fstab
Einträge nur von Nicht- Benutzern mounten zu lassen. Root-Benutzer.fstab
sind für rootfs und boot. Zum Einhängen von USB-Laufwerken schaue ichlsblk
undmount
entsprechend. Ich hatte keine Probleme damit.Das Debian-Wiki zeigt verschiedene Möglichkeiten, dies zu tun. Hier ist ein Weg. (Dies erfordert das
udisks2
Paket.)Zuerst
/dev/loop0
wird für die folgenden verwendet.Aber wenn der
udisksctl loop-setup
Befehl zurückgekehrt war/dev/loop1
, dann/dev/loop1
für die folgenden verwendet worden wäre.Sie müssen möglicherweise ausgeführt werden, wenn das zuvor erstellte Loopback-Gerät nicht automatisch bereitgestellt wird:
Sie können Dateien auf der Festplatte anzeigen
Sie können es abhängen, wenn Sie fertig sind
und wenn nötig:
quelle
sudo
nur erwarten würde . setsid oder verwandte shenanigans ?-r
Option "udisksctl loop-setup
Nur Lesen" bedeutet, nach der das OP nicht gefragt hat. Löschen Sie diese Option , um einen beschreibbaren Mount zu erhalten.Sie können das FUSE-Modul guestmount verwenden, um verschiedene Arten von Datenträgerabbildern bereitzustellen. Es ist Teil des guestfs-Ökosystems und erfordert keine Root-Berechtigungen.
Schauen Sie sich die Manpage für weitere Details an.
Beispiele
1. Für einen typischen Windows-Gast, dessen Hauptdateisystem sich auf der ersten Partition befindet:
2. Für einen typischen Linux-Gast mit einem / boot-Dateisystem auf der ersten Partition und dem Root-Dateisystem auf einem logischen Volume:
quelle
Die Möglichkeit wäre, einen
/etc/fstab
Eintrag für die ISO mit dem Parameter 'user' hinzuzufügen , wie/test.iso /mnt/iso auto defaults,user 0 1
Normalerweise benötigen Sie jedoch trotzdem Root-Zugriff, um diese Datei zu bearbeiten. Daher ist dies nicht sehr hilfreich.
quelle
Es ist eigentlich sehr einfach, mehr oder weniger das zu mounten, was Sie als normaler Benutzer ohne Root-Rechte wollen, vorausgesetzt, der richtige Eintrag wurde in erstellt
/etc/fstab
.Natürlich
/etc/fstab
erfordern Änderungen Root-Rechte. Ein einzelner Eintrag kann jedoch mit großer Flexibilität verwendet werden, um viele verschiedene Dateien an verschiedenen Einhängepunkten (u) einzuhängen, ohne dass eine weitere Bearbeitung erforderlich ist/etc/fstab
.Hier sind zwei sehr kurze (5 Zeilen + Kommentare) Bash-Skripte, die den Job erledigen:
zur Montage
und zum Absteigen
Das Verzeichnis
/tmp/UFS/
wird erstellt, um die Links zu isolieren und Konflikte zu vermeiden. Die Symlinks können sich jedoch an einer beliebigen Stelle im Benutzerbereich befinden, solange sie sich an derselben Stelle (auf demselben Pfad) befinden. Der/etc/fstab
Eintrag ändert sich auch nie.VITAL WARNING: Die Montage ist aus Sicherheitsgründen eingeschränkt. Eine flexiblere Gestaltung kann Tür und Tor für schädliche Software öffnen. Ich bin kein Sicherheitsexperte und würde empfehlen, dass Sie Türen nicht mehr als unbedingt erforderlich öffnen ... indem Sie Optionen verwenden, um einzuschränken, was mit den Dateisystemen geschehen kann, die auf diese Weise angehängt werden können. Wenn ein sachkundiger Mitarbeiter weitere Kommentare zu Sicherheitsproblemen abgeben kann, ist dies möglicherweise hilfreich.
Es stehen verschiedene Optionen zur Verfügung, um die Verwendung von bereitgestellten Dateisystemen einzuschränken, z. B. um
noexec
die Ausführung von Binärdateien zu verhindern oder umnosuid
so zur Sicherheit beizutragen. Tatsächlich werden diese Optionen als Standardoptionen hinzugefügt, wenn die Optionenuser
oderusers
verwendet werden, was in den folgenden Schritten unbedingt der Fall ist. Überlegen Sie zweimal, bevor Sie diese Standardeinstellungen überschreiben. http://en.wikipedia.org/wiki/FstabWeitere Optionen können zum weiteren Schutz hinzugefügt werden. Mit der Option
owner
im/etc/fstab
Eintrag können Benutzer beispielsweise nur mit Dateien oder Geräten umgehen, deren Eigentümer sie sind. Sieheman mount
für eine Liste der Optionen: http://linux.die.net/man/8/mount .Die Verwendung dieses
/etc/fstab
Eintrags kann auch durch den Besitz der Benutzergruppe des Verzeichnisses (oder der Verzeichnisse) eingeschränkt werden, in denen sich die Symlinks befinden.Erläuterung
Diese Erklärung wurde geschrieben, bevor mir klar wurde, dass ich die beiden obigen Skripte vereinfachen kann. Ich habe nicht sofort an sie gedacht, weil ich ein etwas komplexeres Problem zur Hand habe, das sie ohne zusätzliche Maschinen nicht lösen können. Daher mag meine Erklärung etwas komplizierter sein, als sie sollte, aber ich habe nicht den Mut, alles von Grund auf neu zu schreiben.
Die Grundidee besteht darin, Einträge zu erstellen
/etc/fstab
, die die Optionuser
oder enthalten,users
damit ein Benutzermount
die in diesem Eintrag angegebene Einbindung ausführen kann, indem er als Argument die einzubindende Datei oder den zu verwendenden Einhängepunkt angibt (jedoch nicht beide in meiner Erfahrung). .Sie benötigen auch einen korrekten Zugang zu
umount
(was ein etwas anderes Problem ist - siehe unten). Die Optionuser
ist normalerweise besser als,users
da sie die Berechtigung aufumount
den Benutzer beschränkt, der das Dateisystem bereitgestellt hat, während diesusers
für alle zulässig ist . Leideruser
funktioniert die Option nicht immer und kann einige andere Arbeitsschritte erfordern. Dies wird in der Option "Benutzer" Arbeit für Mount, nicht für Umount erläutert .Zuerst fügen Sie
/etc/fstab
einen Eintrag hinzu wie:und
/tmp/UFS/drive
als symbolische Verknüpfung (oder symbolische Verknüpfung) zu jedem Gerät oder jeder Datei verwenden, die Sie bereitstellen möchten, z. B. eine Datei, die das Image eines ISO-Dateisystems enthält/home/johndoe/john-image-file.iso
.Sie definieren auch
/tmp/UFS/mountpoint
als Symlink den Mount-Punkt, den Sie verwenden möchten, sagen wir/mnt/iso
.Sie können dann
john-image-file.iso
mit dem Befehl einhängen :Dies ist auf meinem Mageia Linux ausreichend, da die Verwendung von Loop-Geräten jetzt implizit ist und nicht mehr
-o loop
explizit erforderlich ist . Ich weiß nicht, wie allgemein das heute ist. Siehe Wann sollte ich bei der Montage ein Loop-Gerät verwenden?Diese Montage erscheint in Tabellen und Befehlen:
Der Bereitstellungsvorgang kann für jede Datei oder jedes Laufwerk ausgeführt werden und erfordert lediglich eine symbolische Verknüpfung von
/tmp/UFS/drive
dieser Datei oder dem Gerät für das Laufwerk. Natürlich könnte ein anderer Name und Ort für den symbolischen Link gewählt werden, solange er sich nie ändert.Das Aufheben der Bereitstellung der Datei hängt in gleicher Weise von der ordnungsgemäßen Verwendung symbolischer Verknüpfungen ab. Bei einem normalen Gerät, das einem Hardwarelaufwerk entspricht, verwenden Sie einfach dieselben Links.
Dateien, die das Image eines Dateisystems enthalten, werden jedoch über eine spezielle Art von Gerät bereitgestellt, die als Loop-Gerät bezeichnet wird und beim Bereitstellen der Datei automatisch zugewiesen wird.
Um die Bereitstellung der Datei aufzuheben, müssen Sie sich auf das Loop-Gerät und nicht auf die Datei beziehen. Daher benötigen Sie in
/etc/fstab
einem Eintrag, der sowohl dem hier verwendeten Loop-Gerät als auch dem/etc/mtab
hier verwendeten/dev/loop0
Mount-Punkt entspricht/mnt/iso
.Sie können einen solchen Eintrag nicht im Voraus erstellen, da das Loop-Gerät variieren kann, da es dynamisch zugewiesen wird. Beachten Sie, dass es auch möglich ist, ein Gerät mit fester Schleife zu verwenden, dies ist jedoch auf andere Weise unpraktisch. Siehe http://igurublog.wordpress.com/2011/01/22/how-to-allow-mounting-of-iso-files-by-a-regular-user/ ( dieser Blog hat die Antwort hier tatsächlich inspiriert ).
Sie können den Namen des Loop-Geräts jedoch hier finden
/dev/loop0
, indem Sie das System wie oben beschrieben auf verschiedene Arten fragen. Dann kann unser Standardeintrag/etc/fstab
so eingestellt werden, dass er über den Symlink auf das richtige Loop-Gerät/tmp/UFS/drive
und wie zuvor mit auf den Mount-Punkt verweist/tmp/UFS/mountpoint
. Wenn dies erledigt ist, kann die Bereitstellung der Datei mit einem der folgenden Befehle aufgehoben werden (vorausgesetzt, es besteht keine Mehrdeutigkeit/etc/mtab
, was ein anderes Problem darstellt):Da die beiden Symlinks nur benötigt werden, wenn die Befehle ausgegeben werden, können sie dynamisch geändert werden. Unser einzelner
/etc/fstab
Eintrag ermöglicht es daher, eine beliebige Anzahl von Dateien ohne Root-Rechte einzuhängen und diese in beliebiger Reihenfolge umzuhängen.Weitere Referenzen:
Mounten und Ändern einer Loopback-Datei ohne sudo / root, ist das möglich?
http://www.tuxfiles.org/linuxhelp/fstab.html
quelle
mount
Befehls für jeden normalen Benutzer? Und damit verbundene Sicherheitsprobleme? Korrigiere mich, wenn ich falsch liege.device
oder dermountpoint
Abschnitt von fstab nicht auf einen gültigen Eintrag verweist. Der Benutzer muss sich über eine Konsolensitzung anmelden und eingebenstartx
, um einen Display Manager explizit zu starten.Das Paket libguestfs-tools-c hat also den Befehl guestmount
df zeigt image.iso gemountet an
zu umount haben wir:
quelle