Linux: Check if a User or a Group Exists 2
You can find out if user exists by searching in the /etc/passwd
file using the following command:
egrep -i "^useraccount:" /etc/passwd
The above command will print the matching record from /etc/passwd
if the user exists or nothing if the user does not exist.
The ^
symbol is used to make sure there is no characters before the username and the :
character is used as the delimiter in the file (which indicates the end of the username). By wrapping the username with these characters we are sure that if we matched a record, we matched the correct record with the full username.
A very simple way to use this code in a script is by utilizing the $?
(question mark) variable. The question mark variable contains the exit status
of the last command that executed. Specifically, egrep
will return 0 if there was a match or else it will return a a positive number (usually 1).
Taking advantage of this behavior, after executing the above command, we check the $?
variable to see the result with an if
statement.
egrep -i "^useraccount:" /etc/passwd; if [ $? -eq 0 ]; then echo "User Exists" else echo "User does not exist -- Invalid Username" fi
You can also find out if a group exists by searching in the /etc/group
file. Similar to the approach we showed before, we can check if a group exists using the following:
egrep -i "^groupname" /etc/group; if [ $? -eq 0 ]; then echo "Group Exists" else echo "Group does not exist -- Invalid Group name" fi