- 7 methods to list user groups in Linux? [SOLVED]
- Method-1: Using groups command
- Method-2: Using id command
- Method-3: Using getent command
- Method-4: Using /etc/group file
- Method-5: Using compgen command
- Method-6: Using lid command
- Method-7: Using dscl command (On MacOS)
- Bonus Tip
- What is NEXT?
- Summary
- References
- How To List All Users and Groups in Linux
- Print User File Named passwd
- Print Only Usernames
- Print Users Who Have Login
- Print Users Who Have Home Directories
- Print Group File
- Print Only Group Names
- Managing Users and Groups in Linux
- 1. Overview
- 2. List All Users
- 3. See User and Group IDs
- 4. Create a New User
- 5. Add/Change User Password
- 6. Modify User
- 6.1. Change Primary Group
- 6.2. Change UID
- 6.3. Change Login Name
- 7. Delete a User
- 8. Add User to Group
- 9. Remove User From Group
- 10. Create a New Group
- 11. Modify Group
- 11.1. Change GID
- 11.2. Change Group Name
- 12. Delete a Group
- 13. Conclusion
7 methods to list user groups in Linux? [SOLVED]
In operating systems, applications add their own users and groups to the system. From an administrative point of view, this makes it easier for users. Adding users to the application group is the easiest way to edit privileges. As a matter of fact, systems such as LDAP and Active Directory are also built on this method.
There are many methods of listing groups in Linux. In some methods, group information is accessed from the user, while in some methods, users are accessed from group information. We will tell you some of the most used methods with examples.
Method-1: Using groups command
When you run the groups command without any parameters, it lists the group information of the user who opened the terminal:
foc@fedora:~$ groups foc wheel
If you type a username after the group command, the groups belonging to that user are listed:
foc@fedora:~$ groups golinux golinux : golinux
In this method, groups are listed with user information.
Method-2: Using id command
Like the group command, the id command, when executed without parameters, lists the active user’s groups. But this time group id are also displayed:
foc@fedora:~$ id uid=1000(foc) gid=1000(foc) groups=1000(foc),10(wheel)
By typing the username after the id command, the groups belonging to that user are listed with their ids:
foc@fedora:~$ id golinux uid=1001(golinux) gid=1001(golinux) groups=1001(golinux)
As the user’s group information increases, the information displayed on the screen may not be understood. With the parameters of the ID command, the output can be made more understandable. For example, to list all group ids and names:
foc@fedora:~$ id -Gn golinux golinux
You can get help from the —help page for all its parameters:
foc@fedora:~$ id --help Usage: id [OPTION]. [USER]. Print user and group information for each specified USER, or (when USER omitted) for the current user. -a ignore, for compatibility with other versions -Z, --context print only the security context of the process -g, --group print only the effective group ID -G, --groups print all group IDs -n, --name print a name instead of a number, for -ugG -r, --real print the real ID instead of the effective ID, with -ugG -u, --user print only the effective user ID
Again in this method, groups are listed with their user information.
Method-3: Using getent command
The getent command pulls information from the group database. If there is no central system such as LDAP, Active Directory, it will pull from the local database.
You can pull groups by typing group after getent command:
foc@fedora:~$ getent group root:x:0: bin:x:1: . disk:x:6: lp:x:7: mem:x:8: kmem:x:9: wheel:x:10:foc cdrom:x:11: mail:x:12:
To list users in a group, you must type the group name:
foc@fedora:~$ getent group wheel wheel:x:10:foc
To list all groups in the system without details:
foc@fedora:~$ getent group | cut -d: -f1 root bin disk lp mem kmem wheel cdrom mail
This method lists both groups and users in that group.
Method-4: Using /etc/group file
On Linux the group information is in the /etc/group file. If a user is added or removed from the group, this file changes.
When you view this file with file view commands like cat , it gives a complex output. To list group information, you can write it like this:
foc@fedora:~$ cut -d: -f1 /etc/group root bin . lp mem kmem wheel . tape video ftp
For the total number of groups:
foc@fedora:~$ cat /etc/group | grep -c "" 82
Using awk command we can extract the group names from the /etc/group file using the colon ( : ) delimiter.
Method-5: Using compgen command
Another command you can use to list groups in Linux is compgen . You can list the groups in the system with the -g parameter:
[foc@rocky9 ~]$ compgen -g root bin wheel ftp lock audio users nobody foc
Method-6: Using lid command
This command displays information about the specified group, including the GID, group password (if any), and members.
# lid -g nagios nagios(uid=1001) apache(uid=48) snmptt(uid=974)
Method-7: Using dscl command (On MacOS)
Using the dscl command on macOS. This command displays information about the specified group on macOS.
dscl . -read /Groups/groupname
Bonus Tip
If you want to list the groups of users logged into the system, you can use the following for loop:
[foc@rocky9 ~]$ for user in $(cat /etc/passwd | grep bash | awk -F: '');do groups $user; done root : root foc : foc wheel
Note: Bash was chosen as the default shell. If a different shell(zsh,sh etc) is used, it can be written after the grep command.
What is NEXT?
Summary
There is always an alternative on Linux. We have explained different ways to list groups in Linux for you. The commands and methods used may vary according to habits. You can use whichever method is faster and easier for you. Of course the choice is yours.
You can get help with the -h/—help parameter for each command. For more detailed information, you can also access the man page of the commands as in the example:
foc@fedora:~$ man id NAME id - print real and effective user and group IDs SYNOPSIS id [OPTION]. [USER]. .
References
Didn’t find what you were looking for? Perform a quick search across GoLinuxCloud
If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.
For any other feedbacks or questions you can either use the comments section or contact me form.
Thank You for your support!!
How To List All Users and Groups in Linux
Users and group files are important for Linux. Normal users will interact with Linux systems by using credentials provided in the user ad group file.
Print User File Named passwd
We can get content of the user file like below. This file provides usernames home directories and shell information.
As we can see each line of the output provides the user name, user id, user group, user shell, user home path etc.
Print Only Usernames
We can print only usernames by filtering other columns like below.
$cat /etc/passwd | cut -d : -f 1
Print Users Who Have Login
By default normal users will login to the Linux box. But in some cases service users do not need to login Linux system. This is also a security measure. We can list users who do not have login right with the following command. This login information is stored in the /etc/passwd file.
$ cat /etc/passwd | grep -v nologin
Print Users Who Have Home Directories
We can print only users who have home directories in /home. This command will first look in to the passwd to list users how have /home and then print only user names from result.
$ cat /etc/passwd | grep "/home/" | awk -F':' '< print $1>'
Print Group File
Linux users have primary and secondary groups. These group names are stored in the /etc/group file. We can print this group information and assigned user with cat command. For more details read following tutorial.
Print Only Group Names
We can print only group names by cutting other column like below.
Managing Users and Groups in Linux
The Kubernetes ecosystem is huge and quite complex, so it’s easy to forget about costs when trying out all of the exciting tools.
To avoid overspending on your Kubernetes cluster, definitely have a look at the free K8s cost monitoring tool from the automation platform CAST AI. You can view your costs in real time, allocate them, calculate burn rates for projects, spot anomalies or spikes, and get insightful reports you can share with your team.
Connect your cluster and start monitoring your K8s costs right away:
1. Overview
In this tutorial, we’re going to learn how to create, modify, and delete users and groups in Linux using the terminal. In addition, we’ll learn how to add a user to a group, how to remove one from a group, how to list all users, and how to get more information about the existing users on a Linux machine.
2. List All Users
The file /etc/passwd contains all registered users as well as information about them:
$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin . daemon. /var/run/pulse:/usr/sbin/nologin systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin baeldung:x:1000:1000. /home/baeldung:/bin/bash
/etc/passwd lists users in this format:
username:x:user id: group id: , , , :/home/username:/bin/bash
Each user has its own UID. 0 is root. 1 to 999 are system users, and from 1000 onward are local users.
3. See User and Group IDs
Linux has a command, id, that prints user and group IDs for the specified user:
$ id baeldung uid=1000(baeldung) gid=1000(baeldung) groups=1000(baeldung),27(sudo)
We can see what groups the specified user is in.
4. Create a New User
To create a new user in Linux, we can use the useradd command:
$ sudo useradd --create-home new_user
In addition, we can add the –create-home option to create a home directory for the new user.
5. Add/Change User Password
We can use passwd to make a new password for a user or to change a user’s password:
$ sudo passwd new_user [sudo] password for baeldung: New password: Retype new password: passwd: password updated successfully
The new user that we created didn’t have a password. As a result, passwd made one for it.
6. Modify User
usermod can modify a user account.
6.1. Change Primary Group
We can add the -g option to change the main group of a user account:
$ id new_user uid=2027(new_user) gid=2027(new_user) groups=2027(new_user) $ sudo usermod -g baeldung new_user $ id new_user uid=2027(new_user) gid=1000(baeldung) groups=1000(baeldung)
The new group replaces the previous group.
6.2. Change UID
We can add the -u option to change the user ID of an existing user account:
$ id new_user uid=2027(new_user) gid=1000(baeldung) groups=1000(baeldung) $ sudo usermod -u 2030 new_user $ id new_user uid=2030(new_user) gid=1000(baeldung) groups=1000(baeldung)
The command has changed the UID from 2027 to 2030.
6.3. Change Login Name
The -l option helps us change the login name of an existing user account:
$ id new_user uid=2030(new_user) gid=1000(baeldung) groups=1000(baeldung) $ sudo usermod -l new_name new_user $ id new_name uid=2030(new_name) gid=1000(baeldung) groups=1000(baeldung)
The command has changed the login name from new_user to new_name.
7. Delete a User
We can use userdel to delete an existing user. Adding the -r option will make userdel delete the user’s home directory along with its contents, as well as the user’s mail spool:
$ sudo userdel -r new_user [sudo] password for baeldung: userdel: new_user mail spool (/var/mail/new_user) not found userdel: new_user home directory (/home/new_user) not found
This user didn’t have a mail spool or a home directory defined for it. So, -r was unnecessary.
8. Add User to Group
To add a user to a group, we can use gpasswd -a:
$ id new_user uid=2027(new_user) gid=2027(new_user) groups=2027(new_user) $ sudo gpasswd -a new_user baeldung Adding user new_user to group baeldung $ id new_user uid=2027(new_user) gid=2027(new_user) groups=2027(new_user),1000(baeldung)
The command has appended the specified group to new_user‘s groups.
9. Remove User From Group
We can use gpasswd -d to remove a user from a group:
$ id new_user uid=2027(new_user) gid=2027(new_user) groups=2027(new_user),1000(baeldung) $ sudo gpasswd -d new_user baeldung Removing user new_user from group baeldung $ id new_user uid=2027(new_user) gid=2027(new_user) groups=2027(new_user)
The command has removed new_user from the specified group.
10. Create a New Group
We can use groupadd to create a new group:
$ sudo groupadd new_group $ cat /etc/group | grep new_group new_group:x:2028:
The command has created a new group, and its group ID is 2028.
11. Modify Group
We can use groupmod to modify a group.
11.1. Change GID
We can add the -g option to change the group ID of an existing group:
$ cat /etc/group | grep new_group new_group:x:2028: $ sudo groupmod -g 2040 new_group $ cat /etc/group | grep new_group new_group:x:2040:
The command has changed the group ID from 2028 to 2040.
11.2. Change Group Name
To change a group’s name, we can add the -n option:
$ cat /etc/group | grep new_group new_group:x:2040: $ sudo groupmod -n new_name new_group $ cat /etc/group | grep new_name new_name:x:2040:
The command has changed the group’s name from new_group to new_name.
12. Delete a Group
To remove an existing group, we can use groupdel:
13. Conclusion
To sum up, we learned how to manage users and groups, as well as how to get more information about users on a Linux machine.