Bläddra i källkod

Move database password to the password store

Bob Mottram 8 år sedan
förälder
incheckning
993c0da24c

+ 1
- 1
src/freedombone-app-gnusocial Visa fil

874
     echo '' >> $gnusocial_expire_script
874
     echo '' >> $gnusocial_expire_script
875
     echo '$oldate=date(("Y-m-d"), strtotime("-3 months"));' >> $gnusocial_expire_script
875
     echo '$oldate=date(("Y-m-d"), strtotime("-3 months"));' >> $gnusocial_expire_script
876
     echo '$username="root";' >> $gnusocial_expire_script
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
     echo '$database="gnusocial";' >> $gnusocial_expire_script
878
     echo '$database="gnusocial";' >> $gnusocial_expire_script
879
     echo '' >> $gnusocial_expire_script
879
     echo '' >> $gnusocial_expire_script
880
     echo 'if (!$link = mysql_connect("localhost", $username, $password)) {' >> $gnusocial_expire_script
880
     echo 'if (!$link = mysql_connect("localhost", $username, $password)) {' >> $gnusocial_expire_script

+ 1
- 1
src/freedombone-app-postactiv Visa fil

607
     echo '' >> $postactiv_expire_script
607
     echo '' >> $postactiv_expire_script
608
     echo '$oldate=date(("Y-m-d"), strtotime("-3 months"));' >> $postactiv_expire_script
608
     echo '$oldate=date(("Y-m-d"), strtotime("-3 months"));' >> $postactiv_expire_script
609
     echo '$username="root";' >> $postactiv_expire_script
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
     echo '$database="postactiv";' >> $postactiv_expire_script
611
     echo '$database="postactiv";' >> $postactiv_expire_script
612
     echo '' >> $postactiv_expire_script
612
     echo '' >> $postactiv_expire_script
613
     echo 'if (!$link = mysql_connect("localhost", $username, $password)) {' >> $postactiv_expire_script
613
     echo 'if (!$link = mysql_connect("localhost", $username, $password)) {' >> $postactiv_expire_script

+ 1
- 4
src/freedombone-backup-local Visa fil

63
 # Sites are suspended so that verification should work
63
 # Sites are suspended so that verification should work
64
 SUSPENDED_SITE=
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
 function make_backup_directory {
68
 function make_backup_directory {
72
     # make a backup directory on the drive
69
     # make a backup directory on the drive

+ 1
- 4
src/freedombone-backup-remote Visa fil

70
 fi
70
 fi
71
 
71
 
72
 # MariaDB password
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
 # local directory where the backup will be made
75
 # local directory where the backup will be made
79
 if [ ! -d $SERVER_DIRECTORY ]; then
76
 if [ ! -d $SERVER_DIRECTORY ]; then

+ 4
- 4
src/freedombone-pass Visa fil

54
                            grep 'pub ' | awk -F ' ' '{print $2}' | \
54
                            grep 'pub ' | awk -F ' ' '{print $2}' | \
55
                            awk -F '/' '{print $2}')
55
                            awk -F '/' '{print $2}')
56
     if [ ${#MY_BACKUP_KEY_ID} -lt 4 ]; then
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
         return 58213
58
         return 58213
59
     fi
59
     fi
60
 }
60
 }
141
 MASTER_PASSWORD=$(gpg -q --armor --export-secret-key $MY_BACKUP_KEY_ID | sed '/---/d' | sed '/Version/d' | sed '/^$/d')
141
 MASTER_PASSWORD=$(gpg -q --armor --export-secret-key $MY_BACKUP_KEY_ID | sed '/---/d' | sed '/Version/d' | sed '/^$/d')
142
 
142
 
143
 if [ ! $CURR_USERNAME ]; then
143
 if [ ! $CURR_USERNAME ]; then
144
-    echo $'No username given'
144
+    echo $'Error: No username given'
145
     exit 1
145
     exit 1
146
 fi
146
 fi
147
 
147
 
148
 if [ ! -d /home/$CURR_USERNAME ]; then
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
     exit 2
150
     exit 2
151
 fi
151
 fi
152
 
152
 
158
 fi
158
 fi
159
 
159
 
160
 if [ ! $CURR_APP ]; then
160
 if [ ! $CURR_APP ]; then
161
-    echo $'No app name given'
161
+    echo $'Error: No app name given'
162
     exit 3
162
     exit 3
163
 fi
163
 fi
164
 
164
 

+ 2
- 1
src/freedombone-repair-database Visa fil

44
 # Frequency - daily/weekly
44
 # Frequency - daily/weekly
45
 BACKUP_TYPE='daily'
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
 TEMPFILE=/root/repair-database-$DATABASE
49
 TEMPFILE=/root/repair-database-$DATABASE
49
 
50
 
50
 umask 0077
51
 umask 0077

+ 9
- 20
src/freedombone-restore-local Visa fil

66
 fi
66
 fi
67
 
67
 
68
 # MariaDB password
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
 function check_backup_exists {
71
 function check_backup_exists {
75
     if [ ! -d $USB_MOUNT/backup ]; then
72
     if [ ! -d $USB_MOUNT/backup ]; then
182
         echo $"Restoring mysql settings"
179
         echo $"Restoring mysql settings"
183
         temp_restore_dir=/root/tempmariadb
180
         temp_restore_dir=/root/tempmariadb
184
         restore_directory_from_usb $temp_restore_dir mariadb
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
             echo $"Restore the MariaDB user table"
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
             if [ ! "$?" = "0" ]; then
187
             if [ ! "$?" = "0" ]; then
195
                 echo $"Try again using the password obtained from backup"
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
             fi
190
             fi
198
             if [ ! "$?" = "0" ]; then
191
             if [ ! "$?" = "0" ]; then
199
                 echo "$mysqlsuccess"
192
                 echo "$mysqlsuccess"
204
             echo $"Restarting database"
197
             echo $"Restarting database"
205
             service mysql restart
198
             service mysql restart
206
             echo $"Change the MariaDB password to the backup version"
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
         fi
202
         fi
209
-        shred -zu ${temp_restore_dir}${temp_restore_dir}/db
210
         rm -rf $temp_restore_dir
203
         rm -rf $temp_restore_dir
211
-
212
-        # Change database password file
213
-        echo "$DATABASE_PASSWORD" > /root/dbpass
214
-        chmod 600 /root/dbpass
215
     fi
204
     fi
216
 }
205
 }
217
 
206
 
723
 copy_gpg_keys
712
 copy_gpg_keys
724
 restore_configfiles
713
 restore_configfiles
725
 same_admin_user
714
 same_admin_user
715
+restore_passwordstore
726
 restore_mariadb
716
 restore_mariadb
727
 restore_letsencrypt
717
 restore_letsencrypt
728
-restore_passwordstore
729
 restore_tor
718
 restore_tor
730
 restore_mutt_settings
719
 restore_mutt_settings
731
 restore_gpg
720
 restore_gpg

+ 9
- 19
src/freedombone-restore-remote Visa fil

94
 fi
94
 fi
95
 
95
 
96
 # MariaDB password
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
 function copy_gpg_keys {
99
 function copy_gpg_keys {
103
     echo $"Copying GPG keys from admin user to root"
100
     echo $"Copying GPG keys from admin user to root"
176
         echo $"Restoring MariaDB settings"
173
         echo $"Restoring MariaDB settings"
177
         temp_restore_dir=/root/tempmariadb
174
         temp_restore_dir=/root/tempmariadb
178
         restore_directory_from_friend $temp_restore_dir mariadb
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
             echo $"Restore the MariaDB user table"
180
             echo $"Restore the MariaDB user table"
187
             mysqlsuccess=$(mysql -u root --password="$DATABASE_PASSWORD" mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql)
181
             mysqlsuccess=$(mysql -u root --password="$DATABASE_PASSWORD" mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql)
188
             if [ ! "$?" = "0" ]; then
182
             if [ ! "$?" = "0" ]; then
189
                 echo $"Try again using the password obtained from backup"
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
             fi
185
             fi
192
             if [ ! "$?" = "0" ]; then
186
             if [ ! "$?" = "0" ]; then
193
                 echo "$mysqlsuccess"
187
                 echo "$mysqlsuccess"
196
             echo $"Restarting database"
190
             echo $"Restarting database"
197
             service mysql restart
191
             service mysql restart
198
             echo $"Change the MariaDB password to the backup version"
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
         fi
195
         fi
201
-        shred -zu ${temp_restore_dir}${temp_restore_dir}/db
202
         rm -rf ${temp_restore_dir}
196
         rm -rf ${temp_restore_dir}
203
-
204
-        # Change database password file
205
-        echo "$DATABASE_PASSWORD" > /root/dbpass
206
-        chmod 600 /root/dbpass
207
     fi
197
     fi
208
 }
198
 }
209
 
199
 
659
 
649
 
660
 copy_gpg_keys
650
 copy_gpg_keys
661
 restore_configfiles
651
 restore_configfiles
652
+restore_passwordstore
662
 restore_mariadb
653
 restore_mariadb
663
 restore_letsencrypt
654
 restore_letsencrypt
664
-restore_passwordstore
665
 restore_mutt_settings
655
 restore_mutt_settings
666
 restore_gpg
656
 restore_gpg
667
 restore_procmail
657
 restore_procmail

+ 13
- 9
src/freedombone-utils-database Visa fil

34
 # Used to indicate whether the backup contains MariaDB databases or not
34
 # Used to indicate whether the backup contains MariaDB databases or not
35
 BACKUP_INCLUDES_DATABASES="no"
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
 function remove_backup_database_local {
37
 function remove_backup_database_local {
42
     database_name=$1
38
     database_name=$1
43
 
39
 
114
 }
110
 }
115
 
111
 
116
 function get_mariadb_password {
112
 function get_mariadb_password {
113
+    # migrate from database password file to using the password store
114
+    DATABASE_PASSWORD_FILE=/root/dbpass
117
     if [ -f $DATABASE_PASSWORD_FILE ]; then
115
     if [ -f $DATABASE_PASSWORD_FILE ]; then
118
         MARIADB_PASSWORD=$(cat $DATABASE_PASSWORD_FILE)
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
     fi
123
     fi
124
+    MARIADB_PASSWORD=$(${PROJECT_NAME}-pass -u root -a mariadb)
120
 }
125
 }
121
 
126
 
122
 function install_mariadb {
127
 function install_mariadb {
135
         else
140
         else
136
             MARIADB_PASSWORD="$(openssl rand -base64 32 | cut -c1-${MINIMUM_PASSWORD_LENGTH})"
141
             MARIADB_PASSWORD="$(openssl rand -base64 32 | cut -c1-${MINIMUM_PASSWORD_LENGTH})"
137
         fi
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
     fi
144
     fi
141
 
145
 
142
     debconf-set-selections <<< "mariadb-server mariadb-server/root_password password $MARIADB_PASSWORD"
146
     debconf-set-selections <<< "mariadb-server mariadb-server/root_password password $MARIADB_PASSWORD"
164
         echo '' >> /usr/bin/backupdatabases
168
         echo '' >> /usr/bin/backupdatabases
165
         echo "EMAIL='$MY_EMAIL_ADDRESS'" >> /usr/bin/backupdatabases
169
         echo "EMAIL='$MY_EMAIL_ADDRESS'" >> /usr/bin/backupdatabases
166
         echo '' >> /usr/bin/backupdatabases
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
         echo 'umask 0077' >> /usr/bin/backupdatabases
172
         echo 'umask 0077' >> /usr/bin/backupdatabases
170
         echo '' >> /usr/bin/backupdatabases
173
         echo '' >> /usr/bin/backupdatabases
171
         echo '# exit if we are backing up to friends servers' >> /usr/bin/backupdatabases
174
         echo '# exit if we are backing up to friends servers' >> /usr/bin/backupdatabases
207
         return
210
         return
208
     fi
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
         return
215
         return
212
     fi
216
     fi
213
 
217