อ่าน 2 นาที
ตัวระบุกลุ่ม
ใน ระบบ ที่คล้าย Unix นั้น สามารถจัด กลุ่ม ผู้ใช้หลายคนเข้าด้วยกัน ได้ สิทธิ์การเข้าถึงไฟล์ของระบบ POSIX และ Unix ทั่วไปนั้น แบ่งออกเป็นสามระดับ คือผู้ ใช้ กลุ่ม และ อื่นๆ...
ตัวระบุกลุ่ม
ใน ระบบ ที่คล้าย Unix นั้นสามารถจัดกลุ่ม ผู้ใช้หลายคนเข้าด้วยกัน ได้สิทธิ์การเข้าถึงไฟล์ของระบบPOSIXและUnix ทั่วไปนั้น แบ่งออกเป็นสามระดับ คือผู้ใช้กลุ่มและอื่นๆการใช้กลุ่มช่วยให้สามารถมอบสิทธิ์เพิ่มเติมได้อย่างเป็นระบบ เช่น การเข้าถึงดิสก์เครื่องพิมพ์และอุปกรณ์ต่อพ่วง อื่นๆ วิธีนี้ยังช่วยให้ผู้ใช้ระดับสูงสุด สามารถ มอบหมายงานด้านการดูแลระบบบางอย่างให้กับผู้ใช้ทั่วไปได้ คล้ายกับ กลุ่ม ผู้ดูแลระบบในMicrosoft Windows NTและระบบปฏิบัติการที่พัฒนาต่อยอดจาก Windows NT
ตัวระบุกลุ่ม (Group IdentifierหรือGID ) มักย่อเป็นค่าตัวเลขที่ใช้แทนกลุ่มเฉพาะ[ 1 ]ช่วงค่าของ GID จะแตกต่างกันไปในแต่ละระบบ อย่างน้อยที่สุด GID สามารถอยู่ระหว่าง 0 ถึง 32,767 โดยมีข้อจำกัดข้อหนึ่งคือ กลุ่มล็อกอินสำหรับผู้ใช้ระดับสูงสุดต้องมี GID เป็น 0 ค่าตัวเลขนี้ใช้เพื่ออ้างอิงถึงกลุ่มในไฟล์/etc/passwdและ/etc/groupไฟล์ที่เทียบเท่ากัน ไฟล์ รหัสผ่านเงา (Shadow password files) และบริการข้อมูลเครือข่าย (Network Information Service)ก็อ้างอิงถึง GID ตัวเลขเช่นกัน ตัวระบุกลุ่มเป็นส่วนประกอบที่จำเป็นของระบบไฟล์และกระบวนการของ Unix
คุณลักษณะของกระบวนการ
มาตรฐาน POSIX รองรับฟิลด์ GID ที่แตกต่างกันสามแบบในตารางคำอธิบายกระบวนการ เพื่อให้กระบวนการที่มีสิทธิ์พิเศษสามารถรับบทบาทที่แตกต่างกันได้แบบไดนามิก:
รหัสกลุ่มที่มีผลบังคับใช้
GID ที่มีประสิทธิภาพ ( egid) ของกระบวนการจะถูกใช้สำหรับการตรวจสอบการเข้าถึงไฟล์ และอาจส่งผลต่อการสร้างไฟล์ด้วย ขึ้นอยู่กับความหมายของการใช้งานเคอร์เนลเฉพาะที่ใช้ และอาจรวมถึง ตัวเลือก การเมานต์ที่ใช้ ตาม ความหมายของ BSD Unixการเป็นเจ้าของกลุ่มที่กำหนดให้กับไฟล์ที่สร้างขึ้นใหม่จะได้รับการสืบทอดโดยไม่มีเงื่อนไขจากการเป็นเจ้าของกลุ่มของไดเร็กทอรีที่สร้างไฟล์นั้นขึ้น ตาม ความหมายของ AT&T UNIX System V (ซึ่งถูกนำมาใช้โดยLinuxเวอร์ชันต่างๆ ด้วย) ไฟล์ที่สร้างขึ้นใหม่โดยปกติจะได้รับความเป็นเจ้าของกลุ่มที่ระบุโดยegidกระบวนการที่สร้างไฟล์นั้น ระบบไฟล์ส่วนใหญ่ใช้เมธอดในการเลือกว่าควรใช้ความหมายของ BSD หรือ AT&T เกี่ยวกับการเป็นเจ้าของกลุ่มของไฟล์ที่สร้างขึ้นใหม่ ความหมายของ BSD จะถูกเลือกสำหรับไดเร็กทอรีเฉพาะเมื่อมีการตั้งค่าสิทธิ์ S_ISGID (s-gid) [ 2 ]
รหัสกลุ่มจริง
GID จริง ( rgid) ระบุเจ้าของกลุ่มที่แท้จริงของกระบวนการ
รหัสกลุ่มที่บันทึกไว้
รหัสกลุ่มที่บันทึกไว้จะถูกใช้เมื่อโปรแกรมที่ทำงานด้วยสิทธิ์ระดับสูงจำเป็นต้องทำงานที่ไม่มีสิทธิ์ระดับสูงเป็นการชั่วคราว การเปลี่ยนegidจากค่าที่มีสิทธิ์ (โดยทั่วไปคือ0) ไปเป็นค่าที่ไม่มีสิทธิ์ (ค่าใดๆ ก็ตามที่ไม่ใช่ค่าที่มีสิทธิ์) จะทำให้ค่าที่มีสิทธิ์ถูกบันทึกไว้ในsgidต่อมา โปรแกรมegidสามารถตั้งค่า กลับไปเป็นค่าที่บันทึกไว้ใน ได้sgidเพื่อให้สามารถกู้คืนสิทธิ์ระดับสูงได้ กระบวนการที่ไม่มีสิทธิ์สามารถตั้งค่าegidเป็นหนึ่งในสามค่าเท่านั้น ได้แก่ ค่าของrgidค่าของsgidหรือค่าegidของ
กลุ่มเสริม
ผู้ใช้ทุกคนต้องเป็นสมาชิกของกลุ่มอย่างน้อยหนึ่งกลุ่ม ซึ่งก็คือ กลุ่มหลักโดยระบุด้วย GID ตัวเลขของรายการผู้ใช้ในฐานข้อมูล passwd ซึ่งสามารถดูได้ด้วยคำสั่งgetent passwd(โดยปกติจะจัดเก็บไว้ใน/etc/passwdหรือLDAP ) กลุ่มนี้เรียกว่ารหัสกลุ่มหลักผู้ใช้อาจถูกระบุว่าเป็นสมาชิกของกลุ่มเพิ่มเติมในรายการที่เกี่ยวข้องในฐานข้อมูลกลุ่ม ซึ่งสามารถดูได้ด้วยคำสั่งgetent group(โดยปกติจะจัดเก็บไว้ใน/etc/groupหรือLDAP ) รหัสของกลุ่มเหล่านี้เรียกว่ารหัสกลุ่มเสริม
อนุสัญญา
พิมพ์
เดิมทีมีการใช้จำนวนเต็ม 16 บิตแบบมีเครื่องหมาย แต่เนื่องจากเครื่องหมายไม่จำเป็น – เพราะจำนวนลบไม่สามารถใช้เป็นรหัสกลุ่มได้ – จึงเปลี่ยนมาใช้จำนวนเต็มแบบไม่มีเครื่องหมายแทน ซึ่งทำให้สามารถใช้รหัสกลุ่มได้ระหว่าง 0 ถึง 65,535 ระบบปฏิบัติการสมัยใหม่มักใช้จำนวนเต็ม 32 บิตแบบไม่มีเครื่องหมาย ซึ่งทำให้สามารถใช้รหัสกลุ่มได้ระหว่าง 0 ถึง 4,294,967,295
สนามที่สงวนไว้
ระบบ Linux หลายระบบสงวนช่วงหมายเลข GID 0 ถึง 99 สำหรับกลุ่มที่จัดสรรแบบคงที่ และช่วง 100−499 หรือ 100−999 สำหรับกลุ่มที่จัดสรรแบบไดนามิกโดยระบบในสคริปต์หลังการติดตั้ง ช่วงเหล่านี้มักระบุไว้ในไฟล์ `config.json` /etc/login.defsสำหรับuseradd` config.json` groupaddและเครื่องมือที่คล้ายกัน
บน FreeBSD ผู้ดูแลแพ็กเกจที่ต้องการ GID สำหรับแพ็กเกจของตนสามารถเลือก GID ที่ว่างอยู่ในช่วง 50 ถึง 999 จากนั้นลงทะเบียนการจัดสรรแบบคงที่นี้ในports/ GIDs [ 3 ]
คุณค่าพิเศษ
- 0: โดยปกติ ผู้ใช้ระดับสูงสุดจะมี GID เป็นศูนย์ (0)
- −1: ค่านี้
(gid_t) -1สงวนไว้โดย POSIX เพื่อระบุอาร์กิวเมนต์ที่ถูกละเว้น[ 4 ] - 65,534: เคอร์เนล Linux จะกำหนดค่าเริ่มต้นเป็น 2 16 −2 = 65,534 (ซึ่งการแจกจ่าย Linux หลายตัวจะแมปกับชื่อกลุ่ม "nogroup") เมื่อ GID 32 บิตไม่พอดีกับค่าส่งคืนของการเรียกใช้ระบบ 16 บิต[ 5 ]ค่านี้จะถูกส่งคืนโดยidmapd เช่นกัน หากชื่อกลุ่มใน แพ็กเก็ต NFSv4 ขาเข้า ไม่ตรงกับกลุ่มที่รู้จักใด ๆ ในระบบ
กลุ่มส่วนบุคคล
ผู้ดูแลระบบหลายคนมักกำหนดกลุ่มหลักส่วนตัวให้กับผู้ใช้แต่ละคน โดยตั้งชื่อกลุ่มให้เหมือนกับชื่อผู้ใช้ และมักจะมี GID ตัวเลขเดียวกันกับ UID ของผู้ใช้ด้วย กลุ่มส่วนตัวเหล่านี้ไม่มีสมาชิกอื่น และทำให้การทำงานร่วมกับผู้ใช้รายอื่นในไดเร็กทอรีที่ใช้ร่วมกันง่ายขึ้น โดยอนุญาตให้ผู้ใช้ทำงานร่วมกันได้อย่างคล่องแคล่ว ด้วยumask 0002วิธีนี้ ไฟล์ที่สร้างขึ้นใหม่สามารถมีสิทธิ์ในการเขียนสำหรับสมาชิกในกลุ่มได้โดยค่าเริ่มต้น เนื่องจากโดยปกติแล้วจะอนุญาตเฉพาะสมาชิกในกลุ่มส่วนตัวเท่านั้น ซึ่งก็คือเจ้าของไฟล์นั่นเอง อย่างไรก็ตาม หากสร้างไฟล์ในไดเร็กทอรีที่ใช้ร่วมกันซึ่งเป็นของกลุ่มอื่นและมี การตั้งค่าบิต setgidไว้ ไฟล์ที่สร้างขึ้นจะสามารถเขียนได้โดยอัตโนมัติสำหรับสมาชิกของกลุ่มในไดเร็กทอรีนั้นด้วย
ในระบบ Linux หลายระบบUSERGROUPS_ENABตัวแปรในไฟล์ `input` /etc/login.defsจะควบคุมว่าคำสั่งต่างๆ เช่น `input` useraddหรือuserdel`input` จะเพิ่มหรือลบกลุ่มส่วนบุคคลที่เกี่ยวข้องโดยอัตโนมัติหรือไม่
ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ตัวระบุกลุ่ม
ใน ระบบ ที่คล้าย Unix นั้น สามารถจัด กลุ่ม ผู้ใช้หลายคนเข้าด้วยกัน ได้ สิทธิ์การเข้าถึงไฟล์ของระบบ POSIX และ Unix ทั่วไปนั้น แบ่งออกเป็นสามระดับ คือผู้ ใช้ กลุ่ม และ อื่นๆ...
คุณลักษณะของกระบวนการ
มาตรฐาน POSIX รองรับฟิลด์ GID ที่แตกต่างกันสามแบบในตารางคำอธิบายกระบวนการ เพื่อให้กระบวนการที่มีสิทธิ์พิเศษสามารถรับบทบาทที่แตกต่างกันได้แบบไดนามิก:
รหัสกลุ่มที่มีผลบังคับใช้
GID ที่มีประสิทธิภาพ ( egid ) ของกระบวนการจะถูกใช้สำหรับการตรวจสอบการเข้าถึงไฟล์ และอาจส่งผลต่อการสร้างไฟล์ด้วย ขึ้นอยู่กับความหมายของการใช้งานเคอร์เนลเฉพาะที่ใช้ และอาจรวมถึง ตัวเลือก การเมานต์ ที่ใช้ ตาม ความหมายของ BSD Unix...
รหัสกลุ่มจริง
GID จริง ( rgid ) ระบุเจ้าของกลุ่มที่แท้จริงของกระบวนการ