Настройка GocryptFS с облачным хранилищем
1. Установка необходимых пакетов
Установите openssl:
paru -S openssl Установите клиент Яндекс.Диска (если используете его):
paru -S aur/yandex-disk --noconfirm (Опционально) Установите man-страницы на русском языке:
paru -S man-pages-ru 2. Настройка Яндекс.Диска
2.1. Инициализация Яндекс.Диска
Запустите настройку Яндекс.Диска:
yandex-disk setup Следуйте инструкциям на экране, чтобы авторизоваться и выбрать каталог для синхронизации (например, ~/Yandex.Disk).
2.2. Запуск синхронизации
Запустите синхронизацию с облаком:
yandex-disk start Теперь ваш каталог ~/Yandex.Disk будет синхронизироваться с Яндекс.Диском.
3. Создание зашифрованной файловой системы
Создайте две папки:
- Data — для хранения зашифрованных данных (будет синхронизироваться с облаком).
- GoCryptFS — для доступа к расшифрованным данным.
mkdir -p ~/Yandex.Disk/Data ~/GoCryptFS Инициализация gocryptfs:
gocryptfs -init ~/Yandex.Disk/Data -plaintextnames Появится приглашение ввести пароль — запомните его, он не восстанавливается.
После инициализации появится файл конфигурации:
~/Yandex.Disk/Data/gocryptfs.conf 5. Использование символической ссылки для .ssh (пример использования Яндекс.Диск)
Переместите папку .ssh в зашифрованную папку GoCryptFS:
mv ~/.ssh ~/GoCryptFS/ Создайте символическую ссылку:
ln -s ~/GoCryptFS/.ssh ~/.ssh Настройте права доступа:
chmod 600 ~/.ssh/*
chmod 644 ~/.ssh/*.pub
chmod 700 ~/.ssh 6. Размонтирование GoCryptFS
После завершения работы с зашифрованными данными размонтируйте GoCryptFS:
fusermount -u ~/GoCryptFS 7. Автоматизация (опционально)
Создайте скрипт для автоматического монтирования GoCryptFS:
Скрипт mount_gocryptfs.sh:
#!/bin/bash
set -euo pipefail
ENCRYPTED_DIR="$HOME/Yandex.Disk/Data"
MOUNT_POINT="$HOME/GoCryptFS"
# Монтирование
if ! mountpoint -q "$MOUNT_POINT"; then
echo "Введите пароль для gocryptfs:"
gocryptfs "$ENCRYPTED_DIR" "$MOUNT_POINT"
echo "[+] gocryptfs смонтирован в $MOUNT_POINT"
else
echo "[i] Уже смонтировано: $MOUNT_POINT"
fi
# Символические ссылки
declare -A LINKS=(
[".ssh"]="$MOUNT_POINT/.ssh"
["KeeP"]="$MOUNT_POINT/KeeP"
["Work"]="$MOUNT_POINT/Work"
#["PyCharmMiscProject"]="$MOUNT_POINT/PyCharmMiscProject"
#["GoLand"]="$MOUNT_POINT/GoLand"
)
for NAME in "${!LINKS[@]}"; do
TARGET="${LINKS[$NAME]}"
LINK="$HOME/$NAME"
if [ ! -e "$TARGET" ]; then
echo "[!] Цель не существует: $TARGET — пропускаю"
continue
fi
if [ ! -L "$LINK" ]; then
# Бекапим если есть реальная папка/файл
[ -e "$LINK" ] && mv "$LINK" "${LINK}.bak.$(date +%s)"
ln -s "$TARGET" "$LINK"
echo "[+] Создана ссылка: $LINK -> $TARGET"
fi
done
# Права доступа
[ -L "$HOME/.ssh" ] && chmod 700 "$MOUNT_POINT/.ssh"
[ -L "$HOME/.ssh" ] && chmod 600 "$MOUNT_POINT/.ssh/"* 2>/dev/null || true
[ -L "$HOME/.ssh" ] && chmod 644 "$MOUNT_POINT/.ssh/"*.pub 2>/dev/null || true
[ -L "$HOME/KeeP" ] && chmod 700 "$MOUNT_POINT/KeeP"
echo "[+] Готово" Сделайте скрипт исполняемым:
chmod +x mount_gocryptfs.sh Создайте скрипт для автоматического монтирования GoCryptFS:
Скрипт unmount_gocryptfs.sh:
#!/bin/bash
# Размонтирование GoCryptFS
set -euo pipefail
MOUNT_POINT="$HOME/GoCryptFS"
if mountpoint -q "$MOUNT_POINT"; then
fusermount -u "$MOUNT_POINT"
if mountpoint -q "$MOUNT_POINT"; then
# Принудительное размонтирование если зависло
fusermount -uz "$MOUNT_POINT"
sleep 1
fi
if ! mountpoint -q "$MOUNT_POINT"; then
echo "[+] GoCryptFS размонтирован"
else
echo "[!] Ошибка: не удалось размонтировать $MOUNT_POINT"
echo " Попробуй: sudo fusermount -uz $MOUNT_POINT"
exit 1
fi
else
echo "[i] Не примонтировано: $MOUNT_POINT"
fi Сделайте скрипт исполняемым:
chmod +x unmount_gocryptfs.sh 8. Полезные команды
Просмотр документации по EncFS:
man gocryptfs Краткая справка по GoCryptFS:
gocryptfs --help Итог
- Зашифрованная папка:
~/Yandex.Disk/Data. - Папка для доступа к данным:
~/GoCryptFS. - Файл конфигурации шифруется с помощью OpenSSL и хранится в облаке.
- Папка .ssh хранится в зашифрованной папке и доступна через символическую ссылку.