Actualizar Wordpress 4.0 solicita una contraseña de FTP

2

Pude actualizar Wordpress 4.0 en mi máquina local, y también actualicé algunos complementos en la máquina de producción, pero cuando intento actualizar Wordpress 4.0 en la máquina de producción, solicito mis credenciales de FTP. ¿Por qué los solicita cuando nunca los necesitó?

¿CloudFlare podría tener algo que ver con esto?

Encontré este enlace

Intenté usar chown -R apache:apache * en la instalación de Wordpress, pero todavía pide credenciales de FTP. No quiero configurar el servidor FTP. ¿Por qué necesitaría el servidor FTP cuando realiza la búsqueda?

    
pregunta Chloe 19.09.2014 - 22:18

5 respuestas

4

También tuve que cambiar el propietario del directorio web raíz.

chown apache:apache .   # or chown apache:apache /var/www/html

Edit by Otto: Chloe, ya que pediste más información de la que razonablemente podría poner en un comentario, estoy agregando esto a tu respuesta. Espero que esté bien. Si no es así, siéntase libre de revertirlo, o avíseme y lo haré.

La razón por la que comenté que este es un problema de seguridad tiene que ver con la propiedad del archivo, la restricción de permisos y la limitación de acceso.

Los sistemas similares a Unix contienen el concepto de "propietarios" y "permisos". Los archivos son propiedad de alguna cuenta de usuario y tienen permisos que controlan si son leídas, escritas o ejecutadas por otras cuentas. Esto es inherentemente una función de seguridad, para evitar que otras cuentas puedan escribir en sus archivos, o quizás para permitirles hacerlo.

Los programas en ejecución también tienen "propietarios". Esos programas heredan las capacidades de permiso de su propietario. Si ejecuta un programa, puede hacer cualquier cosa que pueda hacer, pero se le impedirá hacer cualquier cosa que no pueda, porque es "propiedad" de su cuenta de usuario.

Cuando se trata de servidores web, básicamente está permitiendo que el mundo exterior ejecute un programa en su computadora. Debido a esto, la propiedad es importante y, por lo tanto, la mayoría de los servidores web se ejecutan como un usuario "www", o en el caso común del servidor web Apache, como el usuario "apache".

Si alguien puede abrirse camino a través de algún programa que se ejecuta en su sitio web, entonces obtendrán el control sobre ese programa, pero aún estarán limitados por las capacidades de ese programa. Si piratean un proceso ejecutado por "apache", su usuario será "apache" y solo tendrán acceso como cuenta de usuario "apache".

Por lo tanto, tener sus archivos propiedad de "apache" es un problema de seguridad, porque básicamente está diciendo que cualquiera en el mundo es el propietario de estos archivos. Cualquiera que pase por esa puerta puede verlos, editarlos, modificarlos.

Por otro lado, si la cuenta de usuario que poseía los archivos era "usuario" y "apache" tenía permiso para leer los archivos, pero no para escribirlos, entonces el servidor web aún podría hacer su trabajo. . Podría leer los archivos, ejecutar los scripts PHP, hacer todo lo que se supone que debe hacer ... pero no modificar los archivos.

Es por esto que WordPress solicita credenciales de FTP. Cuando se actualiza automáticamente, se da cuenta de que los archivos WP son propiedad de "usuario", pero WordPress se está ejecutando como "apache". Por lo tanto, no se puede actualizar correctamente sin cambiar el propietario. El usuario "apache" no puede escribir archivos propiedad de "usuario". No tiene este permiso. Más importante aún, WordPress necesita crear nuevos archivos y eliminar los antiguos también. Así que si lo hace mientras se ejecuta como "apache", entonces los nuevos archivos serán propiedad de "apache", cuando deberían ser propiedad de "usuario". Intencionalmente detiene la actualización en ese momento porque no puede crear archivos con la propiedad correcta.

Pedir FTP le da un segundo enfoque. Puede conectarse de nuevo a su propio servidor a través de FTP y, al usar esas credenciales, puede escribir archivos como el usuario correcto ... por esa única vez. Después de que se desconecta, las credenciales se olvidan. Seguro en todo.

En otras palabras, cuando ingresa información de FTP, le está dando credenciales de seguridad de WordPress para poder cambiar los archivos una vez. Al hacer que los archivos de propiedad de "apache" en su lugar, le está dando a WordPress la capacidad de cambiar los archivos todo el tiempo, sin credenciales adicionales. Ha omitido la función de seguridad aquí, donde, como antes, WordPress no podía cambiar los archivos sin su información de inicio de sesión, ahora puede hacerlo. Eso es un problema.

Ahora, tal vez no ejecute el servicio FTP normalmente. Tal vez solo usas SSH. Eso esta bien tambien En ese caso, considere agregar la extensión PHP SSH2 a la configuración de PHP de su servidor. Si WordPress encuentra que, en lugar de solo FTP, también tendrá la opción de SFTP, que utiliza la conexión SSH para autenticar y copiar los archivos en su lugar. Se aplican los mismos principios, se trata de escribir archivos con la propiedad correcta para evitar problemas de seguridad.

La seguridad no es una cosa binaria, tiene capas. Si alguien obtiene acceso no autorizado, tener las cosas configuradas correctamente puede ayudar a limitar la cantidad de daños posibles que pueden hacer. La propiedad de los archivos y procesos es un nivel de seguridad bastante bajo en sistemas de tipo unix, pero sigue siendo uno importante.

    
respondido por el Chloe 21.09.2014 - 00:05
1

Intente los siguientes pasos y probablemente le permitirá actualizar todo.

  1. Abre wp-config.php y agrega '
  

define('FS_METHOD','direct');

  1. El último paso es cambiar el propietario: grupo del directorio que ya hiciste. Nota rápida: si está utilizando apache2, el grupo es www-data y no apache. Así sería como esto
  

sudo chown -R <user>:www-data <WordPress-directory>

Espero que funcione.

    
respondido por el negletios 21.09.2014 - 00:23
1

Hay un enfoque aún más seguro para configurar Wordpress que no involucra contraseñas en absoluto: use SFTP.

Básicamente, deberás realizar algunos ajustes y deberás iniciar sesión como usuario de Wordpress ftp y en su directorio principal.

Comience por crear un par de claves PKI (keygen-ssh le indica el proceso, este ejemplo asume que ha tomado todos los valores predeterminados):

keygen-ssh

Coloque las nuevas claves donde deben ir:

cat ip_rsa.pub >> .ssh/authorized_keys
mv ip_rsa* .ssh/

Cambie las protecciones (no está claro por qué Wordpress requiere esto, pero lo hace):

chmod 700 .ssh/
chmod 600 .ssh/*

Agregue las siguientes líneas a su wp-config.php:

define('FTP_HOST', 'localhost');
define('FTP_USER', '«your user name goes here»');
define('FTP_PUBKEY', '«full path to user's home directory»/.ssh/wp_rsa.pub');
define('FTP_PRIKEY', '«full path to user's home directory»/.ssh/wp_rsa');

Asegúrese de que apache pueda obtener en el directorio wp-content /:

chmod 775 «full path to WordPress directory»/wp-content

He descrito detalladamente el proceso completo en una publicación en mi blog .

    
respondido por el David Schlesinger 18.10.2014 - 20:29
0

"¿Podría CloudFlare tener algo que ver con eso?"

CloudFlare no genera tráfico ftp & En general, esto será algo que se ocupará de su proveedor de alojamiento.

    
respondido por el damoncloudflare 22.09.2014 - 20:41
0

El problema es que su servidor está ejecutando un protocolo PHP diferente del utilizado por WordPress, no sé cómo sucede. Puede verificar el protocolo PHP que está ejecutando buscando en phpinfo () una línea SERVER API. O si tiene cPanel en su hosting, puede ver Cómo habilitar suPHP en cPanel .

Haces una solución alternativa con los detalles de FTP en wp-config.php de esta manera:

define('FTP_USER', 'username');
define('FTP_PASS', 'password');
define('FTP_HOST', 'ftp.example.org:21');

También puedes definir FTP_SSL, FTP_BASE, FTP_CONTENT_DIR y FS_METHOD si lo necesitas.

    
respondido por el Mladen Petrovic 22.09.2014 - 21:20

Lea otras preguntas en las etiquetas