Вопрос Отключить точки монтирования плавких предохранителей при выходе из системы?


У меня есть пара папок, содержащих сжатые данные. У меня есть одно приложение, которому необходимо получить доступ к несжатой версии тех же данных.

Простой способ решить это для меня - запустить скрипт при входе в систему, выглядя примерно так:

#!/bin/bash
rar2fs -o allow_other /home/user/source1        /home/user/target1
rar2fs -o allow_other /home/user/source2        /home/user/target2
rar2fs -o allow_other /home/user/source3        /home/user/target3
rar2fs -o allow_other /home/user/source4        /home/user/target4

Чтобы запустить скрипт при входе в систему, я просто добавил его с помощью «Startup Applications».

Я только сейчас понял, что мой подход подходит к концу, когда я выхожу из системы, а затем снова заново.

Я предполагаю, что это работает плохо, так как монтировки rar2fs / fuse происходят в моей зашифрованной домашней папке. Когда я выхожу из системы, я думаю, что ubuntu блокирует шифрование, но мой монтир, вероятно, придерживается, хотя оба источника и цели недоступны.

Затем, когда я снова вхожу в систему, добавляя оскорбление к травме, я снова пытаюсь сделать гору. Оставляя меня с точками монтирования, которые выплевывают ошибки, например, когда я пытаюсь получить к ним доступ:

Error: Error when getting information for file '/home/user/target1':Transport endpoint is not connected

Я предполагаю, что это может быть предотвращено, если я могу просто заставить систему правильно отключиться при выходе из системы, но я не знаю, как заставить скрипт работать при выходе из системы.

Как правильно закрыть плавкий предохранитель перед выходом из системы?

EDIT: Я использую единство.

РЕДАКТИРОВАТЬ:

Бег fusermount -u с помощью сеанс очистка-скрипт Я получаю следующую ошибку:

fusermount: bad mount point /home/user/target1: No such file or directory

Я также попробовал добавить цикл umount к моему сценарию монтирования, чтобы он должен собирать папки перед их установкой, если они уже установлены, но эти umounts также не работают:

fusermount: failed to unmount /home/user/target1: Invalid argument

Я предполагаю, что первое решение выходит из строя, потому что зашифрованные блокировки дома перед запуском скрипта очистки. Возможно, есть какой-то способ подключиться к процедуре шифрования и запустить скрипт до того, как будет заблокирована домашняя папка?

Если я запустил umount-script вручную, прежде чем выходить из системы, то точки монтирования будут работать, как и ожидалось, при повторном входе в систему.


1
2018-03-04 09:55


происхождения




ответы:


У меня проблема, похожая на вашу, за исключением того, что я использую SSHFS. Я думаю, что мое решение можно легко адаптировать для вашего сценария.

В /etc/lightdm/lightdm.conf, в разделе [SeatDefaults], следующий параметр указывает на файл, который запускается при выходе из пользовательского сеанса (выполняется от имени пользователя root):

session-cleanup-script=/path/to/file

Крепление предохранителя можно размонтировать fusermount -u /path/to/mount/point, но только пользователь, который смонтировал его, может отключить его. Поэтому мне пришлось использовать su изменить пользователя до fusermount -u, Это мой скрипт выхода:

#!/bin/bash

# Change user
if [ "$EUID" = "0" -a "$USER" != "root" ]; then
    su -c $0 $USER &
    exit 0
fi

# Unmount sshfs sharings at the end of the session
for MNTPOINT in `mount -t fuse.sshfs | grep -i "user=$USER" | cut -d" " -f 3`; do
        fusermount -u $MNTPOINT
done

exit 0

Все, что вам нужно сделать, это заменить fuse.sshfs с правильным типом файловой системы, который вы можете узнать в mount вывод.


2
2018-03-04 18:31



Хотя ваше предложение показало много обещаний, я боюсь, что шифрование домашней папки заблокировано до запуска сценария очистки. Мои fusermount получат сообщение об ошибке: «fusermount: bad mount point / home / user / target1: Нет такого файла или каталога» - azzid