Identificação do usuário (UID e UUID)

segunda-feira, 26 de março de 2012

Todo sistema operacional baseado em Unix (especificação POSIX) utiliza-se de valores numéricos para identificação de usuários e grupos. Esta numeração é atribuída como propriedade dos objetos (diretório e arquivos) para identificação e relacionamento com o seu proprietário e grupo associado. No OS X, o atributo numérico usado para identificar contas de usuários com os respectivos arquivos e diretórios de sua propriedade é chamado de User ID (ou UID).

O UID é “único” para cada conta de usuário criada no sistema local, embora sobreposições sejam possíveis. O OS X reserva a faixa entre 500 e 2.147.483.648 para os usuários criados através do painel Usuários & Grupos. IDs abaixo de 100 são reservados para contas de serviços do sistema, enquanto o ID 0 (zero) é reservado para a conta do system administrador (root). Além disso, se você excluir um usuário, o ID do usuário deletado será liberado e utilizado pelo sistema na criação de um novo.

É importante notar que cada User ID é “único” entre as contas criadas dentro de cada sistema local. Outros computadores Mac também utilizam a mesma faixa de IDs, portanto, usuários distintos em sistema distintos podem ter o mesmo número ID. Para resolver esse problema, a Apple adotou o Universally Unique ID (UUID) ou Generated UID (GUID), identificação padronizada pela Open Software Foundation (OSF) como parte do framework Distributed Computing Environment (DCE) — em julho de 2005, o Internet Engineering Task Force (IETF) documentou e publicou o padrão através da RFC 4122.

O UUID é um atributo alfanumérico de 128 bits, representados por 32 dígitos hexadecimais apresentados em 5 grupos separados por hífens, totalizando 340.282.366.920.938.463.463.374.607.431.768.211.456 possibilidades distintas de hash, a qual é gerada pelo OS X durante a criação de uma conta no sistema. Uma vez criada, nenhum outro sistema Mac em qualquer lugar no mundo irá gerar a mesma hash por questões que envolvem hardware e software, tornando o UUID único no espaço e tempo.

No OS X, o UUID é usado localmente para referenciar a senha ao usuário, adesão a grupos e permissões em arquivos. Em serviços de Autenticação e Diretório que utilizam LDAP, como por exemplo Open Directory (Apple) e Active Directory (Microsoft), o UUID é vinculado à conta de usuário e grupo, tornando-o único e identificável dentro de um ambiente de rede.

Para visualizar e editar os atributos de um usuário, autentique-se como administrador no painel Usuários & Grupos e dê um Ctrl + clique (botão direito) sobre o usuário. Assim, será apresentada a opção avançada. Em geral, depois que um ID de usuário é atribuído, você não deve alterar o ID do usuário. O mesmo UID pode ser associado manualmente a diferentes usuários, mas isto pode ser um risco, pois dois usuários com o mesmo ID terão as mesmas permissões POSIX. No entanto, cada usuário tem um UUID exclusivo que pode ser definido em conjunto com as permissões ACL a fim de impedir que usuários acessem arquivos e pastas de outro com o mesmo UID.

Painel de usuários

Ainda sobre o assunto identificação do usuário, e alinhado com o último artigo publicado, podemos implementar técnicas para ofuscar informações relacionadas a usuários do sistema. Isso cria barreiras para usuários com pouco conhecimento técnico, ou que não dominam profundamente o OS X.

O processo é simples: basta criar ou modificar uma conta de usuário Administrador ou Padrão (por questões de segurança, é interessante ocultar o administrador do sistema), alterar o UID do usuário para um número entre 101 e 499 e, em seguida, modificar a propriedade da LoginWindow. Executando estas ações, o usuário não será exibido na tela de login, troca rápida de usuários e painel Usuários & Grupos. Entretanto, a pasta Home do usuário continuará sendo apresentada no caminho padrão do sistema, o que poderia levar à descoberta do usuário criado. Desta forma, iremos modificar o caminho da pasta Home do usuário “oculto” para um local fora do convencional do sistema — removendo também o diretório Public, para inibir o compartilhamento da pasta caso o serviço seja habilitado.

Abra o Terminal e digite essa sequência de comandos:

Para modificar o UID do usuário (teste), colocando-o abaixo de 500:

sudo dscl . -change /Users/teste UniqueID $(dscl . -read /Users/teste UniqueID | sed ‘s/[^0-9]//g’) 499

Para modificar a propriedade do LoginWindow, “ocultando” o usuário teste:

sudo defaults write /Library/Preferences/com.apple.loginwindow Hide500Users -bool TRUE
sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array teste

Para modificar o caminho padrão da Home do usuário teste:

sudo dscl . -change /Users/teste NFSHomeDirectory /Users/teste /var/.teste

Para mover a pasta Home do usuário teste para o local especificado e redefinir as permissões, já que modificamos o UID para 499:

sudo mv /Users/teste /var/.teste
sudo chown -R teste /var/.teste

Para inibir o compartilhamento da pasta Public do usuário teste:

sudo rm -R /var/.teste/Public

Para que estas modificações tenham efeito, você precisa executar os comandos através de um segundo usuário administrador, informando a senha de system administrador (root).

Atenção: estas modificações são críticas para o usuário que será “ocultado”, então, se você não tem conhecimento, não faça!

Publicado em: https://macmagazine.uol.com.br/post/2012/03/26/seguranca-no-mundo-apple-identificacao-do-usuario-uid-e-uuid/

Conteúdos recentes

Identificação do usuário (UID e UUID)

por Renato Ribeiro Tempo para ler: 5 min
Share This