Извинения за заголовок, установка на самом деле довольно проста. У меня есть хост с позвонившим пользователем oli
и названный каталог /media/steve/incoming
это oli
может read-write-execute в. В этом у меня есть привилегированный контейнер LXC, работающий под корнем. /media/steve/incoming
смонтирован в контейнере как /incoming/
с:
lxc.mount.entry = /media/steve/incoming incoming none bind 0 0
В контейнере у меня есть веб-сервер, работающий как www-data
. Это должно смочь записать в /incoming/
.
Каковы мои опции здесь? Я могу думать о нескольких идеях, но у них или есть довольно серьезные оборотные стороны, или я не знаю, как реализовать их:
Я мог изменить своего демона для выполнения как корень в контейнере, но я буду скорее, он не сделал. Корневые файлы записи странно в каталоге (они выходят как root:oli
- принадлежавший на хосте).
Я могу отобразить контейнер -www-data
иметь хост -oli
privs в файловой системе? Это предоставило бы им доступ к хосту? oli
не учетная запись unprivaliged. Это может нанести реальный ущерб.
Я могу просто связать - монтируют его таким способом, которым кто-либо в контейнере может записать в поступление/, и доступ похож, это прибывает из хоста -oli
?
ACL какая-либо справка здесь?
ACL может сделать это успешно, потому что это делает файлы, которые будут совместно использованы для многочисленных пользователей на основе числа идентификатора пользователя, а не имени пользователя.
Это преобразовывается в число идентификатора пользователя в атрибуте файла.
Я могу отобразиться container-www-data
иметь host-oli
privs в файловой системе? Это предоставило бы им доступ к хосту? oli
не учетная запись unprivaliged. Это может нанести реальный ущерб.
Можно выполнить следующую команду на хосте для создания 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
и containter's www-data
может использовать число идентификатора пользователя различия, Таким образом, можно совместно использовать/media/steve/incoming для идентификатора 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