ACL для обмеження доступу до данних (FreeBSD)

Виникла потреба розподілити права доступу до файлів на сервері. Користувачі підключаються по smb-протоколу. Для підключення використовують внутрішню авторизацію FreeNAS. Розподілення прав робимо для груп, так зручніше керувати правами крім того, робити інакше заборонено правилами.

Для того, щоб не призначати права кожному файлу помануалив та сформував команду для рекурсивного призначення дозволів на файли/папки:

find /mnt/zfspool1/storage-1 -type f -exec setfacl -bm g:GROUP-RW:wpAWCo:allow {} \;
find /mnt/zfspool1/storage-1 -type d -exec setfacl -bm g:GROUP-RW:wpAWCo:allow {} \;

тут важливо розуміти, що ключ -b скидає всі налаштування (до прав по замовчуванню) та ставить/додає своє. Якщо є необхідність додати/змінити права доступу 

заборонити запис/модифікацію для іншої групи. Пріоритет заборони вище, а отже, якщо користувач у двох групах одночасно - буде RO

find /mnt/zfspool1/storage-1 -type f -exec setfacl -m g:store-ro:wpAWCo:deny {} \;
find /mnt/zfspool1/storage-1 -type d -exec setfacl -m g:store-ro:wpAWCo:deny {} \;

Додатково: 

https://forums.freenas.org/index.php?threads/setfacl-recursive-quick-and-dirty-how.16146/#post-82780

https://wiki.freebsd.org/NFSv4_ACLs

маю зазначити, що в мене констатнти доступу прав такі як modify_set та інші *_set не спрацювали бо невідомі системі