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

Synology Disk Station: Mount / Unmount eines verschlüsselten Ordners mit einem Shell Script über die Konsole

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.