O vi apagou o arquivo antigo e escreveu um novo com o mesmo nome. Você tem permissão para remover o arquivo antigo, porque você tem acesso de gravação ao diretório que o contém. Para remover o arquivo, altere (escreva para) o diretório inode excluindo a referência ao arquivo existente. Quando a contagem de referência do arquivo for zerada, o sistema de arquivos libera o inode e o espaço do arquivo. Em seguida, você escreve no diretório inode novamente, adicionando o novo arquivo a ele.
Para evitar que isso aconteça, você precisará remover a permissão de gravação no diretório.
Observe que você também pode ter algumas ACLs no arquivo e no diretório que estão substituindo as permissões que você está vendo em ls -l
. Veja o .
à direita das permissões em cada linha da listagem? Isso mostra que algumas ACLs estão ativas. Para vê-los, execute getfacl /dir/name
.