As system administrators, we’re faced with countless system problems on daily basis. These problems could be Linux, Windows, or macOS related but what matters most is finding a quick way to get them fixed asap so as not to impact the overall productivity of the business. In this post, I will show you how to quickly fix the Sudo: unknown UID (User Id): who are you? error on Ubuntu. In Linux, every user is represented by a unique user Id with the UID 0 being assigned by default to the root user account. In addition, Linux users also have unique group ids (GID) assigned to them. You may also be interested in learning about how to fix similar errors and carry out some administrative tasks such as how to fix Su: Authentication Failure and Sudo: Permission denied Prompt in Ubuntu, how to Create Multiple Users and Set Password for each User in Linux, how to create Symbolic Links in Linux, how to install Docker Engine on Ubuntu, and warning useradd: the home directory already exists. Not copying any file from skel director into it.
What is UID?
A uid (user identifier) is a unique number assigned by Linux to each user on the system. This number is used to identify the user to the system and to determine which system resources the users can access. UIDs are stored in the /etc/passwd file.
The third field represents the UID. Notice that the root user has the UID of 0 as shown in the screenshot above. Most Linux distributions reserve the first 100 UIDs for system use. New users are assigned UIDs starting from 500 or 1000. For example, new users in Ubuntu start from 1000. See the screenshot below for clarity.
The Cause of the Problem
This problem is caused if you edit the
/etc/passwd directory without sudo elevated privileges and attempt to assign the root user ID (0) to a regular user in order to enable them execute high-level commands without being prompted for a password. See the screenshot below:
The aftereffect of this error is that it will disable the regular user account completely, and you will be left with no user account to log into your system. See the screenshot below:
Fix the Problem
Two ways you can resolve this problem are either creating a new account in the recovery mode using the Root account or by editing the
/etc/passwd file and changing the UID back to the previous UID or assigning a new UID entirely. In our case, the previous UID was1000. So we’re going to re-assign the same UID number to the user right away.
Step 1 – Boot into Ubuntu Console Menu by pressing the SHIFT key and select the advanced option
Step 2 – Select the option with the Kernel Recovery Mode and drop down to root, and then press Enter
Step 3 – Edit the
/etc/passwd file and re-assign a new or an existing UID to the user with the command below:
$sudo vim /etc/passwd
Step 4 – Run
$su username to confirm that the user account is back and can switch user to root
The second mathod of solving this issue is by creating a new user. Why do you need to create a new? The reason is so you have atleast a user account to be able to sign back into your system. With a new user account you will be able rectify the above issue using the normal GUI.
To create a new user and update its password, follow the steps below:
- While still at the Root console, run the useradd $username command and press enter as shown below:
To assign a password to the new user account, run the below command and repeat the password to complete the process. Refer to the above screensghot.
Next, let’s go ahead and verify that the two user account exist. That is, the newly created user account and the old account that was disabled by running the commands shown in the screenshot below.
Note: When creating a new user account, don't use the same username for the disabled account becasue the old account is still in existence despite being reportedly disabled. See the screenshot below:
Lastly, let’s go ahead and reboot our system so we can boot into the normal graphical mode to verify the user accounts by running:
As you can see from the screenshot above, the old user account is back and we also have the newly created user with a username as