Puis-je monter une image de système de fichiers sans autorisation root? Normalement je ferais:
mount -o loop DISK_IMAGE FOLDER
Sans utiliser sudo ou régler le suid sur mount
, existe-t-il un moyen approprié de procéder?
Je sais que je peux utiliser fusermount
certaines images ISO, mais cela reste assez limité. Même pour les images ISO, certaines de mes images ne peuvent pas être montées, mais mount
fonctionnent toujours.
mount
binaire ne nécessite pas d'autorisations SUID, vous devriez pouvoir utiliser fakeroot sans problème.fakeroot
ne va pas aider ici: il prétend que la propriété du fichier est différente, mais il ne peut pas vous donner d'autorisations que vous ne possédez pas, par exemple appelermount(2)
lorsque vous n'êtes pas root.Réponses:
Vous ne pouvez rien monter que l'administrateur ne vous ait pas donné l'autorisation de monter. Seul root peut appeler l'
mount
appel système. La raison en est qu’il existe de nombreuses façons d’élever les privilèges via le montage, comme monter quelque chose sur un emplacement système, donner l’apparence de fichiers à un autre utilisateur et exploiter un programme reposant sur la propriété du fichier, créer des fichiers setuid ou exploiter des bogues. dans les pilotes de système de fichiers.La
mount
commande est setuid root. Mais cela ne vous permet que de monter des objets mentionnés dansfstab
.La
fusermount
commande est setuid root. Il vous permet uniquement de monter des éléments à l'aide d'un pilote FUSE et limite votre capacité à fournir des fichiers avec des droits de propriété ou des autorisations arbitraires (dans la plupart des configurations, tous les fichiers d'un montage FUSE vous appartiennent).Votre meilleur choix est de trouver un système de fichiers FUSE capable de lire votre image disque. Pour les images ISO 9660, essayez les deux fuseiso et support ISO 9660 de UMfuse (disponible sous Debian comme
fuseiso9660
package ).la source
sudo
(bien que le bit SUID soit défini) ne permet de monter desfstab
entrées. Il en résulte que (a) le bit SUIDfstab
estmount
utile, puisqu'un utilisateur normal peut monter des entrées (et est autorisé à effectuer l' appel système) et (b) qu'il est de lamount
restriction de l' utilitaire de n'autoriser que lesfstab
entrées à être montées par des tiers. utilisateurs root.fstab
sont pour le rootfs et le démarrage. Pour monter des clés USB, je regardelsblk
et enmount
conséquence. Je n'ai pas eu de problèmes à le faire.Le wiki Debian montre plusieurs manières de le faire. Voici un moyen. (Cela nécessite le
udisks2
package.)Première
/dev/loop0
sera utilisé pour les suivants.Mais si la
udisksctl loop-setup
commande était revenue/dev/loop1
, alors/dev/loop1
aurait été utilisée pour les opérations suivantes.Vous devrez peut-être exécuter si le périphérique de bouclage (créé précédemment) n'est pas monté automatiquement:
Vous pouvez regarder les fichiers sur le disque
Vous pouvez le démonter lorsque vous avez terminé
et si nécessaire:
la source
sudo
seulement. setsen ou manigances connexes ?-r
optionudisksctl loop-setup
signifie en lecture seule, ce que l'OP n'a pas demandé, alors laissez tomber cela pour obtenir un montage en écriture.Vous pouvez utiliser le module FUSE guestmount pour monter plusieurs types d’images disque. Cela fait partie de l'écosystème guestfs et ne nécessite pas d'autorisations root.
Consultez la page de manuel pour plus de détails.
Exemples
1. Pour un invité Windows typique dont le système de fichiers principal se trouve sur la première partition:
2. Pour un invité Linux typique ayant un système de fichiers / boot sur la première partition et le système de fichiers racine sur un volume logique:
la source
La manière possible serait d'ajouter une
/etc/fstab
entrée pour l'ISO avec le paramètre 'utilisateur', comme/test.iso /mnt/iso auto defaults,user 0 1
Cependant, vous avez généralement besoin d’un accès root pour modifier ce fichier, ce qui n’est donc pas très utile.
la source
Il est en fait très facile de monter plus ou moins ce que vous voulez en tant qu'utilisateur normal sans privilèges root, à condition que la bonne entrée ait été créée dans
/etc/fstab
.Bien sûr, des modifications
/etc/fstab
nécessitant des privilèges root. Mais une seule entrée peut être utilisée avec beaucoup de flexibilité pour (u) monter de nombreux fichiers différents sur différents points de montage, sans aucune modification ultérieure de/etc/fstab
.Voici deux scripts Bash très courts (5 lignes + commentaires) qui feront le travail:
pour le montage
et pour démonter
Le répertoire
/tmp/UFS/
est créé pour isoler les liens et éviter les conflits. Mais les liens symboliques peuvent être n'importe où dans l'espace utilisateur, tant qu'ils restent au même endroit (même chemin). L'/etc/fstab
entrée ne change jamais non plus.AVERTISSEMENT VITAL: Le montage est limité pour de bonnes raisons de sécurité. Le rendre plus flexible peut ouvrir des portes aux logiciels malveillants. Je ne suis pas un expert en sécurité et je vous recommanderais de ne pas ouvrir les portes plus que nécessaire - en utilisant des options permettant de restreindre l'utilisation des systèmes de fichiers pouvant ainsi être montés. Si un contributeur averti pouvait commenter davantage sur les questions de sécurité, cela pourrait être utile.
Diverses options sont disponibles pour limiter l’utilisation des systèmes de fichiers montés, telles que celles
noexec
qui empêchent l’exécution des fichiers binaires ounosuid
qui contribuent ainsi à la sécurité. En réalité, ces options sont ajoutées en tant qu'options par défaut lorsque les optionsuser
ouusers
sont utilisées, ce qui est nécessairement le cas dans ce que nous faisons ci-dessous. Réfléchissez à deux fois avant de remplacer ces valeurs par défaut. http://en.wikipedia.org/wiki/FstabD'autres options peuvent être ajoutées pour une protection supplémentaire. Par exemple, l'option
owner
dans l'/etc/fstab
entrée permet aux utilisateurs de gérer uniquement les fichiers ou les périphériques qu'ils possèdent. Voirman mount
pour une liste d'options: http://linux.die.net/man/8/mount .L'utilisation de cette
/etc/fstab
entrée peut également être limitée par la propriété user.group du ou des répertoires contenant les liens symboliques.Explication
Cette explication a été écrite avant que je réalise que je pouvais simplifier les choses aux deux scripts ci-dessus. Je n'y ai pas pensé tout de suite, en partie parce que j'ai sous les yeux un problème légèrement plus complexe qu'ils ne résolvent pas sans machines supplémentaires. Ainsi, mon explication est peut-être un peu plus complexe qu’elle ne le devrait, mais je n’ai pas le courage de tout réécrire à partir de zéro.
L'idée de base est de créer des entrées
/etc/fstab
qui incluent l'optionuser
ouusers
afin qu'un utilisateur puisse demandermount
le montage spécifié dans cette entrée en donnant comme argument le fichier à monter ou le point de montage à utiliser (mais pas les deux à ma connaissance). .Vous devez également avoir une entrée correcte dans
umount
(problème légèrement différent - voir ci-dessous). Cette optionuser
est généralement préférableusers
car elle limite l’autorisation àumount
l’utilisateur qui a monté le système de fichiers, maisusers
l’autorise à tous. Malheureusement, l'optionuser
ne fonctionne pas toujours et peut nécessiter d'autres étapes. Ceci est discuté dans Option "utilisateur" fonctionne pour le montage, pas pour umount .Tout d'abord, vous ajoutez à
/etc/fstab
une entrée telle que:et utilisez-le
/tmp/UFS/drive
comme lien symbolique (ou lien symbolique) vers le périphérique ou le fichier que vous souhaitez monter, par exemple un fichier contenant l'image d'un système de fichiers ISO/home/johndoe/john-image-file.iso
.Vous définissez également
/tmp/UFS/mountpoint
un lien symbolique vers le point de montage que vous souhaitez utiliser, par exemple/mnt/iso
.Vous pouvez ensuite monter
john-image-file.iso
avec la commande:Ceci est suffisant sous Mageia Linux, car l’utilisation de périphériques en boucle est désormais implicite et ne nécessite plus d’être
-o loop
explicite. Je ne sais pas à quel point c'est général aujourd'hui. Voir Lors du montage, quand dois-je utiliser un périphérique à boucle?Ce montage apparaît dans les tables et les commandes:
L'opération de montage peut fonctionner pour n'importe quel fichier ou lecteur et nécessite uniquement de créer un lien symbolique
/tmp/UFS/drive
vers ce fichier ou vers le périphérique correspondant au lecteur. Bien entendu, vous pouvez choisir un autre nom et un autre emplacement pour le lien symbolique, à condition que celui-ci ne change jamais.Le démontage du fichier repose de la même manière sur l'utilisation appropriée des liens symboliques. Dans le cas d'un périphérique normal correspondant à un lecteur matériel, vous utilisez simplement les mêmes liens.
Toutefois, les fichiers contenant l'image d'un système de fichiers sont montés via un type spécial de périphérique appelé périphérique en boucle, qui est automatiquement alloué lorsque vous montez le fichier.
Pour démonter le fichier, vous devez vous référer au périphérique en boucle, pas au fichier. Par conséquent, vous avez besoin d'
/etc/fstab
une entrée qui corresponde à la fois au périphérique de boucle utilisé/etc/mtab
ici/dev/loop0
et au point de montage/mnt/iso
.Vous ne pouvez pas créer une telle entrée à l'avance car le périphérique de boucle peut varier, car ils sont alloués de manière dynamique. Notez qu'il est également possible d'utiliser un périphérique à boucle fixe, mais cela peut être gênant à d'autres égards. Voir http://igurublog.wordpress.com/2011/01/22/how-to-allow-mounting-of-iso-files-by-a-regular-user/ ( ce blog a en fait inspiré la réponse ici ).
Cependant, vous pouvez trouver le nom du périphérique de boucle, ici
/dev/loop0
, en interrogeant le système, comme nous l'avons fait ci-dessus, de différentes manières. Ensuite, notre/etc/fstab
entrée standard peut être faite pour pointer vers le bon dispositif de boucle via le lien symbolique/tmp/UFS/drive
, et vers le point de montage comme cela a été fait précédemment avec/tmp/UFS/mountpoint
. Ceci fait, le fichier peut être démonté avec l’une des commandes suivantes (à condition qu’il n’y ait aucune ambiguïté/etc/mtab
, ce qui pose un problème différent):Comme les deux liens symboliques ne sont nécessaires que lorsque les commandes sont émises, ils peuvent être modifiés de manière dynamique. Ainsi, notre
/etc/fstab
entrée unique permet de monter un nombre quelconque de fichiers et de les monter dans n'importe quel ordre, sans privilèges root.Autres références:
Monter et modifier un fichier de bouclage sans sudo / root, est-ce possible?
http://www.tuxfiles.org/linuxhelp/fstab.html
la source
mount
commande d’ élévation pour chaque utilisateur normal?, Et donc les problèmes de sécurité qui y sont associés? Corrige moi si je me trompe.device
ou lamountpoint
section de fstab ne pointe pas vers une entrée valide. L'utilisateur doit se connecter via une session de console et entrerstartx
pour lancer explicitement un gestionnaire d'affichage.Le paquet libguestfs-tools-c a la commande guestmount afin
df montrera image.iso monté
pour décompter nous avons:
la source