www una sobre permisos permiso para dar carpeta ala php apache upload

php - una - permisos var www html ubuntu



¿Cuáles son los permisos adecuados para una carpeta de carga con PHP/Apache? (8)

Perdón por la pregunta básica: soy desarrollador de .NET y no tengo mucha experiencia con las configuraciones de LAMP.

Tengo un sitio PHP que permitirá cargas a una carpeta específica. Me han dicho que esta carpeta debe ser propiedad del usuario del servidor web para que el proceso de carga funcione, por lo que creé la carpeta y luego establecí los permisos como tales:

chown apache:apache -R uploads/ chmod 755 -R uploads/

El único problema ahora es que el usuario de FTP no puede modificar los archivos cargados en absoluto.

¿Existe alguna configuración de permisos que me permita subir archivos y luego modificarlos como usuario que no sea el usuario del servidor web?


Añadiré que si está utilizando SELinux, necesita asegurarse de que el contexto de tipo es tmp_t. Puede lograr esto utilizando la utilidad chcon

chcon -t tmp_t carga


Basado en la respuesta de @Ryan Ahearn , lo siguiente es lo que hice en Ubuntu 16.04 para crear un front usuario que solo tenga permiso para dir /var/www/html de web de nginx.

Pasos:

* pre-steps: * basic prepare of server, * create user ''dev'' which will be the owner of "/var/www/html", * * install nginx, * * * create user ''front'' sudo useradd -d /home/front -s /bin/bash front sudo passwd front # create home folder, if not exists yet, sudo mkdir /home/front # set owner of new home folder, sudo chown -R front:front /home/front # switch to user, su - front # copy .bashrc, if not exists yet, cp /etc/skel/.bashrc ~front/ cp /etc/skel/.profile ~front/ # enable color, vi ~front/.bashrc # uncomment the line start with "force_color_prompt", # exit user exit * * add to group ''dev'', sudo usermod -a -G dev front * change owner of web dir, sudo chown -R dev:dev /var/www * change permission of web dir, chmod 775 $(find /var/www/html -type d) chmod 664 $(find /var/www/html -type f) * * re-login as ''front'' to make group take effect, * * test * * ok *


Lo importante es que el usuario y el grupo de apache deberían tener un acceso de read mínimo y, en algunos casos, execute acceso. Por lo demás, puedes dar 0 acceso.

Esta es la configuración más segura.


Me gustaría ir con la respuesta de Ryan si realmente quieres hacer esto.

En general, en un entorno * nix, siempre quieres equivocarte regalando la menor cantidad de permisos posible.

9 veces de cada 10, 755 es el permiso ideal para esto, ya que el único usuario con la capacidad de modificar los archivos será el servidor web. Cambie esto a 775 con su usuario ftp en un grupo si REALMENTE necesita cambiar esto.

Como usted es nuevo en php por su propia admisión, aquí hay un enlace útil para mejorar la seguridad de su servicio de carga: move_uploaded_file


O al menos 766.

  • leer = 4
  • escribir = 2
  • ejecutar = 1

7 = leer + escribir + ejecutar

6 = leer + escribir

  • primer número: propietario
  • segundo número: grupo
  • tercer número: otros usuarios

Puede crear un nuevo grupo con el usuario de apache y el usuario de FTP como miembros y luego otorgar el permiso en la carpeta de carga 775. Esto debería dar a los usuarios de apache y FTP la capacidad de escribir en los archivos de la carpeta pero mantener a los demás de modificarlos.


Recuerde también CHOWN o chgrp la carpeta de su sitio web. Pruebe myusername# chown -R myusername:_www uploads


Respaldaría la idea de crear un grupo ftp que tenga los derechos para subir. Sin embargo, no creo que sea necesario otorgar 775 permisos. 7 significa lectura, escritura, ejecución. Normalmente, desea permitir que ciertos grupos lean y escriban, pero dependiendo del caso, la ejecución puede no ser necesaria.