Permisos de archivos recomendados

23 dic 2010, 10:43:50
Vistas: 11.8K
Votos: 5

Hola a todos, he estado pasando mucho tiempo tratando de resolver este problema. Me gustaría saber cómo deberían ser los permisos de archivos en WordPress para poder usar la función de actualización automática. Actualmente, mi instalación de WordPress sigue pidiéndome mis credenciales FTP y no quiero usar ese método para actualizar/instalar, prefiero usar PHP puro/directo.

Algo de contexto:

  • el servidor web y los daemons php fcgi se ejecutan como www-data:www-data
  • la instalación de WordPress está en /home/blaenk/sites/domain.tld/

Al principio, leí que todos los archivos/directorios deberían ser propiedad de mi usuario (blaenk) y escribibles por mi usuario. Pero esto no funcionó, después de muchas horas de investigación, alguien en el canal IRC me sugirió configurar todo con propiedad www-data:www-data y esto sí funcionó. Ya no me pidió información FTP y la instalación de plugins funcionó automáticamente.

Sin embargo, originalmente coloqué los archivos del sitio en mi directorio personal precisamente porque quería poder escribirlos/crearlos como mi usuario. Incluso me agregué al grupo www-data como se indica en esta guía.

Pregunta

Ya sé que los archivos deberían tener permisos 644 y los directorios 755. Pero esto parece más un problema de propiedad. No quiero tener que configurar www-data:www-data en todo mi sitio de WordPress, así que me pregunto ¿qué archivos/directorios específicamente requieren este nivel de propiedad?

EDITADO: Creo que la razón por la que todo funciona en mi instalación de WordPress en hosting compartido, a pesar de que todos los archivos son propiedad de mi usuario, es que el hosting compartido que uso parece utilizar suexec que presumiblemente ejecuta PHP como yo, así que en otras palabras, los archivos son propiedad del servidor web, por así decirlo.

2
Comentarios

En mi opinión, la pregunta va más allá de los permisos, también abarca la propiedad — el clásico 'ftpuser' y 'wwwuser', como la mayoría de los servidores Apache (correctamente) lo tienen. Ciertamente hay más de una forma de llegar a Roma aquí... Entonces, ¿cuál es la "mejor práctica en WP", la combinación más rígida de qué (sub)carpeta asignar a qué usuario con qué permisos...?

Frank N Frank N
5 may 2015 13:37:12

Obviamente hay varios pasos: 1) Un archivo se descarga (activado por el php- también conocido como 'wwwuser') pero en términos de permisos es una operación FTP(?), 2) el archivo se descomprime (permisos de creación para 'wwwuser'), 3) los archivos antiguos se sobrescriben (por la carga inicial seguramente propiedad de ftpuser...) ► ¿quizás activar un registro de php muy detallado y ('WP_DEBUG', true) por supuesto, para captar todos los "lamentos" y solucionarlos uno por uno?

Frank N Frank N
5 may 2015 13:38:51
Todas las respuestas a la pregunta 4
6

Según lo que entiendo, no está relacionado con permisos específicos - Las actualizaciones automáticas en general requieren que el propietario de los archivos coincida con el usuario bajo el cual se ejecuta Apache. Si ese no es el caso, recurre a otros métodos del sistema de archivos (FTP, SSH) y por lo tanto solicita una contraseña.

Puedes definir las credenciales en constantes dentro del archivo wp-config.php para que no te las pida.

Consulta Constantes de actualización de WordPress en el Codex.

23 dic 2010 10:59:49
Comentarios

Gracias Rarst. He visto ese artículo del codex, sin embargo, absolutamente no quiero usar FTP/SSH. La razón de esto es que de alguna manera, en un sitio de alojamiento compartido donde instalé WordPress manualmente también, todo funciona, a pesar de que todo pertenece a mi propio usuario. Las cosas pertenecen a mi usuario, pero también a otro grupo que yo no creé, así que imagino que hay algún tipo de SETGUID aquí, que probablemente es como el proceso del servidor web puede ejecutar la actualización automática.

Jorge Israel Peña Jorge Israel Peña
23 dic 2010 11:13:15

Mi suposición es que tu otra configuración está usando suexec así que Apache ejecuta WordPress bajo tu cuenta de usuario y no hay desajuste.

Rarst Rarst
23 dic 2010 11:21:19

Jaja, sí, eso es lo que dije. Te lo daré ya que eres el único que se molestó en responder. Gracias :)

Jorge Israel Peña Jorge Israel Peña
23 dic 2010 11:29:08

Bueno, ni siquiera ha pasado una hora desde tu pregunta y no hay una respuesta realmente perfecta: o haces coincidir al usuario o usas FTP/SSH. Por cierto, en lugar de agregar la solución a tu pregunta, ¿podrías escribirla como una respuesta con algunos enlaces sobre el tema y demás? Así otros podrán beneficiarse de ello en el futuro.

Rarst Rarst
23 dic 2010 11:34:08

Originalmente iba a hacer eso, pero tenía miedo de que pensaras que intentaba robar la respuesta de ti o que estaba desperdiciando tu tiempo o algo así. Lo haré ahora.

Jorge Israel Peña Jorge Israel Peña
23 dic 2010 11:38:55

No, esto está absolutamente bien. :) El sistema funciona para recopilar y promover respuestas excelentes y precisas, vengan de quien vengan. Múltiples respuestas son buenas y pueden resaltar diferentes aspectos de la pregunta.

Rarst Rarst
23 dic 2010 11:59:06
Mostrar los 1 comentarios restantes
0

En mi pregunta, mencioné mi confusión sobre el hecho de que todo funcionaba sin problemas en mi alojamiento compartido a pesar de que todos los archivos eran propiedad de mi usuario, mientras que en mi VPS, la actualización automática no funcionaba a menos que todos los archivos fueran propiedad del servidor web.

Estoy bastante seguro de que esto es resultado de que mi alojamiento compartido usa suexec, que esencialmente ejecuta los scripts como mi usuario. Así que, en esencia, los archivos en mi alojamiento compartido eran propiedad del 'servidor web' (realmente, el demonio CGI).

En realidad, estoy ejecutando nginx y php-fpm en mi VPS, por lo que no tengo acceso a suexec de Apache. Sin embargo, simplemente configuré php-fpm para que se ejecute como mi usuario, para probar mi teoría, y efectivamente funcionó sin problemas con todos los archivos propiedad de mi usuario. Creo que esto podría considerarse un riesgo de seguridad (no estoy seguro), así que investigaré más para ver qué puedo hacer al respecto para evitar ejecutarlo como mi usuario, pero al menos ahora sé cuál es el problema.

23 dic 2010 11:43:35
0

Tus experiencias 'mixtas' probablemente provienen de si los dos usuarios en cuestión están en el mismo grupo o no. Y, por supuesto, de qué "permisos de grupo" haya disponibles.

Tradicionalmente en PHP, el usuario php (también conocido como apacheuser, webuser o cgideamon) no tiene permisos para cambiar archivos, algo que solo el usuario FTP (o "tu cuenta de usuario" en algunas descripciones del codex) puede hacer, para dificultar que exploits de seguridad modifiquen scripts.

Lo que, por supuesto, hace imposible cualquier actualización basada en PHP de archivos PHP. Por lo tanto, con PHP en general, es común cambiar la propiedad de los archivos del usuario FTP al usuario php. Antes de hacerlo, vale la pena señalar que la 'actualización' ocurre con "credenciales FTP" (ya que proporcionas las credenciales). Luego, la descompresión de archivos zip descargados posiblemente ocurre nuevamente mediante scripts... bueno, y luego está la carpeta wp-content, que ciertamente será accedida y llenada mediante scripts de PHP... (supongo que todos nos hemos topado alguna vez con ese problema en WP). Las cosas pueden complicarse.

En resumen: El Codex de WordPress tiene una muy buena visión general en Hardening File Permissions para ser lo más 'restrictivo'/'seguro' posible con los permisos de archivos otorgados. Por user account se refieren a la cuenta FTP (es decir, no al demonio cgi/usuario php/...).

24 nov 2014 18:29:35
0
  1. Suponiendo que tienes acceso ssh, primero obtén el "usuario". A menudo el servidor web se ejecuta como www-data, pero si no estás seguro, ejecuta top y podrás ver el "USER" de php, nginx, etc.

  2. Este paso es obvio, pero encuentra dónde están tus archivos. Generalmente tus archivos están en /home/www-data/, pero he notado que nginx por defecto puede usar otro directorio que no recuerdo en este momento. En cualquier caso, usa cd para ir al directorio que contiene todos tus dominios.

  3. chown -R www-data:www-data ejemplo.com Esto cambia recursivamente la propiedad de todos los archivos bajo el directorio ejemplo.com. Lo más probable es que esto no rompa nada.

Generalmente los archivos ya tienen los permisos correctos, pero después de alojar con docenas de empresas, puedo decirte que ocasionalmente los sysadmins cambian los permisos por accidente, es un hecho de la vida. Por ejemplo, montar con sshfs podría cambiar la propiedad.

3 jul 2018 07:31:54