Permissões que permitem a exclusão de um arquivo

1

A seguir, os resultados de ls -l chama um arquivo e seu diretório (pai). Em qual dos seguintes casos o usuário (aluno1) pode excluir o arquivo:

a.

---------- 1 student1 student1    0 Feb 10 20:47 file1
d-wx------ 2 student1 student1 4096 Feb 10 20:47 directory1

b.

-rwx------ 1 student1 student1    0 Feb 10 20:47 file1
drw------- 2 student1 student1 4096 Feb 10 20:47 directory1

c.

-rwxrwx--- 1 student1 student1    0 Feb 10 20:47 file1
dr-x------ 2 student1 student1 4096 Feb 10 20:47 directory1

d.

-rwxrwx--- 1 student1 student1    0 Feb 10 20:47 file1
dr-xrwx--- 2 student1 student1 4096 Feb 10 20:47 directory1

Alguém pode explicar por que a resposta correta é (a)? Tanto quanto eu sei ao excluir devo olhar para as permessões no diretório pai, mas não consigo entender qual é a diferença entre a, b, c e d.

    
por Asa 13.08.2015 / 09:41

1 resposta

3

Em todos esses casos, a propriedade é uma mistura de student1 e studen1 . Eu vou simplesmente assumir que este é um erro de digitação e a situação real descrita é que tanto o diretório quanto o arquivo são de propriedade da conta de usuário do aluno e do grupo correspondente, o que é o mesmo para ambos.

Na maioria das implementações, os diretórios são realmente um tipo especial de arquivo (como um nó de dispositivo de bloco ou um pipe de sistema de arquivos) que contém uma lista de arquivos (e outros diretórios) que existem logicamente nele. e seu diretório pai (as entradas . e .. , respectivamente). Alterar a lista de arquivos dentro do diretório envolve a atualização desse arquivo de diretório.

No Linux padrão, o proprietário sempre pode excluir seus próprios arquivos. Essa é uma extensão razoavelmente lógica do fato de que o proprietário é capaz de alterar as permissões do arquivo, portanto, mesmo que não pudessem excluí-lo originalmente por causa das permissões do arquivo, elas poderiam se dar trivialmente a essa permissão.

No entanto, como a exclusão de um arquivo envolve a gravação no diretório (para remover a referência ao arquivo), o usuário que está excluindo o arquivo deve ter acesso de gravação ao diretório em que o arquivo reside.

O caso (a) é o único dos seus casos em que o usuário tem acesso de gravação ao diretório e, portanto, o único caso em que o usuário pode excluir arquivos dentro desse diretório.

No caso (b) você não pode descer no diretório (falta de x permission) e, portanto, não pode fazer nada com o seu conteúdo.

No caso (c), você não tem permissões de gravação no diretório e, portanto, não pode alterar o conteúdo do diretório.

O caso (d) poderia em princípio ter funcionado, mas como as permissões do usuário substituem as permissões do grupo, que por sua vez substituem as permissões mundiais (onde cada tipo de permissão mais específico é aplicável ao usuário que executa a ação), a falta de acesso de gravação ao diretório para o usuário tem precedência sobre o grupo que possui acesso de gravação. Portanto, a exclusão falha devido à falta de direitos de acesso.

Considere o modo (um pouco não óbvio) que as permissões regulares de arquivos (leitura / gravação / execução) são mapeadas em diretórios e o que elas significam:

  • r permission no diretório significa que você pode listar os arquivos, porque permite ler o diretório-arquivo
  • w permission no diretório significa que você pode adicionar, editar e excluir entradas de diretório , porque permite gravar no arquivo de diretório
  • x permission no diretório significa que você pode descer para o diretório, permitindo que você acesse uma entrada de diretório , dado que você sabe seu nome , por razões (e precisava ser alguma maneira de expressar a capacidade de descer em um diretório)
por 13.08.2015 / 10:16