A multi-user FUSE filesystem that uses OpenSSL for encryption and saves your filesystem state in a JSON file.
Mount your own filesystem from a mounting point, any created files are encrypted using AES 256 CTR encryption. The state of filesystem is stored in a JSON file between mounts.
Caution
Works only on Linux based systems.
Clone the repository and go into fuse_main.c and edit save path to whatever you want -
git clone https://github.com/lokop5116/fuse-crypt
cd fuse-crypt
cd srcInside fuse_main.c -
// must change this to what you want
#define SAVE_PATH "/home/test/Projects/FUSE/state/fs_state.json"Run building script -
cd ..
chmod +x build.sh
./build.shExecutable should be present in fuse-crypt/out directory
To mount a filesystem run-
./fuse_man [directory] {-f flag to run it in foreground}While mounting you must enter a username and a password which will be used for encrypting/ decrypting all data that you read/write.
Each user has a separate and isolated filesystem.
It is important that the password you enter must stay consistent between mountings otherwise data you read will be garbled and any data written to file will use this for encryption.
Now this directory will act as the root of our own new filesystem, you can enter from this mounting point and create files/ directories.
To dismount, from another terminal run-
fusermount3 -u [mounting_directory]Make sure no other terminal is currently in the filesystem or any file within it is open.
Only following FUSE functions have been implemented, the filesystem supports only basic file creation deletions + directories.
.getattr
.readdir
.read
.write
.truncate
.create
.unlink
.mkdir
.rmdir
.destroy