Diferença entre a raiz de login do macOS e a raiz do Darwin Terminal


5

A recente grande falha de segurança no macOS 11.13. [1,2] virou o conselho usual de não ativar a rootconta de cabeça para baixo. Mas isso me deixou um pouco confuso sobre exatamente qual rootconta está sendo discutida.

O shell do Darwin tem uma rootconta listada e muitos arquivos e diretórios listados como de propriedade de root, mas o macOS não possui uma conta de logon habilitada root.

Qual é a diferença entre a rootconta listada como proprietário existente para arquivos no Terminal e a rootconta de logon (desabilitada) ?

Respostas:


4

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 .


O que isso significa, nesse contexto, que dscl . list /Users UserShellroot /bin/bash(embora eu não tenha um login interativo para essa configuração)?
Orome

@orome Isso significa que o rootusuário, se estiver ativado, obterá /bin/basho shell. Use sudo /usr/bin/dscl . -create /Users/root UserShell /usr/bin/falsepara alterá-lo para segurança extra.
nohillside

@patrix: E isso muda apenas o shell que routseria obtido se estivesse ativado (mas não habilitado), correto?
Orome 30/11

@orome O que mais você espera que seja impactado aqui?
Nohillside

@patrix: O que eu perguntei entre parênteses. A resposta é secreta?
Orome

3

A propriedade do arquivo não requer que um usuário possa efetuar login. Os arquivos que executam o sistema operacional geralmente pertencem à raiz e são colocados por um processo de instalação que requer algum tipo de autenticação. Além disso, o sistema operacional usa outros usuários que executam processos ao lado da raiz. Esses usuários geralmente têm seu shell definido como /bin/false, não podem fazer login e podem produzir arquivos de sua propriedade.

Para listar usuários em seu sistema e seu shell:

dscl . list /Users UserShell

Para encontrar arquivos no seu sistema que não pertencem à raiz ou a você:

sudo find -x / ! \( -user root -o -user "$(id -un)" \) -exec ls -ld {} +

As primeiras listas de comandos (além de um grupo de /usr/bin/falseusuários): _mbsetupuser /bin/bash, _uucp /usr/sbin/uucico, root /bin/bash, e Rax /bin/bash.
Orome 30/11
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.