Por que eu consegui deletar um arquivo de propriedade de root no meu diretório home sem ser root?

38

Então, eu estava fazendo alguma manutenção no meu servidor hoje cedo e notei que consegui excluir um arquivo de propriedade do root no meu diretório pessoal.

Consegui reproduzir uma amostra:

[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x.  2 cbennett cbennett 4096 Oct  5 20:59 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct  5 20:58 ..
-rw-rw-r--.  1 cbennett cbennett    0 Oct  5 20:58 my-own-file
[cbennett@nova ~/temp]$ sudo touch file-owned-by-root
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x.  2 cbennett cbennett 4096 Oct  5 21:00 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct  5 20:58 ..
-rw-r--r--.  1 root     root        0 Oct  5 21:00 file-owned-by-root
-rw-rw-r--.  1 cbennett cbennett    0 Oct  5 20:58 my-own-file
[cbennett@nova ~/temp]$ rm file-owned-by-root
rm: remove write-protected regular empty file ‘file-owned-by-root’? y
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x.  2 cbennett cbennett 4096 Oct  5 21:00 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct  5 20:58 ..
-rw-rw-r--.  1 cbennett cbennett    0 Oct  5 20:58 my-own-file
[cbennett@nova ~/temp]$

Minha pergunta é como eu consegui excluir um arquivo que pertence ao root e tem permissões -rw-r--r-- , enquanto eu não sou root?

    
por Carl Bennett 05.10.2015 / 23:07

2 respostas

32

As permissões, o conteúdo e todos os atributos fazem parte do inode. O nome está na entrada do diretório. As permissões não são herdadas recursivamente.

Quando você exclui um arquivo, internamente você apenas remove um link físico da entrada de diretório para o inode. Quando todos os hardlinks forem removidos e o inode não estiver em uso, o sistema de arquivos recuperará o espaço. Você precisa apenas de permissão de escrita na pasta, independentemente das permissões definidas no arquivo (com exceção da permissão imutável ext). O mesmo para uma pasta vazia.

Quando você exclui uma pasta que não está vazia, precisa de permissão de gravação na pasta que está excluindo e em sua mãe.

    
por 06.10.2015 / 00:30
19

Quando você possui o diretório, você tem permissão para fazer qualquer coisa nele e o conteúdo dentro dele, com base nas permissões do diretório. Portanto, apesar de não possuir o arquivo, você ainda podia excluí-lo porque tinha permissão de leitura / gravação no diretório em que o arquivo residia.

    
por 05.10.2015 / 23:10