Estou contribuindo e executando um aplicativo da Web de código aberto que, em grande parte, existia antes do meu tempo. O aplicativo adiciona entradas LDAP para usuários de aplicativos da Web a uma instância LDAP local para fornecer a esses usuários acesso ao sistema de arquivos via Samba.
Em todos os exemplos de trabalho eu sei que o sambaSID
valor armazenado no LDAP está configurado para ser calculado pelo padrão
$LOCALSID "-" ($UIDNUMBER * 2 + 1000)
Exemplo: para um usuário com uid 1002
o sambaSID será algo como S-1-5-21-1234567890-5678912345-987654321
-
3004
[espaços adicionados para facilitar a leitura]. Estou curioso para saber por que isso é necessário. De onde vêm esses números mágicos 2 e 1000, eles são necessários e, em caso afirmativo, por quê?
Pesquisando por aí, encontrei este PDF que não tem relação com nosso aplicativo e explica exatamente esse procedimento:
5. Configurando sambaSIDs de usuário
Ao criar usuários para o LDAP externo, você precisa prestar atenção especial aos seus sambaSIDs.
As entradas corretas do Samba para um usuário se parecem com o exemplo a seguir:
uidNúmero: 1001
sambaSID: S-1-5-21-2896602268-470177729-4123194723-3002
gidNumber: 1000sambaPrimaryGroupSID: S-1-5-21-2896602268-470177729-4123194723-3001
Como você pode ver, há um número de 4 dígitos anexado ao sambaSID regular (que é retirado do exemplo WORKGROUP acima). Isso é gerado da seguinte maneira:
sambaSID: uidNumber * 2 + 1000
sambaPrimaryGroupSID: gidNumber * 2 + 1001Essas entradas devem sempre corresponder e estar em conformidade com o esquema acima – caso contrário, o usuário não poderá se conectar via SMB.
Portanto, não parece ser o caso de que esses números sejam escolhidos arbitrariamente. No entanto, em nossos exemplos, diferentemente do PDF citado, acho que o sambaPrimaryGroupSID
não sofre nenhuma aritmética, seu valor para o grupo 100
( users
) é apenas anexado, como S-1-5-21-1234567890-5678912345-987654321
-
100
, o que é diferente das explicações no PDF citado acima. No entanto, o acesso ao Samba também funciona corretamente com ele, então me pergunto o quão confiável é a fonte que encontrei.
De que são esses números mágicos '2' e '1000'? Eles são necessários ou úteis para alguma coisa?
Eu estava procurando a mesma coisa, e encontrei este link .
Lá é explicado que a multiplicação com 2 é para garantir que os IDs seguros do usuário e os IDs seguros do grupo não se sobreponham. (Este último sempre sendo ímpar).
Sobre os +1000, números abaixo de 1000 são reservados para grupos especiais do Windows, assim como no Linux muitos números de grupos menores são reservados. Os usuários regulares do Windows obtêm números começando com 1000.