No se puede aplicar chmod a un archivo


18

Tengo un archivo en mi HDD,

cd /media/celebisait/5AC69788C6976355

Hay mi archivo llamado myFile.tar.gz. Hago un ls -l,

-rw------- 2 celebisait celebisait  1387745311 Jun  6  2013 myFile.tar.gz

Todo parece estar bien. Sin embargo, cuando lo hago,

$ sudo chmod 755 myFile.tar.gz

No tengo ningún error pero no pasa nada, es decir, cuando lo vuelvo a hacer ls -l, obtengo el mismo resultado,

-rw------- 2 celebisait celebisait  1387745311 Jun  6  2013 myFile.tar.gz

Chmod no cambia .. ¿Por qué?

PD: yo uso Ubuntu 13.04.

Editar:

$ cd /media/celebisait/5AC69788C6976355
$ df

Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sda2       89873576  42976028  42325544  51% /
none                   4         0         4   0% /sys/fs/cgroup
udev            16436736         4  16436732   1% /dev
tmpfs            3289260       920   3288340   1% /run
none                5120         0      5120   0% /run/lock
none            16446280       764  16445516   1% /run/shm
none              102400        52    102348   1% /run/user
/dev/sda1          94759      2208     92551   3% /boot/efi
/dev/sdb1      767999996 541212516 226787480  71% /media/celebisait/5AC69788C6976355
/dev/sdb2      767999996   1466472 766533524   1% /media/celebisait/54D09DBDD09DA5B0

Edición 2:

$ cd /media/celebisait/5AC69788C6976355
$ mount

/dev/sda2 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/cgroup type tmpfs (rw)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /sys/firmware/efi/efivars type efivarfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
/dev/sda1 on /boot/efi type vfat (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
gvfsd-fuse on /run/user/celebisait/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=celebisait)
/dev/sdb1 on /media/celebisait/5AC69788C6976355 type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
/dev/sdb2 on /media/celebisait/54D09DBDD09DA5B0 type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)

Edición 3:

$ sudo fdisk -l /dev/sdb1

Disk /dev/sdb1: 786.4 GB, 786432000000 bytes
255 heads, 63 sectors/track, 95611 cylinders, total 1536000000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x6e697373

This doesn't look like a partition table
Probably you selected the wrong device.

     Device Boot      Start         End      Blocks   Id  System
/dev/sdb1p1   ?  1936269394  3772285809   918008208   4f  QNX4.x 3rd part
Partition 1 does not start on physical sector boundary.
/dev/sdb1p2   ?  1917848077  2462285169   272218546+  73  Unknown
Partition 2 does not start on physical sector boundary.
/dev/sdb1p3   ?  1818575915  2362751050   272087568   2b  Unknown
Partition 3 does not start on physical sector boundary.
/dev/sdb1p4   ?  2844524554  2844579527       27487   61  SpeedStor
Partition 4 does not start on physical sector boundary.

Partition table entries are not in disk order

Edición 4:

$ sudo fdisk -l /dev/sdb

Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x9c73d093

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048  1536002047   768000000    7  HPFS/NTFS/exFAT
/dev/sdb2      1536002048  3072002047   768000000    7  HPFS/NTFS/exFAT
/dev/sdb3      3072002048  3907026943   417512448    7  HPFS/NTFS/exFAT

¿Cuál es el sistema de archivos de esa unidad externa? dfel resultado del comando sería bueno
Kiwy

No necesita sudo si posee el archivo y el directorio, dependiendo de la forma en que se ha montado (¿solo lectura?
X Tian

@ Kiwy agregué la salida de df.
Dijo el

@Braiam ¿Cómo mount?
Dijo el

publicar la salida de blkid.
Avinash Raj

Respuestas:


15

TL; DR;

NOTA: Basado en la actualización continua de la pregunta por parte del OP con nueva información, se determinó que el problema era que estaba montando una partición NTFS. Entonces # 3 a continuación es la respuesta real a su problema. Dejo los otros 2 métodos aquí para otros que pueden encontrar problemas similares que no usan una partición NTFS.


Idea # 1: ¿solo lectura de los medios (ISO / CD / DVD)?

Eche un vistazo a la salida del mountcomando, específicamente algo como esto:

$ mount | grep '/media'

/media/celebisaitEs probable que el dispositivo montado debajo sea ​​un archivo ISO o un CD / DVD. En cuyo caso, no podrá obtener acceso de escritura, ya que generalmente son de solo lectura.

Puede saber qué está montado lectura / escritura vs. lectura solo volviendo a la mountsalida del comando.

Ejemplo

/dev/mapper/fedora_greeneggs-root on / type ext4 (rw,relatime,seclabel,data=ordered)

Observe la salida entre paréntesis. El primer argumento antes de la primera coma es el rwque denota el acceso de lectura / escritura. Si fuera un dispositivo de solo lectura, tendría un roallí en su lugar.

Método alternativo

También puede averiguar de qué dispositivo se obtiene una ubicación particular en su HDD mediante el df -h .comando. Esto le mostrará el dispositivo fuente del directorio actual.

$ df -h .
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/fedora_greeneggs-home  402G  156G  226G  41% /home

Aquí podemos ver que estoy en un directorio / subdirectorio que es parte del montaje /home, que está respaldado por el dispositivo /dev/mapper/fedora_greeneggs-home.

Con el nombre del dispositivo, también podría buscarlo en la salida de mount.

Ejemplo

$ mount | grep '/dev/mapper/fedora_greeneggs-home'
/dev/mapper/fedora_greeneggs-home on /home type ext4 (rw,relatime,seclabel,data=ordered)

Idea # 2 - ¡Pero el dispositivo está montado lectura / escritura!

Si encuentra que su dispositivo está montado en lectura / escritura, puede intentar instalar PySDM , un Administrador de dispositivos de almacenamiento que permite la personalización completa de los puntos de montaje del disco duro sin acceso manual /etc/fstab. También permite la creación de udevreglas para la configuración dinámica de dispositivos de almacenamiento.

pasos para leer / escribir

  1. instalar el administrador de dispositivos de almacenamiento físico: sudo apt-get install pysdm
  2. Administrador de dispositivo de almacenamiento abierto: sudo pysdm
  3. elija sus unidades requeridas
  4. ayuda de prensa
  5. desmarque abrir como solo lectura
  6. verifique el usuario propietario del sistema de archivos y escriba su nombre de usuario: celebisait
  7. presiona OK
  8. presione aplicar
  9. Unidad de montaje
  10. Móntalo

Fuente: ¿Cómo puedo cambiar los permisos en unidades externas?

Idea # 3 - particiones NTFS

Según el resultado que publicó para el comando:

$ sudo fdisk -l /dev/sdb

...
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048  1536002047   768000000    7  HPFS/NTFS/exFAT

Tiene particiones NTFS, lo que explica por qué no pudo acceder a chmodlos archivos en las particiones montadas NTFS. Si está utilizando el ntfs-3gmódulo para acceder a la partición NTFS, debería poder leer / escribir el disco, pero no afectará sus permisos utilizando el conjunto normal de herramientas de Unix.


2
Creo que celebisaites su nombre de usuario.
Avinash Raj

@AvinashRaj, sí, es verdad. :)
Dijo

No creo que la Idea # 1 coincida con la información dada originalmente: intentar modificar un archivo en un sistema de archivos de solo lectura debería provocar un error (EROFS). Y estoy un poco confundido sobre lo que la Idea # 2 realmente logra. Parece una forma elegante de volver a montar la lectura / escritura del sistema de archivos, pero usted dice que esto se aplica al caso de que el sistema de archivos ya sea de lectura-escritura.
Nate Eldredge

@NateEldredge: no estaba muy claro qué estaba sucediendo exactamente al comienzo de esta Q, por lo tanto, mi primera sugerencia fue establecer cómo se montó el dispositivo. Mi segundo método lo he usado personalmente para arreglar permisos en mi reproductor de MP3 USB que ocasionalmente aparece en Nautilus como de solo lectura. Los archivos se muestran de forma similar a como lo describe el OP, y uso PySDM para resolver el problema. El problema no es simplemente que el FS se monte como RO, la partición en el reproductor de MP3 se pone en modo de solo lectura y, sin embargo, se monta en RW.
slm

7

Como mencionas un HDD.
Mi respuesta es que no es posible chmodun archivo en una partición NTFS o FAT32.
De hecho, solo el sistema de archivos unix / linux como ext3, ext4admite esos atributos.

/dev/sdb1            2048  1536002047   768000000    7  HPFS/NTFS/exFAT

Muestra claramente que /dev/sdb1era una partición NTFS.


1
¿Cómo sabes que es NTFS? es probable, pero no se puede suponer por la pregunta
Kiwy

@Kiwy es más probable que este sea el caso que la otra respuesta ya que el OP menciona un HDD.
Joseph R.

5
/dev/sdb1            2048  1536002047   768000000    7  HPFS/NTFS/exFAT

/dev/sdb1 on /media/celebisait/5AC69788C6976355 type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)

El tipo fuseblky la salida de fdisk indican que su partición es una partición NTFS. Estos no son compatibles con el esquema de permisos de archivos UNIX / LINUX como otros sistemas de archivos nativos * NIX.

La solución es simplemente mover el archivo a un sistema de archivos que admita estos permisos, como su raíz. La forma en que desea hacerlo simplemente no funcionará.

cp /media/celebisait/5AC69788C6976355/myFile.tar.gz ~/
chmod 755 ~/myFile.tar.gz
ls -l ~/myFile.tar.gz

1

Tuve un problema similar con una partición NTFS recientemente. Ya se ha dicho que NTFS no puede cambiar los permisos, pero estos permisos se pueden configurar al montar el sistema de archivos. Dados los identificadores de los grupos o usuarios a los que desea poder acceder a los archivos, puede hacer algo como:

sudo mount -t ntfs -o gid=46,fmask=0003,dmask=0002 /dev/sdb1 /media/DATAPART1

monte la página man para que pueda adaptarla a su caso de uso:

http://linux.die.net/man/8/mount


0

El directorio es probablemente de solo lectura. Prueba esto:

ls -ld .
chmod 755 .
chmod 755 myFile.tar.gz

Esto no es correcto. En un sistema de archivos Unix normal, funciona bien para modificar un archivo en un directorio de solo lectura. No necesita permisos de escritura en un directorio para leer, escribir o cambiar metadatos de un archivo en ese directorio. Necesita permiso de escritura para crear nuevos archivos o eliminar los existentes.
Nate Eldredge
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.