เหตุผลที่อยู่เบื้องหลังกลุ่มเริ่มต้นและผู้ใช้บน Linux


14

เมื่อดูที่การจัดการผู้ใช้และกลุ่มเริ่มต้นในการแจกแจง Linux ตามปกติ (ตามลำดับ ArchLinux และ Debian) ฉันสงสัยว่ามีสองสิ่งเกี่ยวกับมันและเกี่ยวกับผลที่ตามมาของการแก้ไขการตั้งค่าเริ่มต้นและการตั้งค่า

ค่าเริ่มต้นสำหรับUSERGROUPS_ENABใน/etc/login.defsดูเหมือนจะเป็น "ใช่" ซึ่งสะท้อนโดย"โดยค่าเริ่มต้นกลุ่มจะถูกสร้างขึ้นสำหรับผู้ใช้ใหม่"ที่สามารถพบได้ในuseraddผู้ชายดังนั้นทุกครั้งที่ผู้ใช้ใหม่ถูกสร้างขึ้น กลุ่มถูกสร้างขึ้นด้วยชื่อเดียวกันและมีผู้ใช้ใหม่นี้เท่านั้นมีการใช้งานกับสิ่งนั้นหรือเป็นเพียงตัวยึดตำแหน่งหรือไม่?

ฉันรู้สึกว่าเรากำลังสูญเสียส่วนหนึ่งของการจัดการสิทธิ์ในฐานะผู้ใช้ / กลุ่ม / อื่น ๆด้วยการทำเช่นนี้ มันจะไม่ดีที่จะมีกลุ่ม "ผู้ใช้" หรือ "ปกติ" หรือสิ่งที่คุณต้องการเรียกว่าเป็นกลุ่มเริ่มต้นสำหรับผู้ใช้ทุกคนแทนที่จะมีของตัวเอง?

ส่วนที่สองของคำถามของฉันซึ่งยังคงยึดตามสิ่งที่ฉันเห็นใน Arch และ Debian: มีผู้ใช้จำนวนมากที่สร้างขึ้นตามค่าเริ่มต้น (FTP, HTTP, ฯลฯ ) มีการใช้งานกับพวกเขาหรือพวกเขามีอยู่เพียงเพื่อเหตุผลทางประวัติศาสตร์?

ฉันกำลังคิดที่จะลบพวกเขา แต่ไม่ต้องการทำลายสิ่งที่สามารถใช้งานได้ แต่ฉันไม่เคยเห็นสิ่งใดที่ทำเช่นนั้นและไม่รู้ว่าจะทำอย่างไร กันไปสำหรับกลุ่มเริ่มต้น (tty, mem, ฯลฯ ) ที่ฉันไม่เคยเห็นผู้ใช้ใด ๆ ที่เป็นของ


หากคุณให้เวลาฉันฉันจะให้คำตอบที่ดี ฉันเป็นคนขี้โมโหช้า อาจใช้เวลา 30 นาทีขึ้นไป
eyoung100 100

จุดหลักของกลุ่มทั้งหมดเหล่านี้มีไว้สำหรับโปรแกรม set-group-id
Barmar

2
คำถามแรกที่อยู่ใกล้กับคนนี้
Leiaz

@ ECarterYoung: แน่นอนว่าคุณต้องใช้เวลาขอบคุณสำหรับสิ่งนี้!
Horgix

@Leiaz: ฉันรู้ว่า แต่ยังคงต้องการที่จะถาม "มันจะไม่ดีที่จะมีกลุ่ม" ผู้ใช้ "หรือ" ปกติ "หรือสิ่งที่คุณต้องการเรียกว่าเป็นกลุ่มเริ่มต้นสำหรับผู้ใช้ทุกคนแทนที่จะมีของตัวเอง?" ส่วนหนึ่งและเก็บสิ่งที่เป็นมาก่อนในการแนะนำ ฉันโพสต์ครั้งแรกในStackOverflowแต่ถูกกำกับที่นี่
Horgix

คำตอบ:


13

กลุ่มต่อผู้ใช้

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

เมื่อUSERGROUPS_ENABใน/etc/login.defsถูกตั้งค่าเป็น "ไม่" useraddเพิ่มผู้ใช้ทั้งหมดที่สร้างไปยังกลุ่มที่กำหนด/etc/default/useraddโดยGROUPฟิลด์ ในการแจกแจงส่วนใหญ่จะถูกตั้งค่าเป็น GID 100ซึ่งมักจะสอดคล้องกับusersกลุ่ม สิ่งนี้จะช่วยให้คุณมีการจัดการผู้ใช้ที่ทั่วไปมากขึ้น จากนั้นหากคุณต้องการการควบคุมที่ดียิ่งขึ้นคุณสามารถเพิ่มกลุ่มเหล่านี้ด้วยตนเองและเพิ่มผู้ใช้ในกลุ่มที่เหมาะสม

กลุ่มเริ่มต้นที่สร้างขึ้น

ส่วนใหญ่มาจากเหตุผลทางประวัติศาสตร์ แต่หลายคนยังมีการใช้งานที่ถูกต้องในวันนี้:

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

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


ตามที่ลินุกซ์มาตรฐานฐานข้อกำหนดหลักแต่เพียงผู้ใช้ 3 คนที่มีรากถังและภูตมีผลบังคับใช้อย่างแน่นอน เหตุผลที่อยู่เบื้องหลังกลุ่มอื่น ๆ คือ:

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

ดังนั้นดูเหมือนว่าจะเป็นการดีกว่าที่จะให้กลุ่มเหล่านี้เข้าที่ มีความเป็นไปได้ในทางทฤษฎีในการลบออกโดยไม่ทำลายแม้ว่าบางสิ่ง "ลึกลับ" อาจเริ่มทำงานไม่ถูกต้อง (เช่นหน้าบางหน้าไม่แสดงผลหากคุณฆ่ากลุ่มนั้น ฯลฯ ) มันไม่ได้ทำอันตรายอะไรเลยที่จะปล่อยพวกมันไว้ที่นั่นและโดยทั่วไปแล้วมันจะสันนิษฐานว่าระบบ Linux ทั้งหมดจะมี


ฉันจะหาข้อมูลเพิ่มเติมเกี่ยวกับการสร้างไฟล์ชั่วคราวของมนุษย์ได้ที่ไหน ด้วยหน้า man ที่เปิดอยู่ps aux | grep manจะไม่แสดงขั้นตอนใด ๆ ให้ฉันทำงานภายใต้กลุ่มคนและ a find -group man /จะไม่แสดงอะไรเลยทั้งนั้น พยายามกับผู้ชาย 2.6.7.1 ในการติดตั้ง Archlinux มาตรฐาน
Horgix

4

คำถามที่ 1: การใช้เหตุผลสำหรับผู้ใช้และกลุ่มเดียวกัน

สวัสดีฉัน ecyoung และคุณเป็น horgix พวกเราไปทำงานทุกวันและล็อกอินไปที่ Linux Server เดียวกับโปรแกรมเมอร์ วันหนึ่งเมื่อไม่นานมานี้ผู้ดูแลระบบของเราตัดสินใจที่จะสร้างและบำรุงรักษาผู้ใช้เองได้ง่ายขึ้นดังนั้นเขาจึงปิดUSERGROUPS_ENABตัวเลือกและทำให้ผู้ใช้ที่มีอยู่ทั้งหมดอยู่ในusersกลุ่มใหม่


สิ่งนี้ทำให้การสร้างผู้ใช้ง่ายขึ้น แต่ไม่ได้บำรุงรักษาที่คุณเห็นเนื่องจากผู้ใช้ทั้งหมดสามารถเข้าถึงไฟล์ผู้ใช้อื่นทั้งหมด ในการตั้งองค์กรนี้เป็นใหญ่ไม่มีเนื่องจากสิ่งที่ต้องการSarbanes Oxleyและการแบ่งแยกหน้าที่ หากฉันสร้างไฟล์ A กลุ่มบิตจะถูกตั้งค่าเป็นกลุ่มผู้ใช้ซึ่งหมายความว่าผู้ใช้ทุกคนสามารถอ่านไฟล์ A อย่างน้อยถ้าผู้ดูแลระบบ sys ขี้เกียจแล้วในบางกรณีผู้ใช้ทุกคนสามารถไฟล์ RW ได้ A นี้เอาชนะ Sarbanes Oxley และ SoD เนื่องจากแผนกต่างๆไม่ควรอ่านเอกสารของบุคคลอื่นได้น้อยลง


เมื่อเปิดใช้งานผู้ใช้ / กลุ่มถ้าฉันสร้างเอกสารเป็น ecyoung มีเพียงฉันเท่านั้นที่มีสิทธิ์ rwx เนื่องจากไม่มีใครอยู่ในกลุ่มของฉันเมื่อพวกเขาเปิดเอกสารของฉันพวกเขาเห็นหน้าว่างพร้อมคำเตือน สิ่งนี้บังคับใช้ Sarbanes-Oxley และ SoD หากฉันเชิญผู้ใช้รายอื่นผู้ใช้เหล่านั้นจะได้รับอนุญาตให้เข้าถึง rw และด้วยการทำเช่นนั้นฉันรู้ว่าสิ่งที่พวกเขาเห็นจะไม่กลับมากัดฉันหรือพวกเขา อย่างที่คนอื่นพูดกันว่าถ้าอยู่บ้านการแยกนั้นอาจไม่สำคัญสำหรับคุณ หากคุณพบว่าคุณสามารถปิดตัวเลือกได้อย่างปลอดภัยและผู้ใช้ทั้งหมดจะถูกเพิ่มในusersกลุ่มที่มี GID 100 ดูคำถามที่ 2 ด้านล่าง

สมมุติ :
คุณทำงานด้านไอทีและหลุยส์ทำงานในบัญชีเงินเดือน Louis เก็บภาษีและแผ่นงานเงินเดือนในโฮมไดเร็กตอรี่ของเธอ, แต่คุณทั้งคู่อยู่ในกลุ่มผู้ใช้, ดังนั้นคุณเปิดโฮมไดเร็กตอรี่ของมันเพราะทำเครื่องหมาย + r สำหรับผู้ใช้และค้นหาสเปรดชีตของเธอ คุณพบจำนวนเงินเดือนของคุณพร้อมกับ Joe's และ Fred's คุณคิดว่า Joe และ Fred อยากให้คุณรู้เงินเดือนของพวกเขาหรือไม่?


คำถามที่ 2: รหัสกลุ่ม 0 ถึง 500

ID กลุ่มและรหัสผู้ใช้ตรงกันข้าม 0 - 500 ถูกสงวนไว้สำหรับบัญชีระบบและการเข้าถึงอุปกรณ์ ดูตารางกลุ่มระบบที่กำหนดค่าล่วงหน้าสำหรับรายการบัญชีมาตรฐาน โปรดอย่าลบบัญชีเหล่านี้ด้วยตนเอง ตัวอย่างเช่นหากคุณต้องการลบผู้ใช้ ftp ให้ลบ ftp daemon ด้วยระบบการจัดการแพ็กเกจของคุณ การทำเช่นนั้นจะเป็นการลบบัญชีระบบ บริการของระบบรวมถึง แต่ไม่ จำกัด เฉพาะ:

  • บริการพิมพ์ CUPS
  • ภูตเซิร์ฟเวอร์ MySQL
  • เซิร์ฟเวอร์ FTP Daemon
  • เซิร์ฟเวอร์ Apace
  • X Server Socket สำหรับการเชื่อมต่อระยะไกล
  • ALSA Sound System Daemon
  • บริการ DBUS

มีผู้อื่นดังนั้นหากผู้อ่านคนอื่นต้องการเพิ่มหรือลบออกจากรายการบริการด้านบนโปรดทำเช่นนั้น


5
สมมุติดี แต่ล้มเหลว 1. สิทธิ์เริ่มต้นมักจะถูกปิดบัง 022 ซึ่งหมายความว่าคนอื่น ๆ สามารถอ่านเพื่อเข้าถึงได้ 2. ระบบไม่เพียง แต่ขี้เกียจ แต่ไร้ความสามารถเพราะเขาควรสร้างกลุ่มตามแผนกและมอบหมายกลุ่มที่ถูกต้องระหว่างการสร้างบัญชีแทนที่จะมอบหมายให้ทุกกลุ่ม USERGROUPS_ENABจะยังคงปิดอยู่แล้ว ปิดการใช้งานUSERGROUPS_ENAB! = ให้ผู้ใช้ทั้งหมดอยู่ในกลุ่มเดียวกัน
muru

@ ECarterYound สำหรับส่วนแรก: ฉันเห็นสิ่งที่คุณหมายถึงเกี่ยวกับการป้องกันการเข้าถึงและแก้ไขฉันถ้าฉันผิด แต่การมีผู้ใช้ทั้งหมดในusersกลุ่มไม่ควรมีปัญหากับการจัดการสิทธิ์ที่เหมาะสมในกลุ่มที่ไม่ได้ให้เหมือนกันอย่างเคร่งครัด สิทธิในกลุ่มมากกว่าเจ้าของ ดังนั้นจุดที่ดีเพียงอย่างเดียวของการUSERGROUPS_ENABเปิดใช้งานคือการบำรุงรักษาง่ายขึ้นเนื่องจากช่วยให้คุณสามารถรักษาสิทธิ์เริ่มต้นเมื่อสร้างไฟล์และไดเรกทอรีในขณะที่ยังมีการ จำกัด การเข้าถึงสำหรับผู้ใช้รายอื่น
Horgix

นั่นจะถูกต้อง แต่ผู้คนจำนวนมากไม่จัดการ Groups อย่างถูกต้องหากพวกเขาเป็นผู้ใช้ตามบ้าน ฉันไม่สามารถตรวจสอบสิ่งนี้ได้อย่างแน่นอน แต่ฉันเชื่อว่าผู้ดูแลสร้างตัวเลือกเพื่อจัดการการอนุญาต
eyoung100

3

หากเราทุกคนแบ่งปันกลุ่มเริ่มต้นเช่นในสมัยก่อนเราต้องตั้ง umask เป็น 077 เพื่อบล็อกกลุ่ม หากค่าเริ่มต้นคือฉันฉันสามารถตั้งค่า umask เป็น 027 ตอนนี้ถ้าฉันตั้งค่าไดเรกทอรีของไฟล์เป็นกลุ่มที่ใช้ร่วมกันกลุ่มนี้สามารถอ่านได้ ฉันไม่ต้องยุ่งเกี่ยวกับโหมดเช่นกัน

นี่เป็นเพียงตัวอย่างเดียว แต่โดยทั่วไปมันเป็นวิธีการปิดการใช้งานกลุ่มจนกว่าคุณจะต้องการพวกเขาในวิธีที่ทำให้พวกเขาง่ายต่อการเปิดและจัดการ


1

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

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

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

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

กลุ่มต่อผู้ใช้เป็นทางออก! คุณใช้ umask 7 ดังนั้นไฟล์ทั้งหมดที่คุณทำจะได้รับ "rw สำหรับคุณและ rw สำหรับกลุ่ม" ไฟล์ในโฮมไดเร็กตอรี่ของคุณจะถูกสร้างขึ้นด้วยกลุ่มส่วนบุคคลของคุณเป็น "กลุ่มที่เป็นเจ้าของ", ดังนั้นไม่มีใครสามารถเข้าถึงไฟล์เหล่านั้นได้แม้จะมีการอนุญาต "group rw" เพราะไม่มีใครนอกจากคุณอยู่ในกลุ่มนั้น

คุณยังสามารถทำงานร่วมกันในโฟลเดอร์ที่แชร์ได้ ไฟล์ในโฟลเดอร์แชร์ได้รับ "rw" สำหรับกลุ่มที่เป็นเจ้าของและ sysadmin ตั้งค่าโฟลเดอร์ที่แชร์เพื่อให้กลุ่มที่ใช้ร่วมกัน (เรียกว่าผู้ทำงานร่วมกัน) จะเป็นเจ้าของกลุ่มสำหรับไฟล์ที่นั่น สิ่งนี้ทำได้โดยการสร้างกลุ่มผู้ทำงานร่วมกันกับผู้ใช้ที่ทำงานร่วมกันทั้งหมดในฐานะสมาชิก จากนั้นผู้ดูแลระบบจะกำหนดความเป็นเจ้าของกลุ่มของโฟลเดอร์แชร์เป็น "ผู้ทำงานร่วมกัน" และตั้งค่าการอนุญาต SETGID สำหรับโฟลเดอร์ที่แชร์ เมื่อเปิด SETGID สิ่งใดก็ตามที่สร้างขึ้นในโฟลเดอร์แชร์จะได้รับเจ้าของกลุ่มเดียวกันกับโฟลเดอร์ที่แชร์นั่นคือกลุ่ม "ผู้ทำงานร่วมกัน" และด้วย umask 7 (หรืออีกทางเลือก 2) ผู้คนในกลุ่มนี้ทุกคนจะมีสิทธิ์อ่าน + เขียนเพื่อให้สามารถทำงานร่วมกันได้


0

ในขั้นต้นกระบวนการ Unix อาจอยู่ในกลุ่มเดียวในแต่ละครั้ง (เคยมีchgrp(1)คำสั่งขอรหัสผ่านกลุ่มที่เก็บไว้ในช่องรหัสผ่านร่องรอยใน/etc/groups) มีการใช้ระบบ Plus โดยกลุ่มผู้ใช้ที่แน่นแฟ้น มันสมเหตุสมผลที่จะมีทุกคนในusersกลุ่มและแบ่งปันสิ่งต่าง ๆ ทั้งระบบโดยการอนุญาตจากกลุ่ม ไม่มีการรักษาความปลอดภัยที่แท้จริงความน่าสงสัยเล็กน้อยของผู้ใช้ที่เป็นโหลหรือมากกว่านั้น ทุกอย่างเป็นแบบท้องถิ่นในเครื่องเดียวกัน ไม่มีเครือข่ายที่จะแบ่งปันเนื้อหาเช่นผ่านบล็อกหรืออื่น ๆ

ระบบ Unix ในปัจจุบันมีผู้ใช้หลายร้อยรายข้อกำหนดด้านความปลอดภัยที่เข้มงวดยิ่งขึ้นและผู้ใช้ (และกระบวนการ) สามารถอยู่ในหลายกลุ่มได้ มอบกลุ่มโฮมให้กับผู้ใช้ (กลุ่มที่ไม่มีส่วนร่วมมากขึ้น) และอนุญาตให้มีการพลัดหลงจากกลุ่มเพื่อแบ่งปัน หรือใช้ ACL

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