Em um link simbólico apontando para '127.0.1.1:+xxxxx', qual é o caractere mais?

52

No meu sistema de arquivos Linux, um link simbólico aponta para 127.0.1.1:+xxxxx.

Por que o sinal de mais? Também poderia haver um sinal de menos? Por que não apenas 127.0.1.1:xxxxx?

myMethod
fonte
Esse link simbólico está em / proc?
1937 Joshua
4
@ Josué: Provavelmente em ~ / .mozilla / ou similar. O Firefox / Thunderbird e o iirc Steam usam esses links simbólicos para bloquear.
grawity
2
Xxxxx é um número ou os caracteres xxxxx?
Mawg
2
Provavelmente não relacionado, mas apenas para informação. Em alguns clientes de IRC, o sinal de adição antes da porta estar lá para indicar que o servidor remoto usa SSL / TLS.
EKKiM

Respostas:

93

Links simbólicos que não apontam para um arquivo não têm significado genérico. Nesse caso, pode ser o ID do processo ou uma porta com algum protocolo especial falado sobre ele ou outro identificador. Tudo depende de qual programa foi criado.

O software que cria esses links simplesmente tira proveito dos fatos de que 1) o alvo de um link simbólico pode ser inexistente ou até um total absurdo; 2) criar um link simbólico é uma operação completamente atômica de syscall única (como está lendo seu destino), ao contrário de criar um arquivo regular que requer pelo menos três chamadas de sistema separadas.

Assim, a criação de links simbólicos pode ser abusada como uma maneira de bloquear (garantindo uma instância única de um programa), mesmo quando outros mecanismos possam não ser confiáveis. O programa não precisa do link simbólico para realmente resolver um arquivo real: ele se preocupa apenas com a criação do link ou se ele falha porque já existe.

gravidade
fonte
5
"* ao contrário de criar um arquivo comum que recebe pelo menos 3 chamadas de sistema separadas. *" - Você poderia esclarecer? Você quer dizer fopen, fwritee fclose?
Nic Hartley
11
@ NicHartley: As chamadas do sistema são open(ou talvez createm software antigo) write, e closenão as versões f * fornecidas pelo stdio. Mas, sim, você precisa fazer pelo menos opene writecriar o arquivo e colocar algo significativo nele. Agora, se você quiser que algum código "tente criá-lo, se for bem-sucedido, coloque algumas informações nele, senão leia algumas informações dele", o segundo processo pode apenas tentar readantes que o primeiro processo possa write. symlinkevita isso; tenha sucesso e crie o link ou falhe e verifique se readlinkpossui as informações para você.
Guntram Blohm apoia Monica
"... pode ser abusado como um meio ..." Esse abuso é como "usado de um modo que não se destina a ser usado" ou "usado de um modo que não deve ser usado"?
O cara com o chapéu
22

Tanto quanto sei, o "+" significa que o número após o IP (o "xxxxx") se refere a um "ID do processo" (não uma porta que geralmente usa a notação [endereço IP]: [número da porta]).

É possível que essa "notação" (não tenho certeza se a chamaria de "notação", pois não conheço nenhuma documentação "oficial") se refere a outra coisa se usada por um aplicativo específico - mas, novamente, essa é sempre a possibilidade não apenas com links simbólicos. Os únicos casos que conheço (e pude encontrar com uma pesquisa que não era muito extensa) o "+ XXXX" sempre se referiam ao ID do processo.

Albin
fonte
11
Acabei de verificar. No meu caso, isso realmente acontece.
myMethod
11
Existe documentação desse formato em algum lugar que você pode vincular?
David Z
11
Não tenho certeza, eu só lembro disso por experiência prática.
Albin
2
Parece que você está falando de um link simbólico em um diretório especial, como /procou /dev. Você pode explicar para que serve esse link simbólico?
Barmar
4
Esta é a primeira vez que vejo essa notação, por isso estou surpreso ao ouvir você dizer que é uma notação geral. Onde você viu isso significa um ID de processo?
Barmar