Criação de links físicos - Permissões?


16

Quais permissões afetam a criação de links físicos? A propriedade do arquivo é importante?


Suponha que o usuário alicedeseje criar um link físico para o arquivo target.txtem um diretório target-dir.

  • Quais permissões aliceprecisam nos dois target.txte target-dir?
  • Se target.txtpertence ao usuário bille target-dirpertence ao usuário chad, isso muda alguma coisa?

Tentei simular essa situação criando a seguinte estrutura de pastas / arquivos em um ext4sistema de arquivos:

#> ls -lh . *
.:
drwxr-xr-x 2 bill bill 60 Oct  1 11:29 source-dir
drwxrwxrwx 2 chad chad 60 Oct  1 11:40 target-dir

source-dir:
-r--r--r-- 1 bill bill 0 Oct  1 11:29 target.txt

target-dir:
-rw-rw-r-- 1 alice alice 0 Oct  1 11:40 dummy

Embora alicepossa criar um link virtual para target.txt, ela não pode criar um link físico:

#> ln source-dir/target.txt target-dir/
ln: failed to create hard link ‘target-dir/target.txt’ => ‘source-dir/target.txt’: Operation not permitted

Se alicepossuir target.txte nenhuma permissão for alterada, o link físico será bem-sucedido. O que estou perdendo aqui?


Isso é para uma tarefa? Pode afetar o tipo de resposta que alguns escolherão dar, se for o caso (não que seja fora dos limites fazer uma pergunta sobre uma tarefa, é claro). Enfim, você já tentou criar esse cenário e ver o que acontece?
Eric Renouf

Não, não é para uma tarefa. Estou enfrentando esse cenário exato e tenho algumas suposições, mas achei que seria melhor perguntar do ponto de vista teórico. No meu caso eu sou incapaz de criar o hard-link independente de target.txte target-dirpermissões, a menos que eu sudocomo root.
Gcscaglia #

Os links físicos compartilham a mesma propriedade e permissões, por isso é o mesmo que acessar o arquivo original.
Teppic # 1/15

@teppic Meu difícil não está acessando o disco-link criado, ele está criando a-link duro como alice.Eu pode acessar o arquivo original e hard-link a ela (criado com sudo), mas não pode criar o link como o usuário, aliceapesar de todos concordarmos com essas permissões, deve ser suficiente.
Gcscaglia #

Respostas:


18

Para criar o link físico, aliceserão necessárias write+executepermissões target-direm todos os casos. As permissões necessárias target.txtvariam:

  • Se, fs.protected_hardlinks = 1então, aliceprecisar de propriedade target.txtou pelo menos de read+writepermissões nele.
  • Se, fs.protected_hardlinks = 0então, qualquer conjunto de permissões será suficiente; Até 000 estão bem.

Essa resposta a uma pergunta semelhante tinha a informação que faltava para responder a essa pergunta.

Em http://kernel.opensuse.org/cgit/kernel/commit/?id=800179c9b8a1 [ênfase minha]:

Hardlinks:

Em sistemas que possuem diretórios graváveis ​​pelo usuário na mesma partição que os arquivos do sistema, uma classe antiga de problemas de segurança é a corrida com base no tempo de verificação do tempo de verificação do tempo de uso baseado em hardlink, mais comumente vista em diretórios graváveis ​​em todo o mundo como / tmp. O método comum de exploração dessa falha é atravessar limites de privilégios ao seguir um determinado link físico (ou seja, um processo raiz segue um link físico criado por outro usuário). Além disso, existe um problema em que os usuários podem "fixar" um arquivo setuid / setgid potencialmente vulnerável, para que um administrador não efetue a atualização completa do sistema.

A solução é permitir que os hardlinks sejam criados apenas quando o usuário já for o proprietário do arquivo existente ou se eles já tiverem acesso de leitura / gravação ao arquivo existente .


Obrigado! É isso que eu tenho lutado há um dia no Debian 9!
Arda

Por que obteria "operação não permitida" mesmo quando tenho rwx perms no diretório e rw perms no arquivo?
Michael

1

aliceprecisa de pelo menos permissão de leitura e permissão de target.txtgravação + execução target-dir.

Agora, a estrutura de permissão funciona como um conjunto separado em três partes:

  1. Permissões do usuário: aplicam-se ao usuário que possui o nó.
  2. Permissões de grupo: aplicam-se a qualquer usuário pertencente ao grupo que possui o nó.
  3. Permissões de outras pessoas: aplicam-se a qualquer outro usuário / grupo que não possua o nó.

Portanto, a pergunta de propriedade afeta apenas em qual conjunto de permissões as permissões necessárias aliceestão, sendo:

  • Se alicefor o usuário proprietário, as permissões necessárias deverão estar na parte "user".
  • Se fizer aliceparte do grupo que o possui, as permissões necessárias deverão estar na parte "group".
  • Se alicenão o possui e não faz parte do grupo que o possui, as permissões necessárias devem estar na parte "outra".

Eu também pensei assim. Mas na minha situação, tenho target.txt444 permissões e target-dir777, mas não consigo criar um link físico, a menos que eu faça isso como root ou possua o arquivo ao qual estou vinculando. Curiosamente, um link suave funcionará como você descreve.
Gcscaglia #

Essa informação seria útil na própria pergunta, eu recomendo que você atualize. Curiosamente, eu não pensei nisso antes ... mas o sistema de arquivos em que você trabalha suporta propriedades / permissões semelhantes ao Unix, para começar?
Dave_alcarin

Sim, é um ext4 pronto para uso em um sistema fedora 21; O link funciona quando eu sou o proprietário do arquivo.
gcscaglia
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.