2009-03-11 14 views
6

A veces deseo permitir que los usuarios carguen archivos a través de Apache. Hay dos formas diferentes de configurar los permisos para que Apache pueda escribir los archivos cargados en el directorio.¿Cuáles son las mejores prácticas para los permisos en los directorios de escritura de Apache?

  1. puedo hacer que el usuario se ejecuta Apache el propietario del directorio para que se parezca a esto:

    drwxr-xr-x 2 www admin 68 Sep 24 2007 uploadedfiles

  2. puedo dar permiso de escritura en "otros", donde Apache es uno de los otros:

    drwxr-xrwx 35 egbert admin 1190 Mar 9 13:17 uploadedfiles

¿Es uno de estos más seguro que el otro?

+1

Stack Overflow es un sitio para cuestiones de programación y desarrollo. Esta pregunta parece estar fuera de tema porque no se trata de programación o desarrollo. Consulte [Qué temas puedo preguntar aquí] (http://stackoverflow.com/help/on-topic) en el Centro de ayuda. Tal vez [Superusuario] (http://superuser.com/) o [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/) sería un mejor lugar para preguntar. También vea [¿Dónde publico preguntas sobre Dev Ops?] (Http://meta.stackexchange.com/q/134306). – jww

Respuesta

2

Hay dos preguntas para hacer aquí: primero, ¿quién más (si hay alguien) necesita acceder a esos archivos? Si hay otros procesos que actúan en esos archivos, ¿con quién se están ejecutando y cómo interactuará con la solución elegida? Si no hay otros procesos o usuarios accediendo a los archivos, yo haría que el usuario de apache sea el propietario, ya que eso es todo lo que se necesita, y sigue uno de los principios más antiguos en seguridad: solo las personas que necesitan el acceso a algo lo tiene.

1

Si el sistema se utiliza para otros fines, probablemente debas evitar dar permisos a través de 'otros'. Permitir permisos aquí básicamente significaría cualquier otra cosa que se ejecute en esa computadora, o con acceso a esa computadora tendría derechos sobre esos archivos.

Además, podría crear un grupo adicional y hacer que apache sea un miembro del grupo, y cualquiera que esté en administración, y cambiar la propiedad del grupo a ese grupo, y otorgar permisos a ese grupo. Si usa un grupo, probablemente también deba establecer el bit 'setgid' en el directorio. Cuando se establece el bit setgid, los archivos creados obtendrán la misma pertenencia a grupos del directorio principal.

1

La regla general con seguridad es la de menos privilegios. Desea usar permisos mínimos como sea posible. En este caso, la primera opción (escribible por apache) significa que el directorio solo se puede escribir si su sistema está comprometido a través del usuario apache, mientras que con la opción dos (que todos pueden escribir), cualquier cuenta puede verse comprometida y escribir en ella directorio. En este caso, me gustaría ir con la opción uno:

drwxr-xr-x 2 www administrador 68 24 sep 2007 uploadedfiles

4

el acceso más restrictiva, en este caso el acceso exclusivo a www/admin con permiso 0750, es siempre el más seguro. Tenga en cuenta que, en la máscara de permisos anterior, los usuarios que no son www ni miembros de admin no tienen acceso a los contenidos del directorio; esto es para reducir la posibilidad de que una parte no autorizada iniciada sesión en el sistema obtenga acceso a información potencialmente confidencial cargada por los usuarios.

No hay que olvidar que en la mayoría de las plataformas * nix también tiene una tercera opción, extremadamente flexible, es decir, el establecimiento de ACL utilizando setfacl. Las ACL son un superconjunto de lo que se puede lograr con los bits de permisos y los métodos de propiedad habituales.Las ACL son la opción preferida cuando se enfrentan a complejas configuraciones de seguridad (incluidos permisos por usuario, propietarios predeterminados, etc.), pero es posible que primero deba agregar acl a /etc/fstab en las opciones de montaje del volumen que aloja su directorio, consulte man mount. Puede optar por usar ACL si dos o más usuarios necesitan acceder al directorio en cuestión sin ser miembros de, por ejemplo, el grupo admin.

1

Proporcionar acceso de lectura a otros también es un riesgo de seguridad. Wordpress, por ejemplo, tiene un archivo que contiene el nombre de usuario y la contraseña de la base de datos.

Cuestiones relacionadas