Forum Linux.général Monter une image-disque sans être root

Posté par  .
Étiquettes : aucune
0
23
juin
2008
J'utilise Etch. Je souhaite monter des images de disques (Qemu et vmware, mais c'est valable pour n'importe quoi) sans être root.

En étant root je fais:

# losetup -f
--> /dev/loop4
# losetup --offset 32256 /dev/loop4 /chemin/disque_virtuelt.dat
# mount /dev/loop4 /mnt

Facile.

Sans être root, je n'ai pas trouvé.

Je peux ajouter l'utilisateur au groupe 'disk' mais ça lui ouvre les droits de lecture/écriture sur tous les disques. Pas terrible :-)

J'ai essayé avec PAM sans succès. Je suppose que losetup n'est pas compilé pour utiliser PAM.

Je sèche.

Quelqu'un a une idée pour utiliser des images-disques sans être root ?
  • # Fuse ? users ?

    Posté par  . Évalué à 2.

    Si tu veux faire un montage local, vois du côté de fuse (Filesystem in userspace). Je ne l'ai jamais utilisé, donc, je ne connais pas et ne m'étendrai pas plus.

    Par contre, si tu permettre aux utilisateurs de monter des images prédéfinies, tu peux passer directement l'option loop à mount et donc, à priori, mettre ça dans /etc/fstab. De là, tu ajoutes users pour autoriser n'importe qui à monter/démonter l'image/la partition, et ça devrait faire ce que tu veux.

    Bon courage.
    • [^] # Re: Fuse ? users ?

      Posté par  . Évalué à 2.

      Si tu veux faire un montage local, vois du côté de fuse
      Fuse permet de monter un système de fichiers, ce qui est la partie qui ne pose pas trop de problèmes avec un bête mount associé à PAM ou avec l'entrée qui va bien dans /etc/fstab. Ou même avec fusermount. J'ai déjà ça qui fonctionne sans pépins.

      Par contre je n'ai rien trouvé pour associer une image toute bête vers un périphérique du genre /dev/loop. La seule chose préexistante est 'mountlo' mais ça passe par User Mode Linux (grosse artillerie donc) et ce n'est pas standard.

      Pour l'instant je me contente de mettre l'utilisateur dans le groupe 'disk'. C'est vraiment gruik.

      Un truc tout simple: est-il possible de monter une image de cd-rom sans être root ? Ca donnerait une piste. Je n'ai jamais trouvé mais je cherche peut-être mal.

      Sinon le truc ultime pour résoudre peut-être beaucoup d'autres problèmes: un programme qui fasse appel à PAM avant de donner la main à la suite.
      exemple: admettons que ce programme soit nommé pampam.
      # pampam losetup /dev/loop5 /chemin/fichier.dat
      et là, si PAM l'autorise, ça fonctionne.
      ... je suis certain que ça existe, et même d'une manière tellement bête que je vais râler de ne pas le savoir :-)
      • [^] # Re: Fuse ? users ?

        Posté par  . Évalué à 2.

        Il t'a dit (en gros) qu'on pouvait utiliser les options loop et offset dans le fstab, pour faire le losetup avec la commande mount.

        Sinon, "alias pampam=sudo"
        • [^] # Re: Fuse ? users ?

          Posté par  . Évalué à 2.

          Sauf que ça ne permet de monter que les images dont on connaît le nom à l'avance. Déjà expliqué.

          Et sudo donne l'accès TOTAL à losetup et mount, ça enlève beaucoup de l'intérêt de ne pas être carrément root.
  • # Il y a bien une méthode ...

    Posté par  . Évalué à 1.

    ... mais c'est un poil du bricolage.
    En gros, tu t'arranges pour faire tes losetup au boot, dans un rc.local par exemple.
    Ensuite, tu utilises ce bon vieux fstab et son option users:

    The fourth field, (fs_mntops), describes the mount options associated
    with the filesystem.

    It is formatted as a comma separated list of options. It contains at
    least the type of mount plus any additional options appropriate to the
    filesystem type. For documentation on the available options for non-
    nfs file systems, see mount(8). For documentation on all nfs-specific
    options have a look at nfs(5). Common for all types of file system are
    the options ``noauto'' (do not mount when "mount -a" is given, e.g., at
    boot time), ``user'' (allow a user to mount), and ``owner'' (allow
    device owner to mount), and ``comment'' (e.g., for use by fstab-main-
    taining programs). The ``owner'' and ``comment'' options are Linux-
    specific. For more details, see mount(8).
    • [^] # Bin non :-)

      Posté par  . Évalué à 2.

      Ca aurait été trop simple :-)
      Les fichiers à monter ne sont pas connus à l'avance.

      Une autre méthode est de copier 'losetup' en 'losetup_bis' par exemple, et de le mettre en SUID avec un groupe spécifique. Je vais tester ça. C'est gruik mais moins que ma méthode actuelle.
      • [^] # J'améliore

        Posté par  . Évalué à 2.

        Le fait d'écrire ici m'a fait penser à une autre méthode.

        SUID n'aide en rien, donc pas bon.

        J'ai modifier la règle d'attribution des droits sur /dev/loop[0-9] dans /etc/udev/ et maintenant c'est mieux. Par propre-propre mais mieux.

        Reste qu'un 'wrapper' autour de PAM serait super.
    • [^] # Re: Il y a bien une méthode ...

      Posté par  . Évalué à 2.

      Pourquoi passez-vous par losetup alors qu'il existe l'option loop dans mount ? Du coup, on met tous dans la fstab, on passe users (pour qu'un utilisateur A puisse démonter ce qui a été monté par un utilisateur B), et il n'y a plus jamais besoin de demander à root.

      /répertoire/monfichier.iso /mon/pointdemontage auto loop,users 0 0

      Par contre, évidemment, cela demande toujours que les images soient connues à l'avance. J'imagine que l'on peut faire facilement un pilote qui se contente de faire le montage, mais je pense que le plus simple reste un script shell dûment privilégié par sudo (il y a moyen d'autoriser, avec ou sans mot de passe, l'accès à un programme unique à certains utilisateurs).

      Sinon, si c'est une distrib' à destination du débutant ou du semi-public, les environnements de bureau tels que Gnome proposent déjà le montage automatique en mode graphique ...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.