File host per utente


16

Esiste un modo per definire gli alias host (come in /etc/hosts) in base all'utente, ovvero in un file /home/user/.hosts?

Il mio obiettivo principale è condividere facilmente gli alias host tramite rsync tra le macchine nella mia piccola lan. Poiché non esiste un computer che sarà sempre collegato in modo affidabile, un server DNS non è un'opzione (giusto?).

Grazie.


2
Oh wow Stavo per pubblicare questa stessa domanda, ma vedo che hai. Per me ha senso, ma stranamente non esiste su Linux. Nel mio caso ho una forma imprigionata di Linux con sistema operativo Android sul mio dispositivo Samsung Galaxy Tab e, a causa del mio sviluppo web, ho spesso bisogno di modificare / etc / hosts. In un Linux imprigionato, non è possibile modificare / etc / hosts. Quindi, un ~ / .hosts sarebbe davvero bello avere, sicuramente!
ServerChecker il

hai trovato qualche soluzione alla fine?
Quamis,

Sfortunatamente no. Forse non è possibile perché è una minaccia alla sicurezza.
mrucci,

1
Per SSH, è possibile utilizzare gli alias come soluzione alternativa parziale. Inserisci il alias ssh="ssh "tuo .bashrc (nota lo spazio bianco finale alla fine dell'alias) insieme a alias myhost="me@real-name-of-my-host.com"e poi puoi dire ssh myhoste funzionerà.
Noah Sussman,

Un approccio migliore per risolvere il problema sarebbe quello di inserire una voce in ~/.ssh/configcui aggiungere le righe: Host my-hoste Hostname 10.0.0.xxx<- IP della macchina. La cosa bella è che ti permette anche di specificare username, porta, quale chiave usare ecc.
Ciprian Tomoiagă

Risposte:


8

Una soluzione migliore sarebbe installare Avahi e libnss-mdns e quindi usare gli HOSTNAME.localindirizzi.

Questi nomi non sarebbero per utente, ma risolverebbero l'obiettivo dichiarato di avere nomi comuni per tutte le macchine su una LAN.


C'è un modo per specificare HOSTNAMES.local in un file locale (per utente) anziché in / etc / avahi / hosts?
mrucci,

Penso che Teddy significhi che ogni macchina avrebbe un nome che Avahi avrebbe scoperto. La mappatura machine-to-name dovrebbe davvero variare in base all'utente?
pjc50,

no, non dovrebbe variare in base all'utente. Ho solo bisogno di un metodo per condividere gli alias host (in un modo che mi permetta di fare ping hostnameAlias) senza i privilegi di root. Avahi fa quasi il lavoro giusto, perché posso usare la macchina $ HOSTNAME come alias. Solo per curiosità: dove viene fatta questa mappatura?
mrucci,

3

Vedi https://github.com/figiel/hosts per un modo di fare esattamente quello che chiedi.

Si tratta di una piccola libreria, caricata tramite LD_PRELOAD e che sovrascrive gethostbyname () e diverse funzioni correlate che i programmi utilizzano per la risoluzione DNS. Funziona bene per me. L'unica avvertenza che ho riscontrato è che il browser Chrome non utilizza la risoluzione DNS nativa, ma implementa invece il proprio client DNS. Per risolvere questo problema devi disabilitare il client DNS di Chrome .


2

L'implementazione glibc di Linux non può farlo.

Ma potresti estenderlo con una libreria nss che potrebbe. Questo sarebbe facile da scrivere poiché potresti strappare la parte rilevante di libc che si trova nella directory nss_files in

http://ftp.gnu.org/gnu/glibc/glibc-2.5.tar.bz2

Per esempio

Questa, tuttavia, sarebbe una cosa strana piuttosto strana da fare.



0

Come descrivono le altre risposte in questa pagina, ci sono modi per ottenere funzionalità simili, ma:

No, non esiste un file "per utente" simile /etc/hostso un altro modo per sovrascrivere la risoluzione dei nomi predefinita come utente non privilegiato in GNU / Linux.


-1

Sembrerebbe molto più semplice scrivere uno script che determini quali host sono attivi e quindi imposta il nome host per il seguente comando rsync. Qualcosa come questo

#! / Usr / bin / sh

HOST = "none"
TESTFILE = / tmp / testfile. $$
toccare $ TESTFILE
per me in hosta hostb hostc olivia
fare
    scp $ TESTFILE $ i: / tmp
    se [$? -eq 0]
    poi
        Host = $ i
    fi
fatto
rm $ TESTFILE

if [$ HOST! = "none"]
poi
    echo $ HOST è attivo
    rsync -av --rsh = file ssh $ HOST: / dest
altro
    echo "Nessun host trovato"
    uscita 1
fi

Questo non è testato e ha presupposti, quindi dovrai modificarlo per adattarlo.


Grazie per la risposta, ma stavo cercando di risolvere un altro problema: come archiviare e condividere l'elenco dei nomi host (hosta hostb hostc olivia) in una cartella home dell'utente, in modo che io possa scriverersync src olivia:/dst
mrucci,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.