Saltar al contenido

¿Cómo configurar los permisos de archivo para Laravel?

Solución:

Solo para indicar lo obvio para cualquiera que vea esta discusión … si le da a cualquiera de sus carpetas los permisos 777, está permitiendo que CUALQUIERA lea, escriba y ejecute cualquier archivo en ese directorio … lo que esto significa es que le ha dado CUALQUIER PERSONA (cualquier pirata informático o persona malintencionada en todo el mundo) tenga permiso para cargar CUALQUIER archivo, virus o cualquier otro archivo, y ENTONCES ejecutar ese archivo …

SI ESTÁ CONFIGURANDO SUS PERMISOS DE CARPETA EN 777, HA ABIERTO SU SERVIDOR A CUALQUIERA QUE PUEDA ENCONTRAR ESE DIRECTORIO. ¿¿¿Bastante claro??? 🙂

Básicamente, hay dos formas de configurar su propiedad y permisos. O se otorga la propiedad o hace que el servidor web sea el propietario de todos los archivos.

Servidor web como propietario (como lo hace la mayoría de la gente y a la manera del documento de Laravel):

asumiendo que www-data (podría ser otra cosa) es el usuario de su servidor web.

sudo chown -R www-data:www-data /path/to/your/laravel/root/directory

Si hace eso, el servidor web es el propietario de todos los archivos, y también es el grupo, y tendrá algunos problemas para cargar archivos o trabajar con archivos a través de FTP, porque su cliente FTP iniciará sesión como usted, no como su servidor web, así que agregue su usuario al grupo de usuarios del servidor web:

sudo usermod -a -G www-data ubuntu

Por supuesto, esto supone que su servidor web se ejecuta como www-data (el valor predeterminado de Homestead) y su usuario es ubuntu (es un vagabundo si está usando Homestead).

Luego configura todos sus directorios en 755 y sus archivos en 644 … SET permisos de archivo

sudo find /path/to/your/laravel/root/directory -type f -exec chmod 644 {} ;    

ESTABLECER permisos de directorio

sudo find /path/to/your/laravel/root/directory -type d -exec chmod 755 {} ;

Tu usuario como propietario

Prefiero tener todos los directorios y archivos (hace que trabajar con todo sea mucho más fácil), así que ve a tu directorio raíz de laravel:

cd /var/www/html/laravel >> assuming this is your current root directory
sudo chown -R $USER:www-data .

Luego me doy permisos tanto para mí como para el servidor web:

sudo find . -type f -exec chmod 664 {} ;   
sudo find . -type d -exec chmod 775 {} ;

Luego, otorgue al servidor web los derechos para leer y escribir en el almacenamiento y la caché

Independientemente de la forma en que lo configure, debe otorgar permisos de lectura y escritura al servidor web para almacenamiento, caché y cualquier otro directorio que el servidor web necesite cargar o escribir también (dependiendo de su situación), así que ejecute los comandos de bashy arriba:

sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache

Ahora, está seguro y su sitio web funciona, Y puede trabajar con los archivos con bastante facilidad.

Los permisos para el storage y vendor las carpetas deben permanecer en 775, por razones obvias de seguridad.

Sin embargo, tanto su computadora como su servidor Apache deben poder escribir en estas carpetas. Ej: cuando ejecuta comandos como php artisan, su computadora necesita escribir en el archivo de registros en storage.

Todo lo que necesita hacer es ceder la propiedad de las carpetas a Apache:

sudo chown -R www-data:www-data /path/to/your/project/vendor
sudo chown -R www-data:www-data /path/to/your/project/storage

Luego, debe agregar su computadora (referenciada por su username) al grupo al que pertenece el servidor Apache. Al igual que :

sudo usermod -a -G www-data userName

NOTA: Más frecuentemente groupName es www-data pero en su caso, reemplácelo con _www

Nos hemos encontrado con muchos casos extremos al configurar permisos para aplicaciones de Laravel. Creamos una cuenta de usuario separada (deploy) para poseer la carpeta de la aplicación Laravel y ejecutar comandos de Laravel desde la CLI, y ejecutar el servidor web en www-data. Un problema que esto causa es que los archivos de registro pueden ser propiedad de www-data o deploy, dependiendo de quién escribió primero en el archivo de registro, lo que obviamente evita que el otro usuario escriba en él en el futuro.

Descubrí que la única solución sana y segura es usar ACL de Linux. El objetivo de esta solución es:

  1. Para permitirle al usuario que posee / implementa la aplicación acceso de lectura y escritura al código de la aplicación Laravel (usamos un usuario llamado deploy).
  2. Para permitir el www-data el usuario tiene acceso de lectura al código de la aplicación Laravel, pero no acceso de escritura.
  3. Para evitar que otros usuarios accedan al código / datos de la aplicación Laravel.
  4. Para permitir tanto el www-data usuario y el usuario de la aplicación (deploy) acceso de escritura a la carpeta de almacenamiento, independientemente de qué usuario sea el propietario del archivo (por lo que ambos deploy y www-data puede escribir en el mismo archivo de registro, por ejemplo).

Logramos esto de la siguiente manera:

  1. Todos los archivos dentro del application/ carpeta se crean con la umask predeterminada de 0022, lo que da como resultado carpetas con drwxr-xr-x permisos y archivos que tienen -rw-r--r--.
  2. sudo chown -R deploy:deploy application/ (o simplemente implemente su aplicación como deploy usuario, que es lo que hacemos).
  3. chgrp www-data application/ para dar el www-data acceso de grupo a la aplicación.
  4. chmod 750 application/ para permitir el deploy el usuario lee / escribe, el www-data usuario de solo lectura y para eliminar todos los permisos a cualquier otro usuario.
  5. setfacl -Rdm u:www-data:rwx,u:deploy:rwx application/storage/ para establecer los permisos predeterminados en el storage/ carpeta y todas las subcarpetas. Cualquier carpeta / archivo nuevo creado en la carpeta de almacenamiento heredará estos permisos (rwx para ambos www-data y deploy).
  6. setfacl -Rm u:www-data:rwX,u:deploy:rwX application/storage/ para establecer los permisos anteriores en cualquier archivo / carpeta existente.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *