Zfs: Поддержка NFS / POSIX ACL

Созданный на 23 мар. 2011  ·  51Комментарии  ·  Источник: openzfs/zfs

Было бы хорошо иметь поддержку POSIX ACL.
Как я вижу, zfs уже поддерживает xattr, а некоторые другие файловые системы сделали поддержку ACL поверх xattr. Я не знаю внутреннего устройства, но эта задача может быть простой в реализации.

Самый полезный комментарий

ACL Posix в стиле Linux были реализованы как xattr и объединены в master. Они хранятся независимо от собственных списков ACL NFS и не конфликтуют. Для включения этой функции было добавлено новое свойство набора данных acltype . Для наилучшей производительности настоятельно рекомендуется установить как acltype = posixacl, так и = sa . Для получения дополнительной информации см. Обновленную страницу руководства:

       acltype=noacl | posixacl

           Controls  whether  ACLs  are  enabled and if so what type of ACL to
           use.  When a file system has the acltype property set to noacl (the
           default)  then  ACLs are disabled.  Setting the acltype property to
           posixacl indicates Posix ACLs should be used.  Posix ACLs are  spe-
           cific  to  Linux  and are not functional on other platforms.  Posix
           ACLs are stored as an xattr and therefore will  not  overwrite  any
           existing ZFS/NFSv4 ACLs which may be set.  Currently only posixacls
           are supported on Linux.

           To obtain the best performance  when  setting  posixacl  users  are
           strongly encouraged to set the xattr=sa property.  This will result
           in the Posix ACL being stored more efficiently on disk.  But  as  a
           consequence of this all new xattrs will only be accessable from ZFS
           implementations which support the xattr=sa property.  See the xattr
           property for more details.

Все 51 Комментарий

К сожалению, все немного сложнее, чем кажется на первый взгляд.

Внутренне ZFS полностью поддерживает и обеспечивает соблюдение ACL в стиле NFS. К сожалению, в Linux существующие инструменты работают только со списками ACL в стиле Posix. Была проделана некоторая работа по внедрению модели ACL NFS в Linux под названием Rich-ACLs. Для интеграции с новой цепочкой инструментов Rich-ACL ZFS необходимо предоставить виртуальный интерфейс system.richacl xattr. Этот xattr не будет храниться, как другие xattr, а вместо этого будет интегрирован с zfs_getacl () и zfs_setacl (). Этот хук xattr будет отвечать за преобразование vsecattr_t в линейный поток байтов для xattr и обратно.

ACL Posix можно легко поддерживать, добавляя несколько перехватчиков и используя существующие функции поддержки Posix ACL. Однако может быть лучше не реализовывать их, чтобы избежать проблем с согласованностью между Posix и расширенными списками ACL (NFS / ZFS).

Спасибо за описание. Я думаю, что POSIX ACL тоже может быть полезен, если есть приложения, которые поддерживают POSIX ACL. Насколько я помню, в самбе есть что-то подобное. У rsync есть поддержка ACL, но я не уверен, что это только POSIX, потому что человек говорит просто «ACL». Не знаю о других приложениях.
Я просто хочу сказать, что они не бесполезны даже при наличии других ACL. И может считаться реализованным в будущем.

Краткое изложение необходимой работы

Внутренне ZFS полностью поддерживает и обеспечивает соблюдение ACL в стиле NFS. К сожалению, в Linux существующие инструменты работают только со списками ACL в стиле Posix. Была проделана некоторая работа по внедрению модели ACL NFS в Linux под названием Rich-ACL (pdf). Для интеграции с новой цепочкой инструментов Rich-ACL ZFS необходимо предоставить виртуальный интерфейс system.richacl xattr. Этот xattr не будет храниться, как другие xattr, а вместо этого будет интегрирован с zfs_getacl () и zfs_setacl (). Этот хук xattr будет отвечать за преобразование vsecattr_t в линейный поток байтов для xattr и обратно.

ACL Posix можно легко поддерживать, добавляя несколько перехватчиков и используя существующие функции поддержки Posix ACL. Однако может быть лучше не реализовывать их, чтобы избежать проблем с согласованностью между Posix и расширенными списками ACL (NFS / ZFS).

Как насчет параметра монтирования / свойства файловой системы, КАКОЙ модели безопасности необходимо обеспечить соблюдение? (и, возможно, другой полностью скрыт даже от инструментов управления, таких как setfacl / getfacl).
В мире Linux Rich-ACL практически не используются. ACL Posix используются гораздо шире. В моих типичных конфигурациях отсутствие ACL для файловой системы является препятствием.
Я думаю, что таким образом мы сможем получить работающую реализацию ACL (Posix) за гораздо меньшее время.

Я тоже хотел бы, чтобы поддержка POSIX ACL была интегрирована в ZFS на Linux. Linux - это POSIX, и пока RichACL не станут более распространенными (или, по крайней мере, в ядре), я думаю, что интеграция POSIX в ZFS в Linux имеет смысл.

Я хотел бы, чтобы это было включено! Для нас это было почти остановкой, но мы решили прожить без него несколько месяцев.

Когда ACL обрабатываются правильно, мы должны убедиться, что следующий патч для повторного обновления свойства aclmode объединен. Это изменение уже внесено в реализации Illumos и FreeBSD.

Проблема № 742: восстановить свойство ZFS aclmode
https://www.illumos.org/issues/742
https://github.com/illumos/illumos-gate/commit/a3c49ce110f325a563c245bedc4d533adddb7211

Можно сопоставить списки ACL Posix <-> NFSv4.
У IETF есть черновик этого сопоставления: http://tools.ietf.org/id/draft-ietf-nfsv4-acl-mapping-03.txt
Но он четко указывает только Posix => NFSv4 (однонаправленный).

Я думаю, что подход к отображению теоретически является лучшим, но он более подвержен ошибкам, чем другие, поскольку отображение 1: 1 невозможно.
Всегда будут крайние случаи, когда пользователю отказывают (или, что еще хуже, дают) привилегию, которая не предназначена для отказа (или, что еще хуже, предоставлена).
По крайней мере, это должно сопровождаться «большим жирным предупреждением».
Но неразумно иметь функцию _security_, которая _ должна_ приблизительно соответствовать тому, что она должна делать.
Предложение: на "двусмысленном" NFSv4 acl запретить ЛЮБОЙ доступ и вывести ошибку в журнал ядра.
Проблема с этим предложением: снимки нельзя исправить вручную.
Для их установки это не должно быть проблемой, поскольку это можно просто рассматривать как «странный» дисковый формат для Posix ACL.
Намного более настраиваемое наследование списков ACL NFSv4 создает еще один набор проблем, которые необходимо решить.

Я думаю, что на первом этапе эта реализация должна уметь:

  • писать списки ACL POSIX, читать и применять то, что он написал.
  • записать их на диск как NFSv4 ACL, чтобы другие реализации также могли читать и применять их по назначению.
  • СБОЙ ГРОМКО с нетривиально отображаемыми списками ACL NFSv4, написанными другими реализациями.
    ** запрещая ЛЮБОЙ доступ к этим элементам.
    ** запрещение пользователям создавать файлы в каталогах с "определенными" флагами наследования
    ** возможно наличие «поведения при сбое», настраиваемого для каждой файловой системы с наиболее безопасным значением по умолчанию. (а для снимков ??)

Последовательными шагами можно настроить логику сопоставления NFSv4 => Posix и сделать ее более настраиваемой.

Есть идеи получше?

Мне это кажется разумной отправной точкой, всего несколько комментариев.

Хотя идеальное отображение 1: 1 невозможно, на самом деле все не так уж плохо. Как вы указываете, существует четко определенное сопоставление IETF Posix -> NFSv4, которое можно использовать для установки правильных списков ACL на диске. После установки на диске в качестве SA существующая реализация zfs должна начать применять их независимо от общих перехватчиков ACL Linux в VFS.

Затем вам, конечно же, потребуется реализовать какое-то разумное сопоставление NFSv4 -> Posix для чтения списков ACL. Однако разумные реализации этого уже существуют. В качестве примера можно привести сервер ядра Linux nfs, который вынужден хранить все свои списки ACL NFSv4 как списки ACL Posix, что является операцией с потерями. Кроме того, в долгосрочной перспективе доступ к необработанному ACL nfsv4 / zfs был бы полезен для сервера ядра nfs. Вы потенциально можете избежать бессмысленного преобразования NFSv4 -> Posix -> NFSv4.

Наконец, нам нужен набор тестов, чтобы убедиться, что мы все правильно поняли. В конце концов, это функция безопасности. К счастью, насколько я понимаю, уже существует несколько хороших наборов тестов.

Сейчас идет работа над ричаками Аниша Кумара, Андреаса Грюнбахера над предыдущей работой, проделанной Грегом Бэнксом. Патчи были представлены для слияния основной ветки 3.1, но из-за некоторых изменений потребуется время и они будут объединены в следующем выпуске.
Ссылка на патчи: - https://lkml.org/lkml/2011/10/18/279

Как только это станет основной, мы сможем использовать их для поддержки nfsv4acls для ZFS.

Как только это станет основной, мы сможем использовать их для поддержки nfsv4acls для ZFS.

А как насчет списков ACL POSIX? Брайан сказал, что реализовать их с помощью usinx xattr не так уж и сложно. Может ли это тоже кто-нибудь сделать, пожалуйста. :)

ZFS поддерживает nfsv4acls, поэтому, IMHO, мы должны сначала предоставить поддержку nfsv4acls и посмотреть, действительно ли нужны posix acls. Если да, то мы можем найти способ определить соответствие между ними.

Я не вижу причин, по которым нельзя сделать и то, и другое. Maxximino в настоящее время работает над поддержкой интерфейса system.posixacl xattr с помощью хорошо документированного перевода. Добавление интерфейса system.richacl xattr может поддерживаться, если он интегрирован и доступна реальная цепочка инструментов.

«в настоящее время работаю», как позволяют мне академические и служебные задачи, но в первую очередь в «свободное» время.
Я уже изучил лицензионный код CDDL IllumOs и нашел код, который выполняет перевод NFSv4 <-> posix acl. Это должна быть прочная основа с точки зрения правильности. Подробности по запросу.

Я знаю, что solaris предоставляет только две копии chmod для управления списками ACL. К сожалению, это очень неудобно и неуклюже. Я предлагаю использовать вспомогательную программу, setzacl, getzacl или аналогичную, чтобы обеспечить возможность просмотра и изменения ACL в zfs в Linux. Предпочтительно, чтобы интерфейс был подобен (или совместим с) Solaris chmod, возможно, улучшен, но стандартизирован для обеих реализаций zfs linux и, предпочтительно, способен обрабатывать будущие файловые системы с помощью ACL "nfs4". (Если кто-нибудь может объяснить, почему они называются ACL nfs4, это тоже будет большим подспорьем!)

Я бы добавил, что пользователи Samba могут захотеть придерживаться списков ACL nfs4, не в последнюю очередь потому, что они наиболее близки к соответствию Windows NTFS ACL по функциям. Это имеет значение, если вы хотите использовать Samba в качестве сервера для домашних папок и папок профиля пользователей в среде Active Directory, где более новые версии Windows проверяют наличие определенных ACL. Кроме того, взаимодействие с Windows было одной из целей разработки ZFS еще во времена Sun, поэтому было бы грустно видеть, как он уходит ...

Тем не менее, я полностью понимаю стремление к соответствию POSIX.

aarcane - См. http://wiki.linux-nfs.org/wiki/index.php/ACLs для истории списков ACL NFSv4.

Сейчас я экспериментирую с Samba 4 DC и ZFS CIFS; базовая система - ubuntu 12.04.

Клиенты XP Pro SP3 могут видеть и администрировать Active Directory (пользователей и компьютеры) и правильно устанавливать разрешения NTFS для папок, совместно используемых с EXT4.

Папки, совместно используемые из ZFS, становятся недоступными для просмотра через CIFS, как только вы изменяете их разрешения через графический интерфейс XP (хотя вы все еще можете получить к ним доступ - как и ожидалось - из командной строки сервера).

Я предполагаю, что это результат проблем, описанных в ветке выше? Мы будем благодарны за любые обходные идеи.

Включение полного администрирования NTFS ACL через Samba 4 было бы огромным бонусом для ZFS.

Не могли бы вы опубликовать более подробную информацию о вашей проблеме? Точная версия Samba4, какой файловый сервер вы используете (smbd или ntvfs) и какие настройки? (например, вы используете vfs_acl_xattr или что-то подобное?)
Возможно, откроется другая проблема, ЕСЛИ та же самая конфигурация Samba4 работает на extY, смонтированном без опции «acl».

Что касается манипулирования реальными ACL NFSv4 (NTFS-подобными) через Samba, это может быть сделано _ чистым способом_ только после того, как патчи "Rich ACL" будут объединены в ядро.

Спасибо Maxximino.
Я использую Samba 4.0.0 alpha19.
Я пытаюсь только загружать файлы на сервер с помощью ntvfs (sudo / usr / local / samba / sbin / samba -i -M single) - который обслуживает общие ресурсы netlogon и sysvol из ext4, а мои общие ресурсы zfs с зеркальной пары дисков с aclinherit = сквозной набор.
Модуль vfs_acl_xattr не используется.

«Что касается манипулирования реальными списками ACL NFSv4 (NTFS-подобными) через Samba, это может быть сделано чисто только после того, как патчи« Rich ACL »будут объединены в ядро».

Насколько я понимаю, официальные патчи richacls поддерживают только EXT4 - вы говорите, что если я, например, использую opensuse (с включенными richacls по умолчанию) или исправляю richacls в ubuntu / debian, zfs + samba4 + ntfs acls должны "просто начать работать "?

Я воспроизвел вашу проблему.
Вы не используете vfs_acl_xattr явно, но Samba4 делает то же самое «тихо». Он сохраняет свои ACL в xattr с именем security.NTACL (который вы можете увидеть с помощью getfattr -n security.NTACL $ FILENAME; и удалить с помощью setfattr -x security.NTACL $ FILENAME).
Этот атрибут учитывается только Samba, а не чем-либо в ядре zfs / linux. Поскольку простая программа на Perl, которая сохраняет значения из / dev / urandom в xattrs в zfs, может считывать их без повреждений, я действительно думаю, что это проблема Samba4.
Проблема проявляется только на zfs ВЕРОЯТНО, потому что на других fs он может отображать свои ACL на Posix ACL вместо использования xattrs.

Нет, просто установить ядро ​​с помощью расширенных исправлений acl недостаточно. Когда эти патчи появятся на основной линии, можно будет начать интегрировать расширенную поддержку acl в zfs.

Я просто собираю Samba 4 на Suse; Думаю, я собирался воспроизвести вашу репродукцию под другим углом.
Спасла меня от боли.

Возможно, разумным (краткосрочным) обходным путем было бы обслуживание файлов из zfs через стабильную среду Samba 3, например, аутентификацию с помощью Samba 4 DC на другом Linux-VServer?

В среднесрочной перспективе полезность использования общих ресурсов CIFS на основе ZFS в сочетании с Samba 4 AD, основанных на ОС Linux с отличной общей аппаратной поддержкой _ на одной машине_, не может быть переоценена. Приложения для малого бизнеса / некоммерческих организаций огромны.

Спасибо за всю работу.

Я наткнулся на следующую ветку:
https://lists.samba.org/archive/samba/2012-August/168660.html

В итоге в Samba 4 есть модуль acl под названием vfs_zfsacl, который используется в Solaris, так что Samba может использовать собственные ACL ZFS. Можно ли использовать этот модуль с zfsonlinux? Доступны ли необходимые API для пользовательского пространства в Linux?

@kisg Хороший вопрос, я впервые слышу о модуле vfs_zfsacl для Samba. Кому-то нужно будет немного поработать, чтобы определить, какой интерфейс они ожидают. В зависимости от того, что это такое, мы сможем его предоставить. Хотя, если перевод не будет выполнен, у вас все равно будет проблема с невозможностью управлять списками ACL в системе Linux.

Я быстро заглянул в источник.
Вы можете найти Samba v4-0-стабильную версию vfs_zfsacl.c здесь: git.samba.org .

Он просто преобразует внутреннее представление Samba в собственный API-интерфейс SunOS NFSv4 acl / facl. Этот API реализован также во FreeBSD с использованием тонкой оболочки пользовательского пространства вокруг собственной реализации acl NFSv4.

Основываясь на этом анализе, мы не можем повторно использовать эту реализацию в Linux. Вместо этого, если будет выполнена интеграция richacl с zfsonlinux, мы могли бы использовать библиотеку librichacl для создания аналогичного простого (надеюсь, менее 1000 строк) модуля vfs_richacl для Samba.

Из моего беглого взгляда на патчи ядра richacl кажется, что интеграция zfsonlinux может быть выполнена даже без фактического исправления ядра, просто вытащив требуемые части (структуры данных и преобразование xattr) кода richacl в дерево zfs для версий ядра, которые не поддерживайте это изначально. Это важно для нас, потому что мы (моя компания) хотели бы запустить стандартное ядро ​​Ubuntu LTS и использовать zfsonlinux только как дополнительный модуль.

Однако я не уверен, что richacl все еще поддерживается (его репозиторий на самом деле не обновляется) и находится ли он на пути к включению в ванильное ядро.

Я обратился к автору набора патчей richacl. Он указал мне на следующий экспериментальный модуль richacl vfs: v4acls-experimental / samba.git

Таким образом, похоже, что почти все части на месте (или, по крайней мере, существуют в экспериментальной форме), за исключением поддержки richacl в самом zfs.

Может быть, переноса libsunacl.c на linux будет достаточно со стороны самбы?

http://sourceforge.net/projects/libsunacl/

но насколько я понимаю "aclmode" все еще отсутствует в zfsonlinux.

Я даже не знаю, почему у нас еще нет поддержки acl. Почему
zfs acls не был включен? Я знаю код для chmod и ls
Существовать. getzacl в стиле getfacl уже должен был быть предоставлен. Я уверен
Хотя есть веская причина для отсутствия acls.
15 февраля 2013 г. в 14:07 "franx" [email protected] написал:

Может быть, переноса libsunacl.c на linux будет достаточно со стороны самбы?

http://sourceforge.net/projects/libsunacl/

но насколько я понимаю "aclmode" все еще отсутствует в zfsonlinux.

-
Ответьте на это письмо напрямую или просмотрите его на Gi tHubhttps: //github.com/zfsonlinux/zfs/issues/170#issuecomment -13630736.

zfs acl поддерживается
тестовое задание:
создать файл в общем ресурсе smb в другой файловой системе с включенной опцией монтирования acl, установить ACL в Windows.

переместите этот файл на том zfsonlinux с помощью aclinherit = passthrough
acls сохранены ..

Wath atm не имеет решения, это делать в самбе.

ни один из acl_xattr или acl_tdb не работает правильно в такой конфигурации, на bsd они используют vfs_zfsacl

через libsunacl, который выглядит как переводчик от zfs2bsd

Мой вопрос может быть глупым, но я хочу четко понимать, есть ли у нас поддержка acl или нет. Я создал минимальный сервер VBox ubuntu 12.04 LTS, затем установил ubuntu-zfs, создал пул команд w

История для mypool:
2013-05-05.15: 12:49 zpool create -f mypool / dev / disk / by-id / ata-VBOX_HARDDISK_VB88a04e0d-d8d1e7a4

История для танка:
2013-04-30.13: 44: 54 zpool создать tank / root / vol1
2013-05-01.00: 13:33 zfs set aclinherit = транзитный бак
2013-05-05.13: 50: 14 zfs set dedup = on tank

tank без проблем поддерживает setfacl
mypool НЕ работает и сообщает, что операция не поддерживается.

Я хочу использовать zfs с samba, и мне нужно контролировать доступ нескольких пользователей к папкам. как это
root @ server : ~ # setfacl -mg: ПОЛЬЗОВАТЕЛИ : --- test4v007 /

Я хочу реализовать патч richacls для ZFS, но, поскольку у меня нет опыта работы с ZFS, было бы неплохо, если бы один из разработчиков ZFSonLinux мог оказать некоторую помощь (в основном в виде подсказок и обсуждений).

Я бы хотел сделать это ...

@behlendorf - Теперь у вас есть стабильная версия файловой системы, есть ли у нас твердые временные рамки, когда это будет сделано? Я знаю, что у вас это готово к этапу 0.8, но при текущих темпах выпуска кажется, что это может произойти через несколько лет - можем ли мы каким-либо образом продвинуть его вперед?

Мы хотим продвинуться вперед в работе с развертыванием для наших хранилищ профилей NAS-серверов с Samba, но отсутствие списков контроля доступа может означать, что мы должны придерживаться FreeBSD, чего мы действительно не хотим делать, поскольку весь наш опыт работы с Linux.

Надеюсь, это не полный оффтоп.
Вы пробовали Debian kFreebsd?

Это почти что-то вроде Linux ..

@sopmot - Вы знаете, я смотрел на него раньше и отклонил его как не готовый к производству, но я быстро прочитал его, и похоже, что он может быть немного более готовым к битве, чем ZoL, для того, что нам нужно, если мы делаем это прямо сейчас.

Так что хороший крик, спасибо, что направили меня на правильный путь - извиняюсь за грубость.

Я продолжаю смотреть на kfreebsd, и в нем отсутствуют iscsi, nfsv4 и
эквивалент виртуализации kvm. Я серьезно относился к использованию его для рута
пока эти недостатки не стали очевидными
19 мая 2013 г. в 9:50 «Тамас Папп» [email protected] написал:

Надеюсь, это не полный оффтоп.
Вы пробовали Debian kFreebsd?

Это почти что-то вроде Linux ..

-
Ответьте на это письмо напрямую или просмотрите его на Gi tHubhttps: //github.com/zfsonlinux/zfs/issues/170#issuecomment -18120673
.

Я также хотел бы, чтобы это было решено. К сожалению, в наши дни у меня мало времени (плюс я не знаю дерьма о низкоуровневых / ядерных вещах), поэтому я не могу много помочь себе: (На самом деле, хотя я просто ищу хороший способ применять определенные разрешения для новых файлов в определенных каталогах; я часто помещаю файлы в общедоступную папку, и было бы неплохо, если бы они могли быть автоматически настроены с ослабленными разрешениями, так как я действительно не хочу устанавливать свою umask на что-то, поэтому либерально для большинства файлов, которые я создаю, которые попадают в мою домашнюю папку. В OSOL / FreeBSD я бы сделал это с помощью списков ACL NFSv4, хотя я открыт для лучших решений, если у кого-то есть идеи. Единственное, что я могу придумать of запускает cronjob, который рекурсивно устанавливает perms в соответствующие каталоги каждые полчаса или что-то в этом роде, но это так отвратительно неэлегантно! Такой клудж :(

К вашему сведению, люди не совершают ту же ошибку, что и я - Debian kFreeBSD отлично подходит для поддержки ZFS, но ACL по-прежнему не работают в пользовательском пространстве, вы просто получаете сообщение «Функция не реализована» - см. Ошибку Debian: http: // bugs.debian.org/cgi-bin/bugreport.cgi?bug=607573

@iamacarpet Это может произойти, как только у кого-то, кому нужна эта функция, будет время поработать над ней. В настоящее время основные драйверы проекта не особо используют ACL, поэтому они находятся в конце списка приоритетов. Но ничто не мешает тому, кто нуждается в этой поддержке, вмешаться и сделать это раньше. Извините, но это просто реальность ситуации.

Привет,

мы используем zfsonlinux в устройстве резервного копирования и считаем, что ACL важны для целей интеграции. Необходимы некоторые общие операции, такие как изменение разрешений на общем томе ZFS с компьютера под управлением Windows.

ACL все еще в дорожной карте?

Спасибо.

@ n1mh Это запланировано на версию 0.8.0.

Благодаря @maxximino была реализована поддержка Posix ACL. Я открыл пул-реквест №1809 с близкой к финальной версией патча, который готов к более широкому тестированию. Он полностью проходит раздел ACL в Posix Test Suite, и мы не знаем о каких-либо нерешенных проблемах.

Для тех, кому нужна эта функциональность, было бы очень полезно, если бы вы могли протестировать предложенный патч на реалистичной рабочей нагрузке. Убедитесь, что он ведет себя так, как вы ожидаете в своей среде. ACL Posix отключены по умолчанию, но их можно включить, установив свойство _acltype_ в наборе данных.

zfs set acltype=posixacl pool/dataset

ACL Posix в стиле Linux были реализованы как xattr и объединены в master. Они хранятся независимо от собственных списков ACL NFS и не конфликтуют. Для включения этой функции было добавлено новое свойство набора данных acltype . Для наилучшей производительности настоятельно рекомендуется установить как acltype = posixacl, так и = sa . Для получения дополнительной информации см. Обновленную страницу руководства:

       acltype=noacl | posixacl

           Controls  whether  ACLs  are  enabled and if so what type of ACL to
           use.  When a file system has the acltype property set to noacl (the
           default)  then  ACLs are disabled.  Setting the acltype property to
           posixacl indicates Posix ACLs should be used.  Posix ACLs are  spe-
           cific  to  Linux  and are not functional on other platforms.  Posix
           ACLs are stored as an xattr and therefore will  not  overwrite  any
           existing ZFS/NFSv4 ACLs which may be set.  Currently only posixacls
           are supported on Linux.

           To obtain the best performance  when  setting  posixacl  users  are
           strongly encouraged to set the xattr=sa property.  This will result
           in the Posix ACL being stored more efficiently on disk.  But  as  a
           consequence of this all new xattrs will only be accessable from ZFS
           implementations which support the xattr=sa property.  See the xattr
           property for more details.

Если элемент acltype = nfs4 также распознается и обрабатывается так же, как
noacl, но принято ради совместимости?
29 октября 2013 г. 15:05, "Брайан Белендорф" [email protected]
написал:

ACL Posix в стиле Linux были реализованы как xattr и объединены с
мастер. Они хранятся независимо от собственных списков ACL NFS и не будут
конфликт. Новое свойство набора данных _acltype_ было добавлено для включения
эта функциональность. Для достижения наилучших результатов настоятельно рекомендуется
установите оба _acltype = posixacl_ и _xattr = sa_. Для получения дополнительной информации см.
обновленная страница руководства:

   acltype=noacl | posixacl

       Controls  whether  ACLs  are  enabled and if so what type of ACL to
       use.  When a file system has the acltype property set to noacl (the
       default)  then  ACLs are disabled.  Setting the acltype property to
       posixacl indicates Posix ACLs should be used.  Posix ACLs are  spe-
       cific  to  Linux  and are not functional on other platforms.  Posix
       ACLs are stored as an xattr and therefore will  not  overwrite  any
       existing ZFS/NFSv4 ACLs which may be set.  Currently only posixacls
       are supported on Linux.

       To obtain the best performance  when  setting  posixacl  users  are
       strongly encouraged to set the xattr=sa property.  This will result
       in the Posix ACL being stored more efficiently on disk.  But  as  a
       consequence of this all new xattrs will only be accessable from ZFS
       implementations which support the xattr=sa property.  See the xattr
       property for more details.

-
Ответьте на это письмо напрямую или просмотрите его на Gi tHubhttps: //github.com/zfsonlinux/zfs/issues/170#issuecomment -27348094
.

Почему это закрыто? acltype nfs4 _far_ более важен, чем нестандартные полностью устаревшие ограниченные черновые ACL POSIX. Списки контроля доступа NFS используются по умолчанию для ZFS на других платформах и являются гораздо более гибкими. Они также позволяют беспрепятственно экспортировать как в NFSv4, так и в SMB, поскольку ACL фактически хорошо соответствует спискам ACL NFS и NT. Черновые списки ACL POSIX тоже не годятся.

Черновые списки ACL POSIX также плохо справляются с наследованием, предоставляя только значения по умолчанию для новых файлов. ACL NFSv4 - единственный путь вперед.

@synnack основная проблема с поддержкой списков ACL NFS на самом деле не на стороне ZFS. Мы сохранили всю эту функциональность, и она используется внутри компании. Проблема заключается в утилитах Linux (getfattr, setfattr и т. Д.), Которые построены на базе POSIX, а не на NFS ACL. В прошлом были попытки перенести ACL NFS в Linux, но, насколько мне известно, ни одна из них не имела большого успеха. Если что-то не изменилось в последнее время, это самое большое препятствие.

Конечно, но посмотрите на работы Андреаса Грюнбахера и Аниша Кумара в OpenSuSE, они уже поставляют richacl-патчи .. Сейчас в LKML для включения ..

За исключением того, что richacl не являются списками ACL NFSv4, они являются (немного безумным) результатом слияния схемы NFSv4 со списками ACL POSIX, разработанными для ext4 и сохраняющими все худшие части ACL POSIX, IIRC.

Что нам нужно, так это правильный интерфейс для списков ACL NFSv4, чтобы файловые системы, которые их поддерживают, могли их настроить. Имейте в виду, что есть еще как минимум один тип ACL, поддерживаемый (по крайней мере частично) Linux - AFS ACL. Так что возможность поддержки нескольких схем не безумна, хотя я предполагаю, что нам может понадобиться API-интерфейс, подобный Solaris, чтобы поддерживать его наилучшим образом ...

Конечно, если richacls можно заставить остановить все части, которые выходят за пределы NFSv4, и предполагая, что пользовательская среда вас не облажает (привет, биты маски ACL POSIX!), И предполагая, что они действительно реализуют всю спецификацию NFSv4 .. Честно говоря, это много предположений.

Я бы фактически предложил добавить IOCTL, применимый к файлам в ZFS, с этой скоростью.

Да, я не уверен, что парни нюхают с черновиком ACL POSIX, объединенным в богатые ACL ... Лучше быть совместимым с solaris и BSD, чем с дрянными черновиками ACL POSIX imho ..

@behlendorf :

Проблема заключается в утилитах Linux (getfattr, setfattr и т. Д.), Которые построены на базе POSIX, а не на NFS ACL. В прошлом были попытки перенести ACL NFS в Linux, но, насколько мне известно, ни одна из них не имела большого успеха. Если что-то не изменилось в последнее время, это самое большое препятствие.

Я вижу, что дистрибутивы используют пакет «nfs4-acl-tools» для управления ACL NFS4. Он использует nfs4_getfacl, nfs4_setfacl и nfs4_editfacl. Когда я запускаю их для zfs, я получаю сообщение «Операция запроса атрибута не поддерживается». Мне кажется, именно так Linux будет работать с NFS4. Теперь нам просто нужно, чтобы инструменты и zfs знали друг о друге.

@ghfields спасибо за комментарий, я не смотрел nfs4 acls в течение нескольких лет, но похоже, что они действительно хорошо продвигаются с компонентами пользовательского пространства. Основываясь на беглом чтении источника nfs4-acl-tools, похоже, что ожидаемый интерфейс пользователя / ядра осуществляется через xattr с именем system.nfs4_acl который содержит необработанный acl в кодировке xdr.

Для того, чтобы эта работа работала, может потребоваться только добавление обработчиков xattr для system.nfs4_acl xattr, который выполняет преобразование между acl nfs4, хранящимся внутри ZFS, и его представлением, ожидаемым утилитами. Поскольку NFSv4 является единственным потребителем этого, ядро ​​не предоставляет никаких общих функций, которые мы могли бы использовать, нам нужно было бы написать функции для этого кодирования / декодирования.

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

Поскольку эта проблема была закрыта при внедрении списков контроля доступа POSIX, следует ли создавать новую проблему специально для списков контроля доступа NFS4? Или нужно открыть его заново?

@ghfields, можете ли вы открыть для этого новый выпуск. Так будет легче отслеживать.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги
bleepcoder.com использует общественно лицензированную информацию GitHub для предоставления решений разработчикам по всему миру. Мы не аффилированы с GitHub, Inc. или любым другим разработчиком, использующим GitHub для своих проектов. Мы не размещаем видео или изображения на наших серверах. Все права принадлежат их соответствующим владельцам.
Источник для этой страницы: Источник

Популярные языки программирования
Популярные проекты GitHub
Больше проектов GitHub

© 2024 bleepcoder.com - Contact
Made with in the Dominican Republic.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.