Last Updated on 2021-10-14 by Clay
When we are working on a remote Linux server, if we want to know how many users on this server, how do we list them?
List Users
Use cat
command to print out /etc/passwd file
A simplest ideas is to print out /etc/passwd file, it is a file used to track every logged-in user who accessed the system.
The files contains the following information:
- Username
- User's encryption password
- User ID (UUID)
- User Group ID (GID)
- User's full name (GECOS)
- User home directory
- ...
And we can use cat
command to print out:
cat /etc/passwd
Output:
But this format seems messy.
From the introduction of the /etc/passwd file above, we only need the username.
Use cut
command to print out /etc/passwd username
Since only need the username, we can use cut
command to do it.
Arguments explanation:
-d
: Need to pass:
as our separator-f
: Need to pass1
to print out the first field separated
cut -d: -f1 /etc/passwd
Output:
Distinguish between System Users and Normal Users
Everyone must have noticed that root, daemon, bin.. etc. do not look like normal user names.
Yes, these are so-called system users, not normal users who created manually.
The more complicated way to distinguish is to use the getent
command with UID_MIN
and UID_MAX
to find. Because the UIDs of system users and normal users are different.
eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)}
Of course, we can add the cut
command to make the output format cleaner.
eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1
Output:
In this way, you can know which accounts exist on this server.
Use alias
command to customize short instructions
But to be honest, this command is too long. It is recommended that you can write it in your ~/.bashrc configuration file to customize a new command lu
.
To edit ~/.bashrc file:
vim ~/.bashrc
Add the following command:
alias lu = "eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1"
After saving and leaving, use source
command to make the configuration effective.
source ~/.bashrc
lu
Output:
Isn't it convenient?
How many users are exist on the server
With the wc
command, we can get how many users have been registered on this server. (In the example, I used the custom command lu
)
lu | wc -l
Output:
16
This number is different for each server.
The above is about how to list users in Linux.