Я хочу иметь возможность совместно использовать именованный том из контейнера Docker через Samba. Samba работает в хост-системе как собственный сервис (не в Docker). Контейнер Docker работает как определенный UID, поэтому все файлы в его томе также принадлежат этому UID.
Хост-система не имеет эквивалентного пользователя для рассматриваемого UID.
Чтобы убедиться, что все файлы по-прежнему принадлежат правильному UID, я хочу использовать заставить пользователя
параметр, чтобы заставить Samba обращаться ко всем файлам с UID. Вот конфигурация общего доступа:
[контейнер]
comment = контейнерное хранилище Docker
путь = /var/lib/docker/volumes/appdata/_data
заставить пользователя = 1001
действительные пользователи = # мое имя пользователя здесь
запись = да
Проблема в том, что заставить пользователя
команда не работает, поскольку она указывает идентификатор пользователя как числовой. Я вообще не могу получить доступ к общему ресурсу (я получаю сообщение об отказе в доступе от Windows), поэтому я предполагаю, что по умолчанию используется пользователь «никто», который действительно не имеет доступа к папке данных контейнера.
В документации по Samba указано, что заставить пользователя
параметр "указывает UNIX имя пользователя который будет назначен пользователем по умолчанию» (выделено мной). Похоже, это указывает на то, что вы не можете использовать числовой UID в качестве «имени пользователя».
Есть ли альтернатива, кроме ручного создания пользователя в хост-системе, соответствующего UID? Существует потенциальная угроза безопасности в том, что если другой контейнер работает под тем же UID хоста, пользователь Samba может каким-то образом получить доступ к данным другого контейнера.