O usuário root (UID 0) existe em todos os sistemas operacionais Unix ou Unix-like. Todo processo de um sistema operacional Unix deve ser executado como um usuário / UID válido, independentemente dos processos do sistema, daemons, serviços ou aplicativos iniciados pelo usuário. Todo processo básico do sistema é executado no UID 0 (raiz) e todos os arquivos relevantes ao sistema pertencem a esse usuário. Por razões de segurança, alguns processos estão sendo executados como "usuários" diferentes com privilégios menores que a raiz do superusuário . Esses usuários estão lá com o único objetivo de iniciar serviços, como um servidor da web, um banco de dados, o servidor de janelas e assim por diante. Isso significa que nem todo usuário configurado no Unix (ou macOS) é um usuário "real". De fato, a maioria desses usuários do sistema não pode fazer logon interativamente.
Por exemplo, um servidor da web (nginx, apache, ...) será iniciado por um script executado em UID 0 (= root ). O processo do servidor da web reduz os privilégios para um UID específico (nesse caso, pode ser o usuário www ). www não é um usuário real e não pode ser usado para efetuar logon no sistema interativamente.
Há duas maneiras de "desativar" um usuário (sistema):
- defina o shell do usuário como / bin / false (ou qualquer shell não válido)
- desabilite a senha do usuário, configurando-a para um valor inválido, vazio ou específico.
No macOS AFAIK, um usuário inválido possui uma senha vazia e uma propriedade específica definida no servidor OpenDirectory local.
Geralmente, para uma solicitação como "este é um usuário válido", o serviço OpenDirectory no macOS faz uma verificação simples no usuário solicitado e retorna verdadeiro (o usuário pode efetuar login) ou falso (o usuário não pode fazer login).
Parece que o erro da Apple não era verificar a validade do usuário, mas configurá- la como habilitada. Nas contas já ativadas, isso não teve efeito, mas as contas desativadas tornaram-se válidas. E como um usuário desativado não tem senha, uma senha vazia foi aceita como uma opção válida para efetuar login como superusuário / root .
dscl . list /Users UserShell
dároot /bin/bash
(embora eu não tenha um login interativo para essa configuração)?