ACL y permissions clásicos

Estoy tratando de configurar un server git en mi server FreeNAS. El problema que tengo es configurar los permissions para diferentes usuarios / grupos como yo quiero.

Básicamente tengo dos grupos diferentes: git-auth-user que contiene todos los usuarios que deberían tener acceso rwx al directory que contiene todos los repositorys (debería limitar x a los directorys solo, creo, pero por ahora eso es un pequeño detalle) y git-unauth-user que es básicamente el daemon git que debe distribuir el acceso de solo lectura.

Pensé que ejecutar setfacl -m "g:git-auth-user:rwx:fd:allow" git/ funcionara para darle a mi git-auth-user todos los derechos, pero eso no sucede.

Desde la búsqueda, parece que los permissions clásicos aún limitan los permissions generales que las ACL pueden repartir, ¿esto significa que básicamente debo otorgar derechos completos a others (básicamente, chmod 777 dir )? Pero luego supongo que todos los que no obtienen sus derechos limitados a través de ACL también tendrían pleno acceso, lo cual obviamente no es lo que quiero.

¿Hay alguna forma de tener que establecer los derechos de permiso clásicos para other a los más permisivos que deseo entregar a través de ACL o, si no, hay una ACL que niega por completo el acceso a todos los que no obtienen derechos de acceso especiales?

Editar:

ls -la (así que chmod 770 para el directory)

 drwxrwx---+ 2 root wheel 2 Jun 22 23:45 git 

y

 $ getfacl git/ # file: git/ # owner: root # group: wheel group:git-auth-user:rwx-----------:fd----:allow owner@:rwxp--aARWcCos:------:allow group@:rwxp--aRc--s:------:allow everyone@:------aRc--s:------:allow 

Ahora cuando un usuario del grupo git-auth-user intenta generar un nuevo directory dentro del directory git , me sale

 $ mkdir test.git mkdir: test.git: Permission denied 

Por otro lado, si uso chmod -R 777 git , funciona bien, pero obviamente es una solución realmente mala porque le doy a todos acceso completo al directory, mientras que la solución de mi sueño sería el acceso para todos, excepto git-auth-user (es decir, mi usuario git-ro también tiene acceso de escritura al directory, ahora podría eliminar específicamente todos los derechos para ese usuario por ACL, pero obviamente esto no se escala. Estoy seguro de que debe haber una mejor solución para esto que yo estoy pasando por alto).

Las ACL, si están presentes, anulan los bits de chmod habituales. Además, NFSv4 ACL no tienen máscaras.

Creo que el problema aquí es que solo estableces 'rwx', y no 'rwxp'. La 'p' es APPEND_DATA / ADD_SUBDIRECTORY, que es lo que controla … bueno, agregar subdirectorys.

Si usa ACL, los permissions de grupo clásicos se convierten en la llamada máscara, que determina los permissions máximos que se pueden otorgar efectivamente por setfacl, por ejemplo.

 ls -k shows -rw-r--r--+ root root 

y has setfacl -mg:users:rw

porque la máscara solo se lee, getfacl te mostrará:

 group:users:rw effective r 

Así que configure el grupo a rw o rwx mediante chmod clásico y puede otorgar todos los permissions mediante setfacl.

PD.

Este es el event handling Linux ACL, afaik Solaris con ZFS es un poco diferente, no estoy del todo seguro de cómo maneja eso BSD con ZFS.

Pruébalo y publica tus hallazgos aquí.