Quem pode deletar um arquivo?

7

Eu criei um arquivo, fiz o chmod 000 nele e mudei o proprietário e o grupo para root: root. Eu ainda era capaz de excluir o arquivo como o criador original dele (não root).

Quem tem permissão para excluir um arquivo?

    
por user784637 07.01.2012 / 04:52

2 respostas

18

As permissões do diretório contendo determinam a capacidade de renomear e excluir arquivos.

Especificamente, para excluir / renomear um arquivo, o usuário precisa ter as permissões write e executar (ou seja, traversal) no diretório que o contém, e o arquivo em questão deve não ser imutável . (Sob essas circunstâncias, um usuário não privilegiado pode até excluir arquivos de propriedade do root).

Exclusão restrita:

É possível restringir a exclusão de arquivos apenas ao proprietário dos arquivos (e usuários privilegiados), definindo o 'sticky bit' (também conhecido como 'flag de exclusão restrita') no diretório contido usando: chmod +t directory . Um diretório com o conjunto de bits pegajosos exibe um 't' na última posição (por exemplo, drwxr-xr-t ) - isso também pode ser definido no formato 'octal' prefixando o código octal de 3 dígitos com '1' (por exemplo, chmod 1755 directory ). (O Linux ignora o bit pegajoso nos arquivos - embora alguns outros sistemas operacionais atribuam significado a ele.)

Permissões de leitura:

Você deve observar que a permissão de leitura no diretório contido não é necessária. Sem ele, você ainda poderá excluir o arquivo, se souber o nome dele, embora não seja possível "ler" o conteúdo do diretório (por exemplo, sem permissões de leitura, não pode executar ls ).

Arquivos imutáveis:

Como um ponto secundário, tornando um arquivo imutável (ou seja, chattr +i ) nem o proprietário nem outros usuários (incluindo usuários privilegiados) poderão excluir (ou renomear, vincular ou modificar) o arquivo, mesmo que eles têm permissões de gravação no diretório (somente o superusuário pode remover isso).

    
por 07.01.2012 / 04:57
5

O proprietário da pasta onde reside o arquivo, se tiver permissões de gravação na pasta, poderá excluir o arquivo, mesmo se a máscara for 000 ou o arquivo pertencer a outro usuário. Se você realmente quiser criar um arquivo que ninguém possa tocar / excluir, você deve procurar o comando chattr e seu sinalizador imutável.

De a documentação :

A file with the i attribute cannot be modified: it cannot be deleted or renamed, no link can be created to this file and no data can be written to the file. Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE capability can set or clear this attribute.

    
por 07.01.2012 / 05:03

Tags