GNU/Linux >> Linux Esercitazione >  >> Linux

Come cambiare l'identità di un sistema Linux

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.


Linux
  1. Come cambiare il colore del tuo terminale Linux

  2. Come modificare una locale di sistema su RHEL7 Linux

  3. Come modificare il nome host in Linux

  4. Come modificare la variabile PATH in Linux

  5. Come modificare la shell predefinita in Linux

Come modificare il prompt di Sudo in Linux

Come modificare la shell predefinita nel sistema Linux

Come utilizzare il comando fd sul sistema Linux

Come modificare la password di root in Linux

Come modificare il nome host su Debian Linux

Come modificare nome utente e nome host su sistema Linux