- Show all users and their groups/vice versa
- 8 Answers 8
- List all users
- List all groups
- How can I display all users and groups with a command?
- 2 Answers 2
- You must log in to answer this question.
- Related
- Hot Network Questions
- Subscribe to RSS
- How to List All Users or User Groups in Linux
- How Linux Manages Users
- Creation
- Privileges
- Deletion
- List all users
- Show Names Only
- Show Details
- List All Groups
- Display Group Names Only
- Show Group Details
- List a Specific User’s Groups
- Conclusion
Show all users and their groups/vice versa
I know I have existing groups and users but I’m not sure about their association. Is there an shell command I can use to list all users or all groups and a command to list all groups/users for a specified user/group? So something like showusers would list all users, and showgroups -u thisuser would show all the groups that have thisuser in it.
8 Answers 8
All groups with a specific user:
$ getent group | grep username
I found that there is a user named speech-dispatcher that belongs to group audio (based on groups speech-dispatcher ). But it is not listed under getent group command! What is the problem?
+1 since this will also list users/groups not found in the conventional /etc/passwd & /etc/group files i.e. when a system is configured to use central directories such NIS and LDAP, or any other alternative user/group database, as long as that supports user/group enumeration.
List users and their groups:
for user in $(awk -F: '' /etc/passwd); do groups $user; done
List groups and their users:
cat /etc/group | awk -F: '' | while read group gid members; do members=$members,$(awk -F: "\$4 == $gid " /etc/passwd); echo "$group: $members" | sed 's/,,*/ /g'; done
While that would probably work, it seems a bit overly complicated, doesn’t it, when there are perfectly good simple one-shot commands to do this?
It certainly wouldn’t get anything that lives in a centralized repository. And that’s definitely information that you’d want to see.
If you dont care about remote users such as LDAP or NIS, to list users and their associated groups in a simple way:
cut -d: -f1 /etc/passwd | xargs groups
root : root myuser : root www-data fuse anotheruser : anotheruser cdrom floppy audio dip video plugdev scanner bluetooth netdev
This has the same problem as Chang’s answer in that it ignores users/groups originating in databases such as LDAP, NIS, etc.
This very neatly outputs the information in an incredibly clear format though, so can still be a useful first step. It helped jog my memory regarding the syntax of /etc/group and /etc/passwd!
List all users
While cat /etc/passwd shows all users (and a bunch of other stuff), cut -d ‘:’ -f 1 is a simple way to split each line with ‘:’ as a delimiter and extract just the first field (users). Pretty much the same as awk version.
List all groups
Guess what, very simmilar to listing users. Just parse /etc/group instead.
Another interesting way, maybe closer to what OP wanted, is compgen. Not sure about compatibility issues though.
Hi Elliot Baily, welcome to Server Fault! Please note that this question is over 5 years old, and already has a correct and accepted answer. Also note that your solution only works if users are stored in /etc/passwd; the accepted answer also works for other user databases (such as NIS or LDAP). If you want to answer old questions (which is perfectly fine!) you might want to have a look at the list of unanswered questions — plenty of questions looking for some love!
for user in $(getent passwd |awk -F: ''); do groups $user; done
cat /etc/passwd # show all users cat /etc/group # show all groups cat /etc/passwd | grep group # show all users with specified group
In contrast with the already accepted this does not list users/groups that originate from a remote user database such as LDAP, NIS etc.
How can I display all users and groups with a command?
users and groups commands display users currently logged in, and groups a user belongs to respectively.
How to display a list of all users and all groups by command-line?
2 Answers 2
You can display with the help of compgen builtin command as follows:
- To display all users run following command:
However you can also display all users by cut -d «:» -f 1 /etc/passwd .
Nice! it might be preferable to use getent passwd / getent group instead of cat’ing the local files ( getent should work for non-local accounts as well)
Well, on my ubuntu, I have some files created by docker mount with 999:999 as user:group , but unfortunately none of the above commands prints them.
Here we are going to use getent for the detailed the info
We can list the user with the following command:
We can list the group as follows:
To fetch detail a specific user
Replace the lalit with your user name. Lalit will not be in every system 🙂
You can read the more into about getent here
You must log in to answer this question.
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.7.14.43533
Ubuntu and the circle of friends logo are trade marks of Canonical Limited and are used under licence.
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
How to List All Users or User Groups in Linux
Knowing how to list all user groups on Linux is a significant stride towards sustaining ownership and permissions. Since you can use several commands to list user groups, the command you choose depends on the depth of details you want to see.
For example, use the compgen command if you are only interested in names. On the other hand, you can customize the getent command to view extensive information about user groups.
This tutorial explains user management, listing users and their groups using several commands.
These commands should apply to any Linux distribution, including Ubuntu, CentOS, Debian, Linux Mint, and others.
Table of Contents
How Linux Manages Users
First, you should understand the basics of user management, such as creation, privileges, and deletion.
Creation
You can create a user using either useradd command
adduser command to collect more information about the user, such as password, room number, and phone number.
Adding a user to the system appends the user details to the /etc/passwd file.
A user that can log into the system is referred to as a normal user. Otherwise, the created user is a system user whose accounts are for automation tasks.
Supply the -r option to create a systems user.
sudo useradd -r sysuseredxd
Privileges
Another point worth remembering is Linux creates a user when you first install it. That user is a superuser and has all the privileges on systems management. The user is often referred to as the root or superuser and is assigned a special directory and group called the root.
Other users created after that are assigned the home directory from where they can store personal data such as media, docs, and videos. The normal users have limited permissions than the root user.
Each of the user’s default group is their username. For example, doe we created above belongs to the doe group. Linux keeps the groups’ data in the /etc/group file. You can find the default configuration details in the /etc/default/useradd file.
Deletion
You can delete a user using the userdel command.
Now you should find out how to list all users and their groups.
List all users
Show Names Only
Use the compgen command with the -u option to list all users on Linux.
Run the cut command on the /etc/passwd file.
root bin daemon adm lp sync shutdown halt mail . rpcuser saslauth avahi gnome-initial-setup tcpdump edxd
Show Details
The most straightforward way to list all users is to cat the /etc/passwd file.
You can use the less command to view a shorter portion of the output page or more for longer.
less /etc/passwd more /etc/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:65534:65534:Kernel Overflow User:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin polkitd:x:998:996:User for polkitd:/:/sbin/nologin sssd:x:997:994:User for sssd:/:/sbin/nologin chrony:x:996:993::/var/lib/chrony:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin pipewire:x:995:992:PipeWire System Daemon:/var/run/pipewire:/sbin/nologin
Use the top/bottom arrow keys or the enter key on your keyboard to navigate the page and the q key to quit the navigation.
Alternatively, you can use the getent command to list all users.
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 . rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin libstoragemgmt:x:978:978:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin saslauth:x:977:76:Saslauthd user:/run/saslauthd:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin gnome-initial-setup:x:976:976::/run/gnome-initial-setup/:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin edxd:x:1000:1000:edxd:/home/edxd:/bin/bash
Reveal a specific user’s details by specifying their username.
edxd:x:1000:1000:edxd:/home/edxd:/bin/bash
Here is what the colon separated values mean:
The first part, doe, is the uid (user id). x is a representation of the user’s hashed password. The first 1002 denotes that doe is a normal user. A system user would have a reading of less than 1000. The second 1002 is the gid (group id).
The next part, /home/doe, shows the user’s home directory. The last part, /bin/bash, denotes the shell assigned to the user.
Now that you understand how Linux manages users, groups and how to list users, you know how to list the user groups.
List All Groups
Display Group Names Only
Use the compgen command with the -g option to list all group names.
root bin daemon sys adm tty disk lp mem kmem wheel . rpcuser saslauth libvirt avahi gnome-initial-setup tcpdump slocate edxd
Alternatively, you can sieve the names from the result of the getent command using the awk or cut command.
Show Group Details
You can list all user groups on Linux by navigating the /etc/group using the cat , more , or less commands.
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:edxd cdrom:x:11: mail:x:12: man:x:15: dialout:x:18: floppy:x:19: games:x:20: tape:x:33: video:x:39: ftp:x:50: lock:x:54: audio:x:63: users:x:100:
Alternatively, you can use the getent command with the group option.
Assume you want to count the groups. You can do that by piping the getent ‘s result into the wc command.
Say you want to see the user groups created with the users in section 1 of this tutorial. Since they occupy the last part of the page, you can pipe the result of getent group into the tail command.
rpc:x:32: libstoragemgmt:x:978: rpcuser:x:29: saslauth:x:76: libvirt:x:977: avahi:x:70: gnome-initial-setup:x:976: tcpdump:x:72: slocate:x:21: edxd:x:1000:
Lastly, you may want to list a particular group’s members. All you do is append the group name to the getent command.
List a Specific User’s Groups
Apart from listing user groups of all users, you could narrow it down to groups belonging to a particular user. The groups command plays a massive role in listing a user’s groups.
By default, Linux creates a user with the same uid as gid. The resulting group is called the primary group and can be reassigned.
Run the groups command to list all the groups of the logged-in user.
Use the groups command with the username to list the current user’s groups, whether they are not logged into them.
Alternatively, you can list a particular user’s groups using the id command.
Conclusion
The primary commands to list all user groups are compgen and getent . Alternatively, you can use the cat , more , less , id , and groups commands, as illustrated in this tutorial.