Sự cố về quyền tệp với các thư mục được chia sẻ trong Hộp ảo (Ubuntu Guest, Windows Host)


103

Tôi đang sử dụng Ubuntu trên Virtual Box và tôi có một thư mục được chia sẻ giữa máy chủ (Windows) và VM (Ubuntu). Khi tôi mở bất kỳ tệp nào trong thư mục chia sẻ trong Ubuntu, tôi không thể thay đổi tệp đó vì chủ sở hữu của nó được đặt thành root.

Làm thế nào tôi có thể thay đổi quyền sở hữu cho chính mình?

Đây là đầu ra của ls -l:

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

Đầu ra của dflà:

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

Các tùy chọn trong VM là automount và readoly không được kiểm tra.

Đã thử sử dụng /media/sf_Ubuntu, nhưng nhận được lỗi cho phép:

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

Xin lưu ý rằng tôi thuộc nhóm 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)

Làm thế nào bạn gắn kết thư mục chia sẻ? Bạn có để nó được tự động hóa bằng các tiện ích khách VirtualBox (tức là / media / sf_s Something) hay bạn đã gắn kết thủ công bằng cách sử dụng lệnh mount?
EightBitTony

Ngoài ra, bạn có thể mô tả cách bạn đã định cấu hình chia sẻ trong VirtualBox trong Windows không? Có ba tùy chọn để chia sẻ, chỉ đọc, tự động và vĩnh viễn, những tùy chọn mà bạn đã đánh dấu.
EightBitTony

Vui lòng gửi thông tin cập nhật cho câu hỏi của bạn - không phải là ý kiến. Vui lòng bao gồm đầu ra dfvà lệnh bạn đã sử dụng để tự gắn hệ thống tệp.
EightBitTony

Cảm ơn bạn - bạn sẽ thấy có một hệ thống tập tin / media / sf_Ubfox. Đó là thư mục dùng chung của bạn, bạn không cần phải tự gắn nó. Tôi đề nghị bạn nên bỏ qua điều / home / m / Desktop và chỉ sử dụng / media / sf_Ubfox hoạt động theo câu trả lời của tôi dưới đây.
EightBitTony

@Tony: Tôi không thể truy cập thư mục này. Vui lòng xem câu hỏi ban đầu của tôi để tôi thêm thông tin
user654019

Câu trả lời:


159

Cách thông thường để có quyền truy cập vào các tệp bây giờ, là cho phép VirtualBox tự động hóa thư mục dùng chung (sẽ làm cho nó hiển thị bên dưới /media/sf_directory_name) và sau đó thêm người dùng Ubuntu thông thường của bạn vào vboxsfnhóm (với quyền root #).

# usermod -aG vboxsf <youruser>

Theo mặc định, không có hành động thủ công, các giá treo trông như thế này,

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

vì vậy vboxsfnhóm có quyền truy cập đầy đủ. Bằng cách thêm người dùng của bạn vào nhóm đó, bạn có được quyền truy cập đầy đủ. Vì vậy, bạn sẽ không lo lắng về việc thay đổi quyền của họ (điều này không có ý nghĩa trên máy chủ Windows), bạn chỉ cần cấp cho mình quyền truy cập.

Trong trường hợp cụ thể này, đây là Thư mục dùng chung được tự động hóa,

Ubuntu               214153212  31893804 182259408  15% /media/sf_Ubuntu

và đó là thư mục nên được sử dụng để truy cập vào Thư mục được chia sẻ, bằng cách đưa người dùng cục bộ vào vboxsfnhóm. Nếu bạn muốn có một liên kết 'tốt hơn' trong thư mục nhà của người dùng, bạn luôn có thể tạo một liên kết tượng trưng.

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

Bạn sẽ cần khởi động lại VM để những thay đổi này có hiệu lực

Nếu bạn tự gắn thư mục dùng chung, thì bạn cần sử dụng các tùy chọn có liên quan trên mountlệnh để đặt thư mục có quyền sở hữu (nghĩa là các tùy chọn gid, uid và umask mount). Điều này là do Hệ điều hành máy chủ không hỗ trợ hệ thống cấp phép giống như Linux, vì vậy VirtualBox không có cách nào để biết ai nên sở hữu các tệp.

Tuy nhiên, tôi thực sự khuyên bạn chỉ nên định cấu hình thư mục dùng chung để tự động gắn kết (đó là cài đặt trên cấu hình Thư mục dùng chung trong chính VirtualBox).


Để tránh nghi ngờ, tôi không tin rằng dù sao bạn cũng có thể thay đổi quyền, trên hệ thống tập tin đó nếu nó được gắn theo cách thông thường,

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
Khi tôi thử điều này, tôi nhận được thông báo rằng người dùng đã ở trong nhóm, nhưng khi tôi đang cố gắng thay đổi một tệp trên thư mục chia sẻ, tôi gặp lỗi khi tôi muốn lưu nó. Lỗi là: Không thể lưu tệp /home/m/Desktop/vbox_ Shared / test.tst Lỗi không mong muốn: lỗi đổi tên tệp tạm thời: Tệp văn bản bận.
dùng654019

Đó là một vấn đề khác, có khả năng không phải do quyền. Bạn có thể tạo một tệp mới hoặc sửa đổi một tệp khác. Treo trên - / home / m / Desktop / vbox_ Shared? Bạn đã tự gắn thư mục chia sẻ? Đó không phải là đường dẫn mặc định.
EightBitTony

Kiểm tra hệ thống, tôi thấy rằng tôi chỉ có quyền tạo hoặc xóa các tập tin và không đọc / ghi hoán vị. Làm thế nào tôi có thể đưa nó cho chính mình?
dùng654019

9
Có vẻ như khởi động lại là cần thiết để làm cho nó có hiệu lực.
Eric Wang

3
BẠN TUYỆT VỜI MỘT BIA CHO TRẢ LỜI NÀY !!! Tôi không thể làm việc này cho đến khi tôi bắt gặp điều này. Không thể tin điều này không nằm ngoài đó nhiều hơn. Tôi ước tôi có thể nâng cấp nó nhiều hơn một lần !!
Hàng chục

3

Tôi cũng gặp vấn đề tương tự với thư mục dùng chung Win-Ubuntu của tôi và cách tôi giải quyết là thêm người dùng của mình vào nhóm vboxsf, chỉnh sửa tệp / etc / group. Hy vọng điều này làm việc cho bạn. Ở đây bạn có thể tìm thấy một sơ đồ ngắn về cách tôi chỉnh sửa tệp

(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
Bạn không bao giờ nên chỉnh sửa / etc / nhóm trực tiếp, sử dụng các công cụ thích hợp cho công việc này (trong trường hợp này usermod -aG <group> <user>).
raimue

Lý do chính, nếu không chỉ, lý do tại sao điều này được khuyến nghị là vì nếu bạn vô tình mắc lỗi cập nhật thủ công một tệp như / etc / group, nó có thể làm mất hiệu lực DB và về cơ bản khóa bạn.
Spencer Williams

2

Tôi gặp vấn đề tương tự và tôi đã giải quyết được việc cài đặt phiên bản mới nhất của VirtualBox Guest Additions ; trong trường hợp của tôi đã nâng cấp từ 4.3.8 lên 4.3.10.

Khi quá trình cài đặt kết thúc, thư mục / media / sf_name không còn "root" với tư cách là chủ sở hữu nhóm, nhưng "vboxsf" là chính xác.


1

Bạn đã thử sudo chưa?

$sudo chown username filename

Tôi không tin rằng điều này hoạt động trên các thư mục chia sẻ VirtualBox.
EightBitTony

sudo hoạt động ở khắp mọi nơi! : Liên kết
Extn3389

12
Tôi không chắc bạn có nghiêm túc không, nhưng tôi sẽ hài hước với bạn. Thư mục chia sẻ được gắn kết là một vboxfshệ thống tập tin loại, nó không tôn trọng chown.
EightBitTony

Tôi xin lỗi tôi chỉ nghĩ rằng điều này có thể làm việc.
Extn3389

1
Có, nhưng nó không thay đổi chủ sở hữu. Sau khi chạy lệnh tis trong một thiết bị đầu cuối cho một tệp, và sau đó nhìn vào chủ sở hữu tệp, nó vẫn thuộc về root.
dùng654019

1

Nếu bạn có quyền kiểm soát các tùy chọn đối với lệnh mount (ví dụ: nếu gắn thủ công hoặc sử dụng /etc/fstab), bạn có thể sử dụng -o uid=771tùy chọn để gắn kết.

Một mục trong /etc/fstabsẽ trông giống như

scanresults    /data/scanresults    vboxsf    uid=771    0 0

1

Cho phép đọc, ghi đầy đủ quyền truy cập vào thư mục dùng chung trên máy chủ Windows từ máy khách Ubuntu cho người dùng Linux không root

Bước này sẽ cho phép bạn truy cập một thư mục nhất định trên máy chủ Windows của bạn từ thiết bị đầu cuối khách Linux. Trong ví dụ này, tên của chia sẻ từ phối cảnh OVB sẽ là vshare (là mặc định), đường dẫn thư mục đầy đủ đến HĐH Windows (HĐH máy chủ) sẽ là "C: \ var \" và đường dẫn tệp đầy đủ đến truy cập nó từ vm khách sẽ là "/ vagrant", và cuối cùng tên của người dùng để kích hoạt quyền truy cập rea / write đầy đủ sẽ là "bạn".

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

1. Cài đặt các điều kiện tiên quyết của Khách bổ sung

Cài đặt các điều kiện tiên quyết của Khách bổ sung bằng cách ban hành lệnh sau:

 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. Cài đặt bổ sung khách

Không sử dụng tệp .iso để tải xuống và trình cài đặt từ đó - đơn giản là nó sẽ không hoạt động !!!

sudo apt-get install virtualbox-guest-dkms 

3. Thay đổi thư mục chia sẻ của bạn sẽ được tự động hóa trên vm boot

Thay đổi thư mục chia sẻ của bạn để được tự động hóa khi khởi động vm bằng cách thêm các dòng folowing vào cuối tệp fstab của bạn (lưu ý conf "vshare" và uid = 10001):

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

4. thêm mình vào nhóm vboxsf

Bạn cần thêm chính mình vào nhóm vboxsf để có thể chỉnh sửa dưới dạng không root từ vm các tệp trên máy chủ của bạn. # gắn sudo gắn -a

sudo usermod -G vboxsf -a you 

5. khởi động lại và xác minh

Khởi động lại vm và đăng nhập qua ssh để xác minh việc chia sẻ tệp. # ssh vào vm ssh bạn @ tên máy chủ

# check as yourself that you have 
find /vagrant

0

Bổ sung hộp ảo phải được cài đặt lại sau khi bạn nâng cấp hệ thống khách của mình. Vấn đề, tôi nghĩ, là khi bạn nâng cấp một số thành phần trong ubfox, một số thành phần đã thay đổi, sau khi cài đặt bổ sung vb, sf_forlder_name sẽ có thể truy cập được. Vấn đề của tôi được giải quyết bằng cách này. Giải pháp của Pisu hoạt động.


Theo kinh nghiệm của tôi, các bổ sung của hộp ảo chỉ phải được nâng cấp khi hệ thống VirtualBox của máy chủ được nâng cấp. Không phải khi bất kỳ phần mềm trên máy khách thay đổi. Phần mềm nào trên máy khách bạn đã nâng cấp để thực hiện điều này cần thiết?
Anthon

1
Không, nicky là đúng. Bạn phải cài đặt lại Bổ sung khách nếu bạn cập nhật nhân hệ điều hành khách của mình.
Spencer Williams

-2
  • Unmount cổ phiếu như root
  • Thực hiện các thay đổi cần thiết với chownchmod
  • khởi động lại và kiểm tra các cổ phiếu có quyền thích hợp
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.