Problemy z uprawnieniami do plików w folderach współdzielonych w Virtual Box (Ubuntu Guest, Windows Host)


102

Używam Ubuntu na Virtual Box i mam folder współdzielony między hostem (Windows) a maszyną wirtualną (Ubuntu). Kiedy otwieram dowolny plik w folderze udostępniania w Ubuntu, nie mogę go zmienić, ponieważ jego właściciel jest ustawiony na root.

Jak mogę zmienić własność na siebie?

Oto wynik ls -l:

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

Dane wyjściowe dfto:

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

Opcje w maszynie wirtualnej to automount, a readoly nie jest zaznaczone.

Próbowałem użyć /media/sf_Ubuntu, ale wystąpił błąd uprawnień:

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

Pamiętaj, że jestem w grupie 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)

Jak zamontowałeś folder współdzielony? Czy pozwalasz na automatyczne podłączenie go przez narzędzia gościa VirtualBox (tj. / Media / sf_something) czy montowałeś go ręcznie za pomocą polecenia mount?
EightBitTony

Czy możesz także opisać sposób skonfigurowania udziału w VirtualBox w systemie Windows? Istnieją trzy opcje udostępniania, tylko do odczytu, automount i permanent, które zaznaczyłeś.
EightBitTony,

Prześlij aktualizacje do swojego pytania - nie jako komentarze. Podaj dane wyjściowe dfi polecenie użyte do ręcznego zamontowania systemu plików.
EightBitTony,

Dziękuję - zobaczysz, że istnieje system plików / media / sf_Ubuntu. To twój folder współdzielony, nie musisz go ręcznie montować. Sugeruję, aby umountować / home / m / Desktop, i po prostu użyj / media / sf_Ubuntu, który działa zgodnie z moją odpowiedzią poniżej.
EightBitTony

@ Tony: Nie mogę uzyskać dostępu do tego folderu. Proszę zobaczyć moje oryginalne pytanie, które
dodałem

Odpowiedzi:


159

Zwykłym sposobem uzyskania dostępu do plików jest teraz zezwolenie VirtualBoxowi na automatyczne zamontowanie folderu współdzielonego (co spowoduje, że będzie się pojawiał poniżej /media/sf_directory_name), a następnie dodanie zwykłego użytkownika Ubuntu do vboxsfgrupy (jako root #).

# usermod -aG vboxsf <youruser>

Domyślnie, bez ręcznego działania, mocowania wyglądają tak,

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

dzięki czemu vboxsfgrupa ma pełny dostęp. Dodając użytkownika do tej grupy, zyskujesz pełny dostęp. Abyś nie martwił się zmianą uprawnień (co nie ma sensu na hoście Windows), po prostu dajesz sobie dostęp.

W tym konkretnym przypadku jest to automatycznie montowany folder współdzielony,

Ubuntu               214153212  31893804 182259408  15% /media/sf_Ubuntu

i to ten katalog powinien być używany do uzyskania dostępu do folderu współdzielonego poprzez umieszczenie lokalnego użytkownika w vboxsfgrupie. Jeśli chcesz uzyskać „lepszy” link w katalogu osobistym użytkownika, zawsze możesz utworzyć link symboliczny.

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

Musisz ponownie uruchomić maszynę wirtualną, aby zmiany zostały wprowadzone

Jeśli ręcznie zamontujesz folder współdzielony, musisz użyć odpowiednich opcji w mountpoleceniu, aby ustawić folder z odpowiednią własnością (tj. Opcje gid, uid i umask na mount). Wynika to z faktu, że system operacyjny hosta nie obsługuje tego samego systemu uprawnień co Linux, dlatego VirtualBox nie ma możliwości ustalenia, kto powinien być właścicielem plików.

Jednak zdecydowanie zalecam skonfigurowanie folderu współdzielonego do automatycznego montowania (jest to ustawienie w konfiguracji folderu współdzielonego w samym VirtualBox).


Aby uniknąć wątpliwości, nie uważam, że i tak możesz zmienić uprawnienia normalnie w tym systemie plików, jeśli jest on montowany w zwykły sposób,

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
Kiedy spróbowałem, dostałem komunikat, że użytkownik jest już w grupie, ale kiedy próbuję zmienić plik w folderze udostępniania, pojawia się błąd, gdy chcę go zapisać. Błąd jest następujący: Nie można zapisać pliku /home/m/Desktop/vbox_shared/test.tst Nieoczekiwany błąd: błąd podczas zmiany nazwy pliku tymczasowego: Plik tekstowy zajęty.
user654019,

To inny problem, potencjalnie nie z powodu uprawnień. Czy możesz utworzyć nowy plik lub zmodyfikować inny plik. Poczekaj - / home / m / Desktop / vbox_shared? Czy ręcznie zamontowałeś folder współdzielony? To nie jest domyślna ścieżka.
EightBitTony,

Sprawdzam system, okazało się, że mam tylko uprawnienia do tworzenia lub usuwania plików, a nie uprawnienia do odczytu / zapisu. Jak mogę to sobie dać?
user654019,

9
Wydaje się, że konieczne jest ponowne uruchomienie komputera, aby zadziałało.
Eric Wang

3
POTRZEBUJESZ PIWA DLA TEJ ODPOWIEDZI !!! Nie mogłem tego w ogóle zadziałać, dopóki się nie zorientowałem. Nie mogę uwierzyć, że nie ma tego więcej. Chciałbym móc głosować więcej niż raz !!
Tensigh,

3

Właśnie miałem ten sam problem z folderem współdzielonym Win-Ubuntu, a sposobem, w jaki go rozwiązałem, było dodanie mojego użytkownika do grupy vboxsf, edycja pliku / etc / group. Mam nadzieję, że to Ci odpowiada. Poniżej znajduje się krótki schemat edytowania pliku

(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
Nigdy nie powinieneś bezpośrednio edytować / etc / group, użyj odpowiednich narzędzi do tego zadania (w tym przypadku usermod -aG <group> <user>).
raimue

Głównym, jeśli nie tylko, powodem, dla którego jest to zalecane, jest to, że jeśli przypadkowo popełnisz błąd ręcznie aktualizując plik taki jak / etc / group, może to unieważnić DB i zasadniczo zablokować cię.
Spencer Williams,

2

Miałem ten sam problem i rozwiązałem instalację najnowszej wersji Dodatków gości VirtualBox ; w moim przypadku była aktualizacja z 4.3.8 do 4.3.10.

Po zakończeniu instalacji folder / media / sf_name nie miał już „root” jako właściciela grupy, ale „vboxsf” jako poprawny.


1

Próbowałeś sudo?

$sudo chown username filename

Nie wierzę, że to działa na folderach udostępnionych VirtualBox.
EightBitTony

sudo działa wszędzie! : Łącze
Extn3389,

12
Nie jestem pewien, czy mówisz poważnie, ale będę cię żartował. Zainstalowany folder współdzielony jest systemem vboxfsplików typu, nie honoruje chown.
EightBitTony

Przepraszam, pomyślałem, że to może zadziałać.
Extn3389,

1
Tak, ale to nie zmieniło właściciela. Po uruchomieniu polecenia tis w terminalu dla pliku, a następnie spojrzeniu na właściciela pliku, nadal należy on do katalogu głównego.
user654019,

1

Jeśli masz luksus kontrolowania opcji polecenia mount (na przykład w przypadku montażu ręcznego lub używania /etc/fstab), możesz użyć -o uid=771opcji polecenia polecenia mount.

Wpis /etc/fstabbędzie wyglądać

scanresults    /data/scanresults    vboxsf    uid=771    0 0

1

Włącz pełny dostęp do odczytu i zapisu do folderu współdzielonego na hoście Windows od gościa Ubuntu dla użytkownika innego niż root

Ten krok umożliwi ci dostęp do określonego katalogu na twoim hoście Windows z terminala gościa Linux. W tym przykładzie nazwą udziału z perspektywy OVB będzie vshare (która jest domyślna), pełna ścieżka katalogu do systemu operacyjnego Windows (hosta) będzie miała postać „C: \ var \”, a pełna ścieżka do pliku dostęp do niego od gościa vm będzie miał postać „/ vagrant”, a na koniec nazwa użytkownika, aby włączyć pełny dostęp do rea / write, to „ty”.

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

1. Zainstaluj wymagania wstępne dodatków gościa

Zainstaluj wymagania wstępne dotyczące dodatków gości, wydając następujące polecenie:

 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. Zainstaluj dodatki dla gości

Nie używaj pliku .iso do pobierania, a stamtąd instalator - po prostu nie zadziała !!!

sudo apt-get install virtualbox-guest-dkms 

3. Zmień katalog udostępniania, aby był automatycznie montowany podczas rozruchu vm

Zmień katalog udostępniania, aby był automatycznie montowany przy starcie vm, dodając następujące linie na końcu pliku fstab (zwróć uwagę na conf „vshare” i identyfikator użytkownika = 10001):

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

4. dodaj się do grupy vboxsf

Musisz dodać się do grupy vboxsf, aby móc edytować pliki użytkownika na maszynie jako użytkownik inny niż root. # mount sudo mount -a

sudo usermod -G vboxsf -a you 

5. uruchom ponownie i sprawdź

Uruchom ponownie maszynę wirtualną i zaloguj się przez ssh, aby zweryfikować udostępnianie plików. # ssh do vm ssh you @ nazwa-hosta

# check as yourself that you have 
find /vagrant

0

Dodatki do pudełka wirtualnego muszą zostać ponownie zainstalowane po aktualizacji systemu gościa. Myślę, że problem polega na tym, że podczas uaktualniania niektórych komponentów w Ubuntu, niektóre komponenty zmieniają się, po zainstalowaniu dodatków VB, sf_forlder_name będzie dostępny. Mój problem rozwiązany w ten sposób. Rozwiązanie Pisu działa.


Z mojego doświadczenia, dodatki do wirtualnego boxa muszą być aktualizowane tylko podczas aktualizacji systemu VirtualBox hosta. Nie, gdy zmienia się jakiekolwiek oprogramowanie klienta. Jakie oprogramowanie na kliencie zaktualizowałeś, aby było to konieczne?
Anthon

1
Nie, Nicky ma rację. Musisz ponownie zainstalować dodatki dla gości, jeśli zaktualizujesz jądro systemu-gościa.
Spencer Williams,

-2
  • Odmontuj akcje jako root
  • Wprowadź wymagane zmiany za pomocą chownichmod
  • uruchom ponownie i kasa akcje mają odpowiednie prawa
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.