Por que consegui excluir um arquivo de propriedade do root em meu diretório inicial sem ser root?

Por que consegui excluir um arquivo de propriedade do root em meu diretório inicial sem ser root?

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

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 consegui excluir um arquivo que pertence ao root e tem permissões -rw-r--r--, enquanto não sou root?

Responder1

As permissões, 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 (exceto quando você usa o padrão em ACLs Posix).

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

Ao excluir uma pasta que não está vazia, você precisa de permissão de gravação na pasta que está excluindo e em seu pai.

Responder2

Quando você possui o diretório, você pode fazer qualquer coisa com ele e com o conteúdo dele com base nas permissões do diretório. Portanto, apesar de não ser o proprietário do arquivo, você ainda conseguiu excluí-lo porque tinha permissão de leitura/gravação no diretório em que o arquivo residia.

informação relacionada