Como excluo um arquivo em um diretório somente leitura?

0

Eu tenho um diretório e um arquivo, com o diretório marcado como somente leitura:

$ mkdir directoryname
$ touch directoryname/filename
$ chmod a-w directoryname

Não consigo excluir o arquivo, mesmo que passe o sinal -f para rm :

$ rm -f directoryname/filename
rm: cannot remove 'directoryname/filename': Permission denied

Existe uma maneira de forçar rm a excluir este arquivo? Obviamente, eu poderia conceder temporariamente directoryname de permissões de gravação, mas estou procurando uma maneira mais conveniente.

Acredito que o unlink syscall subjacente falhe da mesma maneira. Existe uma maneira de contornar isso?

    
por Flimm 01.08.2014 / 13:02

1 resposta

2

E sobre:

sudo rm directory/filename

ou:

su -c "rm directory/filename"

dependendo da sua distribuição e / ou configuração.

Você está dando a si mesmo um root temporário pela duração dos comandos acima e como root é todo poderoso no Unix / Linux, você tem permissão para fazer qualquer coisa. Isso contrasta com o MS Windows, onde você pode remover o acesso à conta do administrador (embora haja maneiras de contornar isso).

SELinux pode ajudar como várias ferramentas de atributos estendidos (como chattr ) mas, no final, elas podem ser ignoradas, pois root pode alterar os atributos estendidos e pode configurar (e até desabilitar) SELinux .

    
por 01.08.2014 / 13:25