Cambiar permisos de archivos y recomendaciones para WordPress en un sistema Linux
Para fortalecer tu instalación de WordPress, tener el conjunto recomendado de permisos de archivo es importante. A continuación hay algunas recomendaciones recopiladas de la web.
Primero, tenemos un breve resumen de las recomendaciones:
# restablecer a valores seguros por defecto find /usr/share/wordpress -exec chown www-data:www-data {} \; find /usr/share/wordpress -type d -exec chmod 755 {} \; find /usr/share/wordpress -type f -exec chmod 644 {} \; # permitir a wordpress administrar wp-config.php (pero prevenir acceso mundial) chgrp www-data /usr/share/wordpress/wp-config.php chmod 660 /usr/share/wordpress/wp-config.php # permitir a wordpress administrar .htaccess chgrp www-data /usr/share/wordpress/.htaccess chmod 664 /usr/share/wordpress/.htaccess # permitir a wordpress administrar wp-content find /usr/share/wordpress/wp-content -exec chgrp www-data {} \; find /usr/share/wordpress/wp-content -type d -exec chmod 775 {} \; find /usr/share/wordpress/wp-content -type f -exec chmod 664 {} \;
Esto es principalmente para aquellos que tienen prisa y solo quieren ir al grano. Básicamente estás intentando limitar quién puede hacer qué en tu servidor web. A continuación están las instrucciones de wordpress.org sobre cómo administrar permisos con más detalle: Obtenido de: http://codex.wordpress.org/Changing_File_Permissions En los sistemas de archivos de computadoras, diferentes archivos y directorios tienen permisos que especifican quién y qué puede leerlos, escribirlos, modificarlos y acceder a ellos. Esto es importante porque WordPress puede necesitar acceso de escritura a archivos en tu directorio wp-content para habilitar ciertas funciones.
Modos de permisos
7 5 5
usuario grupo mundo
r+w+x r+x r+x
4+2+1 4+0+1 4+0+1 = 755
El modo de permiso se calcula sumando los siguientes valores para el usuario, el grupo del archivo y para todos los demás. El diagrama muestra cómo.
-
Lectura 4 - Permitido leer archivos
-
Escritura 2 - Permitido escribir/modificar archivos
-
eJecutar 1 - Leer/escribir/eliminar/modificar/directorio
7 4 4 usuario grupo mundo r+w+x r r 4+2+1 4+0+0 4+0+0 = 744
Ejemplos de modos de permisos
| Ver lista completa de 0000 a 0777. Modo | Permisos Str | Explicación |
|---|---|---|
| 0477 | -r—rwxrwx | propietario tiene solo lectura (4), otros y grupo tienen rwx (7) |
| 0677 | -rw-rwxrwx | propietario tiene solo rw (6), otros y grupo tienen rwx (7) |
| 0444 | -r—r—r— | todos tienen solo lectura (4) |
| 0666 | -rw-rw-rw- | todos tienen solo rw (6) |
| 0400 | -r-------- | propietario tiene solo lectura (4), grupo y otros no tienen permisos (0) |
| 0600 | -rw------- | propietario tiene solo rw, grupo y otros no tienen permisos |
| 0470 | -r—rwx--- | propietario tiene solo lectura, grupo tiene rwx, otros no tienen permisos |
| 0407 | -r-----rwx | propietario tiene solo lectura, otros tienen rwx, grupo no tiene permisos |
| 0670 | -rw-rwx--- | propietario tiene solo rw, grupo tiene rwx, otros no tienen permisos |
| 0607 | -rw----rwx | propietario tiene solo rw, grupo no tiene permisos y otros tienen rwx |
Esquema de permisos para WordPress
Los permisos serán diferentes de un host a otro, por lo que esta guía solo detalla los principios generales. No puede cubrir todos los casos. Esta guía aplica a servidores con una configuración estándar (nota, para hosting compartido usando métodos “suexec”, ver más abajo). Típicamente, todos los archivos deben ser propiedad de tu cuenta de usuario (ftp) en tu servidor web, y deben ser escribibles por esa cuenta. En hosts compartidos, los archivos nunca deben ser propiedad del proceso del servidor web en sí (a veces este es el usuario www, o apache, o nobody). Cualquier archivo que necesite acceso de escritura desde WordPress debe ser propiedad o tener propiedad de grupo del cuenta de usuario usada por WordPress (que puede ser diferente de la cuenta del servidor). Los permisos de archivos y carpetas de WordPress deben ser los mismos para la mayoría de los usuarios, dependiendo del tipo de instalación que realizaste y la configuración de umask de tu entorno del sistema al momento de la instalación.
NOTA: Si instalaste WordPress tú mismo, probablemente no necesitas modificar los permisos de archivos. A menos que estés experimentando problemas con errores de permisos, o quieras hacerlo, probablemente no deberías meterte con esto.
Hosting compartido con suexec
Lo anterior puede no aplicar a sistemas de hosting compartido que usan el enfoque “suexec” para ejecutar binarios PHP. Este es un enfoque popular usado por muchos hosts web. Para estos sistemas, el proceso php se ejecuta como el propietario de los archivos php en sí, permitiendo una configuración más simple y un entorno más seguro para el caso específico de hosting compartido.
En tal configuración suexec, el esquema de permisos correcto es simple de entender.
- Todos los archivos deben ser propiedad de la cuenta del usuario real, no la cuenta de usuario usada para el proceso httpd.
- La propiedad de grupo es irrelevante, a menos que haya requisitos específicos de grupo para la verificación de permisos del proceso del servidor web.
- Todos los directorios deben ser 755 o 750.
- Todos los archivos deben ser 644 o 640. Excepción: wp-config.php debe ser 600 para prevenir que otros usuarios en el servidor lo lean.
- Ningún directorio debería tener jamás 777, incluso los directorios de carga.
Usar un cliente FTP
Los clientes FTP te permiten establecer permisos para archivos y directorios en tu host remoto. Esta función a menudo se llama chmod o establecer permisos en el menú del programa.
Usar la línea de comandos
Si tienes acceso shell/SSH a tu cuenta de hosting, puedes usar chmod para cambiar permisos de archivos, que es el método preferido para usuarios experimentados. Antes de empezar a usar chmod sería recomendable leer algunos tutoriales para asegurarte de entender qué puedes lograr con él. Establecer permisos incorrectos puede dejar tu sitio fuera de línea, así que por favor tómate tu tiempo.
Puedes hacer que todos los archivos en tu directorio wp-content sean escribibles en dos pasos, pero antes de hacer cada archivo y carpeta escribible, primero deberías probar alternativas más seguras como modificar solo el directorio. Prueba cada uno de estos comandos primero y si no funcionan entonces hazlo recursivo, lo que hará incluso tus archivos de imagen de temas escribibles. Reemplaza DIR con la carpeta en la que quieres escribir
chmod -v 746 DIR
chmod -v 747 DIR
chmod -v 756 DIR
chmod -v 757 DIR
chmod -v 764 DIR
chmod -v 765 DIR
chmod -v 766 DIR
chmod -v 767 DIR
Si esos fallan en permitirte escribir, pruébalos todos de nuevo en orden, pero esta vez reemplaza -v con -R, que cambiará recursivamente cada archivo ubicado en la carpeta. Si después de eso aún no puedes escribir, puedes intentar 777.
Acerca de chmod
chmod es un comando unix que significa “change mode” (cambiar modo) en un archivo. La bandera -R significa aplicar el cambio a cada archivo y directorio dentro de wp-content. 766 es el modo al que estamos cambiando el directorio, significa que el directorio es legible y escribible por WordPress y cualquier otro usuario en tu sistema. Finalmente, tenemos el nombre del directorio que vamos a modificar, wp-content.
Los peligros del 777
El quid de este problema de permisos es cómo está configurado tu servidor. El nombre de usuario que usas para FTP o SSH a tu servidor probablemente no es el nombre de usuario usado por la aplicación del servidor en sí para servir páginas.
7 7 7
usuario grupo mundo
r+w+x r+w+x r+w+x
4+2+1 4+2+1 4+2+1 = 777
A menudo el servidor Apache es ‘propiedad’ de las cuentas de usuario dhapache o nobody. Estas cuentas tienen una cantidad limitada de acceso a archivos en el servidor, por una muy buena razón. Al establecer tus archivos personales y carpetas propiedad de tu cuenta de usuario como escribibles por el mundo, literalmente los estás haciendo escribibles por el mundo. Ahora los usuarios dhapache y nobody que ejecutan tu servidor, sirviendo páginas, ejecutando intérpretes php, etc., tendrán acceso completo a los archivos de tu cuenta de usuario. Esto proporciona una vía para que alguien obtenga acceso a tus archivos secuestrando básicamente cualquier proceso en tu servidor, esto también incluye cualquier otro usuario en tu máquina. Así que deberías pensar cuidadosamente antes de modificar permisos en tu máquina.
El peor resultado
Lo peor que puede pasar como resultado de usar permisos 777 en una carpeta o incluso un archivo, es que si un cracker malicioso o entidad logra cargar un archivo engañoso o modificar un archivo actual para ejecutar código, tendrán control completo sobre tu blog, incluyendo tener la información de tu base de datos y contraseña.
Encontrar permisos de archivos seguros
El archivo .htaccess es uno de los archivos que es accedido por el propietario del proceso que ejecuta el servidor. Así que si estableces los permisos demasiado bajos, tu servidor no podrá acceder al archivo y causará un error. Ahí radica el método para encontrar las configuraciones más seguras. Comienza demasiado restrictivo y aumenta los permisos hasta que funcione.
Ver también
- (http://wordpress.org/support/topic/50863 “http://wordpress.org/support/topic/50863”)
- (http://codex.wordpress.org/htaccess_for_subdirectories “htaccess for subdirectories”)
- (http://codex.wordpress.org/Editing_wp-config.php#Override_of_default_file_permissions “http://codex.wordpress.org/Editing_wp-config.php#Override_of_default_file_permissions”)