GID หมายถึงอะไร?


14

GID หมายถึงอะไรจริง ๆ ?

ฉันได้ Googled มันและนี่คือสิ่งที่linux.about.comพูดว่า:

หมายเลขประจำตัวกลุ่มสำหรับกระบวนการ หมายเลขกลุ่มที่ถูกต้องจะได้รับใน/etc/groupและในฟิลด์ GID ของ/etc/passwdไฟล์ เมื่อกระบวนการเริ่มต้น GID นั้นจะถูกตั้งค่าเป็น GID ของกระบวนการหลัก

  • แต่นั่นหมายความว่าอย่างไร

สิทธิ์ที่ฉันมีสำหรับโฟลเดอร์ของฉันอยู่ที่ 0755

ฉันเข้าใจว่าฉันตั้งค่า UID ให้กับเจ้าของหรือไม่ 4755

และถ้าฉันตั้ง GID ของกลุ่มมันจะเป็น 2755

ถ้าฉันตั้งค่า Sticky Bit สำหรับผู้อื่นมันจะเป็นเช่นนั้น 1755

  • การตั้งค่าการอนุญาตเหล่านั้นสำคัญหรือไม่

คำตอบ:


27

กระบวนการในทุก UNIX เหมือนระบบเช่นเดียวกับทุกไฟล์มีเจ้าของ (ผู้ใช้ไม่ว่าจะจริงหรือระบบ "หลอกใช้" เช่นdaemon, bin, manฯลฯ ) และเจ้าของกลุ่ม เจ้าของกลุ่มสำหรับไฟล์ของผู้ใช้โดยทั่วไปจะเป็นกลุ่มหลักของผู้ใช้และในทำนองเดียวกันกระบวนการใด ๆ ที่คุณเริ่มจะเป็นเจ้าของโดย ID ผู้ใช้ของคุณและ ID กลุ่มหลักของคุณ

แม้ว่าบางครั้งมีความจำเป็นต้องมีสิทธิ์ในระดับสูงในการรันคำสั่งบางอย่าง แต่ไม่ต้องการให้สิทธิ์การดูแลเต็มรูปแบบ ตัวอย่างเช่นpasswdคำสั่งต้องการเข้าถึงไฟล์รหัสผ่านเงาของระบบเพื่อให้สามารถอัปเดตรหัสผ่านของคุณ เห็นได้ชัดว่าคุณไม่ต้องการให้สิทธิ์ผู้ใช้ทุกคนเพื่อให้พวกเขาสามารถรีเซ็ตรหัสผ่าน - ซึ่งจะนำไปสู่ความสับสนวุ่นวาย! แต่จะต้องมีวิธีอื่นในการให้สิทธิ์ระดับสูงแก่ผู้ใช้ในการทำงานบางอย่างชั่วคราว นั่นคือสิ่งที่บิต SETUID และ SETGID สำหรับ เป็นวิธีที่จะบอกเคอร์เนลให้เพิ่มสิทธิ์ของผู้ใช้เป็นการชั่วคราวในช่วงระยะเวลาของการเรียกใช้คำสั่งที่ทำเครื่องหมายไว้ SETUID ไบนารีจะถูกดำเนินการด้วยสิทธิ์ของเจ้าของไฟล์ที่ปฏิบัติการได้ (ปกติแล้วroot) และไบนารี SETGID จะถูกดำเนินการด้วยสิทธิ์กลุ่มของเจ้าของกลุ่มของไฟล์ปฏิบัติการ ในกรณีของpasswdคำสั่งซึ่งเป็นของrootและเป็น SETUID จะช่วยให้ผู้ใช้ปกติจะส่งผลกระทบโดยตรงต่อเนื้อหาของไฟล์รหัสผ่านในลักษณะที่ควบคุมและคาดการณ์ได้โดยการดำเนินการด้วยสิทธิ์ของรูต มีอื่น ๆ อีกมากมายมีSETUIDคำสั่งบน UNIX เหมือนระบบ ( chsh, screen, ping, suฯลฯ ) ซึ่งทั้งหมดนี้ต้องยกระดับสิทธิ์ในการดำเนินงานได้อย่างถูกต้อง นอกจากนี้ยังมีSETGIDโปรแกรมบางโปรแกรมที่เคอร์เนลเปลี่ยน GID ของกระบวนการเป็นการชั่วคราวเพื่อให้สามารถเข้าถึง logfiles และอื่น ๆsendmailได้เช่นยูทิลิตี้

sticky bitมีจุดมุ่งหมายแตกต่างกันเล็กน้อย การใช้งานบ่อยที่สุดคือการตรวจสอบให้แน่ใจว่ามีเพียงบัญชีผู้ใช้ที่สร้างไฟล์เท่านั้นที่สามารถลบได้ คิดเกี่ยวกับ/tmpไดเรกทอรี มันมีสิทธิ์แบบเสรีมากซึ่งอนุญาตให้ทุกคนสร้างไฟล์ได้ นี้เป็นสิ่งที่ดีและช่วยให้กระบวนการของผู้ใช้ในการสร้างไฟล์ชั่วคราว ( screen, sshฯลฯ เก็บข้อมูลของรัฐใน/tmp) เพื่อปกป้องไฟล์ temp ของผู้ใช้/tmpมีการตั้งค่าบิตเหนียวดังนั้นมีเพียงฉันเท่านั้นที่สามารถลบไฟล์ของฉันและคุณเท่านั้นที่สามารถลบไฟล์ของคุณได้ แน่นอนว่ารูทสามารถทำอะไรก็ได้ แต่เราต้องหวังว่าระบบดูแลระบบจะไม่ถูกวิพากษ์วิจารณ์!

สำหรับไฟล์ปกติ (นั่นคือสำหรับไฟล์ที่ไม่สามารถเรียกใช้งานได้) มีจุดเล็กน้อยในการตั้งค่าบิต SETUID / SETGID SETGID ในไดเรกทอรีในบางระบบควบคุมเจ้าของกลุ่มเริ่มต้นสำหรับไฟล์ใหม่ที่สร้างในไดเรกทอรีนั้น


2
อ่ายอดเยี่ยมขอบคุณสำหรับสิ่งนั้น ดังนั้น Sticky Bit จึงเป็นเหมือนสิทธิ์ส่วนบุคคล (ผู้ใช้)? คำตอบนั้นเป็นคำพูดที่เข้าใจง่าย
Kevdog777

1
ขอขอบคุณ! sticky bit ให้การปกป้องเล็กน้อยสำหรับไฟล์ในไดเรกทอรีที่มีสิทธิ์แบบเสรี มันไม่เฉพาะเจาะจงสำหรับผู้ใช้ที่ได้รับเนื่องจากมีการป้องกันในระดับเดียวกันกับไฟล์ทั้งหมดไม่ว่าใครจะเป็นเจ้าของ เป็นวิธีที่อนุญาตให้ทุกคนสร้างไฟล์และเพื่อให้มั่นใจว่าเจ้าของเท่านั้นที่สามารถทำลายไฟล์ได้
D_Bye

+1, D_bye โปรดแบ่งปันตัวอย่างสำหรับ setgid bit set ในไดเรกทอรี ขอบคุณ
Ankit

1
@Ankit ภายใต้ Solaris (และอีกเกือบแน่นอนอื่น ๆ - ฉันใช้ * BSD และ Solaris เท่านั้น) หาก setgid บิตตั้งอยู่ในไดเรกทอรีไฟล์ใหม่ใด ๆ ที่สร้างขึ้นภายใต้ไดเรกทอรีนั้นจะมีเจ้าของกลุ่มเดียวกันกับไดเรกทอรีตัวเองและ จะไม่สืบทอดกลุ่มหลักของ (ผู้ใช้ที่ทำงาน) กระบวนการสร้าง
D_Bye

3

ฉันคิดว่าคุณหมายถึงบิต "SGID" ของไฟล์ซึ่งไม่เหมือนกับ GID

นี่เป็นไฟล์ทั่วไปในคอมพิวเตอร์ของฉัน (เอาต์พุตของ ls -l):

-rw-r----- 1 bristol    users 16 2012-07-23 11:36 file.txt
abbbcccddd <-- See explanation below.

หากคุณดูสัญลักษณ์ 10 อันดับแรก

(a) -: นี่เป็นเพียงไฟล์เก่าธรรมดา (ตรงข้ามกับไดเรกทอรี, symlink, ไปป์ ฯลฯ ... )

(b) rw-: เจ้าของสามารถอ่านและเขียนไฟล์นี้ แต่ไม่สามารถดำเนินการได้ เจ้าของคือ "บริสตอล" อย่างที่คุณเห็นในภายหลัง

(c) r--: สมาชิกของกลุ่มไฟล์นี้เป็นของ ("ผู้ใช้" ในตัวอย่าง) นอกเหนือจากที่เจ้าของสามารถอ่านได้ แต่ไม่สามารถเขียนหรือเรียกใช้ไฟล์นี้

(d) ---: ใครก็ตามไม่สามารถเข้าถึงไฟล์นี้ได้เลย (ยกเว้นรูทแน่นอน)

ฟิลด์ GID เป็นฟิลด์ที่บอกคุณว่ากลุ่มไฟล์นี้เป็นของใคร - ในกรณีนี้คือ "users"

ฟิลด์ที่คุณอาจหมายถึงตามคำอธิบายของคุณคือบิต SGID และนี่เป็นคำอธิบายที่ดีกว่าที่ฉันคิดได้:

http://www.codecoffee.com/tipsforlinux/articles/028.html

เวอร์ชันย่อคือ: หากไฟล์ที่ปฏิบัติการได้มีการตั้งค่าบิต SGID ดังนั้นทุกคนที่ไม่ได้อยู่ในกลุ่ม แต่สามารถเรียกใช้ไฟล์นี้ได้รับสิทธิ์ของกลุ่มนี้ชั่วคราวในขณะที่โปรแกรมกำลังดำเนินการอยู่

ตัวอย่างเช่นหากคุณมีกลุ่ม "สปูล" ที่สามารถอ่านและเขียนไฟล์ในไดเรกทอรีตัวจัดคิวการพิมพ์คุณไม่ต้องการให้ใครมายุ่งกับไดเรกทอรีนี้ แต่คุณต้องการให้พวกเขาสามารถพิมพ์ไฟล์ได้ โปรแกรมการพิมพ์หรือสคริปต์บางตัวมีกลุ่ม "สปูล" และตั้งค่าบิต SGID และเมื่อใครก็ตามเปิดตัวโปรแกรมนี้ตอนนี้โปรแกรมสามารถเขียนไปยังไดเรกทอรีสปูลเลอร์ได้โดยไม่ต้องให้ผู้ที่เข้าใช้เต็ม


นั่นเป็นสิ่งที่ดีขอบคุณสำหรับสิ่งนั้น ฉันไม่เข้าใจส่วนสิทธิ์ (ส่วน abbbcccddd) - แต่ thatnk คุณ :)
Kevdog777

ฉันได้เห็นเพียงสิทธิ์ของฉันในโฟลเดอร์ tmp drwxrwxrwt .... 2 sys .... sys .... 1024 Jul 24 15:17 tmpคือ อะไรabbbcccddt(ตัวอักษร T ') หมายถึงอะไร? - ฉันเข้าใจว่า "d = directory", "rwx = อ่าน, เขียน, ดำเนินการ"; แต่ฉันไม่เคยเห็น 't' มาก่อน การอนุญาตพิเศษสำหรับโฟลเดอร์ tmp หรือไม่
Kevdog777

t เล็กคือ "executable (x) และชุดบิต" ดูคำอธิบายด้านบนว่าเหตุใดจึงเป็นเช่นนี้ใน / tmp
บริสตอล

3

GID คือหมายเลข ID ของกลุ่มตามที่คุณพบ มันเป็นวิธีที่ง่ายดายที่ระบบปฏิบัติการจะแสดงกลุ่ม (ผู้ใช้) ที่เกี่ยวข้องกับบางสิ่ง (กระบวนการ, ไฟล์, ฯลฯ ); แทนที่จะเป็นตัวระบุสตริงที่อาจมีความยาวมันสามารถแสดงเป็นหมายเลขขนาดคงที่ได้

ในค่าการอนุญาตของไฟล์เป็นเลขฐานแปดสี่หลัก (ตัวอย่างเช่น 0755) ตัวเลขตัวที่สามระบุสิทธิ์ของกลุ่มในไฟล์ หากคุณเว้นตัวเลขตัวแรกมันก็เป็นตัวเลขตัวที่สองที่ระบุสิทธิ์ของกลุ่ม โปรดทราบว่าไฟล์และไดเรกทอรีจะได้รับการปฏิบัติเหมือนกันในเรื่องนี้ แต่ความหมายที่แท้จริงของบิตสิทธิ์แต่ละบิตนั้นค่อนข้างไม่ง่ายในกรณีของไดเรกทอรี

แนวคิดทั้งสองเกี่ยวข้องกัน แต่มีจุดประสงค์ที่แตกต่างกันมาก

สำหรับคำถามของคุณ "สำคัญหรือไม่ที่จะต้องกำหนดสิทธิ์เหล่านั้น"; พวกเขามักจะถูกตั้งค่าเป็นบางสิ่งบางอย่างแต่เนื่องจากในกรณีส่วนใหญ่หลักเริ่มต้นคือ 0 ("ไม่มีอะไรพิเศษ") มันจึงมีแนวโน้มที่จะถูกละเว้นเพราะความกะทัดรัด ไม่ว่าคุณจะต้องระบุค่าอื่นขึ้นอยู่กับรูปแบบการใช้งานสำหรับไฟล์หรือไดเรกทอรีที่เป็นปัญหา

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