Por que um usuário não root pode excluir arquivos criados pelo root?

24

Dado um usuário não-root "joshua", como root eu criei um arquivo chamado "foo" no diretório inicial do joshua (/ home / johsua /); parece assim:

-rw-r--r--  1 root   root       0 12-19 21:00 foo

e, em seguida, excluí-lo como joshua, eu posso excluí-lo com sucesso.

Eu esperaria que Josué não tenha permissão suficiente para excluí-lo. É algum tipo de herança de permissões? Minha plataforma é o Debian 5.0.7.

    
por Joshua 19.12.2011 / 14:08

2 respostas

43

O usuário não excluiu o arquivo, o sistema fez. O usuário simplesmente removeu o arquivo de seu próprio diretório. O sistema excluiu o arquivo porque sua contagem de referência caiu para zero. É apenas por acaso que o usuário que removeu o arquivo do diretório perdeu sua contagem de referência para zero. (Se o arquivo foi vinculado a outro diretório ou um identificador foi aberto para o arquivo, ele não teria sido excluído.)

O sistema apaga arquivos automaticamente quando suas contagens de referência caem para zero. O dono do arquivo não importa. Há muitas maneiras em que alguém que não seja o proprietário de um arquivo pode reduzir a contagem de referência do arquivo para zero.

Remover um arquivo de um diretório (chamado de 'desvinculando') é uma operação no diretório. Desvincular um arquivo reduz sua contagem de referências.

Da mesma forma, um usuário diferente do proprietário pode fechar o último identificador em um arquivo que não está vinculado a nenhum diretório. Fechar esse identificador excluiria o arquivo também, já que novamente a contagem de referência cairia para zero.

    
por 19.12.2011 / 15:55
0

Primeiro palpite: para excluir um arquivo, você precisa de permissões de gravação na pasta que o contém. Então tente / home / johsua / foo / bar, dê 755 para foo e 644 para bar.

    
por 19.12.2011 / 14:12

Tags