Разрешить пользователю контейнера LXC писать в качестве внешнего пользователя в смонтированный каталог

Извиняюсь за заголовок, настройка на самом деле довольно проста. У меня есть хост с пользователем по имени oli и каталог под названием /media/steve/incoming тот oli могу читать-писать-выполнять в. У меня есть привилегированный контейнер LXC, работающий под root. /media/steve/incoming устанавливается в контейнере как /incoming/ с:

lxc.mount.entry = /media/steve/incoming incoming none bind 0 0

Внутри контейнера у меня есть веб-сервер, работающий как www-data, Это должно быть в состоянии написать /incoming/,

Какие у меня есть варианты? Я могу придумать несколько идей, но у них либо есть довольно серьезные недостатки, либо я не знаю, как их реализовать:

  • Я мог бы изменить мой демон, чтобы он запускался от имени root в контейнере, но я бы предпочел, чтобы это не так. Рут записывать файлы странно в каталог (они выходят как root:oli-приобретенный на хосте).

  • Могу ли я отобразить контейнер-www-data иметь хозяинoli привс в файловой системе? Это предоставит им доступ к хосту? oli не является непривилегированным аккаунтом. Это может нанести реальный ущерб.

  • Могу ли я просто подключить его так, чтобы любой в контейнере мог писать в / входящий, и доступ выглядит так, как будто он исходит от хоста?oli?

  • ACL какая-нибудь помощь здесь?

1 ответ

ACL может сделать это успешно, потому что он делает файлы общими для нескольких пользователей на основе имени пользователя, а не номера идентификатора пользователя.

Он преобразуется в число идентификатора пользователя внутри атрибута файла.

Можно карту container-www-data иметь host-oli привс в файловой системе? Это предоставит им доступ к хосту? oli не является непривилегированным аккаунтом. Это может нанести реальный ущерб.

Вы можете запустить следующую команду на хосте, чтобы сделать lxc контейнера www-data пользователь может написать /incoming папка.

$ sudo chown oli /media/steve/incoming
$ sudo setfacl -m u:www-data:rwx /media/steve/incoming

/media/steve/incoming привязан один для /incoming из lxc контейнер.

А также /media/steve/incoming владелец уже принадлежит oli,

Так что хозяин oli можете написать это непосредственно и контейнер www-data Пользователь также может написать это напрямую.

И если setfacl Команда не существует на хосте, вы можете установить ее с помощью следующей команды.

$ sudo apt-get install acl

хостинга, www-data и контейнер www-data можно использовать другой идентификатор пользователя, так что вы можете поделиться / media / steve / входящий для идентификатора пользователя www-данных контейнера следующим образом.

Сначала получите номер пользователя www-data на контейнере.

$ cat /etc/passwd | grep "^www-data:" | awk -F ":" '{print $3}'

Тогда он покажет число, если в контейнере есть пользователь с именем www-data, userid из www-data, Во-вторых, установите атрибут файла с acl следующим образом на хосте.

$ sudo setfacl -m u:<got_number_above>:rwx /media/steve/incoming

Тогда это будет работать для контейнера.

Вы можете получить больше помощи для ACL от FilePermissionsACLs

Другие вопросы по тегам