Problemi di autorizzazione file con cartelle condivise in Virtual Box (Ubuntu Guest, Windows Host)


103

Sto usando Ubuntu su Virtual Box e ho una cartella condivisa tra l'host (Windows) e la VM (Ubuntu). Quando apro qualsiasi file nella cartella di condivisione in Ubuntu, non posso cambiarlo poiché il suo proprietario è impostato su root.

Come posso cambiare la proprietà a me stesso?

Ecco l'output di ls -l:

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

L'output di 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

Le opzioni in VM sono automount e il readoly non è selezionato.

Ho provato a usare /media/sf_Ubuntu, ma ho ottenuto un errore di autorizzazione:

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

Nota che sono nel gruppo 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)

Come hai montato la cartella condivisa? Stai lasciando che venga montato automaticamente dai programmi di utilità guest VirtualBox (es. / Media / sf_something) o l'hai montato manualmente usando il comando mount?
EightBitTony,

Inoltre, puoi descrivere come hai configurato la condivisione in VirtualBox in Windows? Esistono tre opzioni per la condivisione, sola lettura, automount e permanente, quali opzioni sono state spuntate.
EightBitTony,

Pubblica aggiornamenti alla tua domanda, non come commenti. Includere l'output dfe il comando utilizzato per montare manualmente il filesystem.
EightBitTony,

Grazie - vedrai che esiste un filesystem / media / sf_Ubuntu. Questa è la tua cartella condivisa, non è necessario montarla manualmente. Ti suggerisco di smontare la cosa / home / m / Desktop e usare semplicemente / media / sf_Ubuntu che funziona secondo la mia risposta qui sotto.
EightBitTony,

@Tony: non riesco ad accedere a questa cartella. Si prega di vedere la mia domanda originale che aggiungo ulteriori informazioni
user654019

Risposte:


159

Il modo normale per ottenere l'accesso ai file ora è consentire a VirtualBox di montare automaticamente la cartella condivisa (che verrà mostrata sotto /media/sf_directory_name) e quindi aggiungere il tuo normale utente Ubuntu al vboxsfgruppo (come root #).

# usermod -aG vboxsf <youruser>

Per impostazione predefinita, senza azione manuale, i supporti si presentano così,

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

quindi il vboxsfgruppo ha pieno accesso. Aggiungendo il tuo utente a quel gruppo, ottieni pieno accesso. Quindi non ti preoccupi di cambiare le loro autorizzazioni (che non hanno senso sull'host di Windows), ti dai solo l'accesso.

In questo caso specifico, si tratta della cartella condivisa montata automaticamente,

Ubuntu               214153212  31893804 182259408  15% /media/sf_Ubuntu

ed è quella directory che dovrebbe essere usata per accedere alla cartella condivisa, inserendo l'utente locale nel vboxsfgruppo. Se si desidera un collegamento "migliore" nella home directory dell'utente, è sempre possibile creare un collegamento simbolico.

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

È necessario riavviare la VM per rendere effettive queste modifiche

Se si monta manualmente la cartella condivisa, è necessario utilizzare le opzioni pertinenti sul mountcomando per impostare la cartella con la proprietà corretta (ovvero le opzioni gid, uid e umask su mount). Questo perché il sistema operativo host non supporta lo stesso sistema di autorizzazioni di Linux, quindi VirtualBox non ha modo di sapere chi dovrebbe possedere i file.

Tuttavia, consiglio vivamente di configurare la cartella condivisa per il montaggio automatico (è un'impostazione sulla configurazione della cartella condivisa in VirtualBox stesso).


A scanso di equivoci, non credo che tu possa cambiare le autorizzazioni normalmente, su quel filesystem se è montato in modo regolare,

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
Quando ho provato questo, ho ricevuto il messaggio che l'utente è già nel gruppo, ma quando sto provando a cambiare un file nella cartella condivisa, ricevo un errore quando voglio salvarlo. L'errore è: impossibile salvare il file /home/m/Desktop/vbox_shared/test.tst Errore imprevisto: errore durante la ridenominazione del file temporaneo: file di testo occupato.
user654019,

Questo è un problema diverso, potenzialmente non dovuto alle autorizzazioni. Puoi creare un nuovo file o modificare un altro file. Aspetta - / home / m / Desktop / vbox_shared? Hai montato manualmente la cartella condivisa? Questo non è il percorso predefinito.
EightBitTony,

Controllando il sistema, ho scoperto che ho solo l'autorizzazione per creare o eliminare file e non per le autorizzazioni di lettura / scrittura. Come posso darlo a me stesso?
user654019,

9
Sembra che sia necessario il riavvio per renderlo effettivo.
Eric Wang,

3
TI MERITI A UNA BIRRA PER QUESTA RISPOSTA !!! Non riuscivo a far funzionare tutto questo fino a quando non mi sono imbattuto in questo. Non riesco a credere che questo non sia più là fuori. Vorrei poterlo votare più di una volta !!
Tensigh,

3

Ho appena avuto lo stesso problema con la mia cartella condivisa Win-Ubuntu e il modo in cui l'ho risolto è stato aggiungere il mio utente nel gruppo vboxsf, modificando il file / etc / group. Spero che questo funzioni per te. Qui sotto puoi trovare un breve schema di come ho modificato il file

(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
Non modificare mai / etc / group direttamente, utilizzare gli strumenti appropriati per questo lavoro (in questo caso usermod -aG <group> <user>).
raimue

Il motivo principale, se non solo, per cui questo è raccomandato è perché se si commette un errore accidentale aggiornando manualmente un file come / etc / group, si può invalidare il DB ed essenzialmente bloccarti.
Spencer Williams,

2

Ho avuto lo stesso problema e ho risolto l'installazione dell'ultima versione di VirtualBox Guest Additions ; nel mio caso l'aggiornamento da 4.3.8 a 4.3.10.

Al termine dell'installazione, la cartella / media / sf_name non aveva più "root" come proprietario del gruppo, ma "vboxsf" come corretto.


1

Hai provato sudo?

$sudo chown username filename

Non credo che funzioni su cartelle condivise VirtualBox.
EightBitTony,

sudo funziona ovunque! : P link
Extn3389

12
Non sono sicuro che tu sia serio, ma ti umorizzerò. La cartella condivisa montata è un vboxfsfilesystem di tipo, non onora chown.
EightBitTony,

Mi dispiace, ho pensato che potesse funzionare.
Extn3389,

1
Sì, ma non ha cambiato il proprietario. Dopo aver eseguito il comando tis in un terminale per un file e aver quindi guardato il proprietario del file, appartiene ancora a root.
user654019,

1

Se hai il lusso di controllare le opzioni per il comando mount (ad esempio se si monta manualmente o usando /etc/fstab) puoi usare l' -o uid=771opzione per il comando mount.

Una voce /etc/fstabsarebbe simile

scanresults    /data/scanresults    vboxsf    uid=771    0 0

1

Abilita l'accesso completo in lettura e scrittura a una cartella condivisa su un host Windows da un guest Ubuntu per un utente Linux non root

Questo passaggio ti consentirà di accedere a una determinata directory sul tuo computer host Windows dal terminale guest Linux. In questo esempio il nome della condivisione dal punto di vista OVB sarà vshare (che è l'impostazione predefinita), il percorso completo della directory per il sistema operativo Windows (il sistema operativo host) sarà "C: \ var \" e il percorso completo del file per accedervi dal guest vm sarà "/ vagrant", e infine il nome dell'utente per abilitare l'accesso completo in rea / write sarà "tu".

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

1. Installare i prerequisiti di Guest Additions

Installa i prerequisiti di Guest Additions emettendo il seguente comando:

 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. Installa le aggiunte degli ospiti

Non utilizzare il file .iso per scaricare e il programma di installazione da lì - semplicemente non funzionerà !!!

sudo apt-get install virtualbox-guest-dkms 

3. Modificare il proprio per la directory di condivisione da montare automaticamente all'avvio di VM

Modifica il tuo per la directory di condivisione da montare automaticamente all'avvio di vm aggiungendo le seguenti righe alla fine del tuo file fstab (nota la conf "vshare" e uid = 10001):

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

4. aggiungiti al gruppo vboxsf

Devi aggiungere te stesso al gruppo vboxsf per poter modificare come non root dal tuo vm i file sul tuo computer host. # mount sudo mount -a

sudo usermod -G vboxsf -a you 

5. riavviare e verificare

Riavvia vm e accedi tramite ssh per verificare la condivisione dei file. # ssh a vm ssh tu @ nome-host

# check as yourself that you have 
find /vagrant

0

Le aggiunte alla scatola virtuale devono essere installate di nuovo dopo aver aggiornato il sistema guest. Il problema, penso, è quando aggiorni alcuni componenti in Ubuntu, alcuni componenti sono cambiati, dopo aver installato vb-additions, sarà accessibile sf_forlder_name. Il mio problema è stato risolto in questo modo. La soluzione di Pisu funziona.


Nella mia esperienza, le aggiunte di guest box virtuali devono essere aggiornate solo quando viene aggiornato il sistema VirtualBox host. Non quando cambia software sul client. Quale software sul client hai aggiornato per renderlo necessario?
Anthon,

1
No, Nicky ha ragione. È necessario reinstallare le Aggiunte Guest se si aggiorna il kernel del SO guest.
Spencer Williams,

-2
  • Smonta le condivisioni come root
  • Apportare le modifiche necessarie con chownechmod
  • riavviare e checkout le condivisioni sono con diritti adeguati
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.