Vorrei mostrarvi un trucco di magia. Vai al tuo prompt della shell preferito e digita:
[skipworthy@showme ~]$ hostname
showme
Il hostname
il comando viene fornito in Linux per interrogare "chi" il computer pensa che sia. Come è successo? Come fa il mio computer a sapere come si chiama? Tra un po' ti mostro come si fa il trucco, ma prima lascia che te ne mostri un altro:
[root@showme skipworthy]# hostnamectl set-hostname spot
[root@showme skipworthy]# hostname
spot
Grazie ancora a systemd
(che è implementato nella maggior parte ma non in tutte le moderne distribuzioni GNU/Linux, inclusi i sistemi basati su Red Hat) cambiare il nome del tuo computer Linux è abbastanza semplice. (A proposito, il nome nel prompt cambierà al prossimo accesso.) Ho discusso di come il DNS ci consente di identificare un computer sulla rete mappando un nome su un indirizzo IP. Questo è dall'altra parte. Qui stai osservando come la macchina si identifica, che è importante per far funzionare correttamente cose come l'autenticazione se il computer fa parte di un dominio.
[ Potresti anche divertirti a leggere: 10 comandi di base di Linux che devi conoscere ]
Dopo che l'hardware è stato enumerato e i driver sono stati caricati all'avvio, su una distribuzione basata su systemd, il bootloader carica ed esegue systemd
script. Vicino all'inizio di questo processo è quando è impostato il nome host:
2.653601] rtc_cmos 00:00: setting system clock to 2020-11-17 19:36:44 UTC (
1605641804)
[ 2.654885] Freeing unused kernel memory: 1980k freed
[ 2.655179] Write protecting the kernel read-only data: 12288k
[ 2.657125] Freeing unused kernel memory: 416k freed
[ 2.658710] Freeing unused kernel memory: 552k freed
[ 2.663220] random: systemd: uninitialized urandom read (16 bytes read)
[ 2.663530] random: systemd: uninitialized urandom read (16 bytes read)
[ 2.663543] random: systemd: uninitialized urandom read (16 bytes read)
[ 2.667147] systemd[1]: systemd 219 running in system mode. (+PAM +AUDIT +SEL
INUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +
XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
[ 2.667189] systemd[1]: Detected virtualization kvm.
[ 2.667200] systemd[1]: Detected architecture x86-64.
[ 2.667204] systemd[1]: Running in initial RAM disk.
[ 2.667250] systemd[1]: Set hostname to <showme>.
[ 2.701020] random: systemd: uninitialized urandom read (16 bytes read)
A parte questo, nei sistemi in cui systemd
non gestisce lo spazio utente, puoi configurare il nome host in un paio di file. Questi file sono effettivamente dove systemd
cerca queste informazioni e le registra quando usa il hostnamectl
comando. Il hostname
e hostnamectl
i comandi in realtà usano chiamate di sistema a livello di kernel denominate gethostname
, getdomainname
e alcune funzioni fornite dal resolver
chiamata di sistema. Questi sono in circolazione fin dall'inizio della storia del kernel Linux. Queste sono le stesse chiamate di sistema utilizzate dalla shell per popolare il nome della macchina nel prompt, tra gli altri posti.
Entrambi i file che esaminerai risiedono in /etc
, che ricorderete è il percorso predefinito per la maggior parte dei file utilizzati per configurare e gestire un sistema Linux. Il primo è chiamato, appropriatamente, /etc/hostname
:
[root@showme skipworthy]# cat /etc/hostname
showme
Abbastanza semplice:quando invochi hostname
dal prompt della shell, Linux esamina /etc/hostname
file per la risposta. Puoi anche usare il hostname
comando per modificare il nome del computer, ma nei kernel gestiti da systemd è generalmente preferibile utilizzare hostnamectl
comando invece.
L'altro file è /etc/hosts
, che è dove Linux cerca di tradurre gli indirizzi IP in nomi prima di controllare /etc/resolv.conf
per informazioni DNS. Ecco il /etc/hosts
file:
[skipworthy@showme ~]$ cat /etc/hosts
127.0.0.1 showme.forest showme
192.168.11.111 showme.forest showme
192.168.0.200 Jupiter
192.168.0.100 uhura
Le prime due righe sono ciò che vuoi guardare. Nota che il formato è:
ip address fqdn alias
Quindi hai l'indirizzo IP , quindi nomehost.nomedominio (o Nome di dominio pienamente qualificato ), seguito dal nome host . Puoi anche aggiungere alias o alias di dominio aggiuntivi se vengono utilizzati nell'ambiente.
Usa il -f
cambia quando rivochi il hostname
comando per vedere l'FQDN del tuo host:
[skipworthy@showme ~]$ hostname -f
showme.forest
[ Scarica ora:una guida per l'amministratore di sistema allo scripting Bash. ]
Il hostnamectl
command ha alcuni altri interruttori e flag interessanti e utili:puoi impostare il tipo di ambiente (sviluppo vs. produzione, per esempio) e puoi persino inserire note di posizione (rack 3, stanza 200, per esempio). Puoi interrogarli e impostarli da remoto. Come al solito, puoi imparare ogni genere di cose interessanti dalle buone vecchie pagine di manuale.