OK, eu entendi agora. Depois de algumas checagens no fórum do FreeBSD , eu posso agora confirmar que as prisões do FreeBSD agem um pouco como um queijo suíço como objetos SHM estão em causa. De fato, o FreeBSD não fornece nenhum isolamento para os objetos SHM: todas as cadeias podem acessar todos os objetos SHM, em todo o sistema, sem nenhuma maneira de evitá-lo.
O erro mencionado nesta questão é, portanto, bastante lógico:
- Quando diferentes UID foram usados, o Squid não pôde ser iniciado porque tentou acessar objetos SHM pertencentes a um usuário diferente, por isso a mensagem de erro "create falhou em shm_open (/squid-cf__metadata.shm): ( 17) Arquivo existe ",
- Quando o mesmo UID foi usado em ambas as instalações, o Squid começou com sucesso, mas a situação foi provavelmente ainda pior já que ambas as instâncias lutariam contra o mesmo objeto de memória, reescrevendo os dados e apagando o objeto no desligamento ...
Por causa disso, medidas específicas devem ser tomadas para garantir que cada instância do Squid use nomes diferentes de objetos SHM.
Por padrão, o Squid cria os seguintes objetos SHM em sistemas FreeBSD (o comportamento exato depende do sistema operacional):
/squid-cf__metadata.shm
/squid-cf__queues.shm
/squid-cf__readers.shm
squid
oferece o parâmetro -n
para permitir atribuir um nome específico à instância. Concretamente este nome irá (entre outras coisas) substituir "squid" nos nomes de objetos SHM acima, assim o nome do objeto SHM se tornará único em todo o sistema.
Portanto, ao configurar uma nova instância do Squid em uma nova cadeia, é necessário editar /etc/rc.conf
e adicionar uma entrada como abaixo (substituir "something_unique" por um nome de instância exclusivo em seu host):
squid_flags="-n something_unique"
Isso permite iniciar corretamente os dois servidores Squid, cada um com UIDs diferentes.
Obviamente, embora um pouco fora do escopo aqui, o fato dos objetos SHM do Squid poderem ser acessados livremente de qualquer cadeia pode constituir um problema de segurança e não deve ser ignorado ...