Вопрос или проблема
На 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 может вызывать трудности, особенно в части совместимости инструментов и реализации. Попробуем разобраться в сложившейся ситуации с помощью детального анализа.
Описание Проблемы
-
Установка ACL на ZFS: Вы выполнили команду
zfs set acltype=nfsv4
для активации поддержки NFSv4 ACL на файловой системе ZFS. Судя по выводу командыecho $?
, команда выполнилась успешно (возврат 0). -
Создание файловой системы: Создаете файловую систему с помощью команды
zfs create
. Однако командыnfs4_setfacl
, используемые для установки ACL, возвращают ошибку: "Failed to instantiate ACL". -
Универсальные инструменты: Общепринятые инструменты, такие как
nfs4_setfacl
, создают ошибки при работе с NFSv4 ACL на ZFS. -
Ошибка компиляции библиотеки: Вы пытались использовать
nfs4xdr-acl-tools
, но столкнулись с ошибками компоновки при компиляции на Slackware 15.
Решение Проблемы
-
Проблемы с
nfs4_setfacl
: Инструменты, входящие в стандартные дистрибутивы Linux, такие какnfs4_setfacl
, могут не поддерживать работу с файловыми системами ZFS и NFSv4 ACL. Это связано с различиями в реализации ACL между различными файловыми системами. -
Использование корректных инструментов: Показано, что инструмент
nfs4xdr-acl-tools
может быть подходящим для работы с ZFS и NFSv4 ACL. Решение проблемы компиляции заключается в следующем:- Убедитесь, что у вас есть все необходимые зависимости, указанные в документации проекта.
- Проверьте кэширование заголовков в вашем компиляторе и корректность пути к заголовочным файлам.
- Возможно, потребуется модифицировать код, чтобы устранить "multiple definition" посредством корректировок в файлах заголовков, что может быть вызвано конфликтами в именах функций или переменных.
-
Проверка поддерживаемости системы: Убедитесь, что ваша версия ядра Linux поддерживает NFSv4 ACL для ZFS. Например, некоторые более старые версии ядра могут не иметь этой функциональности.
-
Среда разработки: Используйте виртуальную машину для сборки и тестирования инструментов, чтобы ваша окружение оставалось чистым. Slackware может не всегда быть лучшим выбором среды для подобных компиляций, поэтому использование дистрибутивов с более развитой поддержкой девелоперских инструментов может упростить задачу.
-
Альтернативные решения: Если проблема с компиляцией и использованием инструментов
nfs4xdr-acl-tools
не разрешается, рассмотрите возможность временного перехода на другую файловую систему или использование ACL через сетевые протоколы, которые проверены на совместимость в вашей оболочке.
Используя указанные выше шаги, вы сможете более качественно настроить работу с NFSv4 ACL на ZFS на вашей системе. Каждое решение требует тщательной проверки и адаптации к вашей конкретной среде работы.