瀏覽代碼

Import keys to root for backup purposes

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

+ 24
- 6
install-freedombone.sh 查看文件

308
   apt-get -y --force-yes install duplicity gnupg
308
   apt-get -y --force-yes install duplicity gnupg
309
 
309
 
310
   if [ ! $MY_GPG_PUBLIC_KEY_ID ]; then
310
   if [ ! $MY_GPG_PUBLIC_KEY_ID ]; then
311
-	  MY_GPG_PUBLIC_KEY_ID=$(su -c "gpg --list-keys $MY_USERNAME@$DOMAIN_NAME | grep 'pub '" - $MY_USERNAME | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
311
+      MY_GPG_PUBLIC_KEY_ID=$(su -c "gpg --list-keys $MY_USERNAME@$DOMAIN_NAME | grep 'pub '" - $MY_USERNAME | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
312
+  fi
313
+
314
+  # make sure that the root user has access to your gpg public key
315
+  if [ $MY_GPG_PUBLIC_KEY_ID ]; then
316
+      if [ ! $MY_GPG_PUBLIC_KEY ]; then
317
+          MY_GPG_PUBLIC_KEY=/tmp/public_key.gpg
318
+      fi
319
+      # This is a compromise. backup needs access to things which the user
320
+      # doesn't have access to, but also needs to be able to encrypt as the user
321
+      # Perhaps there is some better way to do this.
322
+      su -c "gpg --output $MY_GPG_PUBLIC_KEY --armor --export $MY_GPG_PUBLIC_KEY_ID" - $MY_USERNAME
323
+      su -c "gpg --output ~/temp_private_key.txt --armor --export-secret-key $MY_GPG_PUBLIC_KEY_ID" - $MY_USERNAME
324
+      gpg --import $MY_GPG_PUBLIC_KEY
325
+      gpg --allow-secret-key-import --import /home/$MY_USERNAME/temp_private_key.txt
326
+      shred -zu /home/$MY_USERNAME/temp_private_key.txt
312
   fi
327
   fi
313
 
328
 
314
   echo '#!/bin/bash' > /usr/bin/$BACKUP_SCRIPT_NAME
329
   echo '#!/bin/bash' > /usr/bin/$BACKUP_SCRIPT_NAME
397
   echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
412
   echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
398
 
413
 
399
   echo 'echo "Cleaning up backup files"' >> /usr/bin/$BACKUP_SCRIPT_NAME
414
   echo 'echo "Cleaning up backup files"' >> /usr/bin/$BACKUP_SCRIPT_NAME
400
-  echo "duplicity --force cleanup file://$USB_MOUNT/backup" >> /usr/bin/$BACKUP_SCRIPT_NAME
415
+  echo -n 'duplicity --encrypt-key $GPG_KEY --force cleanup '
416
+  echo "file://$USB_MOUNT/backup" >> /usr/bin/$BACKUP_SCRIPT_NAME
417
+
401
   echo 'echo "Removing old backups"' >> /usr/bin/$BACKUP_SCRIPT_NAME
418
   echo 'echo "Removing old backups"' >> /usr/bin/$BACKUP_SCRIPT_NAME
402
-  echo "duplicity --force remove-all-but-n-full 2 file://$USB_MOUNT/backup" >> /usr/bin/$BACKUP_SCRIPT_NAME
419
+  echo -n 'duplicity --encrypt-key $GPG_KEY --force remove-all-but-n-full 2 '
420
+  echo "file://$USB_MOUNT/backup" >> /usr/bin/$BACKUP_SCRIPT_NAME
403
 
421
 
404
   echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
422
   echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
405
   echo '# Remove temporary files' >> /usr/bin/$BACKUP_SCRIPT_NAME
423
   echo '# Remove temporary files' >> /usr/bin/$BACKUP_SCRIPT_NAME
1611
   # if gpg keys directory was previously imported from usb
1629
   # if gpg keys directory was previously imported from usb
1612
   if [[ $GPG_KEYS_IMPORTED == "yes" && -d /home/$MY_USERNAME/.gnupg ]]; then
1630
   if [[ $GPG_KEYS_IMPORTED == "yes" && -d /home/$MY_USERNAME/.gnupg ]]; then
1613
       sed -i "s|keyserver hkp://keys.gnupg.net|keyserver $GPG_KEYSERVER|g" /home/$MY_USERNAME/.gnupg/gpg.conf
1631
       sed -i "s|keyserver hkp://keys.gnupg.net|keyserver $GPG_KEYSERVER|g" /home/$MY_USERNAME/.gnupg/gpg.conf
1614
-	  MY_GPG_PUBLIC_KEY_ID=$(su -c "gpg --list-keys $MY_USERNAME@$DOMAIN_NAME | grep 'pub '" - $MY_USERNAME | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
1632
+      MY_GPG_PUBLIC_KEY_ID=$(su -c "gpg --list-keys $MY_USERNAME@$DOMAIN_NAME | grep 'pub '" - $MY_USERNAME | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
1615
       echo 'configure_gpg' >> $COMPLETION_FILE
1633
       echo 'configure_gpg' >> $COMPLETION_FILE
1616
       return
1634
       return
1617
   fi
1635
   fi
1648
       su -c "gpg --allow-secret-key-import --import $MY_GPG_PRIVATE_KEY" - $MY_USERNAME
1666
       su -c "gpg --allow-secret-key-import --import $MY_GPG_PRIVATE_KEY" - $MY_USERNAME
1649
       # for security ensure that the private key file doesn't linger around
1667
       # for security ensure that the private key file doesn't linger around
1650
       shred -zu $MY_GPG_PRIVATE_KEY
1668
       shred -zu $MY_GPG_PRIVATE_KEY
1651
-	  MY_GPG_PUBLIC_KEY_ID=$(su -c "gpg --list-keys $MY_USERNAME@$DOMAIN_NAME | grep 'pub '" - $MY_USERNAME | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
1669
+      MY_GPG_PUBLIC_KEY_ID=$(su -c "gpg --list-keys $MY_USERNAME@$DOMAIN_NAME | grep 'pub '" - $MY_USERNAME | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
1652
   else
1670
   else
1653
       # Generate a GPG key
1671
       # Generate a GPG key
1654
       echo 'Key-Type: 1' > /home/$MY_USERNAME/gpg-genkey.conf
1672
       echo 'Key-Type: 1' > /home/$MY_USERNAME/gpg-genkey.conf
1661
       chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/gpg-genkey.conf
1679
       chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/gpg-genkey.conf
1662
       su -c "gpg --batch --gen-key /home/$MY_USERNAME/gpg-genkey.conf" - $MY_USERNAME
1680
       su -c "gpg --batch --gen-key /home/$MY_USERNAME/gpg-genkey.conf" - $MY_USERNAME
1663
       shred -zu /home/$MY_USERNAME/gpg-genkey.conf
1681
       shred -zu /home/$MY_USERNAME/gpg-genkey.conf
1664
-	  MY_GPG_PUBLIC_KEY_ID=$(su -c "gpg --list-keys $MY_USERNAME@$DOMAIN_NAME | grep 'pub '" - $MY_USERNAME | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
1682
+      MY_GPG_PUBLIC_KEY_ID=$(su -c "gpg --list-keys $MY_USERNAME@$DOMAIN_NAME | grep 'pub '" - $MY_USERNAME | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
1665
       MY_GPG_PUBLIC_KEY=/tmp/public_key.gpg
1683
       MY_GPG_PUBLIC_KEY=/tmp/public_key.gpg
1666
       su -c "gpg --output $MY_GPG_PUBLIC_KEY --armor --export $MY_GPG_PUBLIC_KEY_ID" - $MY_USERNAME
1684
       su -c "gpg --output $MY_GPG_PUBLIC_KEY --armor --export $MY_GPG_PUBLIC_KEY_ID" - $MY_USERNAME
1667
   fi
1685
   fi