ปัญหาการอนุญาตไฟล์ที่มีโฟลเดอร์ที่ใช้ร่วมกันภายใต้ Virtual Box (Ubuntu Guest, Windows Host)


103

ฉันใช้ Ubuntu บน Virtual Box และฉันมีโฟลเดอร์ที่แชร์ระหว่างโฮสต์ (Windows) และ VM (Ubuntu) เมื่อฉันเปิดไฟล์ใด ๆ ในโฟลเดอร์แชร์ใน Ubuntu ฉันไม่สามารถเปลี่ยนได้เนื่องจากเจ้าของถูกตั้งเป็นรูท

ฉันจะเปลี่ยนความเป็นเจ้าของให้เป็นตัวเองได้อย่างไร

นี่คือผลลัพธ์ของls -l:

-rwxrwxrwx 1 root root 0 2012-10-05 19:17 BuildNotes.txt

ผลลัพธ์ของdfคือ:

m@m-Linux:~/Desktop/vbox_shared$ df
Filesystem   1K-blocks      Used Available Use% Mounted on
/dev/sda1     29640780  10209652  17925440  37% /
none            509032       260    508772   1% /dev
none            513252       168    513084   1% /dev/shm
none            513252        88    513164   1% /var/run
none            513252         0    513252   0% /var/lock
none            513252         0    513252   0% /lib/init/rw
Ubuntu       214153212  31893804 182259408  15% /media/sf_Ubuntu
/dev/sr0         53914     53914         0 100% /media/VBOXADDITIONS_4.2.0_80737
Ubuntu       214153212  31893804 182259408  15% /home/m/Desktop/vbox_shared

ตัวเลือกใน VM คือการเมาท์อัตโนมัติและไม่ได้ตรวจสอบ readoly

พยายามใช้/media/sf_Ubuntuแล้ว แต่ได้รับข้อผิดพลาดในการอนุญาต:

m@m-Linux:/media$ ls -l 
total 10
drwxrwx--- 1 root vboxsf 4096 2012-10-23 15:35 sf_Ubuntu
drwxrwx--- 2 root vboxsf 4096 2012-10-21 23:41 sf_vbox_shared
dr-xr-xr-x 6 m    m      2048 2012-09-13 07:19 VBOXADDITIONS_4.2.0_80737
m@m-Linux:/media$ cd sf_Ubuntu/
bash: cd: sf_Ubuntu/: Permission denied
m@m-Linux:/media$ cd sf_vbox_shared/
bash: cd: sf_vbox_shared/: Permission denied

โปรดทราบว่าฉันอยู่ในกลุ่มvboxsf:

m@m-Linux:~$ id
uid=1000(m) gid=1000(m) groups=4(adm),20(dialout),24(cdrom),46(plugdev),105(lpadmin),119(admin),122(sambashare),1000(m),1001(vboxsf)

คุณเมานท์โฟลเดอร์แชร์ได้อย่างไร คุณปล่อยให้มันเป็นแบบอัตโนมัติโดย VirtualBox guest utils (เช่น / media / sf_something) หรือว่าคุณ mount มันเองโดยใช้คำสั่ง mount?
EightBitTony

นอกจากนี้คุณสามารถอธิบายวิธีกำหนดค่าการแชร์ภายใต้ VirtualBox ใน Windows ได้อย่างไร มีสามตัวเลือกสำหรับการแบ่งปันอ่านอย่างเดียวโดยอัตโนมัติและถาวรซึ่งคุณได้เลือกตัวเลือกใด
EightBitTony

โปรดโพสต์การอัปเดตคำถามของคุณไม่ใช่ความคิดเห็น โปรดรวมเอาท์พุทdfและคำสั่งที่คุณใช้ในการเมานท์ระบบไฟล์ด้วยตนเอง
EightBitTony

ขอบคุณ - คุณจะเห็นว่ามีระบบไฟล์ / media / sf_Ubuntu นั่นคือโฟลเดอร์ที่แชร์ของคุณคุณไม่จำเป็นต้องทำการเมานท์ด้วยตนเอง ฉันขอแนะนำให้คุณขยายสิ่ง / home / m / Desktop และเพียงใช้ / media / sf_Ubuntu ซึ่งทำงานตามคำตอบของฉันด้านล่าง
EightBitTony

@Tony: ฉันไม่สามารถเข้าถึงโฟลเดอร์นี้ โปรดดูคำถามเดิมของฉันซึ่งฉันเพิ่มข้อมูลเพิ่มเติม
user654019

คำตอบ:


159

วิธีปกติของการเข้าถึงไฟล์ในขณะนี้คือการอนุญาตให้ VirtualBox จะ automount โฟลเดอร์ที่ใช้ร่วมกัน (ซึ่งจะทำให้มันแสดงขึ้นภายใต้/media/sf_directory_name) และจากนั้นให้เพิ่มผู้ใช้อูบุนตูปกติของคุณไปยังvboxsfกลุ่ม (เป็น root #)

# usermod -aG vboxsf <youruser>

ตามค่าเริ่มต้นโดยไม่มีการดำเนินการด้วยตนเองเมานท์จะมีลักษณะเช่นนี้

drwxrwx--- 1 root vboxsf 40960 Oct 23 10:42 sf_<name>

ดังนั้นvboxsfกลุ่มจึงสามารถเข้าถึงได้อย่างเต็มที่ ด้วยการเพิ่มผู้ใช้ของคุณในกลุ่มนั้นคุณจะสามารถเข้าถึงได้อย่างเต็มที่ ดังนั้นคุณไม่ต้องกังวลเกี่ยวกับการเปลี่ยนแปลงการอนุญาต (ซึ่งไม่สมเหตุสมผลกับโฮสต์ Windows) คุณเพียงแค่ให้สิทธิ์การเข้าถึง

ในกรณีเฉพาะนี้เป็นโฟลเดอร์แชร์อัตโนมัติ

Ubuntu               214153212  31893804 182259408  15% /media/sf_Ubuntu

และเป็นไดเรกทอรีที่ควรใช้เพื่อเข้าถึงโฟลเดอร์ที่ใช้ร่วมกันโดยใส่ผู้ใช้ภายในvboxsfกลุ่ม หากคุณต้องการลิงค์ 'ดีกว่า' ภายใต้ไดเรกทอรีบ้านของผู้ใช้คุณสามารถสร้างลิงก์สัญลักษณ์ได้ตลอดเวลา

ln -s /media/sf_Ubuntu /home/m/Desktop/vbox_shared

คุณจะต้องรีบูต VM ของคุณเพื่อให้การเปลี่ยนแปลงเหล่านี้มีผล

หากคุณเมานต์โฟลเดอร์แชร์ด้วยตนเองคุณจะต้องใช้ตัวเลือกที่เกี่ยวข้องในmountคำสั่งเพื่อตั้งค่าโฟลเดอร์ด้วยการเป็นเจ้าของที่ถูกต้อง (เช่นตัวเลือก gid, uid และ umask เป็นmount) นี่เป็นเพราะ Host OS ไม่สนับสนุนระบบการอนุญาตเดียวกันกับ Linux ดังนั้น VirtualBox จึงไม่มีทางรู้ว่าใครควรเป็นเจ้าของไฟล์

อย่างไรก็ตามฉันขอแนะนำอย่างยิ่งให้กำหนดค่าโฟลเดอร์ที่ใช้ร่วมกันให้ทำการติดตั้งอัตโนมัติ (เป็นการตั้งค่าในการกำหนดค่าโฟลเดอร์ที่ใช้ร่วมกันใน VirtualBox เอง)


เพื่อหลีกเลี่ยงข้อสงสัยฉันไม่เชื่อว่าคุณสามารถเปลี่ยนการอนุญาตได้ตามปกติบนระบบไฟล์นั้นหากมันถูกติดตั้งด้วยวิธีปกติ

tony@jabba:/media/sf_name$ ls -l tst.txt
-rwxrwx--- 1 root vboxsf 2283 Apr  4  2012 tst.txt
tony@jabba:/media/sf_name$ sudo chown tony tst.txt
[sudo] password for tony: 
tony@jabba:/media/sf_name$ ls -l tst.txt
-rwxrwx--- 1 root vboxsf 2283 Apr  4  2012 tst.txt
tony@jabba:/media/sf_name$ 

2
เมื่อฉันลองสิ่งนี้ฉันได้รับข้อความว่าผู้ใช้อยู่ในกลุ่มแล้ว แต่เมื่อฉันพยายามเปลี่ยนไฟล์ในโฟลเดอร์แชร์ฉันได้รับข้อผิดพลาดเมื่อฉันต้องการบันทึก ข้อผิดพลาดคือ: ไม่สามารถบันทึกไฟล์ /home/m/Desktop/vbox_shared/test.tst ข้อผิดพลาดที่ไม่คาดคิด: เกิดข้อผิดพลาดในการเปลี่ยนชื่อไฟล์ชั่วคราว: ไฟล์ข้อความไม่ว่าง
user654019

นั่นเป็นปัญหาที่แตกต่างกันอาจไม่ได้เกิดจากการอนุญาต คุณสามารถสร้างไฟล์ใหม่หรือแก้ไขไฟล์อื่น รอก่อน - / home / m / Desktop / vbox_shared? คุณได้ติดตั้งโฟลเดอร์แชร์ด้วยตนเองหรือไม่ นั่นไม่ใช่เส้นทางเริ่มต้น
EightBitTony

การตรวจสอบระบบฉันพบว่าฉันได้รับอนุญาตให้สร้างหรือลบไฟล์เท่านั้นและไม่อนุญาตให้อ่าน / เขียน ฉันจะมอบให้กับตัวเองได้อย่างไร
user654019

9
จำเป็นต้องมีการรีบูตเพื่อให้มีผล
Eric Wang

3
คุณสมควรได้รับเบียร์สำหรับคำตอบนี้ !!! ฉันไม่สามารถทำงานให้ได้จนกว่าฉันจะเจอสิ่งนี้ ไม่อยากเชื่อเลยว่านี่จะไม่ออกไปอีกแล้ว ฉันหวังว่าฉันจะลงคะแนนได้มากกว่าหนึ่งครั้ง !!
Tensigh

3

ฉันเพิ่งมีปัญหาเดียวกันกับโฟลเดอร์ที่ใช้ร่วมกันของ Win-Ubuntu และวิธีที่ฉันแก้ไขมันคือการเพิ่มผู้ใช้ของฉันลงในกลุ่ม vboxsf แก้ไขไฟล์ / etc / group หวังว่านี่จะเป็นประโยชน์สำหรับคุณ ด้านล่างนี้คุณสามารถค้นหาแบบสั้น ๆ ของวิธีที่ฉันแก้ไขไฟล์

(edit /etc/group)
...
...
...
pulse:x:119:
pulse-access:x:120:
utempter:x:121:
rtkit:x:122:
saned:x:123:
openquake:x:1000:
sambashare:x:124:openquake,luisa
vboxsf:x:999:openquake,luisa   ##This is the line I add my user
postgres:x:125:
rabbitmq:x:126:
celery:x:500:
luisa:x:1001:

Luisa


2
คุณไม่ควรแก้ไข / etc / group โดยตรงให้ใช้เครื่องมือที่เหมาะสมสำหรับงานนี้ (ในกรณีนี้usermod -aG <group> <user>)
แต่งกาย

เหตุผลหลักถ้าไม่เพียง แต่เหตุผลที่แนะนำให้ทำเช่นนี้คือเพราะถ้าคุณทำผิดพลาดด้วยตนเองในการอัพเดตไฟล์เช่น / etc / group มันสามารถทำให้ DB ใช้ไม่ได้และทำให้คุณล็อคไม่ได้
Spencer Williams

2

ฉันมีปัญหาเดียวกันและฉันจะแก้ไขการติดตั้งรุ่นล่าสุดVirtualBox บุคคลทั่วไปเพิ่มขึ้น ; ในกรณีของฉันอัพเกรดจาก 4.3.8 เป็น 4.3.10

เมื่อการติดตั้งเสร็จสิ้นโฟลเดอร์/ media / sf_nameจะไม่มี "root" ในฐานะเจ้าของกลุ่มอีกต่อไป แต่ "vboxsf" ถูกต้อง


1

คุณลอง sudo แล้วหรือยัง

$sudo chown username filename

ฉันไม่เชื่อว่าสิ่งนี้จะทำงานกับโฟลเดอร์ที่ใช้ร่วมกันของ VirtualBox
EightBitTony

sudo ทำงานได้ทุกที่! : P link
Extn3389

12
ฉันไม่แน่ใจว่าคุณจริงจัง แต่ฉันจะหัวเราะคุณ โฟลเดอร์ที่ใช้ร่วมกันติดตั้งเป็นvboxfsระบบแฟ้มชนิดก็ไม่ได้ให้เกียรติchown's
EightBitTony

ฉันขอโทษฉันคิดว่ามันอาจจะใช้ได้
Extn3389

1
ใช่ แต่มันไม่ได้เปลี่ยนเจ้าของ หลังจากรันคำสั่ง tis ในเทอร์มินัลเพื่อหาไฟล์แล้วมองไปที่เจ้าของไฟล์มันยังคงเป็นของรูท
user654019

1

หากคุณมีความหรูหราในการควบคุมตัวเลือกไปที่คำสั่ง mount (ตัวอย่างเช่นถ้าติดตั้งด้วยตนเองหรือใช้/etc/fstab) คุณสามารถใช้-o uid=771ตัวเลือกเพื่อติดตั้ง commmand

รายการใน/etc/fstabจะมีลักษณะ

scanresults    /data/scanresults    vboxsf    uid=771    0 0

1

เปิดใช้งานการเข้าถึงแบบอ่านและเขียนอย่างเต็มรูปแบบไปยังโฟลเดอร์ที่ใช้ร่วมกันบนโฮสต์ Windows จากผู้เยี่ยมชม Ubuntu สำหรับผู้ใช้ที่ไม่ใช่รูทลินุกซ์

ขั้นตอนนี้จะช่วยให้คุณสามารถเข้าถึง dir ที่แน่นอนบนเครื่องโฮสต์ Windows ของคุณจากเทอร์มินัลเกสต์ของ Linux ในตัวอย่างนี้ชื่อของการแชร์จาก OVB เปอร์โตริโกจะเป็น vshare (ซึ่งเป็นค่าเริ่มต้น) พา ธ เต็มไปยัง Windows OS (โฮสต์ OS) จะเป็น "C: \ var \" และพา ธ ไฟล์เต็มไปที่ เข้าถึงได้จาก guest vm จะเป็น "/ คนพเนจร" และในที่สุดชื่อของผู้ใช้เพื่อเปิดใช้งานการเข้าถึง rea / write เต็มรูปแบบจะเป็น "คุณ"

 # how-to add a shared folder on the host
 VBoxManage sharedfolder add "host-name" -name "vshare" -hostpath "C:\var" -automount

1. ติดตั้งข้อกำหนดเบื้องต้นของ Guest Additions

ติดตั้งข้อกำหนดเบื้องต้นของ Guest Additions โดยออกคำสั่งต่อไปนี้:

 sudo apt-get install -y build-essential make gcc  linux-headers-$(uname -r) 
 linux-headers-generic make linux-source  linux-generic linux-signed-generic

2. ติดตั้งส่วนบุคคลเพิ่มเติม

อย่าใช้ไฟล์. iso เพื่อดาวน์โหลดและตัวติดตั้งจากตรงนั้น - มันจะไม่ทำงาน !!!

sudo apt-get install virtualbox-guest-dkms 

3. เปลี่ยนของคุณสำหรับการแชร์ dir เป็น automounted ในการบูต vm

เปลี่ยนของคุณสำหรับการแชร์ dir โดยอัตโนมัติในการบูต vm โดยการเพิ่มบรรทัด folowing ไปยังจุดสิ้นสุดของไฟล์ fstab ของคุณ (หมายเหตุ "vshare" conf และ uid = 10001):

/media/sf_vshare /vagrant vboxsf bind,uid=10001,rw,umask=0000 0 0
# eof file: /etc/fstab 

4. เพิ่มตัวเองลงในกลุ่ม vboxsf

คุณต้องเพิ่มตัวคุณเองในกลุ่ม vboxsf เพื่อให้สามารถแก้ไขไฟล์ที่ไม่ใช่รูทจาก vm ของคุณในเครื่องโฮสต์ของคุณ # mount sudo mount -a

sudo usermod -G vboxsf -a you 

5. รีบูตและตรวจสอบ

รีบูต vm และล็อกอินผ่าน ssh เพื่อตรวจสอบการแชร์ไฟล์ # ssh ไปยัง vm ssh you @ host-name

# check as yourself that you have 
find /vagrant

0

ต้องเพิ่มการติดตั้งกล่องเสมือนอีกครั้งหลังจากที่คุณอัพเกรดระบบแขกของคุณ ฉันคิดว่าปัญหาคือเมื่อคุณอัพเกรดส่วนประกอบบางอย่างในอูบุนตูส่วนประกอบบางส่วนเปลี่ยนไปหลังจากติดตั้ง vb-additions แล้ว sf_forlder_name จะสามารถเข้าถึงได้ ปัญหาของฉันแก้ไขได้ด้วยวิธีนี้ วิธีการแก้ปัญหาของ Pisu ทำงาน


ในประสบการณ์ของฉันกล่องเสมือนของผู้เข้าพักเพิ่มเติมจะต้องได้รับการอัพเกรดเมื่อระบบโฮสต์ VirtualBox ได้รับการอัพเกรด ไม่ใช่เมื่อซอฟต์แวร์ใด ๆ ในไคลเอ็นต์เปลี่ยนแปลง คุณอัพเกรดซอฟต์แวร์อะไรให้ลูกค้าจำเป็นต้องใช้
Anthon

1
ไม่นิคกี้นั้นถูกต้อง คุณต้องติดตั้งส่วนเสริมของผู้เยี่ยมชมอีกครั้งหากคุณอัปเดตเคอร์เนลระบบปฏิบัติการเกสต์ของคุณ
Spencer Williams

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