As permissões de um arquivo são verificadas quando o arquivo é aberto. Alterar as permissões não afeta os processos que já têm o arquivo aberto. Isso é usado às vezes com processos que começam com privilégios adicionais, abrem um arquivo e depois descartam esses privilégios adicionais: eles ainda podem acessar o arquivo, mas podem não ser capazes de reabri-lo.
No entanto, os editores normalmente não mantêm um arquivo aberto. Quando um editor abre um documento, o que acontece sob o capô é que o editor carrega o conteúdo do arquivo na memória e fecha o arquivo. Quando você salva o documento, o editor abre o arquivo e grava o novo conteúdo.
Os editores podem seguir uma das duas estratégias ao salvar um arquivo. Eles podem criar um novo arquivo e depois movê-lo para o lugar. Como alternativa, eles podem abrir o arquivo existente e substituir o conteúdo antigo. A sobregravação tem a vantagem de que a permissão e a propriedade do arquivo não mudam e que ele funciona mesmo em um diretório somente leitura. A principal desvantagem de sobrescrever é que, se o salvamento falhar no meio do caminho (falha do editor, falha do sistema, disco cheio,…), você fica com um documento truncado. Editores diferentes escolhem estratégias diferentes; o bom escreva write-to-new-then-move, se possível, e sobrescreva apenas em um diretório somente leitura (depois de fazer um backup em outro lugar).
Se o editor seguir a estratégia new-then-move, as permissões no arquivo não importam: o editor criará um novo arquivo e precisará apenas de permissão de gravação no diretório para isso. Há duas exceções: se o diretório tiver o bit adesivo , alterando a propriedade do arquivo (mas não a permissão ) pode impossibilitar que o processo mova o novo arquivo para o lugar. Outra exceção é em sistemas que suportam a permissão de exclusão por meio de ACLs (como o OSX): a revogação da permissão de exclusão do arquivo pode fazer o movimento impossível.
Se o editor seguir a estratégia de sobrescrever, a revogação da permissão de gravação tornará a economia impossível. (No entanto, alguns editores que sobrescrevem por padrão podem voltar para o new-then-move.)
No Vim, você pode forçar a estratégia de sobrescrever desativando a backupcopy
opção ; veja também por que o valor de inode muda quando editamos em "vi" editor? . No Emacs, você pode forçar a estratégia de sobregravação definindo o backup-by-copying
variável para t
.