É um comportamento estranho das permissões do Linux, mas as permissões para excluir arquivos são concedidas pelas permissões no diretório, não no arquivo.
Tente isto:
mkdir test
touch test/file
# Make the Directory ro
chmod a-w test
ls -l test/file
-rw-rw-r-- 1 bodhi bodhi 0 2012-02-28 21:13 test/file
rm test/file
rm: cannot remove 'test/file': Permission denied
Permissão de gravação. Em um arquivo regular, isso significa que você pode modificar o arquivo, também conhecido como gravar novos dados no arquivo. No caso de um diretório, a permissão de gravação significa que você pode adicionar, remover e renomear arquivos no diretório. Isso significa que, se um arquivo tiver o bit de permissão de gravação, você terá permissão para modificar o arquivo. conteúdo, mas você tem permissão para renomear ou excluir o arquivo somente se as permissões do diretório do arquivo permitirem que você o faça .
Veja o link
Para permitir acesso (RW) ao arquivo, mas evitar exclusão ou renomeação, defina o bit adesivo no diretório.
# change "test" to your directory
chmod +t test
touch test/file
chmod a+w test/file
ls -l | grep test
drwxrwxrwt 4 bodhi bodhi 4096 2012-03-07 17:08 test
ls -l test | grep file
-rw-rw-rw- 1 bodhi bodhi 13 2012-03-07 17:10 file
# su to another user, "test"
test@ufbt:/home/bodhi$ echo 'It works !!!' >> test/file
test@ufbt:/home/bodhi$ cat test/file
It works !!!
test@ufbt:/home/bodhi$ rm test/file
rm: cannot remove 'test/file': Operation not permitted
Se o bit adesivo estiver definido para um diretório, somente o proprietário desse diretório ou o proprietário de um arquivo poderá excluir ou renomear um arquivo dentro desse diretório.