Le sujet ayant du mal à converger vers une solution semble-t-il, je donne mon point de vue à toutes fins utiles.
1 - udiskctl n’a pas pour fonction de gérer des droits d’écriture;
2 - je ne vois pas d’intérêt pour l’usager unique qu’est l’administrateur de configurer sudo pour s’en limiter les droits. Le seul intérêt de configuration de sudo est de ne pas demander de mot de passe à l’administrateur, quelque-soit la commande.
Je propose de rebalayer point par point le sujet.
Ok.
sudo mount /dev/sdb1 /media/eric/disqueUSB
permet à l’utilisateur eric de monter le volume /dev/sdb1, mais sous l’identité et le groupe root.
Le « sudo mount
» n’est pas rédibitoire relativement à l’environnement décrit d’usager unique, mais la confusion commence ici. Le montage est une opération sans rapport direct/évident avec des permissions user/group d’écriture (voir configuration partition plus bas).
A ce niveau, sudo mount
permettra de monter la partition sur un point de montage imposé, et rien de plus.
J’ai essayé mount -o remount,user mais il ne permet pas de créer un répertoire avec mkdir.
Normal, ce n’est pas du tout le rôle de l’option ‹ user › de mount.
pmount permet de monter le volume
Par défaut j’utiliserai pmount, mais est-il possible d’utiliser mount en donnant les droits du point de montage à owner et group à eric ?
pmount n’est pas installé par défaut et non nécessaire pour l’usager/administrateur eric, et n’apporte rien d’interessant dans ce cas. mount ne permet pas de gérer directement par options des droits de propriété du point de montage pour de l’ext4, pas plus que pmount. mount et pmount montent, et c’est tout.
sudo chown eric:eric /media/eric/disqueUSB
cette commande dans un script n’est-elle pas particulièrement imprudente ?
La commande n’a pas d’intérêt dans le script. Une fois l’opération faite une fois sur la partition montée, le file-system retiendra les permissions définies.
――――
Donc finalement, comment faire sans trop se prendre la tête ?
Si le media disqueUSB est autorisé en usage à l’utilisateur, il est possible de passer les options de permission pour le user principal comme ceci à la partition /dev/sdb1 :
En supposant que /dev/sdb1 soit bien le périphérique (toujours vérifier):
# tune2fs -u 1000 -g 1000 /dev/sdb1
→ [ nécessite e2fsprogs
installé ]
Vérification:
# tune2fs -l /dev/sdb1 |grep '[ug]id'
Passons à la pratique avec un script de vérification:
#!/bin/bash
D=/dev/sdb1
P=/media/eric/disqueUSB
if ((UID>999)) ; then echo "usager $USER autorisé: ok"
else echo "usage interdit à $USER; bye" ; exit
fi
[ -d $P ] || mkdir $P
printf "Permissions $P : "; stat --printf="%a | %A\n" $P
echo "Montage $D sur $P :"
if sudo mount $D $P && findmnt -M $P ; then echo
mkdir $P/_ && rm -rf $P/_ && echo "Test de création répertoire dans $P OK"
else echo "problème de montage/écriture $D; please check" ; exit
fi
Normalement, « ça devrait bien se passer ».