Проблемы с правами доступа к файлам в общих папках в Virtual Box (Ubuntu Guest, Windows Host)

103

Я использую Ubuntu в Virtual Box, и у меня есть папка, которая является общей для хоста (Windows) и виртуальной машины (Ubuntu). Когда я открываю какой-либо файл в папке общего доступа в Ubuntu, я не могу изменить его, так как его владелец имеет права root.

Как я могу изменить право собственности на себя?

Вот вывод 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)
user654019
источник
Как вы смонтировали общую папку? Вы разрешаете автоматическое монтирование гостевых утилит VirtualBox (т.е. / media / sf_something) или вы монтировали его вручную с помощью команды mount?
EightBitTony
Кроме того, можете ли вы описать, как вы настроили общий ресурс в VirtualBox в Windows? Есть три варианта для общего ресурса, только для чтения, автомонтирование и постоянный, какие опции вы отметили.
EightBitTony
Пожалуйста, публикуйте обновления на свой вопрос, а не комментарии. Пожалуйста, включите вывод dfи команду, которую вы использовали для ручного монтирования файловой системы.
EightBitTony
Спасибо - вы увидите, что есть файловая система / media / sf_Ubuntu. Это ваша общая папка, вам не нужно монтировать ее вручную. Я предлагаю вам отключить / home / m / Desktop и просто использовать / media / sf_Ubuntu, который работает согласно моему ответу ниже.
EightBitTony
@ Тони: я не могу получить доступ к этой папке. Пожалуйста, смотрите мой оригинальный вопрос, который я добавляю больше информации
user654019

Ответы:

159

Обычный способ получить доступ к файлам сейчас - это позволить VirtualBox автоматически смонтировать общую папку (в результате она будет отображаться в папке /media/sf_directory_name), а затем добавить своего обычного пользователя Ubuntu в 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

Вам нужно будет перезагрузить виртуальную машину, чтобы эти изменения вступили в силу.

Если вы вручную монтируете общую папку, то вам нужно использовать соответствующие параметры в mountкоманде, чтобы установить папку с нужным владельцем (т. Е. Параметры gid, uid и umask mount). Это связано с тем, что хост-операционная система не поддерживает ту же систему разрешений, что и 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$ 
EightBitTony
источник
2
Когда я попробовал это, я получил сообщение, что пользователь уже находится в группе, но когда я пытаюсь изменить файл в общей папке, я получаю сообщение об ошибке, когда хочу сохранить его. Ошибка: Не удалось сохранить файл /home/m/Desktop/vbox_shared/test.tst Неожиданная ошибка: ошибка при переименовании временного файла: текстовый файл занят.
user654019
Это другая проблема, возможно, не из-за разрешений. Вы можете создать новый файл или изменить другой файл. Держись - / home / m / Desktop / vbox_shared? Вы вручную смонтировали общую папку? Это не путь по умолчанию.
EightBitTony
Проверяя систему, я обнаружил, что у меня есть только разрешение на создание или удаление файлов, а не разрешение на чтение / запись. Как я могу дать это себе?
user654019
9
Кажется, перезагрузка необходима, чтобы это вступило в силу.
Эрик Ван
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.

LuisaFernanda
источник
2
Вы никогда не должны редактировать / etc / group напрямую, используйте соответствующие инструменты для этой работы (в этом случае usermod -aG <group> <user>).
Райм
Основная, если не единственная, причина, по которой это рекомендуется, заключается в том, что если вы случайно допустите ошибку при обновлении файла, такого как / etc / group, это может сделать недействительной БД и, по сути, заблокировать вас.
Спенсер Уильямс
2

У меня была та же проблема, и я решил установить последнюю версию VirtualBox Guest Additions ; в моем случае было обновление с 4.3.8 до 4.3.10.

Когда установка была завершена, в папке / media / sf_name больше не было «root» в качестве владельца группы, а «vboxsf» в качестве правильного.

Pisu
источник
1

Вы пробовали sudo?

$sudo chown username filename
Extn3389
источник
Я не верю, что это работает на общих папках VirtualBox.
EightBitTony
sudo работает везде! : P ссылка
Extn3389
12
Я не уверен, если вы серьезно, но я буду шутить с вами. Смонтированная общая папка является vboxfsфайловой системой типа, она не соответствует chown.
EightBitTony
Извините, я просто подумал, что это может сработать.
Extn3389
1
Да, но это не изменило владельца. После выполнения команды tis в терминале для файла, а затем поиска владельца файла, он все еще принадлежит пользователю root.
user654019
1

Если у вас есть возможность управлять параметрами команды mount (например, при монтировании вручную или с помощью /etc/fstab), вы можете использовать эту -o uid=771опцию для команды mount.

Запись в /etc/fstabбудет выглядеть как

scanresults    /data/scanresults    vboxsf    uid=771    0 0
Мутант Боб
источник
1

Включить полный доступ для чтения и записи в общую папку на хосте Windows от гостя Ubuntu для пользователя без полномочий root

Этот шаг позволит вам получить доступ к определенной директории на вашем хост-компьютере Windows из гостевого терминала Linux. В этом примере имя общего ресурса с точки зрения OVB будет vshare (по умолчанию), полный путь к каталогу ОС Windows (хост-ОС) будет «C: \ var \», а полный путь к файлу - доступ к нему из гостевой виртуальной машины будет "/ vagrant", и, наконец, имя пользователя, который разрешит полный доступ к записи / записи, будет "вы".

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

1. Установите гостевые дополнения

Установите предварительные условия для гостевых дополнений, введя следующую команду:

 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 для автоматического монтирования при загрузке виртуальной машины.

Измените ваш каталог dir для автоматического монтирования при загрузке vm, добавив следующие строки в конец файла fstab (обратите внимание на conf «vshare» и uid = 10001):

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

4. добавить себя в группу vboxsf

Вы должны добавить себя в группу vboxsf, чтобы иметь возможность редактировать как не-root из вашего vm файлы на вашем хост-компьютере. # mount sudo mount -a

sudo usermod -G vboxsf -a you 

5. перезагрузите компьютер и проверьте

Перезагрузите виртуальную машину и войдите через ssh, чтобы проверить совместное использование файлов. # ssh к vm ssh you @ host-name

# check as yourself that you have 
find /vagrant
Йордан Георгиев
источник
0

Дополнения виртуальной коробки должны быть установлены снова после обновления вашей гостевой системы. Проблема, я думаю, в том, что когда вы обновляете некоторые компоненты в Ubuntu, некоторые компоненты меняются, после установки vb-дополнений будет доступно sf_forlder_name. Моя проблема решена таким способом. Решение Пису работает.

Nicky
источник
По моему опыту, дополнения гостевых виртуальных ящиков нужно обновлять только при обновлении системы VirtualBox. Не когда какое-либо программное обеспечение на клиенте меняется. Какое программное обеспечение на клиенте вы обновили, чтобы сделать это необходимым?
Anthon
1
Нет, Никки прав. Вы должны переустановить гостевые дополнения, если обновляете ядро ​​гостевой ОС.
Спенсер Уильямс
-2
  • Размонтировать акции как root
  • Внесите необходимые изменения с помощью chownиchmod
  • перезагрузка и проверка акций с соответствующими правами
андрей
источник