ฉันตั้งเป้าหมายที่จะตั้งค่าการเข้าถึงแบบเขียนเต็มเพื่อแชร์ 9p สำหรับแขก KVM ทั้งโฮสต์และแขกมีผู้ใช้ / กลุ่มเดียวกันกับ ID เดียวกัน ทั้งโฮสต์และแขกควรจะสามารถเขียนไปยังการแบ่งปันโดยใช้ชื่อผู้ใช้เดียวกันและฉันไม่ต้องการแยกแยะว่าไฟล์นั้นเขียนโดยโฮสต์หรือแขก กระบวนการ kvm ทำงานเป็นรูท - ฉันตั้งค่าuser
และgroup
เป็นroot
/etc/libvirt/qemu.conf
ในคำจำกัดความผู้มาเยี่ยมชมบนโฮสต์การแชร์ถูกกำหนดดังนี้:
<filesystem type='mount' accessmode='passthrough'>
<source dir='/mnt/storage/data'/>
<target dir='data'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</filesystem>
ในแขกรับเชิญจะถูกติดตั้งเป็น:
mount -t 9p -o rw,trans=virtio,version=9p2000.L,msize=262144 data /mnt/data
ปัญหาคือผู้ใช้รูทในแขกไม่สามารถเขียนไปยังไฟล์ / โฟลเดอร์ที่เป็นเจ้าของโดยผู้ใช้ที่ไม่ใช่รูทบนโฮสต์ ยิ่งไปกว่านั้นรูทของแขกสามารถเปลี่ยนชื่อและลบไฟล์ดังกล่าวได้ นั่นคือเมื่อบนเครื่องโฮสต์ฉันสร้างไฟล์ในฐานะผู้ใช้ที่ไม่ใช่รูทฉันก็ไม่สามารถแก้ไขได้ในฐานะรูทของผู้เยี่ยมชมแม้ว่าฉันจะสามารถเปลี่ยนชื่อและลบมันได้!
ฉันยังพบว่าที่โฟลเดอร์ที่สร้างขึ้นบนโฮสต์ภายใต้ผู้ใช้ที่ไม่ใช่รูทมีสิทธิ์ตั้งไว้ที่ 777 รูทของแขกสามารถเขียนลงไปได้ (เช่นสร้างไฟล์ในนั้น) อย่างไรก็ตามสิ่งนี้ใช้ไม่ได้กับไฟล์ - ไฟล์เหล่านั้นยังไม่สามารถแก้ไขได้โดยไม่คำนึงถึงสิทธิ์
ทั้งโฮสต์และแขกกำลังใช้งานเซิร์ฟเวอร์ Linux 3.2.0-4-amd64 # 1 SMP Debian 3.2.51-1 x86_64 GNU / Linux ใน Debian, SELinux ถูกปิดใช้งานโดยค่าเริ่มต้นและฉันไม่ได้เปิดใช้งาน ฉันพยายามทั้งสามโหมดการเข้าถึง 9p ใช้ได้ ( passthrough
, mapped
และsquash
) - ไม่แตกต่างกัน
แค่สงสัยว่ามีอะไรที่ฉันสามารถปรับแต่งเพื่อให้มันใช้งานได้หรือมันเป็นแค่ข้อบกพร่อง?
ทราบว่ามีปัญหาที่คล้ายกันรายงานที่นี่: การเข้าถึงการอ่าน / เขียนสำหรับระบบไฟล์ passthrough (9p) ด้วย libvirt / qemu? แต่แตกต่างจากกรณีนี้ฉันมีสิทธิ์เข้าถึงการเขียน 100% โดยที่ root เป็นเจ้าของไฟล์มันเป็นแค่ไฟล์ผู้ใช้ที่ไม่ใช่ root ที่ฉันไม่สามารถเขียนแม้แต่เป็น root บน guest