Tengo un directorio llamado data. Luego estoy ejecutando un script con la identificación de usuario 'robot'. El robot escribe en el datadirectorio y actualiza los archivos que contiene. La idea está dataabierta tanto para mí como para el robot para actualizar.
Así que configuré el permiso y el grupo de propietarios como este
drwxrwxr-x 2 me robot-grp 4096 Jun 11 20:50 data
donde tanto yo como el robot pertenecemos al 'robot-grp'. Cambio el permiso y el grupo de propietarios de forma recursiva, como el directorio principal.
Regularmente subo nuevos archivos al datadirectorio usando rsync. Desafortunadamente, los nuevos archivos cargados no heredan el permiso del directorio principal como espero. En cambio, se ve así
-rw-r--r-- 1 me users 6 Jun 11 20:50 new-file.txt
Cuando el robot intenta actualizar new-file.txt, falla debido a la falta de permiso de archivo.
No estoy seguro si configurar umask ayuda. En cualquier caso, los nuevos archivos realmente no lo siguen.
$ umask -S
u=rwx,g=rx,o=rx
A menudo me confunde el permiso de archivo de Unix. ¿Tengo siquiera un plan correcto? Estoy usando Debian Lenny.
fuente

sudo setfacl -Rm g:users:rwX,d:g:users:rwX /var/www/logs_or_something. Tuve problemas con las pruebas de PHPUnit. Después de crear archivos de registro de las pruebas en ejecución, el usuario de apachewww-datano pudo escribirlos / leerlos.setfaclpágina de manual ,-bo--remove-allelimina las ACL extendidas.setfacl -Rm g:users:rwX,d:g:users:rwX data/al final de/etc/fstab?defaultsadefaults,acl.setfacles un comando que debe ejecutar desde la terminal.data/debe reemplazarse por la ruta al directorio que desea cambiar.Marcar un directorio setgid (
g+s) hará que los archivos nuevos hereden la propiedad del grupo del directorio, pero la-gopción de rsync intentará anular esto.fuente
Otras respuestas se aplican en un caso general, pero como usted menciona que rsync es una fuente del problema, es posible que solo necesite ajustar su invocación.
Para empezar, la
-abandera popular hace permisos de copia rsync; use en-rlugar de-ao agregue-no-p(para la sincronización sin permiso) y-no-g(para la sincronización sin grupo). Además, rsync admite marcas--chmodpara alterar los permisos en los archivos recién creados.fuente
Su umask está equivocado para los permisos que desea. Desea una umask de 002. Actualmente tiene una umask de 022. Además, el comentario acerca de cómo configurar el directorio setgid es correcto, pero no estoy seguro de si la propiedad del grupo de archivos es algo que desea cambiar o no.
Los permisos de archivos Unix son en realidad un modelo muy simple. Encuentro que las ACL me confunden por completo. :-)
fuente