Recientemente configuré un entorno de desarrollo en Ubuntu 24 y al descargar un proyecto Laravel desde GitHub me encontré con un error 403 forbidden al abrir la URL en el navegador. Después de revisar la configuración de Apache, habilitar mod_rewrite y comprobar el .htaccess, el problema persistía. Todo apuntaba a un problema de permisos.
Lo habitual es pensar en permisos de archivos y carpetas dentro del proyecto, por ejemplo asignar propietario y grupo, y dar permisos adecuados a storage y bootstrap/cache. Comandos útiles incluyen por ejemplo sudo chown -R usuario:www-data ruta_del_proyecto y sudo find . -type f -exec chmod 664 {} \\; sudo find . -type d -exec chmod 775 {} \\; sudo chmod -R ug+rwx storage bootstrap/cache. Sin embargo, incluso con esos ajustes el 403 continuó.
La solución definitiva fue menos obvia: Apache necesita poder atravesar las carpetas padres del directorio público. Si el usuario www-data no tiene permisos de ejecución en alguna de las carpetas superiores, el servidor no puede acceder a public aunque los permisos dentro del proyecto sean correctos. En mi caso cambiar el grupo de las carpetas padre resolvió el problema. Comandos que solucionan esto son por ejemplo sudo chgrp www-data /home/usuario sudo chgrp www-data /home/usuario/proyectos sudo chgrp www-data /home/usuario/proyectos/misitio y ajustar permisos según convenga. Alternativamente se puede añadir el usuario www-data al grupo del propietario real o usar ACL con setfacl para otorgar permisos más precisos sin cambiar grupos globales.
Consejos prácticos y buenas prácticas: evita chmod 777 generalizados; da permisos mínimos necesarios; asegúrate de que las carpetas padres tengan permiso de ejecución para el grupo o el usuario que usa Apache; comprueba los logs de Apache en caso de duda; y recuerda habilitar mod_rewrite si tu aplicación lo requiere con cd /etc/apache2/mods-available a2enmod rewrite sudo service apache2 restart.
Si prefieres una solución gestionada o necesitas ayuda para desplegar aplicaciones a medida con buenas prácticas de seguridad y cloud, en Q2BSTUDIO somos especialistas en desarrollo de software a medida, aplicaciones a medida y en integrar soluciones de inteligencia artificial y ciberseguridad. Podemos ayudarte a configurar infraestructuras en la nube y optimizar permisos, despliegues y automatización. Consulta nuestros servicios de desarrollo de aplicaciones a medida en desarrollo de aplicaciones a medida o descubre cómo aplicamos inteligencia artificial para empresas en soluciones de inteligencia artificial. También ofrecemos servicios de ciberseguridad, pentesting, servicios cloud aws y azure, inteligencia de negocio y Power BI, agentes IA y automatización de procesos para proyectos de cualquier tamaño.
Espero que este relato te ahorre tiempo si te encuentras con un 403 en Laravel. Revisar permisos de las carpetas padres suele ser la clave que muchos pasan por alto.