Allgemeine Information zur Verschlüsselung von gemeinsamen Ordner
Die Verschlüsselung von gemeinsamen Ordner, gibt es seit der Firmware DSM 2.3.
Um einen verschlüsselten Ordner zu erstellen, muss einfach ein neuer gemeinsamen Ordner erstellt werden. Dabei hat man die Möglichkeit die Option „Diesen gemeinsamen Ordner verschlüsseln“ zu wählen. Dabei ist es erforderlich ein Passwort einzugeben.
Zusätzlich gibt es die Möglichkeit den Import-Schlüssel in einer Key-Datei zu exportieren.
Diese wird für dieses Script benötigt, da daraus der aktuelle Schlüssel ausgelesen wird.
Beschreibung des Scripts
Das Beispiel-Script bietet die Möglichkeit einen verschlüsselten Ordner namens „Backup“ zu mounten bzw. zu unmounten.
Dabei wird aus der Importschlüssel-Datei (backup.key) der Schlüssel ausgelesen.
Somit entfällt die Eingabe des Passworts bei der Einbindung des kryptischen Ordners.
Die Variablen müssen natürlich noch entsprechend auf die richtigen Pfade angepasst werden.
Das Einbinden des verschlüsselten Ordners erfolgt über „mount.ecryptfs“.
Beim Aufruf werden einige Parameter wie z. B. das Passphrase Passwort mitgegeben.
############################################################# # VARIABLES ############################################################# KEY_FILE="/volume2/backup.key" LOG_FILE="/volume2/backuplog-`date +%Y-%m-%d`.log" ENCRYPT_DIR_PATH=/volume2/@backup@ MOUNTED_DIR_PATH=/volume2/backup TODAY=`date +%Y-%m-%d` KEY_PASS="" ############################################################# # MOUNT FUNCTION # Step 1: try to get the password from the keyfile # Step 2: create mounted dir if not exist # Step 3: try to mount encrypted filesystem ############################################################# mount(){ isMounted $MOUNTED_DIR_PATH if [ "$?" -ne "0" ]; then log "WARN: Encrypted filesystem is already mounted" return 0 fi getKeyFromFile createDir $MOUNTED_DIR_PATH /usr/syno/sbin/mount.ecryptfs $ENCRYPT_DIR_PATH $MOUNTED_DIR_PATH \ -o key=passphrase:passphrase_passwd=$KEY_PASS,ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_passthrough=n,no_sig_cache,ecryptfs_enable_filename_crypto >> $LOG_FILE if [ "$?" -ne "0" ]; then log "ERROR: Can not mount the encrypted filesystem" exit 1 fi log "Encrypted filesystem mounted successfully" return 1 } ############################################################# # UNMOUNT FUNCTION # Step 1: try to unmount directory # Step 2: try to remove mounted folder ############################################################# unmount(){ isMounted $MOUNTED_DIR_PATH if [ "$?" -eq "0" ]; then log "WARN: Encrypted filesystem is not mounted" return 0 fi /bin/umount $ENCRYPT_DIR_PATH >> $LOG_FILE if [ "$?" -ne "0" ]; then log "ERROR: Can not unmount the encrypted filesystem" exit 1 fi log "Encrypted filesystem unmounted successfully" removeDir $MOUNTED_DIR_PATH return 1 } ############################################################## # HELPER FUNCTIONS ############################################################## getKeyFromFile(){ KEY_PASS=`cat $KEY_FILE` if [ "$?" -ne "0" ]; then log "ERROR: Could not find keyfile: $KEY_FILE" exit 1 fi log "Find password in keyfile" } log(){ echo "$TODAY `date +%k:%M:%S` -- $1" >> $LOG_FILE } isMounted(){ /bin/mount | /bin/grep $1 > /dev/null if [ "$?" -eq "0" ]; then log "$1 is mounted" return 1 else log "$1 is not mounted" return 0 fi } removeDir(){ if [ -d "$1" ]; then rm -r $1 log "directory removed: $1" else log "WARN: Can't remove directory - REASON: does not exist: $1" fi } createDir(){ if [ ! -d "$1" ]; then mkdir $1 log "directory created: $1" else log "WARN: Can not create directory - REASON: already exists: $1" fi } ############################################################# # RUN FUNCTION ############################################################# log "Starting the script" mount unmount log "Finished"
Das ganze muss als .sh Datei abgespeichert werden.
Das Script kann auch hier heruntergeladen werden
Shell Script – Mount / Unmount verschlüsselten Ordner