เหตุใดผู้ใช้ใหม่จึงสืบทอดไฟล์จากผู้ใช้ที่ถูกลบ


24

ดังนั้นฉันจึงต้องออกกำลังกายในหนังสือเพื่อทำการบ้าน ก่อนอื่นคุณต้องสร้างผู้ใช้ที่ชอบ:

useradd -c "Steven Baxter" -s "/bin/sh" sbaxter

จากนั้นคุณต้องเพิ่มไฟล์ลงใน/home/sbaxterไดเรกทอรี:

touch /home/sbaxter/ some.txt new.txt files.txt

แล้วคุณมีการลบผู้ใช้และสร้างผู้ใช้ใหม่ที่ชื่อว่าsbaxter mjaneในการประหลาดใจของฉันเมื่อฉันวิ่งfind /home/ -user mjaneผู้ใช้ใหม่mjaneตอนนี้เป็นเจ้าของไฟล์เก่าของ sbaxter ทั้งหมดเกิดอะไรขึ้น

คำตอบ:


41

ปีศาจอยู่ในรายละเอียดในuseraddหน้าคน (คุณจะเห็นว่าโดยการออกman 8 useradd):

   -u, --uid UID
       The numerical value of the user's ID. This value must be unique,
       unless the -o option is used. The value must be non-negative. The
       default is to use the smallest ID value greater than or equal to
       UID_MIN and greater than every other user.

ดังนั้นมันจะเริ่มต้นที่จะใช้ uid ที่เล็กที่สุดที่ไม่ได้ใช้ซึ่งมีขนาดใหญ่กว่าผู้ใช้รายอื่นในไฟล์รหัสผ่าน เมื่อเห็นว่าการลบ sbaxter ลบเขาออกจากไฟล์ passwd, uid ของเขาคือ "ฟรี" และได้รับมอบหมายให้ mjane (เนื่องจาก uid useraddpicks เหมือนกันสำหรับผู้ใช้ทั้งสองในเวลาที่ใช้useraddคำสั่ง)

ไฟล์บนดิสก์เก็บเฉพาะ uid และไม่ใช่การแปลชื่อผู้ใช้ (เนื่องจากการแปลนี้ถูกกำหนดไว้ในไฟล์รหัสผ่าน) คุณสามารถยืนยันได้โดยการออกls -lnเพื่อดูว่าไฟล์การเป็นเจ้าของ uid มีอะไรบ้าง

ฉันอยากจะแนะนำให้คุณปิดการใช้งานมากกว่าที่จะลบบัญชี การล็อคบัญชีในการกระจายลีนุกซ์ส่วนใหญ่สามารถทำได้ด้วยusermod -L -e today <username>, ซึ่งจะล็อครหัสผ่านและตั้งค่าบัญชีให้หมดอายุวันนี้ (คุณสามารถดูวันหมดอายุของบัญชีด้วยchage -l)


2
... ดูเหมือนว่าข้อบกพร่องด้านความปลอดภัยที่น่ากลัว มีวิธีแก้ไขไหม
BlueRaja - Danny Pflughoeft

6
@ BlueRaja-DannyPflughoeft นี่ไม่ใช่ข้อบกพร่องด้านความปลอดภัย: ผู้ใช้ถูกระบุด้วย ID ผู้ใช้ไม่ใช่ชื่อผู้ใช้ เมื่อคุณลบบัญชีคุณต้องลบไฟล์ทั้งหมด (เช่นไฟล์ทั้งหมดที่เป็นเจ้าของโดย ID ผู้ใช้นี้ไม่ใช่เฉพาะโฮมไดเรกทอรีของผู้ใช้) นี่เป็นส่วนหนึ่งของขั้นตอนปกติในการลบบัญชี
Gilles 'หยุดความชั่วร้าย' ใน

2
@OlivierDulac นั่นเรียกว่าการสำรองข้อมูล อีกทางหนึ่งคือล็อค แต่อย่านำบัญชีออกตราบใดที่คุณต้องการเก็บข้อมูล ท้ายที่สุดถ้าคุณต้องการเก็บข้อมูลจากนั้นก็ยังจำเป็นต้องมีบัญชี
Gilles 'หยุดความชั่วร้าย' ใน

1
การล็อคบัญชีในการกระจายลีนุกซ์ส่วนใหญ่สามารถทำได้ด้วยusermod -L -e today <username>, ซึ่งจะล็อครหัสผ่านและตั้งค่าบัญชีให้หมดอายุวันนี้ (คุณสามารถดูวันหมดอายุของบัญชีด้วยchage -l)
Drav Sloan

5
มันเป็นข้อบกพร่องด้านความปลอดภัยตามมาตรฐานในปัจจุบัน ดังตัวอย่างที่แสดงซึ่งหมายความว่าคุณไม่สามารถเชื่อมโยงมนุษย์กับไฟล์ได้ แน่นอนว่ามนุษย์อาจมีการเชื่อมโยงอย่างมากกับบัญชี แต่การเชื่อมโยงไฟล์ <-> บัญชี <-> บัญชีมนุษย์แบ่งออกเนื่องจากการรีไซเคิล UID จากนั้นอีกครั้ง, Unix ไม่เคยมีการรักษาความปลอดภัยที่ดีในแง่นี้ ( rootสามารถปลอมเกือบทุกอย่าง) คุณต้องการหลักฐานการตรวจสอบสำหรับสิ่งนั้น
MSalters

13

UID ของผู้ใช้ที่ถูกลบถูกใช้ซ้ำโดยผู้ใช้ใหม่และระบบไฟล์ใช้ UID เพื่อการเป็นเจ้าของไม่ใช่ชื่อผู้ใช้

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