O usuário pode excluir o arquivo somente com permissão de leitura

0

Eu criei o usuário small , adicionei ele ao grupo kek e permiti que o grupo lesse apenas arquivos no diretório inicial do usuário. Então eu fiz chown todos os arquivos para root:kek . No entanto, small ainda pode excluir arquivos em seu diretório pessoal.

Comandos que eu executei:

useradd -ms /bin/bash small
groupadd kek
usermod -a -G kek small
chown -R root:kek /home/small/*
chmod -R g=r  /home/small/*

Então, quando tento remover o arquivo:

$ ls -l
total 16
-rw-r--r-- 1 root kek  240 Jun 23 06:17 Dockerfile
-rw-r--r-- 1 root kek   39 Jun 21 09:17 flag.txt
-rw-r--r-- 1 root kek 2336 Jun 22 14:19 server.py
-rw-r--r-- 1 root kek   24 Jun 22 08:16 small.py

$ rm flag.txt

$ ls -l
total 12
-rw-r--r-- 1 root kek  240 Jun 23 06:17 Dockerfile
-rw-r--r-- 1 root kek 2336 Jun 22 14:19 server.py
-rw-r--r-- 1 root kek   24 Jun 22 08:16 small.py

$ whoami
small

Por que isso acontece?

    
por nikrom3000 23.06.2018 / 08:31

2 respostas

4

Se um arquivo pode ser excluído ou não, não é uma propriedade do arquivo, mas do diretório em que o arquivo está localizado. Um usuário não pode excluir um arquivo localizado em um diretório para o qual não é possível gravar.

Arquivos (e subdiretórios) são entradas no nó do diretório. Para excluir um arquivo, ele é desvinculado do nó do diretório e, portanto, é necessário ter permissões de gravação no diretório para excluir um arquivo.

  • As permissões de gravação em um arquivo determinam se é permitido alterar o conteúdo do arquivo.
  • As permissões de gravação em um diretório determinam se é permitido alterar o conteúdo do diretório.

Relacionados:

por 23.06.2018 / 08:36
1

No Unix, você não exclui um arquivo, ele o remove de uma listagem de diretórios. Quando um arquivo não tiver mais listagens de diretório (ele pode ter muitos) e não for mais aberto por um processo, ele será excluído.

Se você tiver permissão de gravação em um diretório, poderá remover uma listagem de diretório de arquivos.

O que fazer sobre isso

  • Opção 1 Remova a permissão de gravação do diretório.
  • Opção 2 Adicione o bit adesivo ao diretório ( chmod +t «directory-name» ). Faça com que apenas o proprietário e o root (na verdade, tenha CAP_FOWNER) possam remover um arquivo. Use isso quando precisar da permissão de gravação, para que o usuário possa adicionar arquivos.
por 23.06.2018 / 11:24