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.
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:
[code lang=”cpp”]sudo dscl . -change /Users/teste UniqueID $(dscl . -read /Users/teste UniqueID | sed ‘s/[^0-9]//g’) 499[/code]Para modificar a propriedade do LoginWindow, “ocultando” o usuário teste:
[code lang=”cpp”]sudo defaults write /Library/Preferences/com.apple.loginwindow Hide500Users -bool TRUEsudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array teste[/code]
Para modificar o caminho padrão da Home do usuário teste:
[code lang=”cpp”]sudo dscl . -change /Users/teste NFSHomeDirectory /Users/teste /var/.teste[/code]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:
[code lang=”cpp”]sudo mv /Users/teste /var/.testesudo chown -R teste /var/.teste[/code]
Para inibir o compartilhamento da pasta Public do usuário teste:
[code lang=”cpp”]sudo rm -R /var/.teste/Public[/code]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!