У меня есть виртуальная машина сервера Ubuntu, работающая на хосте Windows 10, где папка на внешнем жестком диске передается на виртуальную машину в точке монтирования /NextCloudStorage. Я могу получить доступ к этой папке от моего обычного пользователя и от root, добавив своего обычного пользователя в группу пользователей vboxsf.
Мой файл Docker Compose включает это для передачи через /NextCloudStorage в контейнер:
volumes:
- nextcloud:/var/www/html
- .:/code
- /NextCloudStorage:/NextCloudStorage
При использовании docker exec -it nextcloud-app-1 bash я могу взаимодействовать с общей папкой в режиме реального времени, используя такие команды, как cd /NextCloudStorage, mkdir test1 и т. д.
Моя проблема в том, что приложение, работающее в контейнере, не может получить доступ к этой папке, потому что оно работает как www-data. ls команды отображают папку как пустую, и при попытке создать элемент в папке я получаю сообщение об ошибке "permission denied".
Кто-нибудь знает, как предоставить пользователю www-data доступ к этой общей папке?
Извините за длинный пост, но я должен был рассказать об этом!
Спасибо!


Вы можете попробовать добавить пользователя www-data в группу vboxsf
Для этого нам нужно выяснить идентификатор группы. In the virtual machine run
cat /etc/group
Вы увидите что-то вроде этого
Then in your container если этой группы нет создайте ее
В этом случае нам нужно использовать gid 115.
groupadd --gid 115 vboxsf
Затем добавьте эту группу в свой www-data user
usermod -aG vboxsf www-data
Обновлять: Попробуйте запустить следующую команду от имени root в контейнере
chmod -R 777 /NextCloudStorage
Попробуйте только id, то есть 997
Есть вероятность, что нам нужно создать группу. я обновлю ответ
@TarasZagajewski Обновлен ответ, если группа не существует. Не стесняйтесь проверить еще раз
к сожалению пока ничего. Команды прошли нормально, и мой файл /etc/group в контейнере теперь показывает vboxsf:x:997:www-data, но я все еще не могу перечислить каталог с ls или использовать mkdir в качестве пользователя www-data, не получая permission denied.
К сожалению, вы не против запустить ls -ld /NextCloudStorage . И выложить результаты?
Ага! Как www-data внутри контейнера я получаю 2621441 /NextCloudStorage/. Большое спасибо за настойчивость!
Рад помочь. Я хотел спросить владельца и разрешения этого каталога, если это возможно.
ls -l /NextCloudStorage/ возвращает total 0, я относительно новичок в Linux, можете ли вы предоставить команду для запуска?
Да, запустите: ls -ld /NextCloudStorage
Потрясающе, как root в контейнере я получаю drwxr-xr-x 2 root root 4096 May 8 05:06 /NextCloudStorage
Добавил еще один подход @TarasZagajewski, попробуйте
Я знаю, что не должен комментировать это, но большое спасибо, это сработало! Я думал, что обнаружил и запустил подобную команду в своем собственном исследовании, но, видимо, это не так!
Благодарю вас! К сожалению, это не работает - при запуске
usermod -aG vboxsf:x:997 www-dataя получаю ошибку "group 'vboxsf:x:997' does not exist".