อันตรายของการสร้างผู้ใช้ปกติด้วย UID <500 คืออะไร


14

อันตรายของการสร้างผู้ใช้ปกติด้วย UID <500 คืออะไร สมมติว่า UID นั้นไม่ใช่ของ UID ที่มีอยู่ซ้ำสิ่งที่ผิดพลาด?

นี่ไม่ใช่สิ่งที่ฉันต้องการทำ แต่สิ่งที่ฉันได้เห็นและต้องการทราบว่าทำไมไม่ควรทำ ในตัวอย่างนี้มันอยู่ใน RHEL5


2
ระบบที่ได้มาจากเดเบียนดูเหมือนว่าจะเริ่ม UID ปกติที่ 1,000 ไม่ใช่ 500
Keith Thompson

คำตอบ:


16

ฉันไม่เชื่อว่ามีความเสี่ยงโดยธรรมชาตินี่เป็นสิ่งที่ทำเพื่อสร้างการแยกระหว่างบัญชีระบบและบัญชีผู้ใช้ การฝึกฝนการใช้ตัวเลขต่ำกว่า 500 จากประสบการณ์ของฉันคือ Redhat-ism และไม่มีอะไรมากไปกว่านั้น

บน Solaris ฉันเห็นผู้ใช้ที่ได้รับหมายเลขเริ่มต้นที่ 100 เช่นกันเพียงปีต่อมาค้นพบว่าเมื่อรวมระบบแผนกขนาดเล็ก 2 ระบบเข้าด้วยกันทำให้เกิดฝันร้ายเพราะมีผู้ใช้หลายคนใน 2 แผนกที่มี UID เดียวกัน / GID ที่ได้รับมอบหมาย

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

ดังนั้นการใส่ความคิดลงไปในการเลือก UIDs ผู้ดูแลระบบสามารถหลีกเลี่ยงอาการปวดหัวตามท้องถนน

การใช้ 500 และสูงกว่าเป็นเพียงความพยายามของ Redhat (และ Unixes อื่น ๆ ) เพื่อให้บัฟเฟอร์ตัวเองเพียงพอที่บัญชีระบบใด ๆ ที่อาจจำเป็นต้องสร้างขึ้นจะไม่ได้รับการผสมกับ UID ที่กำหนดให้กับผู้ใช้

/etc/login.defs

อนึ่งตัวเลข 500 ถูกขับเคลื่อนโดยการตั้งค่านี้ในไฟล์ปรับแต่ง, /etc/login.defs.

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN           500
UID_MAX         60000

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN           500
GID_MAX         60000

คุณสามารถเปลี่ยนสิ่งนี้เป็นสิ่งที่คุณต้องการหากคุณต้องการแทนที่พฤติกรรมเริ่มต้นโดยuseradd/ adduserคำสั่ง

Useradd man page

หากคุณดูที่useraddหน้า man คุณจะสังเกตเห็นส่วนนี้ที่กล่าวถึงค่าเริ่มต้นของ GID แต่ความคิดเห็นนี้ก็สามารถใช้กับ UID ได้เช่นกัน:

สิ่งที่สกัดมา

-g, --gid GROUP
    The group name or number of the user´s initial login group. The group name 
    must exist. A group number must refer to an already existing group.

    If not specified, the behavior of useradd will depend on the USERGROUPS_ENAB 
    variable in /etc/login.defs. If this variable is set to yes 
    (or -U/--user-group is specified on the command line), a group will be 
    created for the user, with the same name as her loginname. If the variable 
    is set to no (or -N/--no-user-group is specified on the command line), 
    useradd will set the primary group of the new user to the value specified by 
    the GROUP variable in /etc/default/useradd, or 100 by default.

บัญชีระบบ

อีกสิ่งหนึ่งที่ควรสังเกตในuseraddหน้าคนคือบิตนี้ในการสร้างบัญชีระบบ

สิ่งที่สกัดมา

-r, --system
    Create a system account.

    System users will be created with no aging information in /etc/shadow, 
    and their numeric identifiers are choosen in the SYS_UID_MIN-SYS_UID_MAX 
    range, defined in /etc/login.defs, instead of UID_MIN-UID_MAX (and their 
    GID counterparts for the creation of groups).

    Note that useradd will not create a home directory for such an user, 
    regardless of the default setting in /etc/login.defs (CREATE_HOME). You 
    have to specify the -m options if you want a home directory for a system 
    account to be created.

มันเป็นวิธีการนี้ ( useradd -r ...) ที่มักใช้ในการเขียนสคริปต์ซึ่งรวมอยู่ในตัวจัดการแพ็คเกจต่างๆเช่น RPM เมื่อมีการติดตั้งแพคเกจ การเขียนสคริปต์ด้วยวิธีนี้จะช่วยให้ระบบเลือก UID / GID ที่พร้อมใช้งานถัดไปบนระบบที่กำหนดโดยอัตโนมัติโดยไม่มีความเสี่ยงในการเหยียบ UID / GID ที่กำหนดให้กับผู้ใช้ระบบแล้ว


1
FWIW ฉันคิดว่านี่เป็น GNU / Linux-ism ทั่วไปไม่ใช่แค่ Red Hat-ism ฉันเห็นสิ่งนี้ในทุกระบบที่ฉันใช้และฉันไม่เคยใช้ Red Hat
strugee

@strugee - ขอบคุณฉันไม่ต้องการที่จะทำให้งบกว้างเกินไปและกลับมากัดฉัน
slm

2

จากมุมมองของเคอร์เนลมีผู้ใช้พิเศษเพียงคนเดียวเท่านั้น: UID 0 การแบ่งช่วงของ UID ด้วยเหตุผลด้านการบริหารทำให้ชีวิตของคุณง่ายขึ้น ช่วงทั่วไปคือผู้ขายระบบท้องถิ่นทั่วโลก

ผู้ใช้ผู้ขายจะได้รับการติดตั้งระหว่างการติดตั้งระบบครั้งแรกและได้รับการจัดการโดยผู้จัดจำหน่ายแบบคงที่ ผู้ใช้ระบบถูกติดตั้งต่อเครื่องขึ้นอยู่กับแพคเกจที่ติดตั้ง ผู้ใช้ส่วนใหญ่เพิ่ม / ลบ utilites มีข้อ จำกัด ช่วงการจัดการเหล่านี้แยกต่างหาก ผู้ใช้ท้องถิ่นเป็นผู้ใช้ทั่วไปและได้รับมอบหมายต่อเครื่อง ผู้ใช้ทั่วโลกได้รับมอบหมายจากฐานข้อมูลกลาง แต่เป็นผู้ใช้ปกติ การใช้ช่วง UID จะป้องกันความขัดแย้งระหว่างกลุ่มต่าง ๆ เหล่านี้ ที่ cutoffs เหล่านี้สามารถแตกต่างกัน แต่มักจะกำหนดค่าได้


1

ไม่มีอันตรายโดยธรรมชาติในการทำเช่นนี้ หากคุณสร้างผู้ใช้ด้วย UID 499 พวกเขาจะไม่ได้รับสิทธิ์พิเศษเพิ่มเติม เหตุผลที่แนะนำไม่ให้เป็นเพราะ UID นั้นสงวนไว้สำหรับผู้ใช้ระบบ ปัญหาที่อาจพบในการสร้าง UID เช่นนี้คือเมื่อบริการของระบบบางอย่างคาดว่า UID จะพร้อมใช้งาน มันเป็นเหมือนการสร้างบริการใหม่ที่ทำงานบนพอร์ตที่รู้จักกันดี - ไม่มีปัญหา แต่อย่างใด แต่มันก็ไม่ใช่วิธีปฏิบัติที่ดีและอาจทำให้เกิดปัญหาต่อไปเมื่อคุณตั้งค่า sshd, ftpd ฯลฯ

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


1

ไม่มีอันตรายที่แท้จริง เคอร์เนลไม่สนใจเกี่ยวกับค่า ID ผู้ใช้ยกเว้น 0 เครื่องมือการดูแลระบบส่วนใหญ่ไม่สนใจเช่นกัน - ส่วนน้อยมากของระบบสร้างความแตกต่างระหว่างผู้ใช้ระบบและผู้ใช้งานมนุษย์

ผู้ใช้ระบบมักจะมีกลุ่มเฉพาะดังนั้นจึงไม่น่าจะสร้างบัญชีที่เป็นของกลุ่มมากกว่าที่ควร

การแจกแจงบางอย่างจะสำรองช่วง 1–499 (เรดแฮทและญาติ) หรือ 1–999 (เดเบียนและญาติ) สำหรับผู้ใช้ระบบรวมถึงผู้ใช้ที่จัดสรรเมื่อติดตั้งแพ็คเกจที่มีบริการระบบที่ต้องการผู้ใช้เฉพาะ การประชุมของ Debian คือช่วง 1-99 จะถูกจัดสรรแบบคงที่ (ดังนั้นการสร้างผู้ใช้ที่เป็นมนุษย์ในช่วงนั้นเป็นความคิดที่แย่มากเนื่องจากอาจขัดแย้งกับผู้ใช้ระบบ) ในขณะที่ช่วง 100–999 มีการจัดสรรแบบไดนามิก (ดังนั้นการสร้างผู้ใช้มนุษย์ ในช่วงนั้นไม่เป็นอันตรายเนื่องจากผู้ใช้ระบบใหม่จะเลือก ID ผู้ใช้ฟรี)

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

อันตรายหลักสำหรับเครื่องจักรที่แยกได้คือคุณมีแนวโน้มที่จะสร้างความสับสนให้กับผู้ดูแลระบบของคุณ สำหรับเครื่องในเครือข่ายที่ใช้ ID ผู้ใช้ร่วมกันคุณอาจพบข้อขัดแย้งกับเครื่องอื่น ๆ ที่ผู้ใช้เหล่านี้มี ID ผู้ใช้เดียวกันกับผู้ใช้ระบบ ในเครือข่ายที่มี ID ผู้ใช้ที่ใช้ร่วมกันจะเป็นการดีที่สุดที่จะยึดช่วง 1000–65533 หรือแม้แต่ 10,000–65533 สำหรับผู้ใช้ที่เป็นมนุษย์

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