Criação de link físico - Permissões?

12

Quais permissões afetam a criação do link físico? A propriedade do arquivo é importante?

Suponha que o usuário alice queira criar um link físico para o arquivo target.txt em um diretório target-dir .

  • Quais permissões alice precisam em target.txt e target-dir ?
  • Se target.txt é de propriedade do usuário bill e target-dir é de propriedade do usuário chad , isso muda alguma coisa?

Eu tentei simular essa situação criando a seguinte estrutura de pasta / arquivo em um sistema de arquivos ext4 :

#> 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 alice possa criar um link 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 alice possuir target.txt e nenhuma permissão for alterada, o link físico será bem-sucedido. O que estou perdendo aqui?

    
por gcscaglia 01.10.2015 / 15:14

2 respostas

12

Para criar o link físico alice precisará de write+execute permissões em target-dir em todos os casos. As permissões necessárias em target.txt variam:

  • Se fs.protected_hardlinks = 1 , em seguida, alice precisar da propriedade de target.txt ou pelo menos read+write de permissões.
  • Se fs.protected_hardlinks = 0 , qualquer conjunto de permissões será suficiente; Mesmo 000 está bem.

Esta resposta a uma pergunta semelhante teve a informação que faltava para responder a essa pergunta.

De link [ênfase minha]:

Hardlinks:

On systems that have user-writable directories on the same partition as system files, a long-standing class of security issues is the hardlink-based time-of-check-time-of-use race, most commonly seen in world-writable directories like /tmp. The common method of exploitation of this flaw is to cross privilege boundaries when following a given hardlink (i.e. a root process follows a hardlink created by another user). Additionally, an issue exists where users can "pin" a potentially vulnerable setuid/setgid file so that an administrator will not actually upgrade a system fully.

The solution is to permit hardlinks to only be created when the user is already the existing file's owner, or if they already have read/write access to the existing file.

    
por 05.02.2016 / 19:11
2

alice precisa de pelo menos permissão de leitura em target.txt e gravação + permissão de execução em target-dir .

Agora, a estrutura de permissões funciona como um conjunto separado de 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 que pertença ao grupo que possui o nó.
  3. Permissões de outros: aplicam-se a qualquer outro usuário / grupo que não possua o nó.

Portanto, a questão de propriedade afeta somente em qual conjunto de permissões as permissões necessárias para alice estão, sendo:

  • Se alice for o usuário proprietário, as permissões necessárias deverão estar na parte "usuário".
  • Se alice fizer parte do grupo que o possui, as permissões necessárias deverão estar na parte "grupo".
  • Se alice não for o proprietário e não fizer parte do grupo que o possui, as permissões necessárias deverão estar na "outra" parte.
por 01.10.2015 / 16:21