मैं माउंटेड साझा फ़ोल्डर में फ़ाइलों को कैसे स्टोर कर सकता हूं?


18

मैं एक Ubuntu होस्ट पर फेडोरा वर्कस्टेशन वर्चुअल मशीन चला रहा हूं।
मैंने /home/cl/shareअतिथि में एक फ़ोल्डर बनाया है और लिनक्स-केवीएम/media/cl/system/virtual/share से निर्देशों का पालन करते हुए साझा फ़ोल्डर को रूट के रूप में माउंट किया है :

mount -t 9p -o trans=virtio,version=9p2000.L /host /home/cl/share

मैं साझा किए गए फ़ोल्डर्स से फ़ाइलों और फ़ोल्डरों को एक्सेस करने (पढ़ने) में सक्षम हूं, लेकिन मैं उन्हें नहीं लिख सकता।

एक उदाहरण: मैं फ़ाइल mount-share.txtको फ़ोल्डर में सहेजने का प्रयास कर रहा हूं /home/cl/share

दोनों फ़ोल्डर्स (मेजबान और अतिथि) के पास पठन-लेखन की अनुमति है, फिर भी मुझे त्रुटि मिलती है

Error opening file '/home/cl/share/mount-share.txt': Operation not permitted.
  • होस्ट ऑपरेटिंग सिस्टम: उबंटू 15.10 डेस्कटॉप 64-बिट
  • गेस्ट ऑपरेटिंग सिस्टम: फेडोरा 23 वर्कस्टेशन 64-बिट
  • वर्चुअलाइजेशन सॉफ्टवेयर: qemu qemu-kvm virt-manager
  • मेजबान सिस्टम स्थान: 1 बिल्ट-इन SSD - ext4 प्रारूप
  • आभासी भंडारण स्थान: दूसरा अंतर्निहित एचडीडी - एनटीएफएस प्रारूप
  • साझा फ़ोल्डर स्थान: दूसरा अंतर्निहित HDD - NTFS प्रारूप

virt-manager

मैं अतिथि और मेजबान के बीच एक निर्देशिका कैसे साझा कर सकता हूं और अतिथि को पढ़ने-लिखने की अनुमति दे सकता हूं?

sudo chmod a+x /media/clऔर sudo chmod -R 777 /mediaस्थिति को नहीं बदला।

अतिथि प्रणाली:

ls -la /home/cl/share  
total 16  
drwxrwxrwx.  1 cl cl 4096 20. Jan 14:41 .  
drwx------. 18 cl cl 4096 24. Jan 19:11 ..  
drwxrwxrwx.  1 cl cl 4096 17. Dez 09:49 fedora  
drwxrwxrwx.  1 cl cl    0  5. Jan 11:43 solus  
drwxrwxrwx.  1 cl cl    0  6. Jan 12:10 ubuntu  
drwxrwxrwx.  1 cl cl 4096 24. Jan 16:58 various    

stat /home/cl/share  
  File: ‘/home/cl/share’  
  Size: 4096         Blocks: 8          IO Block: 4096   directory  
Device: 25h/37d    Inode: 135       Links: 1  
Access: (0777/drwxrwxrwx)  Uid: ( 1000/     cl)   Gid: ( 1000/      cl)  
Access: 2016-01-27 10:11:12.566303000 +0100  
Modify: 2016-01-26 21:34:48.647707300 +0100  
Change: 2016-01-26 21:34:48.647707300 +0100  
 Birth: -  

मेजबान प्रणाली:

ls -ld /media /media/cl/ /media/cl/system /media/cl/system/virtual/ /media/cl/system/virtual/share  
drwxr-xr-x  3 root root 4096 Okt 22 16:06 /media  
drwxr-x---+ 6 root root 4096 Jan 24 10:49 /media/cl/  
drwxrwxrwx  1 cl   cl   4096 Jan 19 15:28 /media/cl/system  
drwxrwxrwx  1 cl   cl   4096 Jan 22 13:43 /media/cl/system/virtual/  
drwxrwxrwx  1 cl   cl   4096 Jan 20 14:41 /media/cl/system/virtual/share  

getfacl /media/cl/  
getfacl: Removing leading '/' from absolute path names  
# file: media/cl/  
# owner: root  
# group: root  
user::rwx  
user:libvirt-qemu:--x  
user:cl:r-x  
group::---  
mask::r-x  
other::---

ps aux | grep virt
root       988  0.0  0.2 1207024 39888 ?       Ssl  12:48   0:01 /usr/sbin/libvirtd  
libvirt+  1204  0.0  0.0  45268  2720 ?        S    12:48   0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper  
root      1207  0.0  0.0  45240   368 ?        S    12:48   0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper  
cl        4204  0.0  0.0  15184  2532 pts/2    S+   14:06   0:00 grep --color=auto virt

आप दो लिनक्स सिस्टम के बीच साझा करने के लिए NTFS का उपयोग क्यों कर रहे हैं? क्या आपने इसे एक अधिक मूल फ़ाइल प्रारूप के साथ सेट करने की कोशिश की है?
कालातु वॉन श्लेकर

2
@KlaatuvonSchlacker: दूसरे HDD में वह सब कुछ शामिल है जो ऑपरेटिंग सिस्टम से संबंधित नहीं है और इसे ntfs के साथ स्वरूपित किया जाता है यदि मैं विंडोज जैसे अन्य ऑपरेटिंग सिस्टम के साथ डेटा एक्सेस करना चाहता हूं। जब मैं वर्चुअलाइजेशन के लिए वर्चुअलबॉक्स का उपयोग करता हूं, तो फ़ोल्डर साझाकरण के बारे में सब कुछ सही ढंग से काम करता है।
cl-netbox

फाइलसिस्टम में लिखने का प्रयास करते समय त्रुटि संदेश के बारे में: क्या आपको वह त्रुटि मिलती है जब आप होस्ट से लिखने की कोशिश करते हैं, या केवल तब जब आप अतिथि से लिखने की कोशिश करते हैं?
वाइल्डकार्ड

@Wildcard: मुझे अतिथि के भीतर से कुछ लिखने (स्टोर) करने की कोशिश करते समय त्रुटि संदेश प्राप्त होता है।
सीएल-नेटबॉक्स

जवाबों:


14

मैं अपने सिस्टम पर समस्या को पुन: उत्पन्न कर सकता था।
आपकी मुख्य समस्या आपके मेजबान के एसीएल प्रतिबंध हैं।
इस कारण से libvirt-qemuउपयोगकर्ता के एसीएल गुण बदलें :

sudo setfacl -R -m u:libvirt-qemu:rwx /media/cl

से के लिए Modeसेटिंग्स बदलें ।Filesystem /hostPassthroughMapped


क्यों? यही वजह है:

आपका अतिथि सिस्टम libvirt-qemuउपयोगकर्ता के रूप में चलता है और आपकी एसीएल सेटिंग्स इस उपयोगकर्ता की अनुमति को प्रतिबंधित करती हैं।

user:libvirt-qemu:--x

का सही आउटपुट getfaclहोना चाहिए:

user:libvirt-qemu:rwx

2

यदि आपका प्राथमिक लक्ष्य केवल फाइलों को आगे और पीछे साझा करना है, और आप टीसीपी का उपयोग करने के लिए खुले हैं, तो आप केवल ssh या इसी तरह की फ़ाइलों को साझा कर सकते हैं।

उदाहरण के लिए, यदि आप अतिथि पर एक समझदार पोर्ट के लिए स्थानीय पोर्ट को फिर से निर्देशित करते हैं, तो आपको उस पोर्ट का उपयोग करने में सक्षम होना चाहिए। मैं एसएसएच / एससीपी का उपयोग करता हूं।

मेरा वीएम लॉन्च करते समय:

qemu-kvm [all your usual qemu options] -net nic -net user -redir tcp:22122::22

और फिर वीएम तक पहुंचने के लिए, मैं एसएसएच का उपयोग करता हूं; मैंने अपने होस्ट मशीन पर एक टर्मिनल खोला:

scp -P22122 myfile.txt klaatu@localhost:~/ssh-share-dir

fishया sshfsजो भी जीयूआई फ़ाइल प्रबंधक में आप काम करते हैं, ठीक उसी तरह जब तक आप पोर्ट सेट करते हैं।


1
मैं क्या करूंगा: अपने उबंटू होस्ट पर, साझा किए गए डायर की सेवा करने वाले एनएफएस सर्वर को कॉन्फ़िगर करें (आप इसे क्लाइंट को रीड-राइट बना सकते हैं)। और बस इसे Fedora VM क्लाइंट पर माउंट करें। चूंकि आपके पास आईपी कनेक्टिविटी है, इसलिए यह एक आकर्षण की तरह काम करेगा।
KWubbufetowicz
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.