Назад | Перейти на главную страницу

Разрешения GlusterFS на разных клиентах

У меня проблема с использованием GlusterFS для замены существующей, не HA, настройки NFS для обмена данными между машинами. Сначала немного о конфигурации:

Доказательство концепции glusterfs - это установка с двумя машинами и реплицированным томом. Затем есть 2 клиента, которые импортируют этот том. Один клиент - это SFTP-сервер, на котором клиенты могут подключаться и отправлять свои файлы, а другой - сервер, на котором работают наши приложения.

Проблема, с которой я сталкиваюсь, касается пользователей и разрешений. Пользователь, который подключается к серверу SFTP, будет заключен в тюрьму в определенном каталоге (chroot), а SFTP требует строгих разрешений (каталог, которым должен владеть пользователь root, и root, чтобы быть единственным пользователем, имеющим разрешение на запись). В то же время приложение на другом сервере, работающем от имени конкретного пользователя, потребуется полный доступ к дереву каталогов.

В установке, которую я заменяю, используется NFS, а экспорт монтируется с разными правами собственности / разрешениями (с использованием параметров uid и gid при монтировании) на двух клиентах; таким образом пользователи на двух серверах получают необходимые разрешения.

GlusterFS, с другой стороны, AFAIK, не позволяет монтировать том с определенным владельцем на каждой машине. Я знаю, что GlusterFS совместима с POSIX, и я могу использовать стандартные системы разрешений и ACL.

Я думал и / или тестировал несколько вариантов, но ни один из них меня не устраивает.

Сам том и все его содержимое принадлежат пользователю root и группе root.

Есть ли у кого-нибудь из вас идеи получше? Или знает функцию GlusterFS, которая позволяет мне более простую настройку?

Заранее спасибо.

Думаю, я нашел приемлемое решение. Я забыл о поведении демона SFTP. Это правда, что SFTP требует, чтобы каталог jail принадлежал пользователю root и только root имел права записи. Но подкаталоги могут иметь любое разрешение.

Вместо того, чтобы настраивать ACL для корня тома gluster, я изменяю ACL только для содержимого каталога jail следующим образом:

Клиент 1 - Сервер приложений

root@appsrv$ cd /path/to/gluster/volume
root@appsrv$ chown -R root:root *
root@appsrv$ chmod -R 2750 *
root@appsrv$ ls -la
total 6
drwxr-x--- 14 root    root      ./
drwxr-xr-x  4 appuser appgroup  ../
drwxr-xr-x  3 root    root      .trashcan/
drwxr-s---  5 root    root      User1/
drwxr-s---  5 root    root      User2/
drwxr-s---  5 root    root      User3/

root@appsrv$ setfacl -Rm u:appuser:rwx */*
root@appsrv$ setfacl -Rm g:appgroup:rx */*
root@appsrv$ setfacl -Rdm u:appuser:rwx */*
root@appsrv$ setfacl -Rdm g:appgroup:rx */*

root@appsrv$ ls -la
total 6
drwxr-x---  14 root    root      ./
drwxr-xr-x   4 appuser appgroup  ../
drwxr-xr-x   3 root    root      .trashcan/
drwxr-s---+  5 root    root      User1/
drwxr-s---+  5 root    root      User2/
drwxr-s---+  5 root    root      User3/

Клиент 2 - SFTP-сервер

root@sftpsrv$ cd /path/to/gluster/volume
root@sftpsrv$ setfacl -Rm g:sftpgroup:rx *
root@sftpsrv$ setfacl -Rm g:sftpgroup:rwx */input
root@sftpsrv$ setfacl -Rdm g:sftpgroup:rx *
root@sftpsrv$ setfacl -dRm g:sftpgroup:rwx */input

root@sftpsrv$ ls -la
total 6
drwxr-x---  14 root root ./
drwxr-xr-x   4 root root ../
drwxr-xr-x   3 root root .trashcan/
drwxr-x---+  5 root root User1/
drwxr-x---+  5 root root User2/
drwxr-x---+  5 root root User3/

Теперь SFTP работает правильно и не жалуется на разрешения, а сервер приложений имеет полный доступ туда, где ему нужно.