Хочете захистити конфіденційні дані у своїй домашній теці, але без повного шифрування диска? fscrypt — це саме те, що треба. Він вміє шифрувати окремі директорії на файлових системах ext4 та f2fs, працює на рівні ядра та не потребує окремих контейнерів. Нижче покажу покроково, як усе налаштувати, керувати ключами, а також безпечно зробити відкат (повернення до незашифрованого стану). 🔐

Що таке fscrypt і які вимоги

fscrypt — це інструмент для шифрування директорій на ext4 і f2fs. Він інтегрується з ядром Linux і забезпечує шифрування вмісту файлів і назв файлів у межах вибраної теки. Це зручно для управління файлами, коли потрібно захистити конкретні папки.

  • Підтримувані ФС: ext4 (з feature encrypt) і f2fs.
  • Рекомендовані ядра: Linux 5.x і новіші (працює й на новіших 4.x).
  • Потрібні пакети: fscrypt, бажано keyutils (для роботи ключниць ядра).

Права доступу Linux лишаються важливими: навіть із шифруванням не ігноруйте коректні дозволи на файли та групи — це базовий шар безпеки.

Підготовка: перевірка підтримки та встановлення

Переконайтеся, що файлову систему змонтовано на ext4 або f2fs і що вона підтримує шифрування:

# Дізнатися пристрій вашого /home (або іншого розділу)
findmnt -no SOURCE /home

# Для ext4: перевірити наявність feature "encrypt"
sudo tune2fs -l $(findmnt -no SOURCE /home) | grep -i "Filesystem features"

# Загальний стан підтримки шифрування для шляху
fscrypt status /home

Встановіть інструменти (через термінал Linux):

# Ubuntu/Debian
sudo apt update
sudo apt install fscrypt keyutils

# Fedora
sudo dnf install fscrypt keyutils

# Arch Linux
sudo pacman -S fscrypt keyutils

# openSUSE
sudo zypper install fscrypt keyutils

Ініціалізуйте fscrypt загалом та для конкретного розділу (наприклад, /home):

sudo fscrypt setup
sudo fscrypt setup /home

Покрокове налаштування зашифрованої папки

Рекомендую створити окрему порожню теку під приватні файли. fscrypt вимагає, щоб каталог був порожній перед шифруванням.

mkdir -m 700 ~/Private
fscrypt encrypt ~/Private

Далі майстер запропонує обрати тип ключа (протектор):

  • Custom passphrase — окремий пароль для цієї папки (простий та універсальний варіант).
  • Login passphrase — використати пароль входу в систему (потребує PAM-інтеграції).

Після успішного налаштування робота проста:

# Перевірити стан
fscrypt status ~/Private

# Розблокувати (введете пароль у запиті)
fscrypt unlock ~/Private

# Заблокувати, коли відходите від ПК
fscrypt lock ~/Private

Автоматичне розблокування при логіні (опційно)

Якщо хочете, щоб теку розблоковувало під час входу в сесію (GUI досвід без консолі), налаштуйте PAM. Спершу поставте модуль:

# Ubuntu/Debian
sudo apt install libpam-fscrypt

Далі додайте рядок до PAM-конфігурації сесії (перед змінами обов’язково зробіть бекап файлу):

# Приклад для Debian/Ubuntu
sudo cp /etc/pam.d/common-session /etc/pam.d/common-session.bak
echo 'session optional pam_fscrypt.so' | sudo tee -a /etc/pam.d/common-session

Після цього, якщо під час fscrypt encrypt ви обрали логін-пароль як протектор, директорія розблоковуватиметься автоматично після входу.

Керування ключами: перевірки, ротація і бекапи

Основні щоденні дії — це unlock/lock. Для діагностики й огляду політик використовуйте:

# Загальний стан для файлової системи
fscrypt status /home

# Стан конкретної теки
fscrypt status ~/Private

Що з ротацією пароля? Простий і безпечний підхід — створити нову незашифровану теку, скопіювати вміст і перешифрувати з новим паролем (див. «Відкат/повернення до незашифрованого стану» нижче). Так ви уникаєте помилок із низькорівневими метаданими.

Резервне копіювання метаданих fscrypt (не плутати з бекапом вмісту) корисне для відновлення конфігурації протекторів після переінсталяції системи:

# Бекап системних метаданих fscrypt (як root)
sudo tar -czf /root/fscrypt-etc-backup.tgz /etc/fscrypt

# Бекап користувацьких метаданих
tar -czf ~/fscrypt-user-backup.tgz ~/.fscrypt

Пам’ятайте: забутий passphrase відновити неможливо — це серйозна криптографія без бекдорів. Тримайте паролі у менеджері паролів. Якщо ви користуєтеся логін-протектором, модуль pam_fscrypt автоматично оновлює (rewrap) ключі під час зміни пароля входу.

Відкат: повернення до незашифрованого стану

Як безпечно «розшифрувати» теку? Прямої команди «decrypt» у fscrypt немає. Робимо так:

  1. Розблокуйте зашифровану теку.
  2. Створіть нову незашифровану теку з жорсткими правами.
  3. Скопіюйте дані з збереженням атрибутів.
  4. Перевірте цілісність копії й лише потім видаліть стару зашифровану теку.
fscrypt unlock ~/Private
mkdir -m 700 ~/Private_plain
rsync -aHAX --info=progress2 ~/Private/ ~/Private_plain/
# Переконайтеся, що все скопійовано, відкрийте файли, звірте розміри
rm -rf ~/Private  # видаляйте лише коли 100% упевнені

За бажанням можете потім знову створити ~/Private і налаштувати її з новим протектором або лишитися на незашифрованій теці. Для екстра-надійного видалення використовуйте повне заповнення вільного місця (але пам’ятайте, на сучасних ФС і SSD «shred» працює не завжди передбачувано).

Альтернативи fscrypt: коли що обрати

  • LUKS/dm-crypt — повнодискове шифрування. Ідеально для ноутбуків (зашифровано все), але не дає тонкого контролю на рівні окремих тек.
  • fscrypt — точкове шифрування директорій. Зручно для вибіркового захисту в межах користувацького профілю.
  • eCryptfs — застарілий варіант, не рекомендується для нових інсталяцій.

GUI-спосіб

Окремого офіційного GUI для fscrypt наразі немає. Найзручніший «майже GUI» — це інтеграція з PAM: тоді теку розблоковує під час входу у графічну сесію автоматично. Все інше краще робити через термінал Linux — це надійніше й прозоріше.

FAQ

  • fscrypt каже, що шифрування не підтримується. Перевірте, що розділ — ext4 або f2fs. Для ext4 потрібна feature encrypt (tune2fs -l її покаже). На дуже старих ядрах оновіть ядро/дистрибутив.
  • Помилка "Operation not supported" при шифруванні теки. Каталог має бути порожнім. Створіть новий, перемістіть туди дані після шифрування.
  • Не розблоковується через SSH. Потрібні робочі ключниці ядра (keyrings). Спробуйте повний логін у сесію або встановіть keyutils. Для headless-випадків використовуйте власний passphrase протектор.
  • Як бекапити зашифровану теку?
    • Якщо бекап робиться у розблокованому стані — у бекапі будуть відкриті дані (plaintext).
    • Якщо бекап — на рівні блочного пристрою/снапшотів ФС у заблокованому стані — дані лишаться зашифрованими.
  • Чи достатньо шифрування без належних дозволів? Ні. п.м. «права доступу Linux» лишаються ключовими: виставляйте 700 для приватних тек і уникайте спільного доступу там, де зберігаються секрети.
  • Що з продуктивністю? На сучасних CPU вплив зазвичай невеликий, але для дуже великих дерев файлів і малих блоків можливі накладні витрати.
  • Забули пароль? Відновлення неможливе. Використовуйте менеджер паролів та регулярні бекапи. Див. розділ «FAQ Linux» на сайті для порад із бекапів.

Порада від Kernelka

💡 Зробіть собі звичку блокувати приватні теки перед сном або відходом від ПК: простий alias у вашому шеллі прискорить звичні дії.

echo "alias lockpriv='fscrypt lock ~/Private'" >> ~/.bashrc
source ~/.bashrc
lockpriv  # тепер одна команда — і все під замком

Підсумок

  • fscrypt — простий спосіб точкового шифрування тек на ext4/f2fs без окремих контейнерів.
  • Налаштування: встановіть пакети, виконайте fscrypt setup, зашифруйте порожню теку й використовуйте unlock/lock.
  • Керування ключами: тримайте паролі в менеджері, робіть бекапи /etc/fscrypt і ~/.fscrypt, подумайте про PAM-авторозблокування.
  • Відкат: розблокувати → скопіювати в нову теку → перевірити → видалити стару.
  • Не забувайте про «права доступу Linux» і здоровий підхід до безпеки.