#!/bin/bash # **** License **** # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # This code was originally developed by Vyatta, Inc. # Portions created by Vyatta are Copyright (C) 2007 Vyatta, Inc. # All Rights Reserved. # # Author: Bob Gilligan # Description: Standalone script to set the root passwd to new value # value. Note: This script can ONLY be run as a standalone # init program by grub. # # **** End License **** # The Vyatta config file: CF=/opt/vyatta/etc/config/config.boot change_password() { local user=$1 local pwd1="1" local pwd2="2" until [ "$pwd1" == "$pwd2" ] do read -p "Enter $user password:" -r -s pwd1 <>/dev/tty 1>&0 echo read -p "Retype $user password:" -r -s pwd2 <>/dev/tty 1>&0 echo if [ "$pwd1" != "$pwd2" ] then echo "Passwords do not match" fi done # escape any slashes in resulting password local epwd=$(mkpasswd -H md5 "$pwd1" | sed 's:/:\\/:g') sed -i \ -e "/ user $user {/,/}/s/encrypted-password:.*\$/encrypted-password: \"$epwd\"/" \ $CF } echo "Standalone root password recovery tool." echo # # Check to see if we are running in standalone mode. We'll # know that we are if our pid is 1. # if [ "$$" != "1" ]; then echo "This tool can only be run in standalone mode." exit 1 fi # # OK, now we know we are running in standalone mode. Talk to the # user. # echo "Do you wish to reset the root password" echo -n "to the original default value (vyatta)? (Yes/No) [No]: " read response response=${response:0:1} if [ "$response" != "y" -a "$response" != "Y" ]; then echo "OK, the root password will not be reset." echo -n "Rebooting in 5 seconds..." sleep 5 echo /sbin/reboot -f fi echo "Starting process to reset the root password..." echo "Re-mounting root filesystem read/write..." mount -o remount,rw / # Leftover from V3.0 if grep -q /opt/vyatta/etc/config /etc/fstab then echo "Mounting the config filesystem..." mount /opt/vyatta/etc/config/ fi echo "Saving backup copy of config.boot..." cp $CF ${CF}.before_pwrecovery echo "Setting the root password..." echo $(date "+%b%e %T") $(hostname) "Root password changed" \ | tee -a /var/log/auth.log >>/var/log/messages sync echo "System will reboot in 10 seconds..." sleep 10 /sbin/reboot -f