Por que o administrador principal é o UID 501?

11

Eu entendo * o usuário administrador principal é dado um ID de usuário 501e os usuários subseqüentes obter números incrementais ( 502, 503...). Mas porque 501? O que há de especial 50x, qual o motivo histórico / técnico para essa escolha?

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

user137369
fonte
7
Eu pensei que o UID do administrador primário era 0!
Jeff Schaller

Respostas:

21

Muitos sistemas Unix começam a distribuir UIDs para usuários em um número específico. O Solaris fornecerá ao UID 100 o primeiro usuário de propósito geral, no OpenBSD é 1000 e, no macOS, parece que o UID 501 será o UID do primeiro usuário interativo criado, o que também é provavelmente um usuário administrador do macOS (que não é o mesmo como usuário root).

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 e contas de serviços do sistema. Isso também pode facilitar o gerenciamento de usuários, autenticação etc. em vários softwares. O YP / NIS , um sistema um pouco desatualizado para manter contas de usuário (e outras informações) em um servidor central sem precisar criar usuários locais em várias máquinas clientes, por exemplo, possui uma configuração MINUIDe MAXUIDpara o intervalo de contas de usuário que ele deve manipular.

Em alguns Unices, várias contas de serviço do sistema podem ser alocadas para software de terceiros, como UIDs 50 a 999 no FreeBSD ou 500 a 999 no OpenBSD.

Todas essas faixas são escolhidas pelos fabricantes e mantenedores de cada unidade, 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 mais baixo e mais alto (e GID) geralmente é configurável por um administrador local (consulte o addusermanual).

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

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


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

Kusalananda
fonte
Observe também que estas são meramente CONVENÇÕES. Nos sistemas Unix e Unix-like, não há nada inerentemente mágico em um UID. Root poderia arbitrariamente ser dado um UID de 65535 e o primeiro usuário interativo pode ser atribuído como UID 0.
Doug R.
@DougR. Possivelmente, mas isso provavelmente quebraria várias partes de software existentes. O POSIX costuma dizer que um processo precisa de "privilégios apropriados", não de um usuário . Consulte também a definição de "privilégios apropriados" (que menciona o UID 0 como "superusuário" em alguns sistemas): pubs.opengroup.org/onlinepubs/9699919799/xrat/…
Kusalananda
Privilégio sobre o usuário era o ponto do meu comentário, mesmo que eu não o declarasse tão claramente quanto você. O único software que deve ser interrompido é o software que conta com o UID em um intervalo específico. Não sei o que, se é que alguma coisa faz isso.
Doug R.
@DougR. Veja também: superuser.com/questions/626843/…
Kusalananda
8

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 logon.

Por exemplo, daemons de impressão como cupstendem a receber sua própria conta de usuário. Portanto, se uma vulnerabilidade no daemon for explorada, o daemon não estará executando como rootcom todo o poder sobre o sistema. (Nem tem necessariamente o poder de interferir com outros daemons).

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

Isso deixaria UIDs 500 para cima (ou 1000 para cima) para contas de logon.

O Debian também possui uma alocação estática paraUIDGID 100, embora eu não possa imaginar esse desvio causando algum problema específico.

É fácil imaginar outro sistema com um desvio de um por um, que também reserva UID 500. (Presumo que isso ainda seja compatível; não consigo imaginar todos os Linux que violam o LSB por tanto tempo, sem sendo atualizado).

A primeira conta de login não precisa ser uma conta de administrador nem a conta de administrador principal. Os sistemas não usam necessariamente sudo(principalmente se forem pré-datados :). Você pode dizer que a "conta de administrador principal" está rootnesse caso. Fora isso, as distribuições * nix e Linux de uso geral não reconhecem uma "conta de administrador principal" específica.

sourcejedi
fonte
Não sei por que você está falando sobre Linux, quando OP pede especificamente sobre Mac OS X.
um CVn
> Editado 7 horas atrás> em sistemas * nix
sourcejedi
4
On more recent Linux distributions, the system range is extended up to 999.- Eu sempre tive identificação de usuários a partir de 1000 e comecei a usar o Linux em 2005. Eu não chamaria de "recente".
Mirek Długosz
O que faz você pensar que 100 é estático no Debian? Olhando para alguns dos meus sistemas, parece dinâmico para mim (em um era systemd-timesync, em outro era sshd).
plugwash
Quando a pergunta foi editada 12:22 UTC, o OP adicionou a tag [osx] junto com a menção do OS X no corpo da pergunta. Sua resposta foi publicada dez minutos depois e parece não levar isso em consideração.
precisa saber é