How to List All Groups in Linux? – LinuxForDevices
Linux groups are a collection of users. They are meant to easily provide privileges to a group of users. In this tutorial, we will look at various ways to list all groups in Linux.
Mục Lục
2 Ways to List All Groups in Linux
- /etc/group file
- getent command
1. /etc/group file
The /etc/group file contains all the local groups. So, we can open this file and look at all the groups.
root@localhost:~# cat /etc/group root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:syslog tty:x:5: disk:x:6: lp:x:7: mail:x:8: news:x:9: ...
Image 6
If you are looking for a specific group, then use the grep command to filter it out.
root@localhost:~# cat /etc/group | grep sudo sudo:x:27:journaldev,test root@localhost:~#
2. getent command
Linux getent command fetch entries from databases supported by the Name Service Switch libraries. We can use it to get all the groups information from the group database.
root@localhost:~# getent group root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:syslog tty:x:5: ...
Let’s look at some more examples of listing all the groups in Linux.
Linux List All Group Names
We can use cut command to print only the group names. This is useful when we are looking for a specific group name presence in a shell script.
root@localhost:~# cut -d: -f1 /etc/group root daemon bin sys adm tty ...
Image 8
We can use cut command with the getent command too.
root@localhost:~# getent group | cut -d: -f1 root daemon bin sys adm tty disk ...
The cut command is splitting every line using the colon (:) delimiter. Then the first field, which is the group name, is selected using the -f1 option.
Listing All Group Names in Alphabetical Order
The above commands output can be passed to the sort command to print the output in natural sorting order.
root@localhost:~# getent group | cut -d: -f1 | sort adm audio backup bin cdrom crontab daemon ...
Image 10
Count of All the Linux Groups
If you are interested in the count of the linux groups, use the following commands.
root@localhost:~# cat /etc/group | grep -c "" 68 root@localhost:~# getent group | grep -c "" 68 root@localhost:~#
Image 11
List All Groups of a User
We can use the groups command to get all the groups of a user.
root@localhost:~# groups journaldev journaldev : journaldev sudo test_users test_users_pwd root@localhost:~# root@localhost:~# groups root root : root root@localhost:~#
Image 12
List Groups of the Current User
If you run the groups command without any user input, it will print the groups of the current user.
root@localhost:~# groups root root@localhost:~# su - journaldev journaldev@localhost:~$ groups journaldev sudo test_users test_users_pwd journaldev@localhost:~$
Image 13
List User Groups Along with Group ID
We can use id command to print the user information. This command lists all the groups along with their group id.
root@localhost:~# id journaldev uid=1002(journaldev) gid=1003(journaldev) groups=1003(journaldev),27(sudo),1004(test_users),1007(test_users_pwd) root@localhost:~# root@localhost:~# id root uid=0(root) gid=0(root) groups=0(root) root@localhost:~#
Image 14
List All Users of a Group
We can use the getent command or the /etc/groups file to get all the users that belongs to a group.
root@localhost:~# getent group sudo sudo:x:27:journaldev,test root@localhost:~# root@localhost:~# getent group sudo | cut -d: -f4 journaldev,test root@localhost:~#
Image 15
Conclusion
The getent command and /etc/group file can be used to get all the Linux groups details. We can use them alongside cut and sort command to present the output in a better way.
References