É um arquivo -rw-rw-rw- realmente inacessível dentro de um diretório drwxrwx—?

2

Digamos que eu tenha um diretório com estas permissões:

drwxrwx---

Dentro deste diretório, um arquivo com estas permissões:

-rw-rw-rw-

O arquivo é legível / gravável por todos ou não?

Se não, qual é a segurança desta restrição de acesso?

E se um usuário aleatório fizer um link para o meu arquivo dentro de seu diretório pessoal? Ele poderia acessar o arquivo então?

Ou ele poderia acessar o arquivo adivinhando seu número de inode e usando algumas chamadas do sistema em inodes?

    
por John Smith Optional 26.12.2013 / 17:28

2 respostas

4

Sim, um arquivo em um diretório só é acessível para usuários que possuem a permissão de execução no diretório. É como deixar jóias em uma gaveta destrancada dentro de uma casa trancada: as jóias estão fechadas.

Um usuário aleatório não pode criar um link físico para um arquivo, apenas o arquivo do proprietário. Se o arquivo tiver vários links físicos, alguns dos quais estão em um diretório acessível publicamente, o arquivo ficará publicamente acessível. Mas isso tem que ser configurado pelo dono do arquivo.

Qualquer pessoa pode criar links simbólicos que apontam para um arquivo, mas isso não permite que eles acessem o arquivo. Links simbólicos não ignoram as permissões.

Se o diretório for executável em algum momento e houver processos que tenham o arquivo ou um diretório pai aberto no momento em que você restringir as permissões no diretório, esses processos ainda terão o arquivo aberto posteriormente. No entanto, se fecharem (ou mudarem para outro diretório), não poderão reabri-lo (ou alterar o diretório de volta). Da mesma forma, um processo setuid ou setgid pode abrir o arquivo ou mudar para o diretório e, em seguida, descartar suas permissões. Tudo isso requer a cooperação do proprietário do arquivo ou diretório.

Não há como abrir um arquivo através de seu inode. O fato de que isso permitiria ignorar permissões restritivas como esse caso é a principal razão pela qual esse recurso não existe.

    
por 27.12.2013 / 02:10
1

Meus palpites:

  • Ninguém a não ser o proprietário e o grupo do diretório devem poder inseri-lo em condições normais, dada a máscara de permissão drwxrwx ---.
  • Um usuário que deseja criar um link físico para seu arquivo precisaria adivinhar seu inode primeiro e, para isso, ele usaria a chamada de sistema "lstat" ("man 2 lstat"), que precisa de acesso de leitura e não funcionaria neste caso.
  • Adivinhar o número do inode e usar algumas chamadas do sistema para vinculá-lo também não funcionaria, AFAIK. A chamada do sistema para vincular a um arquivo é "link" ("man 2 link") e funciona com caminhos, não com números de inode. Eu acho que você poderia ir para um nível mais baixo e tentar usar o syscalls que o próprio "link" usa, mas para isso você precisaria de acesso root. E se você tiver acesso root, a questão é discutível.

BTW, obrigado pela pergunta. Está relacionado a um dos assuntos que estou estudando atualmente: -)

    
por 26.12.2013 / 18:06