The issue arises because the -p flag in the useradd command expects the pre-encrypted password hash, not the plaintext password. When you use useradd -p "merry", the system attempts to store the string "merry" as the password hash, which is not valid for authentication.

To resolve this issue, follow these steps:


Correctly Set the Password for the User

Use the passwd command to set a proper password for the user after creation:

  1. Create the user without specifying the password in plaintext:

    sudo useradd merry
  2. Set the password for the user securely:

    sudo passwd merry

    You’ll be prompted to enter the password for the user. Enter the password (merry, in your case), and confirm it.


If You Must Use useradd -p

If you want to use the -p flag with useradd, you must pass an encrypted password hash. You can generate this using the openssl or mkpasswd command.

For example:

openssl passwd -6 merry

This generates a hashed version of the password merry. Use this hash with the -p option:

sudo useradd merry -p '<hashed_password>'

Replace <hashed_password> with the hash generated by openssl.


Why Does Authentication Fail?

  1. -p Stored a Plain Text Password: The string "merry" was stored as the hash instead of a proper encrypted value, causing authentication to fail.

  2. Password Policy Restrictions: Ensure your system doesn’t have password complexity or length requirements that the password merry might violate.

  3. Account Lockout: Confirm the account isn’t locked or disabled:

    sudo passwd -S merry

    If it says locked, unlock the account with:

    sudo passwd -u merry

By correctly setting the password or using a hashed password with useradd, you should be able to log in as merry.