Dateiberechtigungsprobleme mit freigegebenen Ordnern unter Virtual Box (Ubuntu Guest, Windows Host)


103

Ich verwende Ubuntu auf Virtual Box und habe einen Ordner, der zwischen dem Host (Windows) und der VM (Ubuntu) geteilt wird. Wenn ich in Ubuntu eine Datei im Freigabeordner öffne, kann ich sie nicht ändern, da der Eigentümer auf root festgelegt ist.

Wie kann ich das Eigentum an mir selbst ändern?

Hier ist die Ausgabe von ls -l:

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

Die Ausgabe von dfist:

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

Die Optionen in VM lauten automount und das Readoly ist nicht aktiviert.

Versucht zu verwenden /media/sf_Ubuntu, aber Erlaubnisfehler erhalten:

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

Bitte beachte, dass ich in der Gruppe bin 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)

Wie haben Sie den freigegebenen Ordner gemountet? Wollen Sie, dass es von den VirtualBox-Gast-Utils (dh / media / sf_something) automatisch bereitgestellt wird, oder haben Sie es manuell mithilfe des Befehls mount bereitgestellt?
EightBitTony

Können Sie auch beschreiben, wie Sie die Freigabe unter VirtualBox in Windows konfiguriert haben? Es gibt drei Optionen für die Freigabe: Nur Lesen, Automount und Permanent. Diese Optionen haben Sie ausgewählt.
EightBitTony

Bitte poste Updates zu deiner Frage - nicht als Kommentar. Bitte geben Sie die Ausgabe von dfund den Befehl an, den Sie zum manuellen Mounten des Dateisystems verwendet haben.
EightBitTony

Vielen Dank - Sie werden sehen, dass es ein / media / sf_Ubuntu-Dateisystem gibt. Dies ist Ihr freigegebener Ordner, Sie müssen ihn nicht manuell bereitstellen. Ich schlage vor, dass Sie das / home / m / Desktop-Ding umounten und einfach / media / sf_Ubuntu verwenden, was gemäß meiner Antwort unten funktioniert.
EightBitTony

@ Tony: Ich kann nicht auf diesen Ordner zugreifen. Bitte sehen Sie meine ursprüngliche Frage, die ich weitere Informationen hinzufügen
user654019

Antworten:


159

Die übliche Methode, um jetzt auf die Dateien zuzugreifen, besteht darin, VirtualBox das automatische Aktivieren des freigegebenen Ordners zu ermöglichen (der Ordner wird dann unter angezeigt /media/sf_directory_name) und anschließend Ihren regulären Ubuntu-Benutzer der vboxsfGruppe hinzuzufügen (als Root #).

# usermod -aG vboxsf <youruser>

Standardmäßig sehen die Halterungen ohne manuelle Aktion folgendermaßen aus:

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

Die vboxsfGruppe hat also vollen Zugriff. Durch Hinzufügen Ihres Benutzers zu dieser Gruppe erhalten Sie vollen Zugriff. Sie müssen sich also keine Gedanken über das Ändern der Berechtigungen machen (was auf dem Windows-Host keinen Sinn macht), sondern müssen sich nur selbst den Zugriff gewähren.

In diesem speziellen Fall ist dies der automatisch bereitgestellte freigegebene Ordner.

Ubuntu               214153212  31893804 182259408  15% /media/sf_Ubuntu

und dieses Verzeichnis sollte verwendet werden, um auf den freigegebenen Ordner zuzugreifen, indem der lokale Benutzer in die vboxsfGruppe aufgenommen wird. Wenn Sie einen besseren Link im Home-Verzeichnis Ihres Benutzers wünschen, können Sie jederzeit einen symbolischen Link erstellen.

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

Sie müssen Ihre VM neu starten, damit diese Änderungen wirksam werden

Wenn Sie den freigegebenen Ordner manuell mountbereitstellen, müssen Sie die entsprechenden Optionen im Befehl verwenden, um den Ordner mit dem richtigen Eigentümer festzulegen (dh die Optionen gid, uid und umask auf mount). Dies liegt daran, dass das Host-Betriebssystem nicht dasselbe Berechtigungssystem wie Linux unterstützt, sodass VirtualBox nicht weiß, wem die Dateien gehören sollten.

Es wird jedoch dringend empfohlen, nur den freigegebenen Ordner für die automatische Bereitstellung zu konfigurieren (dies ist eine Einstellung in der Konfiguration des freigegebenen Ordners in VirtualBox selbst).


Um Zweifel zu vermeiden, glaube ich nicht, dass Sie die Berechtigungen auf diesem Dateisystem normalerweise ändern können, wenn es auf normale Weise eingehängt wird.

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
Als ich dies versuchte, wurde die Meldung angezeigt, dass der Benutzer bereits in der Gruppe ist. Wenn ich jedoch versuche, eine Datei im Freigabeordner zu ändern, erhalte ich eine Fehlermeldung, wenn ich sie speichern möchte. Der Fehler lautet: Die Datei /home/m/Desktop/vbox_shared/test.tst konnte nicht gespeichert werden. Unerwarteter Fehler: Fehler beim Umbenennen der temporären Datei: Textdatei ausgelastet.
User654019

Das ist ein anderes Problem, möglicherweise nicht aufgrund von Berechtigungen. Können Sie eine neue Datei erstellen oder eine andere Datei ändern? Warten Sie - / home / m / Desktop / vbox_shared? Haben Sie den freigegebenen Ordner manuell bereitgestellt? Das ist nicht der Standardpfad.
EightBitTony

Beim Überprüfen des Systems habe ich festgestellt, dass ich nur die Berechtigung zum Erstellen oder Löschen von Dateien und keine Lese- / Schreibberechtigung habe. Wie kann ich es mir selbst geben?
User654019

9
Scheint, dass ein Neustart erforderlich ist, damit er wirksam wird.
Eric Wang

3
SIE VERDIENEN EIN BIER FÜR DIESE ANTWORT !!! Ich konnte das überhaupt nicht zum Laufen bringen, bis ich darauf stieß. Ich kann nicht glauben, dass es das nicht mehr gibt. Ich wünschte, ich könnte es mehr als einmal stimmen !!
Tensigh

3

Ich hatte nur das gleiche Problem mit meinem freigegebenen Win-Ubuntu-Ordner, und die Art und Weise, wie ich es löste, bestand darin, meinen Benutzer zur vboxsf-Gruppe hinzuzufügen und die Datei / etc / group zu bearbeiten. Ich hoffe, das funktioniert für Sie. Unten finden Sie ein kurzes Schema, wie ich die Datei bearbeitet habe

(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
Sie sollten / etc / group niemals direkt bearbeiten, sondern die entsprechenden Tools für diesen Job verwenden (in diesem Fall usermod -aG <group> <user>).
Raimue

Wenn Sie versehentlich eine Datei wie / etc / group manuell aktualisieren, kann dies die Datenbank ungültig machen und Sie im Wesentlichen aussperren.
Spencer Williams

2

Ich hatte das gleiche Problem und habe die Installation der neuesten Version von VirtualBox Guest Additions gelöst . In meinem Fall wurde ein Upgrade von 4.3.8 auf 4.3.10 durchgeführt.

Nach Abschluss der Installation hatte der Ordner / media / sf_name nicht mehr "root" als Gruppeneigentümer, sondern "vboxsf" als korrekt.


1

Haben Sie schon Sudo ausprobiert?

$sudo chown username filename

Ich glaube nicht, dass dies für freigegebene VirtualBox-Ordner funktioniert.
EightBitTony

Sudo funktioniert überall! : P Link
Extn3389

12
Ich bin mir nicht sicher, ob du es ernst meinst, aber ich werde dich belustigen. Der gemountete freigegebene Ordner ist ein vboxfsTyp-Dateisystem, das nicht berücksichtigt wird chown.
EightBitTony

Es tut mir leid, dass ich dachte, das könnte funktionieren.
Extn3389

1
Ja, aber es hat den Besitzer nicht geändert. Nach dem Ausführen dieses Befehls in einem Terminal für eine Datei und dem anschließenden Anzeigen des Dateieigners gehört diese weiterhin zu root.
user654019

1

Wenn Sie den Luxus haben, die Optionen für den Befehl mount zu steuern (z. B. beim manuellen Mounten oder Verwenden von /etc/fstab), können Sie die -o uid=771Option für den Befehl mount verwenden.

Ein Eintrag in /etc/fstabwürde so aussehen

scanresults    /data/scanresults    vboxsf    uid=771    0 0

1

Aktivieren Sie den vollständigen Lese- und Schreibzugriff auf einen freigegebenen Ordner auf einem Windows-Host von einem Ubuntu-Gast für einen Nicht-Root-Linux-Benutzer

In diesem Schritt können Sie vom Linux-Gast-Terminal aus auf ein bestimmtes Verzeichnis auf Ihrem Windows-Host-Computer zugreifen. In diesem Beispiel lautet der Name der Freigabe aus der OVB-Perspektive vshare (Standardeinstellung), der vollständige Verzeichnispfad zum Windows-Betriebssystem (Host-Betriebssystem) lautet "C: \ var \" und der vollständige Dateipfad zu Der Zugriff vom Gast-VM aus erfolgt mit "/ vagrant", und der Name des Benutzers, der den vollständigen Schreib- / Lesezugriff ermöglicht, lautet "Sie".

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

1. Installieren Sie die Voraussetzungen für Guest Additions

Installieren Sie die Voraussetzungen für Guest Additions, indem Sie den folgenden Befehl eingeben:

 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. Installieren Sie die Guest Additions

Verwenden Sie nicht die .iso-Datei zum Herunterladen und das Installationsprogramm von dort - es wird einfach nicht funktionieren !!!

sudo apt-get install virtualbox-guest-dkms 

3. Ändern Sie das Verzeichnis für die Freigabe, die beim Starten von VM automatisch bereitgestellt werden soll

Ändern Sie das Verzeichnis für die Freigabe, die beim Starten von VM automatisch bereitgestellt werden soll, indem Sie die folgenden Zeilen an das Ende Ihrer fstab-Datei anfügen (beachten Sie die "vshare" -Konfiguration und die uid = 10001):

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

4. Fügen Sie sich der Gruppe vboxsf hinzu

Sie müssen sich der Gruppe vboxsf hinzufügen, um die Dateien auf Ihrem Hostcomputer als Nicht-Root von Ihrer VM aus bearbeiten zu können. # mount sudo mount -a

sudo usermod -G vboxsf -a you 

5. neu starten und überprüfen

Starten Sie das VM neu und melden Sie sich über ssh an, um die Dateifreigabe zu überprüfen. # ssh zum vm ssh you @ host-name

# check as yourself that you have 
find /vagrant

0

Virtual Box-Ergänzungen müssen nach dem Upgrade Ihres Gastsystems erneut installiert werden. Ich denke, das Problem ist, dass beim Upgrade einiger Komponenten in Ubuntu einige Komponenten geändert wurden und nach der Installation von vb-additions auf sf_forlder_name zugegriffen werden kann. Mein Problem wurde auf diese Weise gelöst. Pisus Lösung funktioniert.


Nach meiner Erfahrung müssen Virtual Box-Gastzugänge nur aktualisiert werden, wenn das Host-VirtualBox-System aktualisiert wird. Nicht, wenn sich eine Software auf dem Client ändert. Welche Software auf dem Client haben Sie aktualisiert, um dies erforderlich zu machen?
Anthon

1
Nein, Nicky hat recht. Sie müssen die Guest Additions erneut installieren, wenn Sie den Kernel Ihres Gastbetriebssystems aktualisieren.
Spencer Williams

-2
  • Aktien aushängen als root
  • Nehmen Sie die gewünschten Änderungen mit chownund vorchmod
  • Neustart und Auschecken der Freigaben sind mit den richtigen Rechten
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.