Проблемы с разрешениями на совместное использование хранилища Proxmox LXC

Вопрос или проблема

Я совершенно новичок в этих средах, но пытаюсь учиться. Я установил Proxmox на один SSD, затем подключил один HDD (/dev/sdb) к системе для хранения медиафайлов. Основная идея заключалась в создании одного контейнера для приложения Plex и одного для приложения rtorrent. Я хотел бы разделить одно и то же пространство (диск) между этими контейнерами.

На хосте я смонтировал /dev/sdb1 в /mnt/mediastorage и создал пользователя под названием “mediastorage” (110:117) и предоставил доступ к этому пространству. Обоим контейнерам я добавил это (/mnt/mediastorage) в точку монтирования /mediastorage. Вот так:

mp0: /mnt/mediastorage/,mp=/mediastorage

После этого я попытался предоставить доступ к этим файлам пользователю plex (107:115) в контейнере “plex”:

lxc.idmap: u 0 100000 107
lxc.idmap: u 107 110 1
lxc.idmap: u 108 100125 64410
lxc.idmap: g 0 100000 115
lxc.idmap: g 115 117 1
lxc.idmap: g 116 100136 64399

На хосте я сделал это:

root@proxmox:~# cat /etc/subuid
root:100000:65536
root:110:1
root@proxmox:~# cat /etc/subgid
root:100000:65536
root:117:1

Позже я создал другой контейнер, где создал пользователя под названием rtorrent (107:115) и сделал ту же настройку, как в контейнере “plex”.

Был момент, когда все казалось в порядке, но после перезагрузки (хоста) произошли непонятные вещи, такие как это: предыдущая тема, где это началось

Замечено, что в контейнере “plex” появилась новая запись в файле /etc/passwd:

mediastorage:x:108:116:...etc

/etc/group:

mediastorage:x:116:

-их там не было раньше, и контейнер был в выключенном состоянии.

root@plex:/# ls -al /home
total 12
drwxr-xr-x  3 root   root    4096 Jan 23 20:57 .
drwxr-xr-x 23 root   root    4096 Jan 24 22:42 ..
drwxr-xr-x  2 nobody nogroup 4096 Jan 23 20:57 mediastorage

Может кто-нибудь объяснить, что здесь произошло, пожалуйста? Как я могу достичь своей основной идеи? (разделить хранилище между контейнерами) Возможно ли это таким образом?

РЕДАКЦИЯ 1: Переустановил контейнер, сначала смонтировал /mediastorage, затем установил Plex, затем добавил отображение UID в конфигурацию контейнера. (Где-то я читал, что, возможно, это сработает). Теперь хранилище работает, но служба Plex не может запуститься из-за проблем с разрешениями. С хоста — диск lxc контейнера смонтирован как /mnt/lxc102:

/mnt/lxc102/etc/passwd:
plex:x:107:115::/var/lib/plexmediaserver:/bin/bash
/mnt/lxc102/etc/group:
plex:x:115:
ls -al /mnt/lxc102:
drwxr-xr-x  2 100000 100000  4096 Jan 25 23:22 mediastorage
ls -al /mnt/lxc102/var/lib:
drwxr-xr-x  3 100107 100115 4096 Jan 25 23:25 plexmediaserver

В контейнере директория plexmediaserver снова показывается как nobody:nogroup.

Я столкнулся с той же проблемой и решил ее, добавив unprivileged: 0 в файл /etc/pve/lxc/???.conf (где ??? – это ID вашего lxc контейнера).

Ответ или решение

Для решения проблемы с общим хранилищем и правами доступа в Proxmox LXC среде, важно сначала понять основные принципы работы с контейнерами LXC и правами доступа на сторонах хоста и контейнеров. В данном случае, вы хотите настроить доступ к одному и тому же дисковому пространству для нескольких контейнеров с различными приложениями, такими как Plex и rtorrent. Давайте разберем шаги, которые помогут решить вашу проблему.

Проблемы и причины

  1. Проблемы с UID/GID: Контейнеры LXC используют пользователей на хосте (через подмену идентификаторов) для управления безопасностью и правами. Если индексы пользователей (UID) и групп (GID) на хосте и в контейнере не совпадают, это может привести к проблемам с правами доступа.

  2. Проблемы с привилегиями: Установка неправильно сконфигурированных привилегий (например, unprivileged 0) может повлиять на монтирование файловой системы и доступ к ней.

  3. Автогенерация пользователей: Появление непредвиденных пользователей может быть вызвано некорректной настройкой или конфигурацией маппинга пользователей, что может случиться из-за перезагрузок или изменения конфигураций.

Решение

С учетом приведенных проблем, рассмотрим, как можно решить задачу.

1. Конфигурация маппинга пользователей

Убедитесь, что на стороне хоста и контейнера настроен корректный маппинг пользователей. Пример конфигурации:

lxc.idmap: u 0 100000 107
lxc.idmap: u 107 110 1
lxc.idmap: u 108 100125 64410
lxc.idmap: g 0 100000 115
lxc.idmap: g 115 117 1
lxc.idmap: g 116 100136 64399

Это позволяет пользователям с ID 107 пользоваться директориями, монтированными в контейнере.

2. Редактирование конфигурации контейнера

Прежде всего, добавьте строку unprivileged: 0 в файл конфигурации контейнера /etc/pve/lxc/???.conf. Это изменяет модель прав доступа, позволяя контейнеру работать с честными привилегиями, приближая работу контейнера к режиму реальных серверов.

3. Проверка прав доступа к диску

Проверьте права и принадлежность директорий, монтируемых в контейнер:

chown -R 110:117 /mnt/mediastorage
chmod -R 755 /mnt/mediastorage

Это гарантирует, что пользователь "mediastorage" имеет нужные права на директории и файлы.

4. Мониторинг и проверка логов

После внесения изменений перезагрузите контейнер и проверьте состояние служб Plex и других приложений. Используйте системные логи (journalctl, syslog) для отслеживания возникших проблем.

5. Тестирование и отладка

Регулярно проверяйте конфигурацию и поведение контейнеров после перезагрузок. Это помогает в выявлении причин, связанных с нестабильной конфигурацией.

Таким образом, тщательное планирование маппинга пользователей и правильная настройка прав на уровне хоста помогут обеспечить правильную работу контейнеров с общими ресурсами.

Оцените материал
Добавить комментарий

Капча загружается...