Новый сервер по уму: различия между версиями

Материал из wolfram
Перейти к навигации Перейти к поиску
Новая страница: «Что я этим хочу сказать? То что сейчас у меня на сервере полный хаус по части прав для каталогов на сервере. Пользователи из других контейнеров не могут зачастую даже прочитать файлы, что ух говорить о записи. Причиной тому является то что каждый сервис...»
 
мНет описания правки
Строка 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. Ну в общем вы поняли. Раз уж я понял своим скудоумием в линуксах, то и все поймут.

В общем теперь можно к этому серверу подключаться, клиентами, и пробовать что то писать или читать.