Because of the security risks we outlined earlier, we need to have a few tasks performed the first time a user logs in:
-
Re-install OpenSSH if the appliance can be accessed this way.
-
Ask for a new user password.
-
Ask for a new MySQL root password
-
Regenerate the SSL certificate if our application can be accessed through SSL.
To do so we will add a line to the very end of /etc/bash.bashrc
:
if [ ! -e /etc/opt/sample-app/initial_config_done ]; then
/opt/sample-app/bin/initial_config
sudo touch /etc/opt/sample-app/initial_config_done
fi
Through this line, the script /opt/sample-app/bin/initial_config
will be executed upon first login if the file
/etc/opt/sample-app/initial_config_done
does not exist. So we now need to:
-
Create the directory
/etc/opt/sample-app/
: sudo mkdir /etc/opt/sample-app/. -
Create the script
/opt/sample-app/bin/initial_config
using sudo pasting the script below using your text editor of choice:
#!/bin/bash
# Let's change the user's password
echo "Thank you for choosing our sample-app appliance"
echo "For the security of the appliance, we need you to change this user password now."
passwd
# Now change the MySQL password
echo "We now need you to specify a new MySQL root password"
let done=0
while [ $done -eq 0 ]; do
read -e -s -r -p "New MySQL root password:" PASS1
echo ""
read -e -s -r -p "Retype MySQL root password:" PASS2
if [[ "$PASS1" == "$PASS2" ]]; then
let done=1
#perform the actual change assuming that our initial password is default
mysqladmin -u root --password='default' password $PASS1
else
echo "The 2 passwords did not match, please try again."
fi
done
#Perform the reinstall of OpenSSH so that the key is regenerated
echo "We are now going to generate your ssh keys."
sudo apt-get --purge -y remove openssh-server
sudo apt-get install -y openssh-server
# You can add here any first user login actions that you require
-
Make it executable: sudo chmod a+x /opt/sample-app/bin/initial_config