getent – get entries from administrative database

Post Thumbnail

getent is Unix command which helps you query one of the following administrative databases in Unix: passwd, group, hosts, services, protocols, or networks.

Administrative databases in Unix

As you can probably see from their names, the administrative databases are here to help you gather the most vital information about your environment:

  • passwd – can be used to confirm usernames, userids, home directories and full names of your users
  • group – all the information about Unix groups known to your system
  • services – all the Unix services configured on your system
  • networks – networking information – what networks your system belongs to
  • protocols – everything your system knows about network protocols

How To Use getent

My home Linux PC has a hostname of centos7. If I ever need to double-check which IPs this hostname points to, here’s how I can use getent:

{% highlight command %} greys@centos7:~ getent hosts centos7 127.0.1.1 centos7 192.168.0.2 centos7 {% endhighlight %}

getent passwd

Without additional parameters, this command will show you information about all the users available on your system. Most often this means “users locally created on your server”, but if NIS or LDAP are configured, this might show you a really long list of all the users in your organisation.

This is an example from my CentOS 7.4 setup:

{% highlight command %} greys@centos7:~ $ getent passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:997:User for polkitd:/:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin techstack:x:1001:1001:Tech Stack Solutions:/home/techstack:/bin/bash greys:x:1002:1002:Gleb Reys:/home/greys:/bin/bash influxdb:x:997:993::/var/lib/influxdb:/bin/false telegraf:x:996:992::/etc/telegraf:/bin/false grafana:x:995:991:grafana user:/usr/share/grafana:/sbin/nologin dd-agent:x:994:990:Datadog Agent:/opt/datadog-agent:/bin/sh rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin {% endhighlight %}

Using getent to find a UID by username

getent accepts various keys when searching in databases. For the passwd one, you can user either username or user id (UID) to search the database.

{% highlight command %} greys@centos7:~ getent passwd greys greys:x:1000:1000:Gleb Reys,,,:/home/greys:/bin/bas {% endhighlight %}

Using getent to find a username by UID

Like I said, the opposite will work as well:

{% highlight command %} greys@centos7:~ getent passwd 1000 greys:x:1000:1000:Gleb Reys,,,:/home/greys:/bin/bash {% endhighlight %}

getent group

Without parameters, this will show you all the groups found on your Unix or Linux server:

{% highlight command %} greys@centos7:~ $ getent group root:x:0: bin:x:1: daemon:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7: mem:x:8: kmem:x:9: wheel:x:10: cdrom:x:11: mail:x:12:postfix man:x:15: dialout:x:18: floppy:x:19: games:x:20: tape:x:30: video:x:39: ftp:x:50: lock:x:54: audio:x:63: nobody:x:99: users:x:100: utmp:x:22: utempter:x:35: ssh_keys:x:999: input:x:998: systemd-journal:x:190: systemd-network:x:192: dbus:x:81: polkitd:x:997: postdrop:x:90: postfix:x:89: chrony:x:996: sshd:x:74: ntp:x:38: cgred:x:995: docker:x:994: techstack:x:1001: greys:x:1002: influxdb:x:993: telegraf:x:992: grafana:x:991: dd-agent:x:990: rpc:x:32: rpcuser:x:29: nfsnobody:x:65534: printadmin:x:989: vboxusers:x:988: {% endhighlight %}

Use getent to show Unix group

If you know a Unix group name, getent will help you confirm its numeric group ID and show members (usernames).

In this example below, system group mail has group ID of 12, and system user postfix as its member.

{% highlight command %} greys@centos7:~ $ getent group mail mail:x:12:postfix {% endhighlight %}

See also