Одновременное монтирование зашифрованных папок в Synology DSM

0757b0ca496c4fad8562c12fb1957b04.png

Если у вас есть Synology и уровень вашей параноидальности >0, то наверняка вы используете зашифрованные папки. Основанная на encfs эта технология работает стабильно и не доставляет никаких неудобств. Кроме того случая, когда этих папок становиться 2–3, да еще каждая со своим паролем! Ведь по результатам исследований британских ученых, уровень параноидальности отдельного индивидума со временем только растет)
Соответственно, вводить 2–3 разных пароля после каждой, хотя и довольно редкой, перезагрузки устройства, начинает напрягать.
Поэтому мы устроим нечто вроде мастер пароля.
Первым делом создадим новую шифрованную папку, назовем ее master.

В нее положим скрипт autorun.sh (ниже подразумевается, что вы имеете доступ к Synology через SSH):

cat /volume1/master/autorun.sh

synoshare –enc_mount folder1 PASSWORD1
synoshare –enc_mount folder2 PASSWORD2
synoshare –enc_mount folder3 PASSWORD3
synoshare –enc_ummount master 


, где folderx — папка и PASSWORDx пароль от нее.

Как видите, мы просто одну за другой монтируем зашифрованные папки, а затем размонтируем саму папку master. Таким образом, никто не может добраться до паролей, в открытом виде прописанных в скрипте.
Если папки уже замонтированы — ничего страшного не произойдет, поэтому никаких дополнительных проверок мы не делаем.

Несмотря на то, что мы не планируем долго держать папку master в подмонтированном (открытом) сотоянии, к cкрипту autorun.sh надо максимально ограничить доступ:

chown root autorun.sh
chmod 700 autorun.sh 


теперь дело за малым: нам необходим механизм, который будет следить за появлением файла autorun.sh в папке master и выполнять его. Напишем простой сервис:

Примечание: Путь к сервису указан для DSM 6.x. Для DSM 5.x путь к сервисам: /usr/syno/etc/rc.d/ Имейте ввиду, после обновления системы пользвательские сервисы могут быть удалены.

cat /usr/local/etc/rc.d/S90_automount.sh

autorun=/volume1/master/autorun.sh
sleep=10

if [ "$1" == "start" ]; then
    $0 service &
    echo "Automount service started. Looking for $autorun"
    exit
fi

if [ ! "$1" == "service" ]; then
    echo "Usage: $0 start"
    echo "   Wait for $autorun and run it"
    exit 1
fi

while [ 1 ]; do
sleep $sleep
if [ -f $autorun ]; then
    echo "Found $autorun, running..."
    $autorun &
    sleep 120
fi
done

На этом все! Как вы видите, мы просто в цикле проверяем наличие файла и если он найден — выполняем его. Можно было оптимизировать выполнение и вместо цикла со sleep использовать команду inotifywait, но судя по всему этот пакет не входит в состав DSM.
У сервиса весьма ограниченный функционал, всего один параметр start и нет пераметров stop и status, но они и не нужны.

Теперь смело запускаем сервис: /usr/local/etc/rc.d/S90_automount.sр start
и проверяем, что при монтировании папки master в течении 10–20 секунд будут примонтированы папки, перечисленные в файле autorun.sh, а сама папка master автоматически отмонтируется.

Из минусов — рано или поздно вы забудете все свои пароли на папки, кроме одного. И если вдруг потеряете папку master — пиши пропало! По возможности избегайте этого!
Из плюсов — теперь вы можете на папки назначить сколь угодно длинные пароли — вводить вручную вам их больше не придется!

Удачного администрирования!

© Habrahabr.ru