ความหมายของ GID ต่ำกว่า 0 คืออะไร


1

ในขณะที่ทำงานกับกล่องโยเซมิตีฉันพบว่ากลุ่มผู้ใช้สองกลุ่มมีค่า 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

ID ผู้ใช้และกลุ่มไม่ได้ลงนามคือบวกเสมอ อย่างไรก็ตามเมื่อวันที่ two's-สมบูรณ์ ระบบมูลค่าที่ลงนาม -1 จะแสดงในลักษณะเดียวกับค่าที่ไม่ได้ลงนามที่ใหญ่ที่สุดที่เป็นไปได้ - 65535 (0xFFFF) ในฟิลด์ 16 บิต, 4294967295 (0xFFFF'FFFF) ในฟิลด์ 32 บิต

ในระบบปฏิบัติการบางระบบผู้ใช้ "ไม่มีใคร" มี UID ที่ใหญ่ที่สุด - ไม่ใช่พิเศษในระบบปฏิบัติการเพียงเลือกว่าตรงกันข้ามกับรูทที่มี 0 บางโปรแกรมเลือกที่จะเขียน UID นี้เป็น -1 หรือ (uid_t) -1 แทน 4294967295

(นี่จะทำให้เกิดความสับสนเมื่อโปรแกรมอื่นใช้ค่าเดียวกันเพื่อหมายถึง "ไม่มีชุด UID" ... )


ขอบคุณทำให้รู้สึกถึง -1 มีความคิดเห็นเกี่ยวกับ -2 บ้างไหม? ในขณะเดียวกันฉันก็พบมันใน userID ของ (ไม่มีใคร)
mh-cbon

นั่นคือสิ่งเดียวกัน
grawity
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.