Kaynağa Gözat

Move database password to the password store

Bob Mottram 8 yıl önce
ebeveyn
işleme
993c0da24c

+ 1
- 1
src/freedombone-app-gnusocial Dosyayı Görüntüle

@@ -874,7 +874,7 @@ function expire_gnusocial_posts {
874 874
     echo '' >> $gnusocial_expire_script
875 875
     echo '$oldate=date(("Y-m-d"), strtotime("-3 months"));' >> $gnusocial_expire_script
876 876
     echo '$username="root";' >> $gnusocial_expire_script
877
-    echo "\$password=trim(file_get_contents(\"$DATABASE_PASSWORD_FILE\"));" >> $gnusocial_expire_script
877
+    echo "\$password=shell_exec('${PROJECT_NAME}-pass -u root -a mariadb');" >> $gnusocial_expire_script
878 878
     echo '$database="gnusocial";' >> $gnusocial_expire_script
879 879
     echo '' >> $gnusocial_expire_script
880 880
     echo 'if (!$link = mysql_connect("localhost", $username, $password)) {' >> $gnusocial_expire_script

+ 1
- 1
src/freedombone-app-postactiv Dosyayı Görüntüle

@@ -607,7 +607,7 @@ function expire_postactiv_posts {
607 607
     echo '' >> $postactiv_expire_script
608 608
     echo '$oldate=date(("Y-m-d"), strtotime("-3 months"));' >> $postactiv_expire_script
609 609
     echo '$username="root";' >> $postactiv_expire_script
610
-    echo "\$password=trim(file_get_contents(\"$DATABASE_PASSWORD_FILE\"));" >> $postactiv_expire_script
610
+    echo "\$password=shell_exec('${PROJECT_NAME}-pass -u root -a mariadb');" >> $postactiv_expire_script
611 611
     echo '$database="postactiv";' >> $postactiv_expire_script
612 612
     echo '' >> $postactiv_expire_script
613 613
     echo 'if (!$link = mysql_connect("localhost", $username, $password)) {' >> $postactiv_expire_script

+ 1
- 4
src/freedombone-backup-local Dosyayı Görüntüle

@@ -63,10 +63,7 @@ ADMIN_NAME=
63 63
 # Sites are suspended so that verification should work
64 64
 SUSPENDED_SITE=
65 65
 
66
-DATABASE_PASSWORD=''
67
-if [ -f /root/dbpass ]; then
68
-    DATABASE_PASSWORD=$(cat /root/dbpass)
69
-fi
66
+DATABASE_PASSWORD=$(${PROJECT_NAME}-pass -u root -a mariadb)
70 67
 
71 68
 function make_backup_directory {
72 69
     # make a backup directory on the drive

+ 1
- 4
src/freedombone-backup-remote Dosyayı Görüntüle

@@ -70,10 +70,7 @@ if [ ! -f /home/${ADMIN_USERNAME}/backup.list ]; then
70 70
 fi
71 71
 
72 72
 # MariaDB password
73
-DATABASE_PASSWORD=''
74
-if [ -f /root/dbpass ]; then
75
-    DATABASE_PASSWORD=$(cat /root/dbpass)
76
-fi
73
+DATABASE_PASSWORD=$(${PROJECT_NAME}-pass -u root -a mariadb)
77 74
 
78 75
 # local directory where the backup will be made
79 76
 if [ ! -d $SERVER_DIRECTORY ]; then

+ 4
- 4
src/freedombone-pass Dosyayı Görüntüle

@@ -54,7 +54,7 @@ function get_backup_key_id {
54 54
                            grep 'pub ' | awk -F ' ' '{print $2}' | \
55 55
                            awk -F '/' '{print $2}')
56 56
     if [ ${#MY_BACKUP_KEY_ID} -lt 4 ]; then
57
-        echo $"gpg backup key was not found"
57
+        echo $"Error: gpg backup key was not found"
58 58
         return 58213
59 59
     fi
60 60
 }
@@ -141,12 +141,12 @@ get_backup_key_id
141 141
 MASTER_PASSWORD=$(gpg -q --armor --export-secret-key $MY_BACKUP_KEY_ID | sed '/---/d' | sed '/Version/d' | sed '/^$/d')
142 142
 
143 143
 if [ ! $CURR_USERNAME ]; then
144
-    echo $'No username given'
144
+    echo $'Error: No username given'
145 145
     exit 1
146 146
 fi
147 147
 
148 148
 if [ ! -d /home/$CURR_USERNAME ]; then
149
-    echo $"User $CURR_USERNAME does not exist"
149
+    echo $"Error: User $CURR_USERNAME does not exist"
150 150
     exit 2
151 151
 fi
152 152
 
@@ -158,7 +158,7 @@ if [ ${REMOVE_APP} ]; then
158 158
 fi
159 159
 
160 160
 if [ ! $CURR_APP ]; then
161
-    echo $'No app name given'
161
+    echo $'Error: No app name given'
162 162
     exit 3
163 163
 fi
164 164
 

+ 2
- 1
src/freedombone-repair-database Dosyayı Görüntüle

@@ -44,7 +44,8 @@ ADMIN_EMAIL_ADDRESS=${ADMIN_USERNAME}@${HOSTNAME}
44 44
 # Frequency - daily/weekly
45 45
 BACKUP_TYPE='daily'
46 46
 
47
-MYSQL_ROOT_PASSWORD=$(cat /root/dbpass)
47
+MYSQL_ROOT_PASSWORD=$(${PROJECT_NAME}-pass -u root -a mariadb)
48
+
48 49
 TEMPFILE=/root/repair-database-$DATABASE
49 50
 
50 51
 umask 0077

+ 9
- 20
src/freedombone-restore-local Dosyayı Görüntüle

@@ -66,10 +66,7 @@ if [ -f $COMPLETION_FILE ]; then
66 66
 fi
67 67
 
68 68
 # MariaDB password
69
-DATABASE_PASSWORD=''
70
-if [ -f /root/dbpass ]; then
71
-    DATABASE_PASSWORD=$(cat /root/dbpass)
72
-fi
69
+DATABASE_PASSWORD=$(${PROJECT_NAME}-pass -u root -a mariadb)
73 70
 
74 71
 function check_backup_exists {
75 72
     if [ ! -d $USB_MOUNT/backup ]; then
@@ -182,18 +179,14 @@ function restore_mariadb {
182 179
         echo $"Restoring mysql settings"
183 180
         temp_restore_dir=/root/tempmariadb
184 181
         restore_directory_from_usb $temp_restore_dir mariadb
185
-        echo $"Get the MariaDB password from the backup"
186
-        if [ ! -f ${temp_restore_dir}${temp_restore_dir}/db ]; then
187
-            echo $"MariaDB password file not found"
188
-            exit 495
189
-        fi
190
-        BACKUP_MARIADB_PASSWORD=$(cat ${temp_restore_dir}${temp_restore_dir}/db)
191
-        if [[ $BACKUP_MARIADB_PASSWORD != $DATABASE_PASSWORD ]]; then
182
+        echo $'Obtaining MariaDB password'
183
+        db_pass=$(${PROJECT_NAME}-pass -u root -a mariadb)
184
+        if [ ${#db_pass} -gt 0 ]; then
192 185
             echo $"Restore the MariaDB user table"
193
-            mysqlsuccess=$(mysql -u root --password=$DATABASE_PASSWORD mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql)
186
+            mysqlsuccess=$(mysql -u root --password="$DATABASE_PASSWORD" mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql)
194 187
             if [ ! "$?" = "0" ]; then
195 188
                 echo $"Try again using the password obtained from backup"
196
-                mysqlsuccess=$(mysql -u root --password=$BACKUP_MARIADB_PASSWORD mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql)
189
+                mysqlsuccess=$(mysql -u root --password="$db_pass" mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql)
197 190
             fi
198 191
             if [ ! "$?" = "0" ]; then
199 192
                 echo "$mysqlsuccess"
@@ -204,14 +197,10 @@ function restore_mariadb {
204 197
             echo $"Restarting database"
205 198
             service mysql restart
206 199
             echo $"Change the MariaDB password to the backup version"
207
-            DATABASE_PASSWORD=$BACKUP_MARIADB_PASSWORD
200
+            DATABASE_PASSWORD="$db_pass"
201
+            ${PROJECT_NAME}-pass -u root -a mariadb -p "$DATABASE_PASSWORD"
208 202
         fi
209
-        shred -zu ${temp_restore_dir}${temp_restore_dir}/db
210 203
         rm -rf $temp_restore_dir
211
-
212
-        # Change database password file
213
-        echo "$DATABASE_PASSWORD" > /root/dbpass
214
-        chmod 600 /root/dbpass
215 204
     fi
216 205
 }
217 206
 
@@ -723,9 +712,9 @@ check_admin_user
723 712
 copy_gpg_keys
724 713
 restore_configfiles
725 714
 same_admin_user
715
+restore_passwordstore
726 716
 restore_mariadb
727 717
 restore_letsencrypt
728
-restore_passwordstore
729 718
 restore_tor
730 719
 restore_mutt_settings
731 720
 restore_gpg

+ 9
- 19
src/freedombone-restore-remote Dosyayı Görüntüle

@@ -94,10 +94,7 @@ else
94 94
 fi
95 95
 
96 96
 # MariaDB password
97
-DATABASE_PASSWORD=''
98
-if [ -f /root/dbpass ]; then
99
-    DATABASE_PASSWORD=$(cat /root/dbpass)
100
-fi
97
+DATABASE_PASSWORD=$(${PROJECT_NAME}-pass -u root -a mariadb)
101 98
 
102 99
 function copy_gpg_keys {
103 100
     echo $"Copying GPG keys from admin user to root"
@@ -176,18 +173,15 @@ function restore_mariadb {
176 173
         echo $"Restoring MariaDB settings"
177 174
         temp_restore_dir=/root/tempmariadb
178 175
         restore_directory_from_friend $temp_restore_dir mariadb
179
-        echo $"Get the MariaDB password from the backup"
180
-        if [ ! -f ${temp_restore_dir}${temp_restore_dir}/db ]; then
181
-            echo $"MariaDB password file not found"
182
-            exit 495
183
-        fi
184
-        BACKUP_MARIADB_PASSWORD=$(cat ${temp_restore_dir}${temp_restore_dir}/db)
185
-        if [[ "$BACKUP_MARIADB_PASSWORD" != "$DATABASE_PASSWORD" ]]; then
176
+
177
+        echo $'Obtaining MariaDB password'
178
+        db_pass=$(${PROJECT_NAME}-pass -u root -a mariadb)
179
+        if [ ${#db_pass} -gt 0 ]; then
186 180
             echo $"Restore the MariaDB user table"
187 181
             mysqlsuccess=$(mysql -u root --password="$DATABASE_PASSWORD" mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql)
188 182
             if [ ! "$?" = "0" ]; then
189 183
                 echo $"Try again using the password obtained from backup"
190
-                mysqlsuccess=$(mysql -u root --password="$BACKUP_MARIADB_PASSWORD" mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql)
184
+                mysqlsuccess=$(mysql -u root --password="$db_pass" mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql)
191 185
             fi
192 186
             if [ ! "$?" = "0" ]; then
193 187
                 echo "$mysqlsuccess"
@@ -196,14 +190,10 @@ function restore_mariadb {
196 190
             echo $"Restarting database"
197 191
             service mysql restart
198 192
             echo $"Change the MariaDB password to the backup version"
199
-            DATABASE_PASSWORD=$BACKUP_MARIADB_PASSWORD
193
+            DATABASE_PASSWORD="$db_pass"
194
+            ${PROJECT_NAME}-pass -u root -a mariadb -p "$DATABASE_PASSWORD"
200 195
         fi
201
-        shred -zu ${temp_restore_dir}${temp_restore_dir}/db
202 196
         rm -rf ${temp_restore_dir}
203
-
204
-        # Change database password file
205
-        echo "$DATABASE_PASSWORD" > /root/dbpass
206
-        chmod 600 /root/dbpass
207 197
     fi
208 198
 }
209 199
 
@@ -659,9 +649,9 @@ ${PROJECT_NAME}-recoverkey -u ${ADMIN_USERNAME} -l $BACKUP_LIST
659 649
 
660 650
 copy_gpg_keys
661 651
 restore_configfiles
652
+restore_passwordstore
662 653
 restore_mariadb
663 654
 restore_letsencrypt
664
-restore_passwordstore
665 655
 restore_mutt_settings
666 656
 restore_gpg
667 657
 restore_procmail

+ 13
- 9
src/freedombone-utils-database Dosyayı Görüntüle

@@ -34,10 +34,6 @@ MARIADB_PASSWORD=
34 34
 # Used to indicate whether the backup contains MariaDB databases or not
35 35
 BACKUP_INCLUDES_DATABASES="no"
36 36
 
37
-# contains the mysql root password which
38
-# is used for backups and repair
39
-DATABASE_PASSWORD_FILE=/root/dbpass
40
-
41 37
 function remove_backup_database_local {
42 38
     database_name=$1
43 39
 
@@ -114,9 +110,18 @@ function backup_database_local {
114 110
 }
115 111
 
116 112
 function get_mariadb_password {
113
+    # migrate from database password file to using the password store
114
+    DATABASE_PASSWORD_FILE=/root/dbpass
117 115
     if [ -f $DATABASE_PASSWORD_FILE ]; then
118 116
         MARIADB_PASSWORD=$(cat $DATABASE_PASSWORD_FILE)
117
+        ${PROJECT_NAME}-pass -u root -a mariadb -p "$MARIADB_PASSWORD"
118
+        if [[ "$(${PROJECT_NAME}-pass -u root -a mariadb)" == "$MARIADB_PASSWORD" ]]; then
119
+            shred -zu $DATABASE_PASSWORD_FILE
120
+            echo $'MariaDB password moved into password store'
121
+            return
122
+        fi
119 123
     fi
124
+    MARIADB_PASSWORD=$(${PROJECT_NAME}-pass -u root -a mariadb)
120 125
 }
121 126
 
122 127
 function install_mariadb {
@@ -135,8 +140,7 @@ function install_mariadb {
135 140
         else
136 141
             MARIADB_PASSWORD="$(openssl rand -base64 32 | cut -c1-${MINIMUM_PASSWORD_LENGTH})"
137 142
         fi
138
-        echo "$MARIADB_PASSWORD" > $DATABASE_PASSWORD_FILE
139
-        chmod 600 $DATABASE_PASSWORD_FILE
143
+        ${PROJECT_NAME}-pass -u root -a mariadb -p "$MARIADB_PASSWORD"
140 144
     fi
141 145
 
142 146
     debconf-set-selections <<< "mariadb-server mariadb-server/root_password password $MARIADB_PASSWORD"
@@ -164,8 +168,7 @@ function backup_databases_script_header {
164 168
         echo '' >> /usr/bin/backupdatabases
165 169
         echo "EMAIL='$MY_EMAIL_ADDRESS'" >> /usr/bin/backupdatabases
166 170
         echo '' >> /usr/bin/backupdatabases
167
-        echo -n 'MYSQL_PASSWORD=$(cat ' >> /usr/bin/backupdatabases
168
-        echo "$DATABASE_PASSWORD_FILE)" >> /usr/bin/backupdatabases
171
+        echo "MYSQL_PASSWORD=\$(${PROJECT_NAME}-pass -u root -a mariadb)" >> /usr/bin/backupdatabases
169 172
         echo 'umask 0077' >> /usr/bin/backupdatabases
170 173
         echo '' >> /usr/bin/backupdatabases
171 174
         echo '# exit if we are backing up to friends servers' >> /usr/bin/backupdatabases
@@ -207,7 +210,8 @@ function repair_databases_script {
207 210
         return
208 211
     fi
209 212
 
210
-    if [ ! -f $DATABASE_PASSWORD_FILE ]; then
213
+    db_pass=$(${PROJECT_NAME}-pass -u root -p mariadb)
214
+    if [[ "$db_pass" == 'Error:'* ]]; then
211 215
         return
212 216
     fi
213 217