chmod 777 não está alterando as permissões para 777

chmod 777 não está alterando as permissões para 777

Estou tentando alterar as permissões de temp_dir para 777. Por que esses comandos não estão conseguindo isso? A propósito, estou usando Linux.

kylefoley@kfoley76:/mnt/disks$ chmod 777 /mnt/disks/temp_dir
kylefoley@kfoley76:/mnt/disks$ stat -c "%a %n" temp_dir
755 temp_dir

Eu também tentei a opção detalhada

kylefoley@kfoley76:/mnt/disks$ chmod -v 777 /mnt/disks/temp_dir
mode of '/mnt/disks/temp_dir' changed from 0755 (rwxr-xr-x) to 0777 (rwxrwxrwx)
kylefoley@kfoley76:/mnt/disks$ stat -c "%a %n" temp_dir
755 temp_dir

Eu também não entendo porque não posso usarsudo

kylefoley@kfoley76:/mnt/disks/temp_dir$ sudo chmod 777 fix_mistakes
chmod: cannot access 'fix_mistakes': Permission denied

Mesmo quando eu faço login como usuário root

kylefoley@kfoley76:/mnt/disks/temp_dir$ sudo -i
root@kfoley76:~# sudo chmod 777 /mnt/disks/temp_dir
chmod: cannot access '/mnt/disks/temp_dir': Permission denied

Devo acrescentar também que esse bug deve ter algo a ver com o fato de o diretório em questão ser um disco montado no gcsfuse, disponível no gcloud. Outras tentativas de alterar as permissões funcionaram bem:

kylefoley@kfoley76:~$ mkdir hey
kylefoley@kfoley76:~$ stat -c "%a %n" hey
755 hey
kylefoley@kfoley76:~$ chmod 777 hey
kylefoley@kfoley76:~$ stat -c "%a %n" hey
777 hey

Responder1

gcsfuse define permissões de arquivo e diretório durante a montagem. Especificamente, as opções são:

  • file_mode– Bits de permissão para arquivos, em octal
  • dir_mode– Bits de permissão para diretórios, em octal

Fonte:https://github.com/GoogleCloudPlatform/gcsfuse/blob/e0a0e0826897b09581c24065fb6a92912ee79d03/flags.go#L78

Se você não especificar as opções, os padrões serão dir_mode=0755,file_mode=0644.

Fonte:https://github.com/GoogleCloudPlatform/gcsfuse/blob/e0a0e0826897b09581c24065fb6a92912ee79d03/flags.go#L51

Estas opções se aplicam a todos os arquivos e diretórios na montagem. Este sistema de arquivos FUSE não tem a capacidade de alterar permissões para arquivos ou diretórios específicos, e é por isso que chmodnão faz nada.


Além disso, o gcsfuse possui restrições de acesso adicionais que limitam o acesso ao usuário que montou o sistema de arquivos. Detalhes:

Como medida de segurança, o próprio fuse restringe o acesso ao sistema de arquivos ao usuário que montou o sistema de arquivos (cf.fusível.txt). Por esse motivo, o gcsfuse, por padrão, mostra todos os arquivos como propriedade do usuário invocador. Portanto, você deve invocar gcsfuse como o usuário que usará o sistema de arquivos, não como root.

Se você sabe o que está fazendo, pode substituir esses comportamentos peloallow_otheropção de montagem suportada pelo fusível e com os sinalizadores --uide --gidsuportados pelo gcsfuse. Tenha cuidado, isso pode ter implicações de segurança!

Fonte:https://github.com/GoogleCloudPlatform/gcsfuse/blob/d25be2491879e3745c3ed3d8e816774defc1cc5c/docs/mounting.md#access-permissions

É por isso que você não consegue acessar a montagem de outro usuário. Para permitir que outros usuários acessem a montagem, especifique allow_otherem suas opções de montagem.

Responder2

Consegui resolver o problema da seguinte maneira: tive que ir ao Cloud API Access Scopes e verificar na configuração da VM se ela possui leitura e gravação ou acesso total para armazenamento. Isso envolveu pressionar editar no console gcloud que lista minhas instâncias. No final da página havia a limitação de armazenamento que alterei para ‘cheio’. Isso resolveu.

informação relacionada