Por que a raiz está na roda e no operador? A raiz de um grupo pode fazer alguma diferença?

18

Acabei de notar na minha máquina FreeBSD que a raiz está na roda e no operador. Estou tentando pensar em uma situação em que o UID 0 pertencer a um grupo teria algum efeito sobre ... bem ... qualquer coisa, e estou ficando em branco. Por falar nisso, o root precisa mesmo de um grupo de login primário em / etc / passwd? Ou o login (3) engasga e morre se o usuário tiver um campo de grupo primário em branco?

(Para esclarecer: entendo o propósito da existência do grupo "raiz", pois os arquivos precisam de um proprietário do grupo. Não estou entendendo como é importante que o usuário root / toor / o que quer que seja membro do grupo.)

Isso é apenas um problema de décadas atrás, ou existe uma verdadeira razão para isso?

Bandrami
fonte

Respostas:

5

Em resumo: não. Ter raiz wheele operatorgrupo não mudam nada.

Mas você também está questionando 2 outras coisas:

  • O ID do grupo raiz é (por padrão) definido como 0, o que é o mais próximo de um valor vazio que você pode obter.

    $ head -4 /etc/passwd
    # $FreeBSD: releng/9.2/etc/master.passwd 243947 2012-12-06 11:52:31Z rwatson $
    #
    root:*:0:0:Charlie &:/root:/bin/csh
    toor:*:0:0:Bourne-again Superuser:/root:
    

    Como dito, todo usuário precisa ter um grupo, portanto, não é possível definir o ID do grupo raiz (nem qualquer ID do usuário) como um valor nulo ou em branco. Se você tentar definir um gid do usuário em branco, você será avisado por pwd_mkdb:

    pwd_mkdb: no gid for user root
    pwd_mkdb: at line #3
    pwd_mkdb: /etc/pw.Rlb2U3: Inappropriate file type or format
    re-edit the password file?
    

    Portanto, o fato de que a raiz é definida é mais sobre tê-la nomeada corretamente, em vez de apenas um número idiota. Você pode alterar o root gid para qualquer número sem sentido (o gid não está dentro /etc/group). Seu usuário root ainda poderá fazer login suou o que mais o root puder fazer. Você acabará tendo algo parecido com isto:

    $ id
    uid=0(root) gid=10000 groups=10000,5(operator)
    
  • sobre por que alguns usuários estão no grupo de roda que é uma história totalmente diferente, como o FreeBSD , como o OpenBSD ou o NetBSD , os usuários precisam fazer parte dele wheelpara fazer o su root .

    Na documentação do FreeBSD ( capítulo 9.4 ):

    Para su a raiz (ou qualquer outra conta com privilégios de superusuário), você deve estar na roda de grupo. Se esse recurso não existisse, qualquer pessoa com uma conta em um sistema que também descobrisse a senha do root seria capaz de obter acesso ao sistema em nível de superusuário. Com esse recurso, isso não é estritamente verdadeiro; O su (1) impedirá que eles tentem digitar a senha se não estiverem na roda .

    Mas você está certo, remover o usuário root da roda não mudaria as coisas. Isso é puramente formal, pois o usuário toor não faz parte da roda ou a raiz faz parte do grupo de operadores .

  • O grupo de operadores é, no entanto, puramente formal, sem significados especiais em si.

Aqui está também o que Richard Stallman pensa sobre o grupo de rodas (do manual do gnu su ):

Por que o GNU "su" não suporta o grupo `wheel '======================================= ==========

(Esta seção é de Richard Stallman.)

Às vezes, alguns usuários tentam manter o poder total sobre todo o resto. Por exemplo, em 1984, alguns usuários do laboratório do MIT AI decidiram tomar o poder alterando a senha do operador no sistema Twenex e mantendo-a em segredo de todos os outros. (Consegui impedir esse golpe e devolver o poder aos usuários corrigindo o kernel, mas não saberia como fazer isso no Unix.)

No entanto, ocasionalmente os governantes contam a alguém. Sob o mecanismo "su" usual, uma vez que alguém aprende a senha root que simpatiza com os usuários comuns, ele ou ela pode dizer o resto. O recurso "grupo de rodas" tornaria isso impossível e, portanto, cimentaria o poder das réguas.

Estou do lado das massas, não dos governantes. Se você está acostumado a apoiar os chefes e administradores de sistemas no que quer que eles façam, talvez ache essa idéia estranha.

Ouki
fonte
1

login (3) e outros esperam grupo primário. Eles precisam dele para que possam definir campos válidos nos arquivos utmp / wtmp. E mesmo que não o fizessem (formato de arquivo alterado), você teria um problema mais fundamental quando o login (1) ou o sshd (8) ou outros programas tentassem configurar a sessão do usuário - independentemente do utmp / wtmp, eles precisam preencher os dois Propriedades do processo do kernel UID e GID (como os arquivos criados pelo usuário conectado devem ter o UID e o GID preenchidos, como você observa).

Quanto à questão de por que a raiz onipotente precisa mais do que o grupo primário, ela não faz verificações de permissão (como são ignoradas para o UID 0), mas para alguns outros usos.

O grupo "wheel" é usado especialmente para várias verificações de autenticação adicionais, como por exemplo pam_wheel

Outros grupos como "operator" podem ser usados ​​para recursos de segurança (por exemplo, algum processo executado pela raiz pode configurar (2) para USER sem privilégios (como "ninguém"), mantendo as associações ao GROUP (como "operator"). Isso permitiria que esse processo continuasse acessando arquivos pertencentes a esse grupo, reduzindo significativamente os problemas de segurança da execução com acesso total ao UID 0.

Não tenho certeza se existem programas fazendo uso desse recurso em seu sistema (ou se o FreeBSD CURRENT padrão)

Matija Nalis
fonte
0

Isso pode fazer a diferença - assim que qualquer programa verifica a associação ao grupo e se comporta de maneira diferente, dependendo do resultado. Obviamente, não há diferença nos privilégios que o usuário root pode forçar .

rackandboneman
fonte
0

Não é que se ninguém é membro da roda de grupo, a roda é simplesmente ignorada e todos os usuários podem rodar su ... e adivinhar a senha. Por ter pelo menos um usuário em um membro da roda do grupo (ou seja, raiz do usuário), os controles da roda são verificados e apenas outros membros da roda do grupo podem tentar executar su.

Rufwoof
fonte