User creation and password changes can be handled as one-liners for as long as you use the correct commands. Today I learned of another password utility other than
passwd. It is
chpasswd, a powerful tool to change passwords without the prompt and the password can be encrypted.
To create a user may be a two step process. First create the user with
useradd, then create a password for that user with the
passwd command which prompts for the password twice. It can also be done with a one-liner for as long as the password is encrypted. The example below uses the
passwd of password.
useradd testuser passwd testuser
Here is the one-liner. This example uses
passwd as password.
useradd -p '$1$xyz$cEUv8aN9ehjhMXG/kSFnM1' testuser
To get that encrypted
openssl to generate an encrypted
passwd. I elected to salt the password with the phrase xyz.
openssl passwd -1 -salt xyz 'password'
I had used the same logic to change my passwd with the salted password. However, to my dismay it did not work.
echo '$1$xyz$cEUv8aN9ehjhMXG/kSFnM1' | passwd testuser --stdin
However, this will work. A non-encrypted password. This is not the goal as it will show up in the history.
echo 'password' | passwd testuser --stdin
Then I discovered the
chpasswd command. This command will do exactly the same as the one-liner directly above.
echo testuser:password | chpasswd
Adding the switch
-e to the command will permit the use of an encrypted password.
echo testuser:'$1$xyz$cEUv8aN9ehjhMXG/kSFnM1' | chpasswd -e