1

Работая над боксом yosemite, я обнаружил, что две группы пользователей имеют значение GID ниже 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>

Это действительно? Имеет ли это особое значение?

1 ответ1

1

Идентификаторы пользователя и группы не имеют знака, т.е. всегда положительны. Однако в системах с двумя дополнениями значение со знаком -1 представляется так же, как и максимально возможное значение без знака - 65535 (0xFFFF) в 16-битных полях, 4294967295 (0xFFFF'FFFF) в 32-битных полях.

В некоторых операционных системах пользователь "nobody" имеет наибольший возможный UID - не особенный в ОС, просто выбран как полная противоположность root с 0. Некоторые программы предпочитают записывать этот UID как -1 или (uid_t) -1 вместо 4294967295.

(Это вызывает путаницу, когда другие программы используют одно и то же значение для обозначения "UID не установлен" ...)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .