Modificare il file hosts di Android risulta molto utile, sia per bloccare l'accesso a risorse indesiderate (malware o pubblicità), sia per forzare la risoluzione dei nomi a dominio sugli indirizzi IP della rete locale (LAN) allo scopo di testare un sito o un'app in fase di sviluppo. Vediamo dunque come procedere per leggere e modificare il file hosts di Android, operando tramite PC e senza imbatterci negli errori adb: error: failed to copy 'hosts' to '/system/etc/hosts': couldn't create file: Read-only file system oppure adb: error: failed to copy 'hosts' to '/system/etc/hosts': couldn't create file: Permission denied

Guida definitiva: come modificare file hosts Android tramite PC (senza errori adb: error: failed to copy 'hosts' to '/system/etc/hosts': couldn't create file: Read-only file system oppure Permission denied) - android kernel spotlight

nota: in questo articolo vedremo direttamente la procedura pratica per modificare il file hosts di Android. Per tutte le informazioni sul file hosts, il formato da utilizzare ecc:

» Leggi: La Grande Guida al file hosts: che cos'è, a cosa serve e come modificarlo per bloccare malware e pagine web indesiderate o sviluppare app e siti in locale (Windows, Linux, Mac, Android)

Per svolgere la procedura useremo i comandi adb pull e adb push per leggere e scrivere file sullo smartphone. Se non li avete mai usati prima, è certamente una buona idea fare un po' di pratica prima di procedere:

» Leggi: ADB pull e push: come copiare file fra Android e PC, anche quando lo smartphone non si avvia più

Passo 1: Necessari Root oppure custom ROM

Prima di iniziare, è necessario chiarire che l'accesso al file hosts di Android è possibile solamente dopo aver eseguito il rooting del device. Per la guida:

» Leggi: Come rootare lo smartphone Android: guida facile in italiano al root/rooting con SuperSU

Guida definitiva: come modificare file hosts Android tramite PC (senza errori adb: error: failed to copy 'hosts' to '/system/etc/hosts': couldn't create file: Read-only file system oppure Permission denied) - Screenshot_2016-12-25-22-40-46

In alternativa, potete modificare il file hosts di Android anche sugli smartphone/tablet che montino LineageOS, OmniROM, Resurrection Remix o una qualsiasi altra ROM non-ufficiale: il motivo è che tali firmware offrono già l'accesso root di default. Per la guida:

» Leggi: Come installare / flashare LineageOS, OmniROM, Resurrection Remix ed altre custom ROM sullo smartphone Android: guida completa in italiano

Passo 2: Installare Android Debug Bridge (ADB)

Android Debug Bridge (ADB) è un programma che consente di impartire comandi ai dispositivi Android tramite il PC. Procedete dunque ad installarlo, poiché lo utilizzeremo per accedere al file hosts:

» Leggi: Guida facile per principianti: come installare ADB (Android Debug Bridge) e Fastboot sul PC Windows ed impartire comandi allo smartphone Android

Assicuratevi di attivare la modalità debug USB e di autorizzare il PC alla connessione, così come descritto nella guida indicata. Prima di proseguire, dovete essere davanti ad un Prompt dei comandi il cui percorso corrente sia la cartella platform-tools nella quale sono stati scaricati ADB e Fastboot.

Passo 3: Ottenere il file hosts di Android

Siamo ora pronti a copiare su PC il file hosts di Android. Il comando da impartire è:

adb pull /system/etc/hosts hosts_di_android.txt

Il responso dovrebbe essere simile a

[100%] /system/etc/hosts

Questo recupera hosts dal suo percorso sullo smartphone e lo scrive in un file chiamato hosts_di_android.txt all'interno della cartella corrente (ovvero, quella nella quale si trova ADB)

Guida definitiva: come modificare file hosts Android tramite PC (senza errori adb: error: failed to copy 'hosts' to '/system/etc/hosts': couldn't create file: Read-only file system oppure Permission denied)

Passo 4: Modificare l'hosts di Android

Proseguiamo ora ad aprire il file hosts_di_android.txt con l'editor di testi preferito ed apportare tutte le modifiche desiderate. Per maggiori info:

» Leggi: La Grande Guida al file hosts: che cos'è, a cosa serve e come modificarlo per programmare app e siti in locale o bloccare malware e risorse indesiderate (Windows, Linux, Mac, Android)

Nell'esempio seguente ho aggiunto queste righe:

# Modifiche file hosts by TurboLab.it

192.168.0.1 dev.turbolab.it

127.0.0.1 facebook.com www.facebook.com m.facebook.com

La prima è un commento per ricordarmi, in seguito, che sono stato io ad apportare queste modifiche.

La seconda mi permetterà di visualizzare all'indirizzo http://dev.turbolab.it la copia di TurboLab.it in esecuzione sul mio PC, di modo da testare che le novità introdotte funzionino correttamente anche su mobile.

L'ultima è un semplice blocco di Facebook che ho inserito per fare una prova

Guida definitiva: come modificare file hosts Android tramite PC (senza errori adb: error: failed to copy 'hosts' to '/system/etc/hosts': couldn't create file: Read-only file system oppure Permission denied)

Passo 5: Montare il filesystem in lettura+scrittura

Se provassimo a copiare ora il file hosts sul dispositivo Android otterremmo un errore simile a questo:

adb: error: failed to copy 'hosts' to '/system/etc/hosts': couldn't create file: Read-only file system

Per impostazione predefinita, infatti, la partizione /system/ del dispositivo Android è montata in sola lettura. Per potervi scrivere il file hosts, eseguiamo questi comandi per accedere alla shell del device e ri-montare detta partizione in lettura+scrittura:

adb shell

su

mount -o remount,rw /system

exit

exit

(sì, dovete ripetere exit due volte)

Nessuno di questi comandi genera una risposta. È normale.

Passo 6: Lanciare ADB come root

Non è ancora finita. Se provassimo a copiare ora il file hosts sul dispositivo Android otterremmo un errore simile a questo:

adb: error: failed to copy 'hosts' to '/system/etc/hosts': couldn't create file: Permission denied

Come già puntualizzato, anche sotto Android il file hosts è accessibile unicamente all'utente root. Riavviamo dunque ADB come root tramite il comando

adb root

Non si ottiene nessuna risposta, ma è corretto così.

Passo 7: Copiare il file hosts modificato

Bene, a questo punto siamo davvero pronti a riportare il nostro file hosts modificato sullo smartphone/tablet. Basta impartire

adb push hosts_di_android.txt /system/etc/hosts

La conferma mostrata è:

[100%] /system/etc/hosts

Guida definitiva: come modificare file hosts Android tramite PC (senza errori adb: error: failed to copy 'hosts' to '/system/etc/hosts': couldn't create file: Read-only file system oppure Permission denied)

Passo 8: Test

La modifica al file hosts di Android diviene effettiva immediatamente, senza bisogno di riavviare il device e nemmeno le singole app (basta un "ricarica" in Chrome, ad esempio)

Guida definitiva: come modificare file hosts Android tramite PC (senza errori adb: error: failed to copy 'hosts' to '/system/etc/hosts': couldn't create file: Read-only file system oppure Permission denied) - Screenshot_20170102-160424

Passo 9: Applicare altre modifiche

Da questa situazione, potrete continuare a modificare il file hosts tramite PC e lanciare il comando di "push" (Passo 8) immediatamente. Al riavvio del device, però, la partizione /system/ verrà nuovamente montata in sola-lettura, motivo per cui dovrete poi ripetere anche il Passo 6.