Comment écrire des fichiers sur une clé USB sans être root?

10

J'ai une clé USB de 4 Go que j'ai partitionnée en utilisant sudo cfdisk /dev/sdbet formatée en utilisant sudo mkfs /dev/sdb1. Il est actuellement défini sur ID 83avec System Linuxlorsque je fonctionne sudo fdisk -lsur mon Debian Squeeze.

J'utilise pmountpour monter les lecteurs USB externes. Donc, le faire pmount /dev/sdb1monte /media/usb0parce que j'ai le ff. ligne dans /etc/fstab:

/dev/sdb1    /media/usb0    auto    rw,user,noauto    0    0

Après avoir émis la pmountcommande, l'USB est monté sur /media/usb0- faire un ls -l /media/usb0me donne:

drwx------ 2 root root 16384 Mar   2 20:08 lost+found

Je vais donc vaquer à mes occupations et essayer de copier un fichier dans /media/usb0mais j'obtiens l'erreur ci-dessous:

$ cp ~/foo.bar /media/usb0
cp: cannot create regular file `/media/usb0/foo.bar': Permission denied

Mais lorsque j'émets la même cpcommande avec sudo, je peux copier le fichier.

Pourquoi cela arrive-t-il? J'ai essayé l'autre clé USB que j'ai et je peux leur écrire sans cette erreur. Y a-t-il eu un problème avec la façon dont j'ai formaté ou repartitionné la clé USB?

Eric
la source

Réponses:

7

Vous avez formaté la partition sdb1 à l'aide d'unext* système de fichiers ( ext2 , ext3 ou ext4 ; je ne me souviens pas de la valeur par défaut). Il s'agit du système de fichiers par défaut sur les systèmes Linux et utilise les autorisations de fichier Unix pour déterminer qui peut modifier des fichiers ou des répertoires. Les nouveaux systèmes de fichiers commencent toujours par la racine ( /media/usb0dans ce cas) appartenant à root:root, et généralement avec des autorisations permettant uniquement la modification par le propriétaire.

Pour voir cela par vous-même, montez le système de fichiers, puis exécutez ls -ld /media/usb0pour voir la propriété / les autorisations actuelles. Ma conjecture est:

drwx------ 2 root root 16384 Mar   2 20:08 /media/usb0

Une solution simple consisterait à a) chownle système de fichiers monté sur votre propre compte Linux, ou b) à donner à tout le monde une autorisation d'écriture avec chmod.

Cependant, à la fin, ce ne serait pas une bonne solution, car les fichiers créés deviendraient la propriété de votre UID, pas du nom d'utilisateur; cela entraînerait rapidement des incohérences de compte lorsque le lecteur USB est connecté à un autre système. En supposant que vous puissiez le connecter, c'est-à-dire que Windows ne prend pas en charge ext3 sans supercherie supplémentaire, donc NTFS ( mkfs.ntfs) ou FAT32 ( mkfs.vfat) serait un bien meilleur choix pour le système de fichiers.

user1686
la source
J'ai essayé de faire sudo mkfs.ntfs /dev/sdb1et sudo mkfs.vfat /dev/sdb1mais j'obtiens l'erreur sudo: mkfs.xxxx: command not foundxxxxest soit ntfset vfat. Comment faire fonctionner cela sur Debian Squeeze?
Eric
@Eric: installez ntfs-3g + ntfsprogs + dosfstools .
user1686
Ok, j'ai installé ça. Maintenant , lorsque je tente de monter, je reçois cette erreur: ntfs-3g-mount: failed to open /dev/fuse: Permission denied. Que dois-je faire à ce sujet?
Eric
4

Cela se produit également sur les systèmes Debian ultérieurs (par exemple Jessie) avec certains lecteurs flash USB au format fat32 ou ext3,4. Vous devez supprimer (ou commenter) la ligne suivante de votre / etc / fstab :

/dev/sdb1    /media/usb0    auto    rw,user,noauto    0    0

Après cela, vous aurez votre clé USB montée automatiquement sous la permission de votre compte d'utilisateur normal et non root. Voir les informations détaillées sur les forums Debian sur ce lien.

Après cela, votre clé USB se montera facilement avec votre autorisation d'écriture utilisateur :)

miklosq
la source
2

Utilisez sudoet modifiez les autorisations avec la chmodcommande.

Voir ma réponse dans cette question pour voir comment utiliser chmod:

Je vous suggère d'utiliser chmod 777pour tout autoriser (son utilisation ls -lmontrera drwxrwxrwx).

kokbira
la source
1

Si votre système de fichiers est FAT16 ou FAT32, vous devez utiliser cette commande:

sudo mount -t vfat /dev/sdb1 /media/usb0 -o uid=1000,gid=1000,utf8,dmask=027,fmask=137

Pour plus d'informations, visitez le lien https://help.ubuntu.com/community/Mount/USB#Mount_the_Drive

kamy22
la source
0

Accédez au support du système de fichiers via l'interface graphique. Cliquez avec le bouton droit sur le lecteur USB que vous souhaitez copier et sélectionnez - Ouvrir en tant que racine. Tapez le mot de passe. Ensuite, vous pouvez copier supprimer, faire glisser et déposer. Tout bon

Sven
la source
Comme mentionné ci-dessus par @Sven, root: root dans la propriété est la raison d'ouvrir en tant que root sur le terminal ou l'interface graphique OU d'utiliser chown pour changer le propriétaire ou le groupe pour vous permettre d'utiliser cette clé USB comme prévu.
linuxdev2013