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

StackOverflow https://stackoverflow.com/questions/10990

  •  08-06-2019
  •  | 
  •  

Pregunta

Lo siento por la pregunta básica - yo soy .NET developer y no tengo mucha experiencia con LÁMPARA de configuraciones.

Tengo un PHP sitio web que le permite realizar cargas en una carpeta específica.Me han dicho que esta carpeta debe ser propiedad del usuario del servidor de web para el proceso de carga de trabajo, por lo que he creado la carpeta y, a continuación, establezca los permisos como tal:

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

El único problema ahora es que el usuario de FTP no puede modificar los archivos subidos a todos.

Hay una configuración de permiso de que me va a permitir subir archivos y, a continuación, modificar más adelante como un usuario distinto del usuario del servidor de web?

¿Fue útil?

Solución

Usted puede crear un nuevo grupo con el usuario apache y usuario de FTP como miembros y, a continuación, hacer que el permiso en la carpeta de carga 775.Esto debería dar tanto el apache y FTP a los usuarios la capacidad para escribir los archivos en la carpeta, pero mantener a todos los demás de la modificación de ellos.

Otros consejos

Me gustaría ir con Ryan respuesta es si usted realmente quiere hacer esto.

En general, en un *nix medio ambiente, siempre se quiere errar en regalar como poco permisos como sea posible.

9 de cada 10 veces, 755 es el ideal permiso para ello - como el único usuario con la capacidad de modificar los archivos será el servidor web.El cambio esta a 775 con su usuario ftp en un grupo si usted REALMENTE necesita para cambiar esto.

Ya que eres nuevo en php por su propia admisión, aqui un enlace para la mejora de la seguridad de su servicio de carga:move_uploaded_file

O, al menos, 766.

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

7 = lectura + escritura + ejecutar

6 = lectura + escritura

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

Voy a añadir que si usted está usando SELinux que usted necesita para asegurarse de que el tipo de contexto es tmp_t Usted puede lograr esto mediante el comando chcon utilidad

chcon -t tmp_t carga

Lo importante es que la apache de usuario y de grupo debe tener un mínimo de read el acceso y en algunos casos execute acceso.Para el resto puede dar 0 acceso.

Este es el más seguro.

Yo apoyo la idea de crear un grupo de ftp que tiene los derechos para cargar.Sin embargo, creo que no es necesario dar permiso 775.7 puestos de lectura, escritura y ejecución.Normalmente usted desea permitir a ciertos grupos a leer y a escribir, pero dependiendo del caso, ejecutar puede no ser necesario.

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

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

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
* 

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top