ฉันมีระบบไฟล์ ext3 อยู่ในไฟล์ และฉันต้องการต่อเชื่อมเข้ากับไดเร็กทอรีในเครื่องโดยไม่ต้องใช้ sudo หรือการอนุญาตระดับสูงใดๆ ทำไม? ฉันกำลังสร้างระบบไฟล์ขนาดเล็กเพื่อการทดสอบอัตโนมัติ การทดสอบอัตโนมัติทำงานบนเครื่องที่ฉันไม่ได้ควบคุม ดังนั้นจึงมีอุปสรรคบางประการในการเพิ่มการเมานต์ให้กับ sudoers

นี่คือวิธีที่ฉันสร้างระบบไฟล์:

$ dd if=/dev/zero of=./50MB_partition count=102400
$ mkfs.ext3 -F 50MB_partition

ถ้าฉันได้รับอนุญาตตอนนี้ฉันสามารถเมานต์ได้ดังนี้:

$ mkdir small_partition
$ sudo mount 50MB_partition ./small_partition

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

answer

mount ต้องการ mount() [กำหนดไว้ใน sys/mount.h] ซึ่งต้องใช้ CAP_SYS_ADMIN ดังนั้นคุณจึงไม่สามารถใช้ mount() ได้หากไม่มีรายการ fstab หรือ sudo

อาจต้องการดูฟิวส์ (ระบบไฟล์ใน userspace) [ http://fuse.sourceforge.net/ ]

มีตัวเลือกในการดำเนินการนี้ownerซึ่งหมายถึงตัวเลือกอื่นๆ เพื่อป้องกันการละเมิดความปลอดภัย

owner

Allow an ordinary (i.e., non-root) user to mount the filesystem if he is the owner of the device. This option implies the options nosuid and nodev (unless overridden by subsequent options, as in the option line owner,dev,suid).

ปัญหาคือคุณต้องเป็นเจ้าของ "อุปกรณ์" ไม่มีอุปกรณ์ในกรณีนี้ อุปกรณ์ (/dev/loopx) ได้รับการตั้งค่าโดยอัตโนมัติโดยการเมานต์ ซึ่งต้องใช้สิทธิ์ของรูท และจากนั้นคุณจึงไม่ได้เป็นเจ้าของอุปกรณ์

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

นอกจากนี้ยังเป็นไปได้ว่าตอบสนองความต้องการนี้จะได้รับการกล่าวถึงใน/etc/fstabสำหรับownerตัวเลือกที่จะได้รับการยอมรับ ไม่แน่ใจเนื่องจากไม่มีเอกสารใน man page ที่ฉันมีและยังไม่ได้ลอง