OpenZFS, Linux и NFSv4 ACL

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

На Linux zfs, кажется, поддерживает nfsv4acl

zfs set acltype=nfsv4 rpool/ROOT/nas
echo $?
0

Я создаю файловую систему

zfs create -o mountpoint=/var/pub rpool/pub

и…ничего не работает

nfs4_setfacl -e /var/pub
Failed to instantiate ACL.

nfs4_setfacl -a A:fd:OWNER@:rwaDdxtTnNy,A:GROUP@:rwaDdxtTnNy,D:fd:EVERYONE@:rwaDdxtTnNy /var/pub
Failed to instantiate ACL.

Я не знаю других утилит для управления nfsv4acl.
Что я упускаю?

zfs, кажется, правильно настроен для использования nfs4acl

rpool                      acltype                nfsv4                     local
rpool/ROOT                 acltype                nfsv4                     local
rpool/ROOT/nas             acltype                nfsv4                     local
rpool/ROOT/nas@26-12-2024  acltype                nfsv4                     inherited from rpool/ROOT/nas
rpool/pub                  acltype                nfsv4                     local
rpool/root                 acltype                nfsv4                     inherited from rpool
rpool/tmp                  acltype                nfsv4                     inherited from rpool

EDIT: возможно, это приложение работает https://github.com/truenas/nfs4xdr-acl-tools, проблема в том, что оно не компилируется на Slackware 15, поэтому я не могу его протестировать

/usr/bin/libtool --mode=link gcc -o nfs4xdr_torture   nfs4xdr_torture.o   ../libnfs4acl/libnfs4acl.la -lattr  
libtool: link: gcc -o nfs4xdr_torture nfs4xdr_torture.o  ../libnfs4acl/.libs/libnfs4acl.a -lbsd -ljansson -lattr
/usr/bin/ld: ../libnfs4acl/.libs/libnfs4acl.a(nfs4_json_to_acl.o):/root/nfs4xdr-acl-tools/libnfs4acl/../include/nfs4_json.h:54: multiple definition of `flags2txt'; ../libnfs4acl/.libs/libnfs4acl.a(nfs4_ace_to_json.o):/root/nfs4xdr-acl-tools/libnfs4acl/../include/nfs4_json.h:54: first defined here
/usr/bin/ld: ../libnfs4acl/.libs/libnfs4acl.a(nfs4_json_to_acl.o):/root/nfs4xdr-acl-tools/libnfs4acl/../include/nfs4_json.h:67: multiple definition of `perms2txt'; ../libnfs4acl/.libs/libnfs4acl.a(nfs4_ace_to_json.o):/root/nfs4xdr-acl-tools/libnfs4acl/../include/nfs4_json.h:67: first defined here
/usr/bin/ld: ../libnfs4acl/.libs/libnfs4acl.a(nfs4_json_to_acl.o):/root/nfs4xdr-acl-tools/libnfs4acl/../include/nfs4_json.h:87: multiple definition of `type2txt'; ../libnfs4acl/.libs/libnfs4acl.a(nfs4_ace_to_json.o):/root/nfs4xdr-acl-tools/libnfs4acl/../include/nfs4_json.h:87: first defined here
/usr/bin/ld: ../libnfs4acl/.libs/libnfs4acl.a(nfs4_json_to_acl.o):/root/nfs4xdr-acl-tools/libnfs4acl/../include/nfs4_json.h:98: multiple definition of `aclflags2txt'; ../libnfs4acl/.libs/libnfs4acl.a(nfs4_ace_to_json.o):/root/nfs4xdr-acl-tools/libnfs4acl/../include/nfs4_json.h:98: first defined here
/usr/bin/ld: ../libnfs4acl/.libs/libnfs4acl.a(nfs4_json_to_acl.o):/root/nfs4xdr-acl-tools/libnfs4acl/../include/nfs4_json.h:107: multiple definition of `basicperms2txt'; ../libnfs4acl/.libs/libnfs4acl.a(nfs4_ace_to_json.o):/root/nfs4xdr-acl-tools/libnfs4acl/../include/nfs4_json.h:107: first defined here
/usr/bin/ld: ../libnfs4acl/.libs/libnfs4acl.a(nfs4_json_to_acl.o):/root/nfs4xdr-acl-tools/libnfs4acl/../include/nfs4_json.h:117: multiple definition of `basicflags2txt'; ../libnfs4acl/.libs/libnfs4acl.a(nfs4_ace_to_json.o):/root/nfs4xdr-acl-tools/libnfs4acl/../include/nfs4_json.h:117: first defined here
collect2: error: ld returned 1 exit status
gmake[1]: *** [../include/buildrules:47: nfs4xdr_torture] Error 1
make: *** [Makefile:53: default] Error 2

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

Конфигурация и использование NFSv4 ACL (списков управления доступом) в OpenZFS на Linux может вызывать трудности, особенно в части совместимости инструментов и реализации. Попробуем разобраться в сложившейся ситуации с помощью детального анализа.

Описание Проблемы

  1. Установка ACL на ZFS: Вы выполнили команду zfs set acltype=nfsv4 для активации поддержки NFSv4 ACL на файловой системе ZFS. Судя по выводу команды echo $?, команда выполнилась успешно (возврат 0).

  2. Создание файловой системы: Создаете файловую систему с помощью команды zfs create. Однако команды nfs4_setfacl, используемые для установки ACL, возвращают ошибку: "Failed to instantiate ACL".

  3. Универсальные инструменты: Общепринятые инструменты, такие как nfs4_setfacl, создают ошибки при работе с NFSv4 ACL на ZFS.

  4. Ошибка компиляции библиотеки: Вы пытались использовать nfs4xdr-acl-tools, но столкнулись с ошибками компоновки при компиляции на Slackware 15.

Решение Проблемы

  1. Проблемы с nfs4_setfacl: Инструменты, входящие в стандартные дистрибутивы Linux, такие как nfs4_setfacl, могут не поддерживать работу с файловыми системами ZFS и NFSv4 ACL. Это связано с различиями в реализации ACL между различными файловыми системами.

  2. Использование корректных инструментов: Показано, что инструмент nfs4xdr-acl-tools может быть подходящим для работы с ZFS и NFSv4 ACL. Решение проблемы компиляции заключается в следующем:

    • Убедитесь, что у вас есть все необходимые зависимости, указанные в документации проекта.
    • Проверьте кэширование заголовков в вашем компиляторе и корректность пути к заголовочным файлам.
    • Возможно, потребуется модифицировать код, чтобы устранить "multiple definition" посредством корректировок в файлах заголовков, что может быть вызвано конфликтами в именах функций или переменных.
  3. Проверка поддерживаемости системы: Убедитесь, что ваша версия ядра Linux поддерживает NFSv4 ACL для ZFS. Например, некоторые более старые версии ядра могут не иметь этой функциональности.

  4. Среда разработки: Используйте виртуальную машину для сборки и тестирования инструментов, чтобы ваша окружение оставалось чистым. Slackware может не всегда быть лучшим выбором среды для подобных компиляций, поэтому использование дистрибутивов с более развитой поддержкой девелоперских инструментов может упростить задачу.

  5. Альтернативные решения: Если проблема с компиляцией и использованием инструментов nfs4xdr-acl-tools не разрешается, рассмотрите возможность временного перехода на другую файловую систему или использование ACL через сетевые протоколы, которые проверены на совместимость в вашей оболочке.

Используя указанные выше шаги, вы сможете более качественно настроить работу с NFSv4 ACL на ZFS на вашей системе. Каждое решение требует тщательной проверки и адаптации к вашей конкретной среде работы.

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

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