🔐 Permisos y Propietarios de Archivos (www-data)
En entornos GNU/Linux donde corre el servidor web (Apache / Nginx con PHP-FPM), los procesos del sistema se ejecutan bajo el usuario y grupo del sistema www-data.
Si los archivos o directorios pertenecen a otro usuario (como root o tu usuario de sesión SSH) sin permisos de grupo adecuados, el sistema lanzará errores de Permission denied al intentar escribir logs, generar archivos PDF, crear backups o actualizar la documentación.
📌 ¿Para qué sirven estos comandos?
1. Cambiar el grupo propietario a www-data (chgrp)
chgrp -R www-data /ruta/completa/git.buho.la/pro9/resources/docs/
chgrp(Change Group): Asigna el grupo propietario del directorio o archivo.-R(Recursive): Aplica el cambio a todas las subcarpetas y archivos contenidos dentro.www-data: Es el grupo bajo el cual corre el servidor web en distribuciones basadas en Debian/Ubuntu. Al pertenecer a este grupo, el servidor web tiene acceso a interactuar con los archivos.
2. Otorgar permisos de lectura y escritura (chmod)
⚠️ Por qué NO usar chmod -R 775 en todo el proyecto:
Si ejecutas chmod -R 775 de forma masiva sobre todos los archivos, le agregarás el bit de ejecución (+x) a archivos de texto plano y markdown (.md, .json, .php, .png), provocando que Git detecte un cambio de modo (mode change 100644 => 100755) en miles de archivos.
✅ Forma correcta (Diferenciar entre Carpetas y Archivos):
Para que el servidor web pueda entrar a los directorios y escribir en los archivos sin ensuciar el historial de Git, se deben separar los permisos:
-
Para carpetas y directorios (
775):find resources/docs/ -type d -exec chmod 775 {} +Permite al servidor web listar (
r), crear/eliminar (w) y entrar/navegar (x) en los directorios. -
Para archivos (
664):find resources/docs/ -type f -exec chmod 664 {} +Permite al servidor web leer (
r) y modificar (w) el contenido sin marcarlos como ejecutables.
🚀 Comando completo recomendado
Para corregir los permisos de documentación o almacenamiento de una sola vez:
# Asignar grupo del servidor web
chgrp -R www-data resources/docs/
# Dar permisos 775 a directorios y 664 a archivos
find resources/docs/ -type d -exec chmod 775 {} +
find resources/docs/ -type f -exec chmod 664 {} +
Con esta configuración, tanto tu usuario de consola como el servidor web (www-data) pueden editar y sincronizar archivos sin bloqueos ni conflictos en Git.