Na mensagem de erro, parece que você tem um alias ou função que está redefinindo rm adicionando parâmetros extras, pois sudo opera em um ambiente diferente do shell de onde é chamado e geralmente não importa o alias e definições de função dos scripts de inicialização do shell.
Este comando mostra todas as possíveis interpretações do comando rm :
type -a rm
Além disso, dentro do shell você pode usar $(which rm) ... em vez de rm ... para ter certeza de que está usando o executável adequado, pois o programa which externo não sabe sobre o alias e as definições de função que o O comando interno type verifica. Um comando com um componente de diretório sempre vai para o sistema de arquivos para encontrá-lo, ignorando aliases e funções.
Note que você não precisa de acesso de gravação a um arquivo para excluí-lo: o que você precisa é de acesso de gravação ao seu diretório pai.