瀏覽代碼

Central database rot password

Bob Mottram 10 年之前
父節點
當前提交
43e06d64ed
共有 1 個檔案被更改,包括 22 行新增8 行删除
  1. 22
    8
      install-freedombone.sh

+ 22
- 8
install-freedombone.sh 查看文件

@@ -295,6 +295,10 @@ GITHUB_BACKUP_DIRECTORY=/var/backups/github
295 295
 # Used to indicate whether the backup contains MariaDB databases or not
296 296
 BACKUP_INCLUDES_DATABASES="no"
297 297
 
298
+# contains the mysql root password which
299
+# is used for backups and repair
300
+DATABASE_PASSWORD_FILE=/root/dbpass
301
+
298 302
 # message if something fails to install
299 303
 CHECK_MESSAGE="Check your internet connection, /etc/network/interfaces and /etc/resolv.conf, then delete $COMPLETION_FILE, run 'rm -fR /var/lib/apt/lists/* && apt-get update --fix-missing' and run this script again. If hash sum mismatches persist then try setting $DEBIAN_REPO to a different mirror and also change /etc/apt/sources.list."
300 304
 
@@ -535,7 +539,13 @@ function check_hwrng {
535 539
 function get_mariadb_password {
536 540
   if [ -f /home/$MY_USERNAME/README ]; then
537 541
       if grep -q "MariaDB password" /home/$MY_USERNAME/README; then
538
-          MARIADB_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "MariaDB password" | awk -F ':' '{print $2}' | sed 's/^ *//')
542
+          if [ -f $DATABASE_PASSWORD_FILE ]; then
543
+              MARIADB_PASSWORD=$(<$DATABASE_PASSWORD_FILE)
544
+          else
545
+              MARIADB_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "MariaDB password" | awk -F ':' '{print $2}' | sed 's/^ *//')
546
+              echo "$MARIADB_PASSWORD" > $DATABASE_PASSWORD_FILE
547
+              chmod 600 $DATABASE_PASSWORD_FILE
548
+          fi
539 549
       fi
540 550
   fi
541 551
 }
@@ -612,7 +622,7 @@ function create_backup_script {
612 622
   echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
613 623
 
614 624
   echo '# MariaDB password' >> /usr/bin/$BACKUP_SCRIPT_NAME
615
-  echo "DATABASE_PASSWORD='$MARIADB_PASSWORD'" >> /usr/bin/$BACKUP_SCRIPT_NAME
625
+  echo "DATABASE_PASSWORD=$(<$DATABASE_PASSWORD_FILE)" >> /usr/bin/$BACKUP_SCRIPT_NAME
616 626
   echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
617 627
   if grep -Fxq "install_gnu_social" $COMPLETION_FILE; then
618 628
       BACKUP_INCLUDES_DATABASES="yes"
@@ -1088,7 +1098,7 @@ function create_restore_script {
1088 1098
   echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
1089 1099
   echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
1090 1100
   echo '# MariaDB password' >> /usr/bin/$RESTORE_SCRIPT_NAME
1091
-  echo "DATABASE_PASSWORD='$MARIADB_PASSWORD'" >> /usr/bin/$RESTORE_SCRIPT_NAME
1101
+  echo "DATABASE_PASSWORD=$(<$DATABASE_PASSWORD_FILE)" >> /usr/bin/$RESTORE_SCRIPT_NAME
1092 1102
   echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
1093 1103
 
1094 1104
   if [[ $BACKUP_INCLUDES_DATABASES == "yes" ]]; then
@@ -1124,9 +1134,10 @@ function create_restore_script {
1124 1134
       echo '  fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
1125 1135
       echo '  shred -zu /root/tempmariadb/usb/backup/mariadb/tempmariadb/db' >> /usr/bin/$RESTORE_SCRIPT_NAME
1126 1136
       echo '  rm -rf /root/tempmariadb' >> /usr/bin/$RESTORE_SCRIPT_NAME
1127
-      echo -n '  sed -i "s/MYSQL_PASSWORD=.*/MYSQL_PASSWORD=' >> /usr/bin/$RESTORE_SCRIPT_NAME
1128
-      echo -n "'$DATABASE_PASSWORD'/g" >> /usr/bin/$RESTORE_SCRIPT_NAME
1129
-      echo '" /usr/bin/backupdatabases' >> /usr/bin/$RESTORE_SCRIPT_NAME
1137
+      echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
1138
+      echo '  # Change database password file' >> /usr/bin/$RESTORE_SCRIPT_NAME
1139
+      echo "  echo '$DATABASE_PASSWORD' > $DATABASE_PASSWORD_FILE" >> /usr/bin/$RESTORE_SCRIPT_NAME
1140
+      echo "  chmod 600 $DATABASE_PASSWORD_FILE" >> /usr/bin/$RESTORE_SCRIPT_NAME
1130 1141
       echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
1131 1142
       echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
1132 1143
   fi
@@ -3981,6 +3992,9 @@ function install_mariadb {
3981 3992
   get_mariadb_password
3982 3993
   if [ ! $MARIADB_PASSWORD ]; then
3983 3994
       MARIADB_PASSWORD=$(openssl rand -base64 32)
3995
+      echo "$MARIADB_PASSWORD" > $DATABASE_PASSWORD_FILE
3996
+      chmod 600 $DATABASE_PASSWORD_FILE
3997
+
3984 3998
       echo '' >> /home/$MY_USERNAME/README
3985 3999
       echo '' >> /home/$MY_USERNAME/README
3986 4000
       echo 'MariaDB / MySql' >> /home/$MY_USERNAME/README
@@ -4010,7 +4024,7 @@ function backup_databases_script_header {
4010 4024
       echo '' >> /usr/bin/backupdatabases
4011 4025
       echo "EMAIL='$MY_EMAIL_ADDRESS'" >> /usr/bin/backupdatabases
4012 4026
       echo '' >> /usr/bin/backupdatabases
4013
-      echo "MYSQL_PASSWORD='$MARIADB_PASSWORD'" >> /usr/bin/backupdatabases
4027
+      echo "MYSQL_PASSWORD=$(<$DATABASE_PASSWORD_FILE)" >> /usr/bin/backupdatabases
4014 4028
       echo 'umask 0077' >> /usr/bin/backupdatabases
4015 4029
       echo '' >> /usr/bin/backupdatabases
4016 4030
       echo '# exit if we are backing up to friends servers' >> /usr/bin/backupdatabases
@@ -4052,7 +4066,7 @@ function repair_databases_script {
4052 4066
   echo 'DATABASE=$1' >> /usr/bin/repairdatabase
4053 4067
   echo "EMAIL=$MY_EMAIL_ADDRESS" >> /usr/bin/repairdatabase
4054 4068
   echo '' >> /usr/bin/repairdatabase
4055
-  echo "MYSQL_ROOT_PASSWORD='$MARIADB_PASSWORD'" >> /usr/bin/repairdatabase
4069
+  echo "MYSQL_ROOT_PASSWORD=$(<$DATABASE_PASSWORD_FILE)" >> /usr/bin/repairdatabase
4056 4070
   echo 'TEMPFILE=/root/repairdatabase_$DATABASE' >> /usr/bin/repairdatabase
4057 4071
   echo '' >> /usr/bin/repairdatabase
4058 4072
   echo 'umask 0077' >> /usr/bin/repairdatabase