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) ?
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 UserShelldá root /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ê:
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.
dscl . list /Users UserShell
dároot /bin/bash
(embora eu não tenha um login interativo para essa configuração)?root
usuário, se estiver ativado, obterá/bin/bash
o shell. Usesudo /usr/bin/dscl . -create /Users/root UserShell /usr/bin/false
para alterá-lo para segurança extra.rout
seria obtido se estivesse ativado (mas não habilitado), correto?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:
Para encontrar arquivos no seu sistema que não pertencem à raiz ou a você:
fonte
/usr/bin/false
usuários):_mbsetupuser /bin/bash
,_uucp /usr/sbin/uucico
,root /bin/bash
, eRax /bin/bash
.