ทำไมต้องรูทล้อและผู้ปฏิบัติงาน รูตอยู่ในกลุ่มสร้างความแตกต่างได้หรือไม่?


18

ฉันเพิ่งสังเกตเห็นบนเครื่อง FreeBSD ของฉันว่ารากอยู่ในวงล้อและผู้ควบคุมเครื่อง ฉันพยายามนึกถึงสถานการณ์ที่โพสต์โพสต์ในกลุ่มจะมีผลกระทบกับ ... เอ่อ ... อะไรก็ได้และฉันกำลังจะว่าง สำหรับเรื่องนั้นรูทจำเป็นต้องมีกลุ่มล็อกอินหลักใน / etc / passwd หรือไม่? หรือเข้าสู่ระบบ (3) ทำให้หายใจไม่ออกถ้าผู้ใช้มีช่องว่างกลุ่มหลัก?

(เพื่อชี้แจง: ฉันเข้าใจถึงจุดประสงค์ของการดำรงอยู่ของกลุ่ม "root" เนื่องจากไฟล์ต้องการเจ้าของกลุ่มฉันไม่เข้าใจว่ามันเป็นเรื่องสำคัญที่ผู้ใช้รูท / toor / อะไรก็ตามที่มีความเป็นสมาชิกกลุ่มนั้น)

นี่เป็นแค่การล่องเรือเมื่อหลายสิบปีก่อนหรือว่ามีเหตุผลอย่างแท้จริง?

คำตอบ:


5

ในระยะสั้น: ไม่ การมีรูทwheelและoperatorกลุ่มไม่ได้เปลี่ยนอะไรเลย

แต่คุณกำลังถามอีก 2 สิ่ง:

  • id กลุ่มรูทคือ (โดยค่าเริ่มต้น) ตั้งค่าเป็น 0 ซึ่งใกล้เคียงที่สุดกับค่าว่างที่คุณจะได้รับ

    $ head -4 /etc/passwd
    # $FreeBSD: releng/9.2/etc/master.passwd 243947 2012-12-06 11:52:31Z rwatson $
    #
    root:*:0:0:Charlie &:/root:/bin/csh
    toor:*:0:0:Bourne-again Superuser:/root:
    

    ตามที่กล่าวไว้ผู้ใช้ทุกคนจะต้องมีกลุ่มดังนั้นคุณจึงไม่สามารถตั้งค่าID กลุ่มราก (หรือผู้ใช้ gid ใด ๆ ) เป็นค่าโมฆะหรือค่าว่าง หากคุณพยายามตั้งค่าผู้ใช้ gid เป็นช่องว่างคุณจะได้รับคำเตือนโดยpwd_mkdb:

    pwd_mkdb: no gid for user root
    pwd_mkdb: at line #3
    pwd_mkdb: /etc/pw.Rlb2U3: Inappropriate file type or format
    re-edit the password file?
    

    ดังนั้นความจริงที่ว่ารูตนั้นถูกกำหนดไว้แล้วนั้นเกี่ยวกับการตั้งชื่อให้ถูกต้องแทนที่จะเป็นเลขใบ้ คุณสามารถเปลี่ยน root gid เป็นจำนวนที่ไม่มีความหมายใด ๆ (gid ไม่อยู่ภายใน/etc/group) ผู้ใช้รูทของคุณจะยังสามารถล็อกอินได้suหรืออะไรก็ตามที่รูทสามารถทำได้ คุณจะได้สิ่งที่ต้องการ:

    $ id
    uid=0(root) gid=10000 groups=10000,5(operator)
    
  • เกี่ยวกับสาเหตุที่ผู้ใช้บางคนอยู่ในล้อกลุ่มนั้นเป็นเรื่องที่แตกต่างกันโดยสิ้นเชิงเช่นFreeBSDเช่นOpenBSDหรือNetBSDผู้ใช้จะต้องเป็นส่วนหนึ่งของwheelเพื่อรากsu

    จากเอกสาร FreeBSD ( บทที่ 9.4 ):

    เพื่อsuเพื่อราก (หรือบัญชีอื่น ๆ ที่มีสิทธิ์ superuser) คุณจะต้องอยู่ในล้อกลุ่ม หากคุณลักษณะนี้ไม่ได้มีใครที่มีบัญชีในระบบหนึ่งที่ยังพบรากของรหัสผ่านที่จะสามารถที่จะได้รับการเข้าถึงระดับ superuser กับระบบ ด้วยคุณสมบัตินี้สิ่งนี้ไม่เป็นความจริงอย่างแน่นอน su (1) จะป้องกันไม่ให้พวกเขาจากการได้พยายามที่จะป้อนรหัสผ่านถ้าพวกเขาไม่ได้อยู่ในล้อ

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

  • อย่างไรก็ตามกลุ่มผู้ดำเนินการเป็นทางการล้วนๆไม่มีความหมายพิเศษใด ๆ ในตัวเอง

นี่คือความคิดเห็นของRichard Stallmanเกี่ยวกับกลุ่มล้อ (จากคู่มือ gnu su ):

ทำไม GNU "su" ไม่สนับสนุนกลุ่ม `wheel '========================================= ==========

(ส่วนนี้จัดทำโดย Richard Stallman)

บางครั้งผู้ใช้บางคนพยายามใช้พลังงานทั้งหมดที่เหลือทั้งหมด ตัวอย่างเช่นในปี 1984 ผู้ใช้งานจำนวนหนึ่งในห้องปฏิบัติการ MIT AI ได้ตัดสินใจที่จะยึดอำนาจโดยการเปลี่ยนรหัสผ่านของผู้ให้บริการในระบบ Twenex และเก็บเป็นความลับจากคนอื่น (ฉันสามารถขัดขวางการรัฐประหารครั้งนี้และคืนอำนาจให้กับผู้ใช้โดยการแก้ไขเคอร์เนล แต่ฉันไม่รู้ว่าจะทำอย่างไรใน Unix)

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

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


1

เข้าสู่ระบบ (3) และอื่น ๆ คาดว่ากลุ่มหลัก พวกเขาต้องการมันเพื่อให้พวกเขาสามารถตั้งค่าฟิลด์ที่ถูกต้องในไฟล์ utmp / wtmp และแม้ว่าพวกเขาจะไม่ได้ (รูปแบบไฟล์ที่เปลี่ยนแปลง) คุณจะพบปัญหาพื้นฐานมากขึ้นเมื่อเข้าสู่ระบบ (1) หรือ sshd (8) หรือโปรแกรมอื่น ๆ พยายามที่จะติดตั้งเซสชั่นผู้ใช้ - โดยไม่คำนึงถึง utmp / wtmp คุณสมบัติกระบวนการเคอร์เนล UID และ GID (เป็นไฟล์ที่สร้างโดยผู้ใช้ที่เข้าสู่ระบบจะต้องกรอก UID และ GID ตามที่คุณสังเกตเห็น)

สำหรับปัญหาที่ว่าทำไมรากที่ทรงพลังทั้งหมดต้องการมากกว่ากลุ่มหลักมันไม่ได้สำหรับการตรวจสอบสิทธิ์ (เพราะถูกข้ามไปเป็น UID 0) แต่มันใช้สำหรับการใช้งานอื่น

กลุ่ม "wheel" โดยเฉพาะใช้สำหรับการตรวจสอบความถูกต้องเพิ่มเติมหลายอย่างเช่นpam_wheel

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

ฉันไม่แน่ใจว่ามีโปรแกรมที่ใช้คุณสมบัตินี้ในระบบของคุณ (หรือถ้าเป็นค่าเริ่มต้น FreeBSD ปัจจุบัน)


0

มันสามารถสร้างความแตกต่าง - ทันทีที่โปรแกรมตรวจสอบความเป็นสมาชิกกลุ่มและทำงานแตกต่างกันไปขึ้นอยู่กับผลลัพธ์ แน่นอนไม่มีความแตกต่างกับสิทธิ์ที่ผู้ใช้รูทสามารถบังคับได้


0

ไม่ใช่ว่าถ้าไม่มีใครเป็นสมาชิกของวงล้อกลุ่มวงล้อจะถูกเพิกเฉยและผู้ใช้ทุกคนสามารถเรียกใช้ su ... และอาจเดารหัสผ่าน โดยการมี userid อย่างน้อยหนึ่งคนเป็นสมาชิกของวงล้อกลุ่ม (เช่นรูท userid) จากนั้นจะตรวจสอบการควบคุมล้อและมีเพียงสมาชิกวงล้อกลุ่มอื่นเท่านั้นที่สามารถพยายามเรียกใช้ su

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