Não é possível aplicar o chmod a um arquivo


18

Eu tenho um arquivo no meu disco rígido,

cd /media/celebisait/5AC69788C6976355

Meu arquivo é chamado myFile.tar.gz. Eu faço um ls -l,

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

Tudo parece bem. No entanto, quando eu faço,

$ sudo chmod 755 myFile.tar.gz

Não tenho erros, mas nada acontece, ou seja, quando faço ls -lnovamente, recebo a mesma saída,

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

Chmod não muda .. Por quê?

PS: Eu uso o 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

Edição 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)

Edição 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

Edição 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

qual é o sistema de arquivos dessa unidade externa? dfresultado do comando seria bom
Kiwy 21/01

Você não precisa do sudo se possuir o arquivo e o diretório, dependendo da maneira como ele foi montado (somente leitura? Rootsquash?) De talvez seja um CD ou uma pen USB protegida contra gravação?
X Tian

@ Kiwy eu adicionei a saída de df.
Sait

@Braiam Como mount?
Sait

postar a saída de blkid.
Avinash Raj

Respostas:


15

TL; DR;

NOTA: Com base na atualização contínua da pergunta pelo OP com novas informações, foi determinado que o problema era ele estar montando uma partição NTFS. Então, o terceiro item abaixo é a resposta real para o problema dele. Deixo os outros 2 métodos aqui para outros que podem encontrar problemas semelhantes que não estão usando uma partição NTFS.


Idéia # 1 - a mídia é somente leitura (ISO / CD / DVD)?

Dê uma olhada na saída do mountcomando, especificamente algo como isto:

$ mount | grep '/media'

O dispositivo montado abaixo /media/celebisaitprovavelmente é um arquivo ISO ou uma mídia de CD / DVD. Nesse caso, você não poderá obter acesso de gravação, pois normalmente eles são somente leitura.

Você pode dizer o que está montado de leitura / gravação vs. somente leitura, voltando novamente para a mountsaída do comando.

Exemplo

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

Observe a saída entre parênteses. O primeiro argumento antes da primeira vírgula é o rwque indica acesso de leitura / gravação. Se fosse um dispositivo somente leitura, teria um rolá.

Método alternativo

Você também pode descobrir de que dispositivo um local específico do seu HDD é originado usando o df -h .comando Isso mostrará o dispositivo de origem do diretório atual.

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

Aqui podemos ver que estou em um diretório / subdiretório que faz parte da montagem /home, que é apoiada pelo dispositivo /dev/mapper/fedora_greeneggs-home.

Com o nome do dispositivo, você pode procurar isso também na saída de mount.

Exemplo

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

Idéia # 2 - Mas o dispositivo está montado de leitura / gravação!

Se você achar que seu dispositivo está montado como leitura / gravação, convém instalar o PySDM - um Gerenciador de Dispositivos de Armazenamento que permite a personalização completa dos pontos de montagem do disco rígido sem acesso manual /etc/fstab. Também permite a criação de udevregras para configuração dinâmica de dispositivos de armazenamento

etapas para leitura / gravação

  1. instale o gerenciador de dispositivos de armazenamento físico: sudo apt-get install pysdm
  2. gerente de dispositivo de armazenamento aberto: sudo pysdm
  3. escolha as unidades necessárias
  4. assistente de imprensa
  5. desmarque abrir como somente leitura
  6. verifique o usuário proprietário do sistema de arquivos e escreva seu nome de usuário: celebisait
  7. pressione OK
  8. pressione aplicar
  9. umount Drive
  10. monte

Fonte: Como posso alterar as permissões em unidades externas?

Idéia # 3 - partições NTFS

Com base na saída que você postou para o comando:

$ sudo fdisk -l /dev/sdb

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

Você possui partições NTFS, o que explica por que você não pôde acessar chmodos arquivos nas partições montadas em NTFS. Se você estiver usando o ntfs-3gmódulo para acessar a partição NTFS, poderá ler / gravar o disco, apenas não afetará suas permissões usando o conjunto normal de ferramentas Unix.


2
Eu acho que celebisaité o nome de usuário dele.
Avinash Raj

@AvinashRaj, sim, é verdade. :)
Sait

Não acho que a idéia nº 1 corresponda às informações originalmente fornecidas - tentar chmod um arquivo em um sistema de arquivos somente leitura deve resultar em um erro (EROFS). E estou meio confuso quanto ao que a idéia nº 2 realmente realiza. Parece uma maneira sofisticada de remontar a leitura / gravação do sistema de arquivos - mas você diz que isso se aplica ao caso em que o sistema de arquivos está com leitura / gravação.
Node Eldredge

@NateEldredge - Não ficou muito claro o que exatamente estava acontecendo no início deste Q, portanto, minha primeira sugestão foi estabelecer como o dispositivo foi montado. Meu segundo método, eu usei pessoalmente para corrigir permissões no meu MP3 player USB, que ocasionalmente aparece no Nautilus como somente leitura. Os arquivos são parecidos com o que o OP descreve e eu uso o PySDM para resolver o problema. O problema não é apenas o FS sendo montado como RO, a partição no MP3 player é colocada no modo somente leitura e, no entanto, é montada no RW.
slm

7

Como você está mencionando um HDD.
Minha resposta é que não é possível chmodum arquivo em uma partição NTFS ou FAT32.
De fato, apenas sistemas de arquivos unix / linux como ext3, ext4suportam esses atributos.

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

Isso mostra claramente que /dev/sdb1era uma partição NTFS.


11
como você sabe que é NTFS? é, provavelmente, mas youcan't assumir que a partir da pergunta
kiwy

@Kiwy, é mais provável que isso aconteça do que a outra resposta, já que o OP menciona um disco rígido.
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)

O tipo fuseblke a saída do fdisk indicam que sua partição é uma partição NTFS. Eles não suportam o esquema de permissões de arquivo UNIX / LINUX como outros sistemas de arquivos nativos * NIX.

A solução está apenas movendo o arquivo para um sistema de arquivos que suporta essas permissões como sua raiz. A maneira como você deseja fazer isso simplesmente não funcionará.

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

1

Eu tive um problema semelhante com uma partição NTFS recentemente. Já foi declarado que o NTFS não pode ter permissões alteradas, mas essas permissões podem ser definidas na montagem do sistema de arquivos. Dadas as identificações dos grupos ou usuários que você deseja acessar os arquivos, você pode fazer algo como:

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

página de manual mount para que você possa adaptá-lo ao seu caso de uso:

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


0

O diretório provavelmente é somente leitura. Tente o seguinte:

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

Isso não está correto. Em um sistema de arquivos Unix comum, funciona bem para chmod um arquivo em um diretório somente leitura. Você não precisa de permissões de gravação em um diretório para ler, gravar ou alterar os metadados de um arquivo nesse diretório. Você precisa de permissão de gravação para criar novos arquivos ou excluir os existentes.
Nate Eldredge
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.