"SID" é um identificador estático anexado a uma conta de usuário. É apenas uma série de números, como o SSN da pessoa / NIN , ou" chave primária "de um registro de banco de dados. Como isso nunca muda, sua finalidade é encontrar uma conta específica, mesmo que ela tenha sido renomeada; por esse motivo, ele é armazenado em vez do nome do usuário em tokens, ACLs e outras estruturas semelhantes.
Observe que também há SIDs de grupo, SIDs de sessão, SIDs de serviço e outros - para identificar todos os tipos de "atores" diferentes que podem estar nas ACLs.
"Token" é um objeto do kernel que contém listas de SIDs e privilégios. O kernel tem regras muito restritas para obtê-las e manipulá-las (isso pode ser feito apenas usando syscalls, não acesso direto à memória), então ter um token significa que o processo foi autorizado a agir em nome de qualquer usuário que o token descreva.
(Em sistemas semelhantes ao Unix, se você estiver familiarizado com eles, um processo tem um conjunto de "credenciais" - 'UID real', 'UID efetivo', 'GID real', 'GID efetivo', 'complementar GIDs e algumas outras coisas. O SID é uma extensão de um UID / GID, e o token é uma coleção dessas credenciais. Em vez de chamar capset()
+ setgroups()
+ setgid()
+ setuid()
, você obtenha um token e chame SetToken()
.)
Existem dois tipos de tokens - "primary", que podem ser gerados apenas ao efetuar login no sistema e "impersonation ", tokens temporários que qualquer serviço pode criar para atuar em nome de um cliente.
Aqui está uma lista completa de todas informações mantidas em um token.