Qual é o significado de GID abaixo de 0?

1

Enquanto trabalhava em uma caixa de yosemite, descobri que dois grupos de usuários tinham valor de GID abaixo de 0.

$ dscl -plist . -readall /Groups PrimaryGroupID

<dict>
    <key>dsAttrTypeStandard:PrimaryGroupID</key>
    <array>
        <string>-2</string>
    </array>
    <key>dsAttrTypeStandard:RecordName</key>
    <array>
        <string>nobody</string>
        <string>BUILTIN\Nobody</string>
    </array>
</dict>
<dict>
    <key>dsAttrTypeStandard:PrimaryGroupID</key>
    <array>
        <string>-1</string>
    </array>
    <key>dsAttrTypeStandard:RecordName</key>
    <array>
        <string>nogroup</string>
    </array>
</dict>

É válido? Tem um significado especial?

    
por mh-cbon 27.05.2016 / 16:13

1 resposta

1

Os IDs de usuário e grupo não são assinados, ou seja, sempre positivos. No entanto, nos sistemas two-complement , um valor de sinal -1 é representado da mesma forma que o maior possível valor não assinado - 65535 (0xFFFF) em campos de 16 bits, 4294967295 (0xFFFF'FFFF) em campos de 32 bits.

Em alguns sistemas operacionais, o usuário "nobody" tem o maior UID possível - não especial no sistema operacional, apenas escolhido como o oposto do root. 0. Alguns programas optam por gravar esse UID como -1 ou (uid_t) -1 de 4294967295.

(Isso causa confusão quando outros programas usam o mesmo valor para significar "nenhum conjunto de UID" ...)

    
por 27.05.2016 / 16:31

Tags