Por que o administrador principal do UID 501?

9

Eu entendo * o usuário administrador principal recebe um ID de usuário de 501 e os usuários subsequentes recebem números incrementais ( 502 , 503 ,…). Mas por que 501 ? O que há de especial sobre 50x , qual é a razão histórica / técnica para essa escolha?

* Eu comecei a investigar isso quando fiquei curioso para saber porque meu disco rígido externo tinha todos os seus arquivos lixados dentro de .Trashes/501 . Minha pesquisa me levou à conclusão de que 501 é o ID do usuário para o administrador principal em sistemas * nix (estou no macOS), mas não por que .

    
por user137369 14.04.2017 / 13:27

2 respostas

19

Muitos sistemas Unix começam a distribuir UIDs para usuários em um determinado número. O Solaris dará ao primeiro usuário de propósito geral UID 100, no OpenBSD é 1000, e no macOS aparece o UID 501 que será o UID para o primeiro usuário interativo criado, que também é provavelmente um usuário admin do macOS.

As contas com números mais baixos são contas de usuário do sistema para daemons, etc. Isso facilita a distinção entre contas "humanas" interativas de contas de serviços do sistema. Isso também pode facilitar o gerenciamento de usuários, a autenticação etc. em vários softwares. YP / NIS , um sistema ligeiramente desatualizado para manter contas de usuário (e outras informações) em um servidor central sem precisar criar os usuários em várias máquinas cliente, por exemplo, têm uma configuração MINUID e MAXUID para o intervalo de contas de usuário que devem ser manipuladas.

Em alguns Unices, um conjunto de contas de serviço do sistema pode ser alocado para softwares de terceiros, como os UIDs 50 a 999 no FreeBSD ou 500 a 999 no OpenBSD.

Todas essas faixas são escolhidas pelos fabricantes e mantenedores dos Unices individuais de acordo com as necessidades esperadas de seu sistema operacional. O padrão POSIX não diz nada sobre essas coisas. O UID alocável (e GID) mais baixo e mais alto geralmente é configurável por um administrador local (consulte o manual adduser ).

A maioria dos Unices reserva UID 0 para root , o superusuário, e atribui o maior UID possível (ou pelo menos algum valor alto) ao usuário nobody (o Solaris usa UID 60001, o OpenBSD usa 32768, mas UIDs pode ser muito maior que isso).

(Ver comentários sobre o UID 0 sempre sendo root (ou não), que é uma pequena digressão deste tópico)

Atualização: O projeto do OpenBSD recentemente rejeitado a ideia de randomizar a alocação de UID / GID.

    
por 14.04.2017 / 14:40
7

Para distribuições que seguem o LSB , eles alocam UIDs e GIDs 0-99 estaticamente. Os UIDs 100-499 são alocados dinamicamente, mas também são para o sistema, e não para contas de login.

Por exemplo, os daemons de impressão como cups tendem a receber sua própria conta de usuário. Portanto, se uma vulnerabilidade no daemon for explorada, o daemon não está sendo executado como root com potência total sobre o sistema. (Nem necessariamente tem o poder de interferir com outros daemons).

Em distribuições Linux mais recentes, o intervalo do sistema é estendido até 999.

Isso deixaria os UIDs 500 para cima (ou 1.000 para cima) para contas de login.

Além disso, o Debian tem uma alocação estática para UID GID 100, embora eu não possa imaginar que o desvio cause algum problema em particular.

É fácil imaginar outro sistema com um desvio off-by-one, que adicionalmente reserva o UID 500. (Eu suponho que isso ainda seria compatível; não posso imaginar que todos os Linux'es estejam violando o LSB para isso longo, sem que seja atualizado).

A primeira conta de login não precisa ser uma conta de administrador nem uma conta de administrador principal. Os sistemas não usam necessariamente sudo (particularmente se eles forem pré-datados). Você pode dizer que a "conta de administrador principal" é root nesse caso. Além disso, as distribuições Linux * nix e de propósito geral não reconhecem uma "conta de administrador principal" específica.

    
por 14.04.2017 / 14:32