Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Monter une clef (ou tout autre periph de stockage amovible)

8 réponses
Avatar
Yves Lambert
Je présume que la question a été posée et débattue 41999 fois, aussi je vous prie de m'excuser d'être le 420000ème à la poser mais voila :

Lorsque je branche un périphérique de stockage USB, udev lui affecte un lecteur /dev/sdx et pour les partitions /dev/sdx1. x varie selon l'humeur d'udev, ce qui a été monté auparavant etc. aussi je peux difficilement ajouter une entrée dans fstab qui me simplifierait pourtant la vie. Si je monte la partition en tant que root, vu que c'est du fat, je ne peux pas changer l'owner (ça n'a peut-être rien à voirr avec le fait que c'est du fat, toujours est il que je ne peux pas changer l'owner :
$ su -c "mount /dev/sdd1 /media/clef"
Mot de passe :
$ ls -l /media/clef
-r-xr-xr-x 1 root root 154 6 janv. 2010 machin
drwxr-xr-x 2 root root 4096 1 janv. 2004 truc
...
$ su -c "chown -R luser:luser /media/clef"
Mot de passe :
chown: changement de propriétaire pour « /media/clef/machin »: Opération non permise
chown: changement de propriétaire pour « /media/clef/truc »: Opération non permise

$ touch /media/clef/bidule
touch: impossible de faire un touch « /media/clef/bidule »: Permission non accordée

C'est un peu chiant...

Est-ce qu'il y a un moyen de monter ma clef en tant que luser sans passer par gnomeVFS ou autre artifice et sans rajouter une %*µ de ligne dans /etc/fstab/ qui ne me servira à rien si je veux monter deux clefs ou si udev décide d'affecter une autre lettre à ma clef ?

En attendant si j'ajoute la ligne :

/dev/sdd1 /media/clef msdos user,noauto
à fstab, ça baigne (jusqu'à ce que le node de la partition de ma clef soit affectée à une autre lettre et où je n'aurais plus qu'à modifier encore fstab :(

Merci pour le néon ;)

--
C'est quand on a raison qu'il est difficile de prouver qu'on a pas tort.
-+- Pierre Dac -+-

8 réponses

Avatar
Nicolas George
Ton newsreader est mal réglé et envoie des lignes trop longues ; merci de
régler ça. Une limite à 72 caractères pour ce que tu écris est en général
considérée comme correcte. Évidemment, il ne faut pas recouper les
citations.

Yves Lambert wrote in message
:
Lorsque je branche un périphérique de stockage USB, udev lui affecte un
lecteur /dev/sdx et pour les partitions /dev/sdx1. x varie selon l'humeur
d'udev, ce qui a été monté auparavant etc. aussi je peux difficilement
ajouter une entrée dans fstab qui me simplifierait pourtant la vie.



Ce n'est pas udev qui décide, c'est le noyau, plus exactement le
sous-système SCSI. Le but d'udev est précisément l'inverse : permettre de
configurer des noms de périphériques stables indépendamment des aléas
d'allocations au niveau du noyau.

Donc tu vas faire un /sbin/udevadm info -p /sys/block/sdx --attribute-walk,
et tu vas aller dans /etc/udev/rules.d écrire une règle qui va bien pour que
ta clef USB ait toujours le même nom. De préférence par un lien symbolique
(SYMLINK+="...") plutôt qu'en changeant le nom principal.

D'ailleurs, tu as probablement déjà des règles qui font ça : va voir dans
/dev/disk/.

Si je
monte la partition en tant que root, vu que c'est du fat, je ne peux pas
changer l'owner (ça n'a peut-être rien à voirr avec le fait que c'est du
fat, toujours est il que je ne peux pas changer l'owner :



Lis man mount, cherche le paragraphe « Mount options for fat ». Les options
uid et gid devraient t'intéresser, ainsi que umask, dmask et fmask.
Avatar
Yves Lambert
Bonjour,
On 27 Jul 2010 11:22:27 GMT
Nicolas George <nicolas$ wrote:

Ton newsreader est mal réglé et envoie des lignes trop longues ; merci de
régler ça. Une limite à 72 caractères pour ce que tu écris est en général
considérée comme correcte. Évidemment, il ne faut pas recouper les
citations.



J'ai corrigé ça, en principe c'est bon. Il suffisait d'y penser (les
développeurs de claws y avaient (bien) pensé).

Ce n'est pas udev qui décide, c'est le noyau, plus exactement le
sous-système SCSI.



OK.

Le but d'udev est précisément l'inverse : permettre de
configurer des noms de périphériques stables indépendamment des aléas
d'allocations au niveau du noyau.



Pareil, j'aurai dû y penser.


Donc tu vas faire un /sbin/udevadm info -p /sys/block/sdx --attribute-walk,



Ce n'est pas plutôt /sbin/udevadm info -p /sys/block/sdd/sdd1
--attribute-walk qui va me donner l'info qui va bien ? (je ne remplace
pas d par x, je sais bien que ma clé a droit à son anonymat, mais le
but du jeu c'est de l'en sortir :)


et tu vas aller dans /etc/udev/rules.d écrire une règle qui va bien pour que
ta clef USB ait toujours le même nom. De préférence par un lien symbolique
(SYMLINK+="...") plutôt qu'en changeant le nom principal.



Juste pour info, vu qu'il me suffit d'essayer (je ne le fais pas
maintenant vu que je suis en train de me noyer dans man udev et que
j'ai un grand ménage à faire dans mon apparte) je pourrais créer un nom
mnémonique (ou pas) du style /dev/apn ou /dev/clef2douze ?
à ces moments les partitions apparaitront-elle automagiquement sous la
forme /dev/clef2douze1, /dev/clef2douze2 etc. quand je branche la clé ?

D'ailleurs, tu as probablement déjà des règles qui font ça : va voir dans
/dev/disk/.



Ben oui j'ai ça :
lrwxrwxrwx 1 root root 10 27 juil. 15:30 /dev/disk/by-uuid/F410-4EFB
-> ../../sdd1
comment se fait il que cet uuid est si court, est il vraiment
universel et unique ? chaque fois que la clé va être monté, est-ce que
je vais retrouver ce symlink vers la clé ?

Si oui, est-ce qu'il me suffit de créer un symlink /dev/clef
-> /dev/disk/by-uuid/F410-4EFB pour que /dev/clef désigne la partition
1 de ma clef quand celle ci est branchée ?
J'ai fait ça :

# ln -s /dev/disk/by-uuid/F410-4EFB /dev/mpman
# eject /dev/sdd

# ls -l /dev/disk/by-uuid/F410-4EFB
ls: impossible d'accéder à /dev/disk/by-uuid/F410-4EFB: Aucun fichier
ou dossier de ce type
# file /dev/mpman /dev/mpman: broken symbolic link to
`/dev/disk/by-uuid/F410-4EFB'
## Je débranche et je rebranche la clef :
## Au bout d'un moment j'ai :
# file /dev/mpman /dev/mpman: symbolic link to
`/dev/disk/by-uuid/F410-4EFB'
# mount /dev/mpman /media/clef
# echo $?
0

Bon, c'est du bricolage, mais ça a marché o:) que demande le
peuple ? Pourvu que ça dure (ça c'est plutôt la mère de Napoléon qui
demandait ça :) (je ne suis pas sûr du tout que je vais retrouver mon
sumlink si je redémarre la machine. Je suis presque sûr du contraire...

Je n'ai plus qu'à remplacer sdd1 par mpman dans fstab, e la nave va (si
ça marche plus (Q : pourquoi ça ne va plus marcher ? R: je ne suis pas
sûr du tout que je vais retrouver mon symlink si je redémarre la
machine.) il ne me reste qu'à revenir à l'étape précédente (celle que
j'ai séché) à faire avant d'avoir à redémarrer. J'ai bon ?


Lis man mount, cherche le paragraphe « Mount options for fat ». Les options
uid et gid devraient t'intéresser, ainsi que umask, dmask et fmask.



Troisième fois que j'aurai dû lire un peu avant de poster :(

Ce serait le plus simple, mais j'ai dû sauter une étape importante ou
mal lire parce que ça ne donne pas le résultat espéré :

# umount /media/clef
# mount /dev/sdd1 /media/clef/ -t vfat -O uid00,gid00
# echo $?
0

ls -l m'indique que les fichiers appartiennent toujours à M. root et pas
à 1000, c'est à dire à moi :'(

Merci à toi.
--
Quand on a pas de passé, on n'a pas d'avenir.
-+- Fernand Braudel (1902-1985) -+-
Avatar
Lucas Levrel
Le 27 juillet 2010, Yves Lambert a écrit :

Est-ce qu'il y a un moyen de monter ma clef en tant que luser sans
passer par gnomeVFS ou autre artifice et sans rajouter une %*µ de ligne
dans /etc/fstab/ qui ne me servira à rien si je veux monter deux clefs
ou si udev décide d'affecter une autre lettre à ma clef ?



Utilises-tu un environnement de bureau et lequel ? Au moins gnome et xfce
peuvent monter automatiquement.

En attendant si j'ajoute la ligne :

/dev/sdd1 /media/clef msdos user,noauto
à fstab, ça baigne (jusqu'à ce que le node de la partition de ma clef soit affectée à une autre lettre et où je n'aurais plus qu'à modifier encore fstab :(



Sinon comme l'a presque dit Nicolas tu peux utiliser /dev/disk/by-id, où
par exemple ma clef apparaît comme ceci :
lrwxrwxrwx 1 root root 9 juil. 27 15:09 usb-JetFlash_Transcend_8GB_PRB8TF0M-0:0 -> ../../sdb
lrwxrwxrwx 1 root root 10 juil. 27 15:09 usb-JetFlash_Transcend_8GB_PRB8TF0M-0:0-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 juil. 27 15:09 usb-JetFlash_Transcend_8GB_PRB8TF0M-0:0-part2 -> ../../sdb2
lrwxrwxrwx 1 root root 10 juil. 27 15:09 usb-JetFlash_Transcend_8GB_PRB8TF0M-0:0-part3 -> ../../sdb3


--
LL
Avatar
Erwan David
Lucas Levrel écrivait :

Le 27 juillet 2010, Yves Lambert a écrit :

Est-ce qu'il y a un moyen de monter ma clef en tant que luser sans
passer par gnomeVFS ou autre artifice et sans rajouter une %*µ de
ligne dans /etc/fstab/ qui ne me servira à rien si je veux monter
deux clefs ou si udev décide d'affecter une autre lettre à ma clef ?



Utilises-tu un environnement de bureau et lequel ? Au moins gnome et
xfce peuvent monter automatiquement.



Pas besoin de lier ça à un environnement graphique. usbmount fait ce qui
est demandé...


--
Le travail n'est pas une bonne chose. Si ça l'était,
les riches l'auraient accaparé
Avatar
Yves Lambert
On Tue, 27 Jul 2010 17:13:12 +0200
Nicolas Richard wrote:

Le 27/07/10 17:04, Yves Lambert a écrit :
> # mount /dev/sdd1 /media/clef/ -t vfat -O uid00,gid00

Et avec '-o' plutôt que '-O' ?




C'est subtil : -O optlist et -o options.
/me bash myself.

--

<flynn`> est-ce qu'il existe un serveur FTP plus simple que wu-ftpd ,
et tout aussi (ou plus ?) secure ?
Avatar
Nicolas George
Yves Lambert wrote in message
:
J'ai corrigé ça, en principe c'est bon. Il suffisait d'y penser (les
développeurs de claws y avaient (bien) pensé).



Ça a l'air bon.

Ce n'est pas plutôt /sbin/udevadm info -p /sys/block/sdd/sdd1
--attribute-walk qui va me donner l'info qui va bien ?



Les informations pour le disque entier et pour une partition sont quasiment
identiques.

Juste pour info, vu qu'il me suffit d'essayer (je ne le fais pas
maintenant vu que je suis en train de me noyer dans man udev et que
j'ai un grand ménage à faire dans mon apparte) je pourrais créer un nom
mnémonique (ou pas) du style /dev/apn ou /dev/clef2douze ?



Quand je branche mon téléphone, il apparaît comme /dev/liquid/disc,
/dev/liquid/part1 et /dev/liquid/part2. Quand je branche mon boîtier USB, il
apparaît comme /dev/rack/2000/disc, le précédent apparaissait comme
/dev/rack/1000/disc, etc.

à ces moments les partitions apparaitront-elle automagiquement sous la
forme /dev/clef2douze1, /dev/clef2douze2 etc. quand je branche la clé ?



Ce n'est pas automatique, il faut que les règles faites couvrent le disque
_et_ les partitions. Personnellement, je fais ainsi :

ACTION=="add|change", KERNEL=="sd*", DRIVERS=="usb", GOTO="usb_storage_start"
GOTO="usb_storage_end"
LABEL="usb_storage_start"

ENV{PARTN}="disc"
KERNEL=="sd??*", ENV{PARTN}="part%n"

...

ATTRS{model}=="SD*", SYMLINK+="sd-card/%E{PARTN}"

ce qui me fait des règles communes au disque entier et aux partitions.

comment se fait il que cet uuid est si court, est il vraiment
universel et unique ?



Aucune idée.

chaque fois que la clé va être monté, est-ce que
je vais retrouver ce symlink vers la clé ?



Très probablement.

Si oui, est-ce qu'il me suffit de créer un symlink /dev/clef
-> /dev/disk/by-uuid/F410-4EFB pour que /dev/clef désigne la partition
1 de ma clef quand celle ci est branchée ?



Non, parce que /dev est un tmpfs géré par udev, donc le symlink est perdu
par exemple au reboot.

Ce qu'il faut faire, c'est écrire une règle qui établisse le symlink.

Je n'ai plus qu'à remplacer sdd1 par mpman dans fstab, e la nave va



Tu peux simplement mettre /dev/disk/by-uuid/F410-4EFB dans fstab.

# mount /dev/sdd1 /media/clef/ -t vfat -O uid00,gid00



-o, pas -O. Et des options, que ce soit -o ou -t, ça se met au début pour la
plupart des commandes. Certaines sont tolérantes, pas toutes, pas toutes
pareil.
Avatar
Yves Lambert
On Tue, 27 Jul 2010 17:39:57 +0200
Erwan David wrote:

> Utilises-tu un environnement de bureau et lequel ? Au moins gnome et
> xfce peuvent monter automatiquement.



Sans passer par gnomeVFS :o)

Pas besoin de lier ça à un environnement graphique. usbmount fait ce qui
est demandé...



This package automatically mounts USB mass storage devices (typically
USB pens) when they are plugged in


Si c'est pas trop galère à configurer je prend.

M'enfin : que se passe-t-il si luser est logué sur la console, luser2
sur tty1 et luser3 sur localhost:0 et que tous trois ont lancé
usbmount en démon ? qui hérite de la clef ? Si pierre branche la clef et
que c'est paul qui en hérite, jacques est obligé de se loguer en root
pour réparer le bazar :)


su -c mount -o uid=$EUID,gid=$(grep floppy /etc/groups|cut
-d: -f3) $device $mountpoint
me convient bien en fait :)
(UID et EUID ne sont pas affectés par "su -c" et restent ceux de celui
qui lance la commande)

Y a-t-il plus simple (et/ou plus universel) pour récupérer un GID
? si je ne spécifie pas de -o gid=## le gid des fichiers est 0. (ça y
est j'ai lu (et compris ?) man mount ;)

Après il me restera à mettre les lignes qui vont bien dans /etc/sudoers
pour pouvoir lancer la commande sans s'authentifier...

Le truc c'est aussi que quand on branche un périphérique de stockage, on
peut avoir envie de le partitionner, le cloner, vérifier le fs, y
charger une image etc. et pas nécessairement le monter immédiatement.

--
Déconner, c'est se vider de la connerie acquise par osmose.
-+- Frédéric Dard -+-
Avatar
Nicolas George
Yves Lambert wrote in message
:
(UID et EUID ne sont pas affectés par "su -c" et restent ceux de celui
qui lance la commande)



En fait, c'est parce que les variables dans la commande que tu as écrite
sont développées par le shell avant l'appel à su :

she-seel ~ $ su -c "echo $UID"; su -c 'echo $UID'
Password:
1000
Password:
0

Y a-t-il plus simple (et/ou plus universel) pour récupérer un GID
?



she-seel ~ $ id -g cigaes
1000

Le truc c'est aussi que quand on branche un périphérique de stockage, on
peut avoir envie de le partitionner, le cloner, vérifier le fs, y
charger une image etc. et pas nécessairement le monter immédiatement.



Configure udev pour donner les droits sur le device.