Новый сервер по уму: различия между версиями
Владимир (обсуждение | вклад) Новая страница: «Что я этим хочу сказать? То что сейчас у меня на сервере полный хаус по части прав для каталогов на сервере. Пользователи из других контейнеров не могут зачастую даже прочитать файлы, что ух говорить о записи. Причиной тому является то что каждый сервис...» |
Владимир (обсуждение | вклад) мНет описания правки |
||
| Строка 12: | Строка 12: | ||
Но похоже я сильно заблуждаюсь, и это решается вообще на уровне монтирования каталога, не нужны все эти танцы с бубном вокруг NFS... | Но похоже я сильно заблуждаюсь, и это решается вообще на уровне монтирования каталога, не нужны все эти танцы с бубном вокруг NFS... | ||
Я перепробовал все методы настройки на уровне контейнера, но это не дало предсказуемый результат. В одном случае это портит сам контейнер, в другом настройки прост игнорируются, так как не поддерживаются. | |||
Поэтому решение с использованием NFS и настройкой сервера для анонимизации данных. | |||
Тогда начну с этого: | |||
Я создаю контейнер NAS с привидениями, и устанавливаю в него NFS. Кстати я включаю все фичи для этого контейнера (Nesting, NFS, SMB/CIFS, FUSE). | |||
[''Возможно если мне будет не сильно лень, я вставлю сюда картинку настроек, сейчас мне кажется это настолько само собой разумевшемся, что не понятно даже зачем на это тратить время''] | |||
Далее я настраиваю контейнер, базовая настройка у мен описана на странице "Сервер Proxmox" в разделе "контейнеры" | |||
После чего создаю пользователя '''user''' | |||
adduser user | |||
usermod -a -G sudo user | |||
После чего установлю NFS сервер | |||
apt install nfs-kernel-server -y | |||
Теперь уже от имени пользователя user, пойду настраивать NFS и каталоги | |||
sudo nano /etc/exports | |||
/nas 192.168.1.0/24(rw,sync,no_subtree_check,all_squash,anonuid=1000,anongid=1000) | |||
это набор опций, которые определяют поведение NFS-сервера при предоставлении доступа к указанному ресурсу: | |||
* <code>rw</code> - разрешает чтение и запись для клиентов. Если бы была указана только <code>ro</code>, то доступ был бы только на чтение. | |||
* <code>sync</code> - указывает, что все операции записи будут синхронизированы на диск перед отправкой подтверждения клиенту. Это улучшает надежность, но может снизить производительность. | |||
* <code>no_subtree_check</code> - отключает проверку поддеревьев. Это полезно, если вы экспортируете корневую директорию и не хотите, чтобы сервер проверял права доступа для каждого подкаталога. | |||
* <code>all_squash</code> - все пользователи и группы на клиентских машинах будут "сжаты" (сквошены) в анонимного пользователя на сервере. Это означает, что независимо от того, какой пользователь выполняет операцию на клиентской машине, на сервере она будет выполнена от имени указанного анонимного пользователя. | |||
* <code>anonuid=1000</code> - UID (идентификатор пользователя) для анонимного пользователя. В данном случае это 1000, что обычно соответствует какому-то конкретному пользователю в системе. | |||
* <code>anongid=1000</code> - GID (групповой идентификатор) для анонимного пользователя. Аналогично, это 1000, что соответствует группе в системе. | |||
Такая вот настройка. При данной настройке как указано выше как раз выполняется мой запрос. Ключевое тут <code>all_squash</code> и 1000. Ну в общем вы поняли. Раз уж я понял своим скудоумием в линуксах, то и все поймут. | |||
В общем теперь можно к этому серверу подключаться, клиентами, и пробовать что то писать или читать. | |||
Версия от 18:06, 23 января 2025
Что я этим хочу сказать?
То что сейчас у меня на сервере полный хаус по части прав для каталогов на сервере. Пользователи из других контейнеров не могут зачастую даже прочитать файлы, что ух говорить о записи. Причиной тому является то что каждый сервис горазд записывать данный от разного пользователя.
Я решил что все кто записывает на общее хранилище как то должны быть в одной правовой области.
По итогу решение следующее:
Создается один LXC контейнер, например его будут звать NAS, с привилегиями, для качественного NFS, в него перемонтирован каталог из сервера proxmox.
А остальные контейнеры подключаются к NAS по NFS. А NFS сервер настроен таким образом чтобы все клиенты записывали данные не имея происхождения. В моем случае это user. Все файлы созданные клиентами NFS будут созданы под пользователем user. Тем самым я попытаюсь решить вопрос поставленный выше.
Но похоже я сильно заблуждаюсь, и это решается вообще на уровне монтирования каталога, не нужны все эти танцы с бубном вокруг NFS...
Я перепробовал все методы настройки на уровне контейнера, но это не дало предсказуемый результат. В одном случае это портит сам контейнер, в другом настройки прост игнорируются, так как не поддерживаются.
Поэтому решение с использованием NFS и настройкой сервера для анонимизации данных.
Тогда начну с этого:
Я создаю контейнер NAS с привидениями, и устанавливаю в него NFS. Кстати я включаю все фичи для этого контейнера (Nesting, NFS, SMB/CIFS, FUSE).
[Возможно если мне будет не сильно лень, я вставлю сюда картинку настроек, сейчас мне кажется это настолько само собой разумевшемся, что не понятно даже зачем на это тратить время]
Далее я настраиваю контейнер, базовая настройка у мен описана на странице "Сервер Proxmox" в разделе "контейнеры"
После чего создаю пользователя user
adduser user
usermod -a -G sudo user
После чего установлю NFS сервер
apt install nfs-kernel-server -y
Теперь уже от имени пользователя user, пойду настраивать NFS и каталоги
sudo nano /etc/exports
/nas 192.168.1.0/24(rw,sync,no_subtree_check,all_squash,anonuid=1000,anongid=1000)
это набор опций, которые определяют поведение NFS-сервера при предоставлении доступа к указанному ресурсу:
rw- разрешает чтение и запись для клиентов. Если бы была указана толькоro, то доступ был бы только на чтение.sync- указывает, что все операции записи будут синхронизированы на диск перед отправкой подтверждения клиенту. Это улучшает надежность, но может снизить производительность.no_subtree_check- отключает проверку поддеревьев. Это полезно, если вы экспортируете корневую директорию и не хотите, чтобы сервер проверял права доступа для каждого подкаталога.all_squash- все пользователи и группы на клиентских машинах будут "сжаты" (сквошены) в анонимного пользователя на сервере. Это означает, что независимо от того, какой пользователь выполняет операцию на клиентской машине, на сервере она будет выполнена от имени указанного анонимного пользователя.anonuid=1000- UID (идентификатор пользователя) для анонимного пользователя. В данном случае это 1000, что обычно соответствует какому-то конкретному пользователю в системе.anongid=1000- GID (групповой идентификатор) для анонимного пользователя. Аналогично, это 1000, что соответствует группе в системе.
Такая вот настройка. При данной настройке как указано выше как раз выполняется мой запрос. Ключевое тут all_squash и 1000. Ну в общем вы поняли. Раз уж я понял своим скудоумием в линуксах, то и все поймут.
В общем теперь можно к этому серверу подключаться, клиентами, и пробовать что то писать или читать.