43 votos

¿Cómo editar el archivo 'etc/hosts' en un teléfono no rooteado?

Estoy usando LineageOS 14.1 y no quiero ni necesito rootearlo. ¿Cómo puedo remontar /system rw y editar /system/etc/hosts?

Todas las respuestas en "Cómo editar el archivo 'etc/hosts'?" esperan un teléfono con acceso root.

15voto

Izzy Puntos 45544

A menos que me haya perdido algo, eso no es posible. Sin acceso root, solo el mecanismo de flasheo de una actualización (a través de recovery o OTA) puede modificar /system. Para ser aceptado, dicho archivo de actualización debe estar firmado con la misma clave que la ROM, algo que solo el desarrollador de la ROM (en este caso, el equipo de LOS) puede hacer.

Puede haber una forma a través de un recovery personalizado que te permita editar todos los sistemas de archivos directamente (ver por ejemplo twrp). Pero sin saber de qué dispositivo se trata, no se puede afirmar si existe un recovery compatible (puedes verificarlo en la sección de Dispositivos de su sitio web para imágenes oficiales, y buscar en XDA para encontrar las no oficiales). Aparte de eso, la opción es rootear el dispositivo o no editar ningún archivo dentro de /system.

0 votos

Gracias. twrp parece ser una solución muy buena. Tiene todo lo necesario para pequeños cambios manuales o reemplazos completos de hosts. Estoy usando la última versión estable que viene con BusyBox: vi, cat, chmod y chown están allí.

1 votos

Además, no tienes que instalarlo, simplemente puedes arrancar la imagen (fastboot boot twrp.img). Lo que deja desbloquear el gestor de arranque como la única modificación en el dispositivo (además de la que quieres realizar, por supuesto ;))

1 votos

Mis pasos para modificarlo usando TWRP: 0. arranca en modo de recuperación 1. monta el sistema 2. Avanzado> Administrador de archivos > navega hasta el archivo y haz clic en el botón "chmod 755" 2. avanzado > terminal > vi /system/etc/hosts 3. haz tus cambios (5. ESC, :wq para guardar y salir de vi)

13voto

Jack Wade Puntos 231

En un teléfono no rooteado, en realidad no se puede editar el archivo hosts, pero es posible utilizar aplicaciones de VPN como Virtual Hosts o Personal DNS Filter (ambos son de código abierto, no tengo afiliación con ninguno de ellos) que interceptan el tráfico DNS y buscan un archivo hosts personalizado antes de realizar consultas al servidor DNS configurado.

O si el gestor de arranque es desbloqueable, editar el archivo hosts es posible a través de una recuperación personalizada.

Para más alternativas consulte: ¿Cómo resolver siempre un nombre de dominio a una IP fija sin root?

0 votos

Parece que Personal DNS Filter no permite configurar la resolución de nombres personalizada: solo puede bloquear nombres.

11voto

Jivan Pal Puntos 182

Es posible utilizar un perfil de VPN* para afectar la resolución de nombres de host. Ahora hay varias aplicaciones disponibles en la Play Store que proporcionan una forma conveniente de hacer esto, como Hosts Go. Ten en cuenta que, dado que esta técnica requiere el uso de un perfil de VPN, no podrás usar un VPN real junto con esta técnica.


*A partir de Android 4.0 (Nivel de API 14) — https://developer.android.com/guide/topics/connectivity/vpn

3 votos

La aplicación Hosts Go funciona para agregar algunas entradas de hosts. Sin embargo, la documentación podría ser mucho mejor. Se puede notar que el autor no es hablante nativo de inglés. En resumen, necesitas: ejecutar la aplicación, agregar entradas de hosts adicionales, activar el "interruptor de cambio de host" y luego hacer clic en el gran botón de inicio. Eso comienza la resolución de nombres de host. Ahora deberías poder usar esos hosts en Chrome, por ejemplo. El botón de detener te lleva de vuelta a la resolución de nombres de host normal.

0 votos

@Jack No estoy seguro de lo que quieres decir, no experimento ese tipo de problemas.

0 votos

@Jack Nunca he tenido ese problema, ¿quizás hay algo peculiar en tu red? Si estás intentando resolver nombres de host que son entendidos por tu enrutador doméstico (por ejemplo, micomputadora.lan), tal vez establece el servidor DNS dentro de Hosts Gos en la dirección IP de tu enrutador.

2voto

Sandstorm Puntos 1

He visto algunos comentarios diciendo que TWRP no está explicado claramente. De esta manera solo necesitarás tener activadas las opciones de desarrollador.

Así que primero obtén el archivo en tu ordenador.

adb pull /system/etc/hosts hosts

Edita el archivo hosts descargado y luego cárgalo de nuevo al teléfono en una carpeta en la que tengas permisos de escritura.

adb push hosts /sdcard

Reinicia el teléfono en modo de recuperación (TWRP), luego ve a mount y marca "system" (NO marques "Montar partición del sistema de solo lectura"), retrocede y ve a advanced -> Administrador de archivos. Ahora tienes un administrador de archivos con la partición del sistema en modo de escritura. Renombra /system/etc/hosts a algo como hosts_viejo, luego mueve tu archivo hosts editado /sdcard/hosts a /system/etc.

0 votos

Si estás dispuesto a modificar la partición del sistema, entonces más vale rootear el teléfono y ahorrarte los pasos tediosos que mencionaste. No hay beneficio en este enfoque en comparación con editar directamente el archivo hosts con acceso de root.

0 votos

La aplicación de root no funcionó en mi teléfono, y este enfoque funcionó. Por lo tanto, es útil para cualquiera en mi situación. Además, había alguien que pedía detalles sobre cómo hacerlo con TWRP.

-2voto

berbt Puntos 101

Advertencia: esto solo funcionará si ADB puede obtener acceso root, lo cual no es el caso para la mayoría de las ROMs. Funciona en LineageOS 14.1.

Requerimientos:

  • Opciones de desarrollador habilitadas en el teléfono
  • adb instalado en la computadora

Pasos

Aplica los siguientes ajustes en Opciones de desarrollador:

  • Acceso root -> Solo ADB
  • Depuración de Android -> activada

Conecta el teléfono a la computadora. Concede permiso en tu teléfono si te lo piden. En la computadora, abre una terminal y ejecuta

$ adb root

Concede permiso en tu teléfono. Vuelve a montar con

$ adb remount

Inicia un shell root remoto

$ adb shell

En el shell de adb, edita tu archivo hosts

# nano /etc/hosts

Cuando estés listo, desconéctate

# exit

3 votos

¿Eh? En LOS, el acceso de root solo está disponible si flasheas el paquete adicional de root, lo cual OP no quiere hacer (es decir, "Acceso de root = solo ADB" no se puede lograr). Entonces, ¿cómo deberían funcionar tus pasos sin root si requieren root? ¿Podrías por favor aclarar?

0 votos

Adbd no puede ejecutarse como root en una compilación de producción.

0 votos

También, ¿cómo puedes conseguir nano? cat es todo lo que tienes. Android ni siquiera viene con un vi básico.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X