getent – Informationen über User, Gruppen, Services und mehr anzeigen
Im Artikel „Wie kann man Hostnamen ohne Programme aus dem Paket bind-utils auflösen?“ hatte ich getent
bereits genutzt, um Hostnamen auflösen zu können, wenn kein Programm aus dem Paket bind-utils
installiert ist. In diesem Artikel möchte ich getent
einmal ganz allgemein vorstellen.
Das Kommando getent
steht auf so gut wie jedem Linux- und UNIX-System zur Verfügung. Es steht für get entries und tut genau das. Es ruft Einträge aus Textdateien ab (in diesem Kontext auch Datenbanken genannt), die auf eurem System vorhanden sind. Genau genommen kann es alle Datenbanken abfragen, die in der Datei /etc/nsswitch.conf
(siehe nsswitch.conf(5)) konfiguriert sind. Damit lässt sich auf reichhaltige Informationen zugreifen, ohne eine Internet-Suchmaschine zu bemühen. Es funktioniert sogar auf Systemen ohne Internetkonnektivität (ja auch heutzutage gibt es solche Systeme noch).
Ich möchte hier allerdings nicht die Manpage getent(1) widergeben, sondern euch ein paar Anwendungsbeispiele zeigen, bei denen ich getent
hilfreich finde.
Informationen zu Ports, Services und Protokollnummern
Nehmen wir mal an, in einem Firewall-Log fallen uns die Ports 5432 und 11371auf und wir können uns gerade nicht daran erinnern, für welche Services diese üblicherweise verwendet werden. So hilft uns folgende Abfrage auf unserem Linux-/UNIX-System weiter:
$ getent services 5432 11371
postgresql 5432/tcp postgres
hkp 11371/tcp
Die Ports gehören also zu PostgreSQL und zu OpenPGP-HTTP-Keyservern.
Umgekehrt funktioniert das natürlich auch. Mal angenommen, ihr habt die Standard-Ports für NTP und MySQL vergessen:
$ getent services ntp mysql
ntp 123/udp
mysql 3306/tcp
Der Befehl getent services
ohne weitere Argumente gibt euch den gesamten Inhalt der Datenbank aus.
Auf dem gleichen Weg lassen sich auch die Protokollnummern gängiger Protokolle ermitteln:
$ getent protocols tcp udp rdp icmp
tcp 6 TCP
udp 17 UDP
rdp 27 RDP
icmp 1 ICMP
Informationen über User und Gruppen
Selbstverständlich kann man diese Informationen auch mit `grep <Suchmuster> /etc/{groups,passwd} erhalten. Es geht aber auch wie folgt:
$ getent passwd root
root:x:0:0:root:/root:/bin/bash
$ getent group root
root:x:0:
$ getent group sudo
sudo:x:27:alice
Ein Beispiel für Hostnamen findet sich bereits hier.
Fazit
Ich finde, getent
ist ein einfach zu bedienendes und nützliches Programm. Seid ihr neugierig geworden? Dann schaut doch mal in die Manpage getent(1) für weitere Hinweise, wie und wofür ihr es nutzen könnt.