¿Cómo hacer que los usuarios configuren ACL en directorys que no les pertenecen?

Tengo un set de directorys de almacenamiento en máquinas con Linux, todos 770 / root: root (perms / owner: group), para los cuales utilizo ACL para administrar el acceso de los usuarios. (No puedo usar grupos unix ya que los directorys se comparten a través de una networking, donde los grupos se administran a través de LDAP para los que no soy administrador).

Para cada directory, un usuario tiene acceso rwx completo a través de ACL, y todos los demás tienen acceso rx a través de ACL.

Actualmente, tengo que responder manualmente a las requestes para agregar / eliminar usuarios, y me gustaría que esta capacidad se transmita a los usuarios 'rwx' para los directorys que poseen (porque soy un administrador de sistemas perezoso, naturalmente).

La mejor solución que puedo pensar es crear un script / progtwig con root setuid que compruebe el estado de ACL 'rwx' del usuario que llama en el directory dado, y les permite agregar / eliminar usuarios de ACL 'rx', como en :

$ modify_acls.sh [--remove] [--add] <my_directory> <other_user> 

¿Hay una manera más fácil de hacerlo, o la solución anterior no funcionará por alguna razón?

En lugar de un script de shell setuid, considere habilitar un script específico con sudo .

Aunque se usa con mayor frecuencia de esta manera, sudo no está restringido a "permitir que alguien ejecute ningún progtwig como root". Puede configurar fácilmente "los usuarios A, B y C pueden ejecutar solo este script particular como raíz" en /etc/sudoers . Ver man sudoers para más detalles.

Realmente no hay una ventaja de usar sudo lugar de un script setuid, excepto que en los sistemas donde los scripts setuid están completamente deshabilitados por razones de security, la segunda alternativa simplemente no funcionará en absoluto. Todavía podría escribir un file binary setuid personalizado, pero insert una línea en sudoers es más simple, más rápido y más fácil de cambiar más adelante cuando desea agregar o quitar usuarios.

El uso de un script de shell probablemente no funcione ya que los scripts de shell setuid generalmente no son compatibles con Linux.

Una solución alternativa sería escribir un ejecutable pequeño en C para proporcionar la funcionalidad requerida y root de setuid este ejecutable.