udisksctl mount -b
), et demande l'emplacement exact du fichier de périphérique (ex. /dev/sdf1
.)
Copier le fichier suivant dans votre répertoire ~/bin/
, à créer s'il n'existe pas.
#!/bin/sh usage() { echo "Utilisation : $0 [-u] [[/dev/]device | [/dev/disk/by-uuid/]uuid | [/dev/mapper/]uuid] Monte un système de fichier dans un sous-répertoire de /media via udisks ou udisks2. Si aucun périphérique n'est donné, fmount tente de deviner le dernier périphérique inséré. Option de l'application : -u Démonte le système de fichier -h Affiche ce message d'aide" } finddev() { DEV=$1 if (echo $DEV | grep -q '^/dev/') && [ -e $DEV ] then echo $DEV fi if [ -e "/dev/disk/by-uuid/$DEV" ] then echo "/dev/disk/by-uuid/"$(echo $DEV | sed 's/.*/\L&/') fi if [ -e "/dev/$DEV" ] then echo "/dev/$DEV" fi if [ -e "/dev/mapper/$DEV" ] then echo "/dev/mapper/$DEV" fi } wrapper() { ACTION=$1 DEVICE=$2 case $ACTION in "mount") if [ -e /usr/bin/udisksctl ] then udisksctl mount -b $DEVICE else udisks --mount $DEVICE fi return $? ;; "umount") if [ -e /usr/bin/udisksctl ] then udisksctl unmount -b $DEVICE else udisks --unmount $DEVICE fi return $? ;; *) echo "Action invalide" return 1 ;; esac } guesslast() { LOG=$(dmesg| tail -n 50 | grep 'Attached scsi generic' -A 11 | tail -n 12) PARTS=$(echo $LOG | grep "sd.: sd.") if [ "$PARTS" = "" ] then DEV=$(echo $LOG | sed '/\[sd/s/.*\[\(sd[^\]]*\)\].*/\1/') else DEV=$(echo $PARTS | sed '/sd.:/s/.*sd.: \(sd[^ ]*\).*/\1/') fi echo $DEV } ACTION="mount" if [ $# -ne 0 ] && [ $1 = "-u" ] then ACTION="umount" shift fi if [ $# -ne 0 ] && [ $1 = "-h" ] then usage exit 0 fi if [ $# -ne 1 ] then DEV=$(guesslast) else DEV=$1 fi DEV=$(finddev $DEV) if [ -z "$DEV" ] then echo "Impossible de trouver le périphérique $DEV." exit 1 fi wrapper $ACTION $DEV exit $?
Rendez ce fichier exécutable :
chmod +x ~/bin/fmount
Si le dossier bin n'existait pas, indiquez au shell qu'il est dans le PATH :
PATH="$HOME/bin:$PATH"
Utilisation : fmount [-u] [[/dev/]device | [/dev/disk/by-uuid/]uuid | [/dev/mapper/]uuid] Monte un système de fichier dans un sous-répertoire de /media via udisks ou udisks2. Si aucun périphérique n'est donné, fmount tente de deviner le dernier périphérique inséré. Option de l'application : -u Démonte le système de fichier -h Affiche ce message d'aide
Si des disques occupent sda sdb sdc sdd sde, taper pour le nouveau disque à monter :
fmount sdf1
Pour démonter le même :
fmount -u sdf1
Et voilà !
Udisks utilise policy-kit et son système de session actives. Par défaut, seul l'utilisateur de la session active (affichée à l'écran) peut utiliser udisks. La conséquence directe est qu'un utilisateur se connectant par ssh ne peut pas monter les disques externes.
Une solution est de changer la politique de montage en copiant le fichier suivant dans le dossier /etc/polkit-1/localauthority/50-local.d/
:
[Mount a system-internal device] Identity=* Action=org.freedesktop.udisks.* ResultAny=yes ResultActive=yes ResultInactive=yes
Au prochain chargement des règles1), tout ira bien \o/