¿Cómo puedo hacer que mi archivo .htaccess sea escribible por wp-admin?
Mi proveedor de servicios de Internet cambió el hosting de mi blog WordPress y todo dejó de funcionar. Hubo un problema de DNS que resolvieron, pero luego todas las páginas, excepto la página de inicio, devolvían un error 404.
Cuando revisé la página de enlaces permanentes (/wp-admin/options-permalinks.php
) en wp-admin, vi lo siguiente:
Si tu archivo .htaccess fuera escribible, podríamos hacer esto automáticamente, pero no lo es, así que estas son las reglas mod_rewrite que deberías tener en tu archivo .htaccess. Haz clic en el campo y presiona CTRL + a para seleccionar todo.
Agregar lo que se listaba (a través del administrador de archivos de mi ISP) solucionó el problema, pero me hizo reflexionar.
Lo que me gustaría es que el archivo .htaccess
sea escribible para wp-admin.
Sé que el archivo no debe ser escribible para todos y mantendría los permisos tan restrictivos como sea posible para mantener la seguridad, solo estoy interesado en hacer mi vida más fácil.
Sin embargo, noto que los permisos en el archivo son:
rw-r--r--
Entonces, ¿qué permisos necesito establecer para hacer que el archivo sea escribible por wp-admin, pero no por cualquier persona? ¿O son otros permisos en el servidor los que necesitan ser configurados?
Puedo hacer ediciones manualmente a través de la interfaz del administrador de archivos del ISP, así que no es como si no pudiera actualizar el archivo en absoluto. Es solo que podría volverse molesto si tengo que seguir haciendo esto.

En los sistemas de archivos de computadora, diferentes archivos y directorios tienen permisos que especifican quién y qué puede leer, escribir, modificar y acceder a ellos. Esto es importante porque WordPress puede necesitar acceso para escribir en archivos dentro de tu directorio wp-content para habilitar ciertas funciones.
Sin embargo, es mejor mantener el archivo .htaccess no escribible para el mundo. El archivo .htaccess es un archivo de configuración distribuido y es la forma en que Apache maneja cambios de configuración en una base por directorio.
http://codex.wordpress.org/htaccess
Mantener el archivo .htaccess como escribible para el mundo tiene sus propias consecuencias también. Principalmente problemas de seguridad. Lo peor que puede pasar como resultado de usar permisos 777 en una carpeta o incluso un archivo, es que si un atacante malicioso o entidad logra subir un archivo malicioso o modificar un archivo existente para ejecutar código, tendrán control completo sobre tu blog, incluyendo tener acceso a tu base de datos y contraseña.
http://codex.wordpress.org/Changing_File_Permissions
Permisos por defecto (umask 022)
644 -rw-r--r-- /home/user/wp-config.php
644 -rw-r--r-- /home/user/cgi-bin/.htaccess
Permisos asegurados
600 -rw------- /home/user/wp-config.php
604 -rw----r-- /home/user/cgi-bin/.htaccess
Permisos para .htaccess
644 > 604 - El bit que permitía al grupo propietario del archivo .htaccess permiso de lectura fue removido. 644 es normalmente requerido y recomendado para archivos .htaccess.

Si un atacante puede subir un archivo PHP o leer la información de inicio de sesión de tu base de datos desde wp-config.php
, básicamente estás en problemas. Tener un archivo .htaccess
de solo lectura no te ayudará mucho en ese punto.

@SimonEast correcto gracias, pero no estoy seguro de dónde en mi respuesta mencioné mantener wp-config.php escribible. Además, WordPress sí necesita acceso de escritura en ciertas carpetas como la carpeta de uploads. Animo a los usuarios a revisar la página de permisos de archivos de WordPress que también mencioné en mi respuesta. :)

Versión corta: No puedes.
Versión larga: Técnicamente existen formas de lograr esto, pero ① es probable que no estén disponibles para ti como usuario en un servidor compartido donde no tienes permisos de root y ② incluso si lo estuvieran, vienen con "trampas" con las que realmente no quieres lidiar.
En primer lugar, si no eres el administrador del sistema con permisos root, es dudoso que tengas alguna posibilidad de establecer los permisos necesarios.
Los bits de permisos UNIX controlan si tú, las personas de tu grupo y cualquier otro pueden leer, escribir y ejecutar archivos. Dado ese conjunto de opciones y el hecho de que tú y el servidor web probablemente no estén en el mismo grupo, no hay forma de que uses esos permisos para establecer un valor mediante el cual tú y el usuario del servidor web puedan escribir el archivo pero otras personas no. Por definición, tendrías que cambiar los permisos "globales" y... ya puedes imaginarte el problema.
En la remota posibilidad de que tu cuenta de usuario y el servidor web en realidad se ejecuten en el mismo grupo de usuarios, deberías comenzar a dudar seriamente de la seguridad de tu proveedor de servicios web.
Una técnica ligeramente menos arriesgada que emplean algunos hosts es darte una interfaz especial para convertir archivos y carpetas específicos para que sean propiedad del servidor web. Esta es una elección que prioriza la comodidad sobre la seguridad que hacen para facilitar las cosas a los usuarios, pero viene con condiciones. En cualquier caso, no podrías editar manualmente el archivo sin cambiar la propiedad de vuelta a ti.
Incluso si tienes una o más formas de permitir que el software del servidor web edite el archivo .htaccess, estarás mucho mejor no aprovechándolas. En un entorno de hosting compartido, debes darte cuenta de que otras personas además de ti TAMBIÉN están ejecutando código como usuario del servidor web. Si tu instalación de Wordpress puede cambiar tu archivo .htaccess, ¿qué impide que el Wordpress del siguiente usuario lo cambie maliciosamente? Bueno, en teoría los ajustes de open_base_dir de PHP lo limitarán a leer y escribir cosas dentro de tu DOCUMENT_ROOT, pero aunque el módulo de PHP es razonablemente bueno para hacer cumplir esto, es bastante común que los ISP y hosts pequeños tengan otros sistemas CGI que no están propiamente limitados o configuraciones de servidor mal configuradas que permiten a otros usuarios en el mismo servidor meterse con cualquier cosa que otros usuarios hayan convertido para que sea propiedad del servidor web.
La única forma técnica de hacer esto realmente posible es con una configuración de host virtual que en realidad se ejecute como tú al servir tu sitio (lo que en realidad introduce otros riesgos) o con ACL del sistema de archivos, y aunque es posible, es poco probable que tu ISP esté equipado para configurarlos correctamente.
En resumen, en términos de seguridad es mejor que wp-admin no pueda escribir en .htaccess. De todos modos, esto debería ser un problema poco frecuente, generalmente en cambios de versión de Wordpress o del software del servidor (por ejemplo, el cambio de Apache 2.2 a 2.4 significó que muchos archivos .htaccess en toda la red tuvieron que actualizarse, pero eso llevó años de desarrollo). Esto no es algo que debería cambiar cada vez que actualizas tu sitio, solo si hiciste un cambio arquitectónico y necesitas facilitar la migración de URL antiguas a nuevas, etc.
