¿Cómo escribo archivos en un USB sin ser root?

10

Tengo una memoria USB de 4GB que particioné usando sudo cfdisk /dev/sdby formateé sudo mkfs /dev/sdb1. Actualmente está configurado como ID 83con el sistema Linuxcuando ejecuto sudo fdisk -lmi Debian Squeeze.

Yo uso pmountpara montar las unidades USB externas. Así que hacer un pmount /dev/sdb1montaje /media/usb0porque tengo el ff. línea en /etc/fstab:

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

Después de emitir el pmountcomando, el USB se monta en /media/usb0- haciendo un ls -l /media/usb0dame:

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

Así que me dedico a mi negocio e intento copiar un archivo, /media/usb0pero aparece el siguiente error:

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

Pero cuando emito el mismo cpcomando con sudo, puedo copiar el archivo.

¿Por qué pasó esto? Probé otra unidad USB que tengo y puedo escribirles sin este error. ¿Hubo algún problema con la forma en que formateé o reparticioné la memoria USB?

Eric
fuente

Respuestas:

7

Formateó la partición sdb1 utilizando unext* sistema de archivos ( ext2 , ext3 o ext4 ; no puedo recordar el valor predeterminado). Este es el sistema de archivos predeterminado en sistemas Linux, y utiliza permisos de archivos Unix para determinar quién puede modificar archivos o directorios. Los sistemas de archivos nuevos siempre comienzan con la raíz ( /media/usb0en este caso) propiedad de root:root, y generalmente con permisos que solo permiten la modificación por parte del propietario.

Para ver esto por usted mismo, monte el sistema de archivos, luego ejecútelo ls -ld /media/usb0para ver la propiedad / permisos actuales. Mi suposicion es:

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

Una solución simple sería a) chownel sistema de archivos montado en su propia cuenta de Linux, o b) para dar a todos permiso de escritura chmod.

Sin embargo, al final, esta no sería una buena solución, ya que los archivos creados serían propiedad de su UID, no del nombre de usuario; esto daría lugar rápidamente a desajustes de cuenta cuando la unidad USB está conectada a un sistema diferente. Suponiendo que pueda conectarlo, es decir: Windows no admite ext3 sin trucos adicionales, por lo que NTFS ( mkfs.ntfs) o FAT32 ( mkfs.vfat) sería una opción mucho mejor para el sistema de archivos.

usuario1686
fuente
Intenté hacer sudo mkfs.ntfs /dev/sdb1y sudo mkfs.vfat /dev/sdb1pero recibo el error sudo: mkfs.xxxx: command not founddonde xxxxestá ntfsy vfat. ¿Cómo hago para que eso funcione en Debian Squeeze?
Eric
@Eric: Instale ntfs-3g + ntfsprogs + dosfstools .
user1686
Ok, lo instalé. Ahora cuando intento montar, me sale este error: ntfs-3g-mount: failed to open /dev/fuse: Permission denied. ¿Qué hago al respecto?
Eric
4

Esto sucede en sistemas Debian posteriores (por ejemplo, jessie) y también con ciertas unidades flash USB formateadas fat32 o ext3,4. Debe eliminar (o comentar) la siguiente línea de su / etc / fstab :

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

Después de esto, tendrá su unidad USB montada automáticamente bajo el permiso de su cuenta de usuario normal y no root. Ver información detallada en los foros de Debian en este enlace.

Después de eso, su unidad USB se montará sin problemas con su permiso de escritura del usuario :)

miklosq
fuente
2

Usar sudoy cambiar permisos con chmodcomando.

Vea mi respuesta en esa pregunta para ver cómo usar chmod:

Le sugiero que use chmod 777para permitir todo ( ls -lse mostrará su uso drwxrwxrwx).

kokbira
fuente
0

Vaya a los medios del sistema de archivos a través de la GUI. Haga clic derecho en la unidad USB que desea copiar y seleccione - Abrir como raíz. Escriba la contraseña Luego puede copiar eliminar, arrastrar y soltar. Todo bien

Sven
fuente
Como se mencionó anteriormente por @Sven, root: root en la propiedad es la razón por la que se abre como root en la terminal o gui O usa chown para cambiar el propietario o el grupo para permitirte usar ese usb como se esperaba.
linuxdev2013