feat: added portable luks project
This commit is contained in:
commit
9313f4fdd3
2 changed files with 155 additions and 0 deletions
79
luks-portable/justfile
Executable file
79
luks-portable/justfile
Executable file
|
@ -0,0 +1,79 @@
|
|||
alias m := mount
|
||||
alias u := unmount
|
||||
|
||||
MOUNTPOINT := "./mnt" # where the encrypted filesystem can be accessed
|
||||
VOLUME_NAME := "portable_luks_volume" # how the image should be named
|
||||
IMAGE_PATH := "./luks_container.img" # path where the image should be
|
||||
IMAGE_SIZE := "1G" # size how big the image should be
|
||||
required_deps := 'cryptsetup fallocate mkfs.ext4 zstd mount umount chown rmdir mkdir xxhsum' # required dependencies
|
||||
CHECKSUM := "xxh.checksum"
|
||||
|
||||
default: mount
|
||||
|
||||
# mounting the encrypted volume
|
||||
mount: check-deps verify-checksum decompress
|
||||
@echo "creating mountpoint"
|
||||
@mkdir -p {{MOUNTPOINT}} # creating mountpoint
|
||||
sudo cryptsetup luksOpen {{IMAGE_PATH}} {{VOLUME_NAME}} # opening the luks container
|
||||
sudo mount /dev/mapper/{{VOLUME_NAME}} {{MOUNTPOINT}} # mounting the filesystem
|
||||
sudo chown $USER {{MOUNTPOINT}} # setting permission for the current user to access the mount
|
||||
|
||||
# unmounting the encrypted volume
|
||||
unmount: check-deps
|
||||
sudo umount {{MOUNTPOINT}} # unmounting the filesystem
|
||||
sudo cryptsetup luksClose {{VOLUME_NAME}} # closing the luks container
|
||||
rmdir {{MOUNTPOINT}} # removing the mountpoint
|
||||
just compress # compressing the image
|
||||
|
||||
# creating an encrypted volume and mounting it
|
||||
create: check-deps
|
||||
sudo fallocate -l {{IMAGE_SIZE}} {{IMAGE_PATH}} # allocating the file
|
||||
sudo cryptsetup luksFormat {{IMAGE_PATH}} {{VOLUME_NAME}} # formating the file for luks
|
||||
sudo cryptsetup luksOpen {{IMAGE_PATH}} {{VOLUME_NAME}} # opening the luks container
|
||||
sudo mkfs.ext4 /dev/mapper/{{VOLUME_NAME}} # formatting the container with a filesystem
|
||||
mkdir -p {{MOUNTPOINT}} # creating a mountpoint
|
||||
sudo mount /dev/mapper/{{VOLUME_NAME}} {{MOUNTPOINT}} # mounting filesystem
|
||||
|
||||
|
||||
# compressing the image
|
||||
compress:
|
||||
@echo "Compressing the image and removing the original"
|
||||
zstd --rm --adapt {{IMAGE_PATH}}
|
||||
|
||||
# decompressing the image
|
||||
decompress:
|
||||
@echo "Decompressing the image and removing compressed version"
|
||||
zstd --rm -d {{IMAGE_PATH}}.zst
|
||||
|
||||
create-checksum:
|
||||
@xxhsum {{IMAGE_PATH}}.zst > {{CHECKSUM}}
|
||||
|
||||
verify-checksum:
|
||||
@xxhsum -c {{CHECKSUM}}
|
||||
|
||||
|
||||
# Check if all required dependencies are installed
|
||||
check-deps:
|
||||
#!/usr/bin/env sh
|
||||
missing_deps=""
|
||||
# Loop through each dependency in the list
|
||||
for dep in {{required_deps}}; do
|
||||
# Check if the command exists in the PATH
|
||||
if ! command -v "$dep" > /dev/null 2>&1; then
|
||||
# If not found, add it to the list of missing dependencies (with a space separator)
|
||||
missing_deps="$missing_deps $dep"
|
||||
fi
|
||||
done
|
||||
|
||||
# Check if the missing_deps variable has content (trim whitespace first)
|
||||
if [ -n "$(echo $missing_deps | xargs)" ]; then
|
||||
echo "Error: The following required dependencies are missing:" >&2
|
||||
# Use xargs to print each missing dependency on a new line, prefixed with ' - '
|
||||
echo "$missing_deps" | xargs -n1 printf " - %s\n" >&2
|
||||
echo "Please install them and try again." >&2
|
||||
# Exit with a non-zero status code to indicate failure
|
||||
exit 1
|
||||
else
|
||||
# Optional: message indicating success
|
||||
echo "All dependencies satisfied."
|
||||
fi
|
Loading…
Add table
Add a link
Reference in a new issue