Ich möchte Ihnen einen Zaubertrick zeigen. Gehen Sie zu Ihrem bevorzugten Shell-Prompt und geben Sie Folgendes ein:
[skipworthy@showme ~]$ hostname
showme
Der hostname
Befehl wird in Linux bereitgestellt, um abzufragen, "für wen" sich der Computer hält. Wie ist das passiert? Woher weiß mein Computer, wie er heißt? Ich zeige Ihnen gleich, wie der Trick funktioniert, aber lassen Sie mich Ihnen zuerst einen anderen zeigen:
[root@showme skipworthy]# hostnamectl set-hostname spot
[root@showme skipworthy]# hostname
spot
Nochmals vielen Dank an systemd
(das in den meisten, aber nicht allen modernen GNU/Linux-Distributionen, einschließlich Red Hat-basierten Systemen, implementiert ist) Das Ändern des Namens Ihres Linux-Computers ist ziemlich einfach. (Übrigens ändert sich der Name in der Eingabeaufforderung bei der nächsten Anmeldung.) Ich habe besprochen, wie DNS es uns ermöglicht, einen Computer im Netzwerk zu identifizieren, indem wir einen Namen einer IP-Adresse zuordnen. Dies ist auf der anderen Seite davon. Hier sehen Sie, wie sich der Computer identifiziert, was wichtig ist, damit Dinge wie die Authentifizierung richtig funktionieren, wenn der Computer Teil einer Domäne ist.
[ Vielleicht gefällt Ihnen auch die Lektüre: 10 grundlegende Linux-Befehle, die Sie kennen müssen ]
Nachdem die Hardware aufgelistet und die Treiber beim Booten geladen wurden, lädt der Bootloader bei einer systemd-basierten Distribution den systemd
und führt ihn aus Skripte. Am Anfang dieses Prozesses steht das Festlegen des Hostnamens:
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)
Abgesehen davon, in Systemen, in denen systemd
den Benutzerbereich nicht verwaltet, können Sie den Hostnamen in einigen Dateien konfigurieren. Diese Dateien befinden sich tatsächlich dort, wo systemd
sucht nach diesen Informationen und zeichnet sie auf, wenn Sie hostnamectl
verwenden Befehl. Der hostname
und hostnamectl
Befehle verwenden tatsächlich Systemaufrufe auf Kernel-Ebene mit dem Namen gethostname
, getdomainname
, und einige Funktionen, die vom resolver
bereitgestellt werden Systemaufruf. Diese gibt es schon ziemlich früh in der Geschichte des Linux-Kernels. Dies sind dieselben Systemaufrufe, die von der Shell verwendet werden, um unter anderem den Namen der Maschine in die Eingabeaufforderung einzufügen.
Beide Dateien, die Sie sich ansehen werden, befinden sich in /etc
, an die Sie sich erinnern werden, der Standardspeicherort für die meisten Dateien, die zum Konfigurieren und Verwalten eines Linux-Systems verwendet werden. Der erste heißt passenderweise /etc/hostname
:
[root@showme skipworthy]# cat /etc/hostname
showme
Ganz einfach:Wenn Sie hostname
aufrufen Vom Shell-Prompt aus schaut Linux nach /etc/hostname
Datei für die Antwort. Sie können auch den hostname
verwenden Befehl, um den Computernamen zu ändern, aber in systemd-verwalteten Kerneln wird im Allgemeinen die Verwendung von hostnamectl
bevorzugt Befehl statt.
Die andere Datei ist /etc/hosts
, wo Linux versucht, IP-Adressen in Namen zu übersetzen, bevor es /etc/resolv.conf
überprüft für DNS-Informationen. Hier ist die /etc/hosts
Datei:
[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
Die ersten Zeilen sind das, was Sie sich ansehen möchten. Beachten Sie das Format:
ip address fqdn alias
Sie haben also die IP-Adresse , dann hostname.domainname (oder Fully Qualified Domain Name ), gefolgt vom Hostnamen . Sie können auch Aliase oder zusätzliche Domain-Aliase hinzufügen, wenn sie in der Umgebung verwendet werden.
Verwenden Sie das -f
wechseln, wenn Sie den hostname
aufrufen Befehl, um den FQDN Ihres Hosts anzuzeigen:
[skipworthy@showme ~]$ hostname -f
showme.forest
[ Jetzt herunterladen:Eine Anleitung für Systemadministratoren zum Bash-Skripting. ]
Die hostnamectl
Der Befehl hat einige andere interessante und nützliche Schalter und Flags:Sie können den Umgebungstyp festlegen (z. B. Entwicklung vs. Produktion) und Sie können sogar Standortnotizen setzen (z. B. Rack 3, Raum 200). Diese können Sie aus der Ferne abfragen und einstellen. Wie üblich können Sie alle möglichen coolen Dinge von den guten alten Manpages lernen.