PDA

Показать полную графическую версию : WinXP+VirtualBox+Debian: shared-папка (vboxsf) не даёт полного доступа в гостевой ОС


CyraxZ
15-11-2016, 01:26
В WinXP поставил VirtualBox и в качестве гостевой ОС установил Debian 8 (для разработки/отладки сайта)
Средствами VirtualBox корневую директорию сайта расшарил между гостевой ОС (Debian) и хост-машиной (WinXP). Т.е. физически все файлы сайта хранятся на хост-машине, а в гостевой ОС (Debian) эту директорию смонтировал в папку, которая является корнем сайта. Монтирование выполняется через виртуальную файловую систему vboxsf, согласно инструкции к VirtualBox:
sudo mount -t vboxsf -o uid=user,gid=user,dmode=755,fmode=644 site /home/user/www/site.ru
Монтирование выполняется нормально. Все изменения в этой директории, выполненные в гостевой машине, видны из хост-машины, и наоборот (двусторонний "шаринг"). nginx и php-процессы запускаются от пользователя user.

Проблема в том, что при запуске любой страницы, любого скрипта или любой html-ки из этой самой смонтированной директории получаем ошибку от nginx:
[crit] 467#467: *1 openat() "/home/user/www/site.ru." failed (1: Operation not permitted)
При этом в браузере страница продолжает ожидать ответа от веб-сервера (т.е. nginx после этой ошибки никакого ответа клиенту-браузеру не отдаёт) минуты 2-3, после чего в браузере отображается пустая страница, а в логах nginx никаких ошибок (например, по таймауту) не появляется. Ключевой проблемой здесь является ошибка openat() - Operation not permitted.

Проверил следующее:
1. Если из браузера запустить скрипт phpmyadmin, который физически расположен не в смонтированной директории, а в /usr/share/phpmyadmin/, то скрипт работает нормально, без каких-либо ошибок
2. Если корневую директорию сайта не монтировать, а просто создать в гостевой ОС директорию с файлами сайта, то тоже никаких проблем не наблюдается
3. Если запускать nginx от root и запрашивать статичный html-файл, возникает та же самая ошибка
4. Если выполнять монтирование с максимальными правами (указанные права выставляются на папки и файлы корректно - проверил), проблема сохраняется:
sudo mount -t vboxsf -o uid=user,gid=user,dmode=7777,fmode=7777 site /home/user/www/site.ru
sudo mount -t vboxsf -o uid=root,gid=root,dmode=7777,fmode=7777 site /home/user/www/site.ru
5. Если в гостевой ОС (Debian) попробовать изменять, удалять, корректировать файлы из смонтированной директории пользователем user, то никаких проблем с правами не наблюдается

Вопрос. Кто здесь виноват ?
Очевидно, что проблема связана с монтированием в директорию гостевой ОС директории хост-машины (виртуальная файловая система vboxsf). Но ведь для гостевой ОС эта директория для всяких-разных (или не для всех ?) операций должна выглядеть как обычная родная директория. Или не так ?

CyraxZ
15-11-2016, 01:42
Вот здесь пишут, что такие монтирования веб-проектов выполняются наура, без проблем. И сайты нормально работают, проблем с доступом нет. Только ОС, конечно, другие, но принципиальных проблем в этом нет:
http://phpclub.ru/talk/threads/%D0%A2%D0%BE%D1%80%D0%BC%D0%BE%D0%B7%D0%B0-phpstorm-9.81280/page-2#post-736535
У меня сами проекты подмонтированы в гостевые OS через shared folders,
в отличие от smbfs, shared folders и быстрая, и поддерживает все фичи вроде atime, sendfile.
Код доступен хоть в виртуалке, хоть без, консольные задачи с загрузкой по памяти, процу или диску можно запустить и под виндой.




© OSzone.net 2001-2012