Razões obscuras de um arquivo ser somente leitura?

5

O sistema de arquivos Linux parece ter camadas e camadas de sutileza que eu tropeço caso a caso:

Estou interessado em editar este arquivo:

[user@box ~]$ ls -l /a/b/c/foo.bar
-rw-rwxr-x    1 user   user      144529 Jan 26  2018 /a/b/c/foo.bar

Parece que deve ser gravável pelo usuário user - true? Mas quando tento editar o arquivo no vim, recebo um aviso " W10: Warning: Changing a readonly file ".

Eu sei que a capacidade de gravação de arquivos depende das permissões de sua pasta contida. Eu acho que a pasta contendo precisa ter permissão de execução - verdade? Eu suponho que a permissão de diretório necessária também se estende até / - true?

Parece-me que a árvore de pastas que contém o arquivo anotado tem permissões de execução:

[user@box ~]$ ls -ld /a/b/c/                                                                                    
drwxrwxrwx    2 user   user       36864 Mar  5 17:50 /a/b/c/
[user@box ~]$ ls -ld /a/b/           
drwxrwxr-x    4 user   user        4096 Sep 22  2017 /a/b/
[user@box ~]$ ls -ld /a/                
drwxrwxr-x    9 user   user        4096 Sep 15  2017 /a/
[user@box ~]$ ls -ld /     
drwxr-xr-x   24 root   root           0 Aug 24 10:48 /
[user@box ~]$ whoami
user

Tanto quanto eu posso dizer acima, cada diretório na árvore relevante tem permissões de execução. No começo, eu suspeitava se o / possuía root , mas tinha permissão de execução para "outros". Além disso, se houvesse problemas relacionados a / sendo de propriedade de root , imagino que teria problemas ao gravar arquivos em qualquer lugar do sistema de arquivos como um usuário diferente de root , mas esse não é o caso.

Alguém pode pensar em / identificar outras razões pelas quais o arquivo anotado é considerado somente leitura?

    
por StoneThrow 24.08.2018 / 20:35

1 resposta

15

Primeiro - você está com o sinalizador imutável

chattr -i yourfilename

Se o sinalizador imutável estiver definido, você não poderá alterar o arquivo. Lembre-se de que as permissões não substituíram esse comportamento!

Em segundo lugar, verifique se o diretório onde o arquivo está, é montado em outro disco ou partição , como somente leitura, para esse tipo:

mount 

(sem argumentos)

Se você vir algo como seu diretório montado como somente leitura, o motivo é esse! Remontá-lo como ler e escrever para ter sorte!

Terceiro - e mais comum , você está apenas executando um sistema de arquivos com erros , para corrigir isso, você deve fazer backup do que puder, reinicializar e efetuar login no modo único e corra:

mount #To determine how the partition is mounted
mount -o remount,ro /dev/sd(yourpartition) directory
fsck.ext4 /dev/sd(yourpartition)

(o ext4 talvez precise ser alterado para o seu tipo de partição)

Boa sorte!

    
por 24.08.2018 / 20:54