Как настроить NFS для установки разрешений 775 для всех новых файлов/каталогов?

Как настроить NFS для установки разрешений 775 для всех новых файлов/каталогов?

У меня есть сервер под управлением Ubuntu 18.04 с настройкой NFS. У меня есть несколько служб, которые помещают/обрабатывают файлы в этом ресурсе, а также другие клиенты, получающие к нему доступ по сети. Я хочу, чтобы сервер NFS установил разрешения по умолчанию для всех новых файлов/папок на 775.

Я установил sфлаг на папку, чтобы все новые файлы и папки наследовали одну и ту же группу, так что все пользователи этой группы могли создавать и изменять файлы в этой папке. Но я не могу заставить NFS сделать это. Он только создал новые файлы с 644 и папки с 2755.

Вот мой/etc/exports/

/srv/nfs                192.168.11.0/24(ro,fsid=0,no_subtree_check,)
/srv/nfs/lpt-2tb        192.168.1.0/24(rw,sync,all_squash,no_subtree_check,insecure,anonuid=1002,anongid=1002)

1002 — это идентификатор nfsпользователя.

Я пробовал umask и acl, оба безрезультатно.

Я создал домашний каталог для пользователя nfs и поместил umask 002в него ~/.profile.

Я попробовал установить ACL для общей папки

/srv/nfs/lpt-2tb$ sudo setfacl -d --set u::rwx,g::rwx,o::r-x .
/srv/nfs/lpt-2tb$ sudo setfacl -R -m u::rwx,g::rwx .

/srv/nfs/lpt-2tb$ sudo getfacl .
# file: .
# owner: nfs
# group: nfs
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

Я пробовал изменить конфигурацию nfs-server, расположенную в /lib/systemd/system/nfs-server.serviceи добавить туда UMask=002в [Service]разделе. Это сработало для некоторых других служб, которые я создал сам, но не для NFS.

Я перезапускал службу NFS и даже перезагружался после всех этих изменений, но когда я копирую файл на общую папку со своего ноутбука, у него все равно есть права доступа 644.

drwxr-sr-x+ 2 nfs nfs      4096 Apr  5 20:34  acl2
-rw-r--r--  1 nfs nfs    434506 Mar  7 21:31  acl_test.png

---РЕДАКТИРОВАТЬ---

Вот вывод acl для файла и папки

/srv/nfs/lpt-2tb$ sudo getfacl acl_test.png
# file: acl_test.png
# owner: nfs_share
# group: kodi
user::rw-
group::r--
other::r--

/srv/nfs/lpt-2tb$ sudo getfacl acl2
# file: acl2
# owner: nfs_share
# group: kodi
# flags: -s-
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

---ОБНОВЛЕНИЕ---

Я проверил, что мой сервер работает на nfs v2-3-4, но мой клиент подключается через v3, и я не могу его переопределить. Я попробую проверить, исправляет ли v4, когда мне удастся заставить его работать.

На данный момент я отказался от поиска чистого решения и просто запущу задание cron, которое будет периодически проверять и исправлять разрешения.

решение1

Во-первых, то, что вы пытаетесь сделать с umask, не сработает. umask — это штука для каждого процесса, а важен процесс создания файла. Umask пользователя nfs на сервере NFS (если вы это имели в виду) не будет иметь значения, когда файлы создаются пользователем nfs на клиенте NFS, а umask самой службы сервера NFS вообще ни на что не должен влиять.

Далее вы упоминаете, что получаете неправильные разрешения, когда копируете файл в общий ресурс NFS. Если вы буквально имеете в виду копирование, как в команде "cp", то это недействительный тест. Команда cp имеет различные особые действия, когда дело касается разрешений - в отличие от большинства программ, она не просто создает файл и оставляет разрешения по умолчанию, она фактически возвращается и меняет разрешения на нем. Вот одно место, где это обсуждалось в прошлом:

https://serverfault.com/questions/183800/why-does-cp-not-respect-acls

Я использую команду "touch" для создания файлов для такого рода тестирования. Попробуйте, и вы, возможно, обнаружите, что ваша настройка ACL уже работает нормально, просто команда cp не учитывает некоторые вещи.

Связанный контент