Tengo un directorio llamado data
. Luego estoy ejecutando un script con la identificación de usuario 'robot'. El robot escribe en el data
directorio y actualiza los archivos que contiene. La idea está data
abierta 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 data
directorio 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-data
no pudo escribirlos / leerlos.setfacl
página de manual ,-b
o--remove-all
elimina las ACL extendidas.setfacl -Rm g:users:rwX,d:g:users:rwX data/
al final de/etc/fstab
?defaults
adefaults,acl
.setfacl
es 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-g
opció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
-a
bandera popular hace permisos de copia rsync; use en-r
lugar de-a
o agregue-no-p
(para la sincronización sin permiso) y-no-g
(para la sincronización sin grupo). Además, rsync admite marcas--chmod
para 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