encfs
Inhalt
Inhaltsverzeichnis
1. Vorwort
Mit encfs kann man einen Ordner verschlüsseln für heikle Daten. Aber durch eine allfällige lib Änderung wäre es möglich, dass vielleicht der Verschlüsselungsalogarithmus nicht mehr funktioniert. Oder einer Änderung von encfs selber.
Darum sollte man immer davon eine Kopie auf ein externes Medium machen oder besitzen.
Ist encfs gestartet, findet man den Ordner im Filemanager wie Nautilus oder ähnliche.
2. Benötigte Programme und Einstellungen
encfs und fuse sind die benötigten Programme, das Kernelmodul fuse sollte geladen sein. (lsmod | grep fuse)
Der Benützer muss in der Gruppe fuse sein. Das geht mit dem Befehl als root: adduser Benüzter fuse . Dannach muss der Benützer sich meistens grafisch ausloggen und wieder einloggen um die Gruppenzugehörigkeit zu aktivieren. Das kann man mit dem Komando id nachprüfen.
3. Parameter
Diese kann man im manual gut nachlesen. Es sei nur -i, --idle=MINUTES erwähnt. Damit wird ein auto unmount nach einer gewissen Zeit getätigt, was zur Sicherheit beiträgt.
Beim neu erstellen, muss in der deutschen Version statt j mit y englisch geantwortet werden. Es empfiehlt sich auch p für paranoia zu wählen, damit wird die Verschlüsselung gleich stark eingestellt.
4. Verwendungsbeispiel
Mounten oder Erstellen ist derselbe Befehl:
encfs $HOME/.testcontainer $HOME/testcontainer -i 5
Beim ersten Mal der Eingabe, kommen noch die Fragen, also die Erstellung des Ordner $HOME/.testcontainer wo die Daten liegen, der Mountpoint Ordner $HOME/testcontainer. Hier muss man auch in der deutschen Version unbedingt mit y antworten (nicht j!). Danach würde ich noch p für paranoia Verschlüsselung wählen.
Unmounten:
fusermount -u $HOME/testcontainer
Status:
mount | grep $HOME/testcontainer
Leerzeile = unmounted, eine Antwortzeile, es ist nocht gemounted.
5. Script für die Vereinfachung
myencfs:
Kleines Script für Umgang mit encfs. Es werden noch Sicherheits Bedenken geäußert, aber bei den anderen Programmen sieht man diese Bedenken einfach auch nicht. Es entsteht ein Ordner der kontinuierlich anwachsen kann. Mein Bedenken geht eher dahin, dass man die Daten dadrin auch mal extern unverschlüsselt (z.b 2 mal USB Stick und in Schrank weg schließt) wegspeichert. Es kann ja auch mal kaputt gehen auf dem System. Also Backupen die Daten!
Ich sage dem Ordner Privat und wähle Paranoid Mode. Wenn z.b schon eine Passwort Datei exisitiert im Vorfeld, kann man auch ein cmdct setzen das mir gleich die Passwort liste öffnet. Nach einem Timeout schliesst sich das virtuelle Laufwerk selber wieder. Mir ist es mal passiert, die Passwort Liste noch offen und gespeichert. Die lag dann im Privat Ordner, und myencfs konnte auch nicht mehr mounten. Einfach die Datei wieder entfernen. Der Privat Ordner ist normal leer, in ungemounteten Zustand.
Also am besten legt man sich ein Start an unter Zubehör im Hauptmenu ( alacarte ), und legt dann das zu Favoriten. Im Terminal kann man ja die idle time setzen mit myencfs time. Aber ansonsten. Script saven als root. Favorit starten, und es ist gebongt. Ich lasse mal eine Meine Passwort Editor öffnen, könnt Ihr aber auch disablen im Script.
Habe den Script nochmals etwas gebugfixt, neu mit gxmessage, versuche mit encfs --nocache können zu Dekstop hängern führen. Dafür besseres sync vor dem umount. Bei der time Eingaben auf Integer Prüfung und > 0. Ist kompatibel mit der Vorgänger Version.
Info: Keine Leerzeichen/Sonderzeichen bei Ordner
myencfs
Das erste Zeichen darf kein Leerzeichen sein beim Abspeichern in die /usr/local/bin/myencfs Datei!
#!/bin/bash
# This Programm ist a simple starter for the encfs Secure-Container Programm
#
# Required:
# apt install encfs fuse xterm gxmessage
#
# As root add user to fuse group: adduser User fuse
# The User must grafical logout and login to activate the new group. Check by: id (Enter) command.
#
# Installation as root:
# /usr/local/bin/myencfs
# chmod 755 /usr/local/bin/myencfs
#
# Please: check out
# myencfs help
#
#myencfs by kneufi
title_xterm="myencfs Oktober 2017"
cmd=$1
echo
if [ -d $HOME/.myencfs ]; then
:
else
xterm -T "$title_xterm" -e '
echo " ==================================================="
echo
echo " Create Folder $HOME/.myencfs"
echo " In this Folder we keep some Config Info"
echo
echo " Checkout: myencfs help"
echo
echo " ===================================================="
echo " Hit any Key";read
'
mkdir $HOME/.myencfs
touch $HOME/.myencfs/myencfsfolder
echo 10 > $HOME/.myencfs/myencfsidle
fi
myencfsfolder=`cat $HOME/.myencfs/myencfsfolder`
myencfs_idle_time=`cat $HOME/.myencfs/myencfsidle`
############################################################################
####### Variables
#
# Run Command after mount the Container?
# Default: false
rcmdct=true
#
# Command after mount
cmdct="gedit $HOME/$myencfsfolder/YourUserNameHere\ Passwoerter.txt & disown"
#######
############################################################################
fn_txt="arial 14"
fg_col="black"
bg_col_mount="#64FE2E"
bg_col_umount="#A9E2F3"
bg_col_warn="#FA5858"
bg_col_staton="#64FE2E"
bg_col_statoff="#A9E2F3"
function msg_mounting(){
gxmessage -name "Mounting Container" -geometry 310x60 -center -timeout 1 -fn "$fn_txt" -fg "$fg_col" -bg "$bg_col_mount" " Mount Encfs Container done"
}
function msg_unmounting(){
gxmessage -name "Unmounting Container" -geometry 280x60 -center -timeout 1 -fn "$fn_txt" -fg "$fg_col" -bg "$bg_col_umount" " Unmount Encfs Container"
}
function msg_warning(){
gxmessage -name "Warning Container" -geometry 550x60 -center -timeout 2 -fn "$fn_txt" -fg "$fg_col" -bg "$bg_col_warn" " Mount Encfs Container Failled , mybe Password wrong"
}
function msg_stateon(){
gxmessage -name "Mounting Container" -geometry 280x60 -center -timeout 1 -fn "$fn_txt" -fg "$fg_col" -bg "$bg_col_staton" " Container is mounted ON"
}
function msg_stateoff(){
gxmessage -name "Unmounting Container" -geometry 300x60 -center -timeout 1 -fn "$fn_txt" -fg "$fg_col" -bg "$bg_col_statoff" " Container is unmounted OFF"
}
function check_mount(){
Var_myencfs=`mount | grep $HOME/$myencfsfolder`
if [ "$Var_myencfs" == "" ]; then
msg_warning
else
msg_mounting
if [ $rcmdct = true ];then eval $cmdct;fi
fi
}
if [ -z "$cmd" ]; then
Var_myencfs=`mount | grep $HOME/$myencfsfolder`
if [ "$Var_myencfs" == "" ]; then
cmd=on
else
cmd=off
fi
fi
if [ -z $myencfsfolder ]; then
cmd=createcontainer
fi
case "$cmd" in
off)
sync
sleep 1
fusermount -u $HOME/$myencfsfolder
msg_unmounting
;;
on)
xterm -T "$title_xterm" -e '
echo " Try mounting the Encfs Conatainer..."
echo
myencfsfolder=`cat $HOME/.myencfs/myencfsfolder`
myencfs_idle_time=`cat $HOME/.myencfs/myencfsidle`
echo " Folder: $HOME/$myencfsfolder"
echo " Auto Logout Idle-Time of Container is: $myencfs_idle_time min."
echo " Change by command: myencfs time"
echo
echo " Remark: The Container is not a Backup!"
echo " Copy yourself to another Media your"
echo " important files!!"
echo
encfs $HOME/.$myencfsfolder $HOME/$myencfsfolder -i $myencfs_idle_time;err=$?
echo
echo "Hit any Key"
[[ $err = 0 ]]||read
'
check_mount
;;
createcontainer)
if [ -n "$myencfsfolder" ]; then
xterm -T "$title_xterm" -e '
echo " One Container allready exist. Wipeout the Container in front."
echo " Maybe you have datas there in!"
echo
echo " Or try: myencfs help"
echo
echo " Hit any Key";read
'
else
xterm -T "$title_xterm" -e '
while [ -z "$Vara" ];do
echo " Create Encfs Container"
echo
echo " Remark: The Container is not a Backup!"
echo " Copy yourself to another Media your"
echo " important files!!"
echo
echo " Example: you chose Privat as Folder Name"
echo " Privat is the Mountpoint"
echo " Encryptet Files stored in .Privat "
echo
echo " What is the Name for the Container (Folder)?"
echo " No Spaces, no special chars!"
echo
echo -n " Folder: ";read Vara
echo
done
echo $Vara > $HOME/.myencfs/myencfsfolder
myencfsfolder=`cat $HOME/.myencfs/myencfsfolder`
myencfs_idle_time=`cat $HOME/.myencfs/myencfsidle`
derr=false
if [ -d $HOME/$myencfsfolder ];then derr=true;echo " Warning: Folder $HOME/$myencfsfolder exist";fi
if [ -d $HOME/.$myencfsfolder ];then derr=true;echo " Warning: Folder $HOME/.$myencfsfolder exist";fi
if [ $derr = true ];then
echo
echo " Stopping, check it manually, what is in there."
echo
echo " Hit any Key"
read
else
mkdir $HOME/$myencfsfolder
mkdir $HOME/.$myencfsfolder
clear
echo " Create Encfs Container"
echo
echo " Folder: $HOME/$myencfsfolder"
echo " Auto Logout Idle-Time of Container is: $myencfs_idle_time min."
echo " Change by command: myencfs time"
echo
echo " Tipps:"
echo " 1. Please use the Y for yes, by german not the j."
echo " 2. Please use the p option for paranoia modus."
echo
encfs $HOME/.$myencfsfolder $HOME/$myencfsfolder -i $myencfs_idle_time;err=$?
echo
if [ $err = 0 ];then
sync
sleep 1
fusermount -u $HOME/$myencfsfolder > /dev/null 2>&1
echo "*********************************************************"
echo " Container created succesfull"
echo " You must start myencfs again for using"
echo
echo " Keep your Passwort for Container!!"
echo " No body can help you by loosing!!"
echo " Asking forums for it, will show how stupid you are!"
echo
echo " Hit any Key"
read
else
echo
echo " Some Error while creating container"
echo
echo " Hit any Key"
read
fi
fi
'
fi
;;
status)
Var_myencfs=`mount | grep $HOME/$myencfsfolder`
if [ "$Var_myencfs" == "" ]; then
msg_stateoff
else
msg_stateon
fi
;;
time)
sync
sleep 1
fusermount -u $HOME/$myencfsfolder > /dev/null 2>&1
msg_unmounting
xterm -T "$title_xterm" -e '
clear
myencfs_idle_time=`cat $HOME/.myencfs/myencfsidle`
echo " Auto Logoff Time Encfs Container"
echo
echo " Auto Logout Idle-Time of Container is: $myencfs_idle_time min."
echo
Varaint=false
while [ $Varaint = false ];do
echo -n " New Time (default 10): ";read Vara
if [[ $Vara =~ ^[0-9]+$ && $Vara -gt 0 ]];then Varaint=true;fi
done
echo $Vara > $HOME/.myencfs/myencfsidle
'
myencfs_idle_time=`cat $HOME/.myencfs/myencfsidle`
#startup
xterm -T "$title_xterm" -e '
echo " Try mounting the Encfs Conatainer..."
echo
myencfsfolder=`cat $HOME/.myencfs/myencfsfolder`
myencfs_idle_time=`cat $HOME/.myencfs/myencfsidle`
echo " Folder: $HOME/$myencfsfolder"
echo " Auto Logout Idle-Time of Container is: $myencfs_idle_time min."
echo " Change by command: myencfs time"
echo
echo " Remark: The Container is not a Backup!"
echo " Copy yourself to another Media your"
echo " important files!!"
echo
encfs $HOME/.$myencfsfolder $HOME/$myencfsfolder -i $myencfs_idle_time;err=$?
echo
echo "Hit any Key"
[[ $err = 0 ]]||read
'
check_mount
;;
wipeoutcontainer)
sync
sleep 1
fusermount -u $HOME/$myencfsfolder > /dev/null 2>&1
msg_unmounting
xterm -T "$title_xterm" -e '
clear
echo " Danger! You delete here your Container and Files!!"
echo
echo " You are shure you want do that?"
echo
#while [ -z "$Varb" ];do
Vara=*
while [ "$Vara" != "$Varb" ];do
echo " Yes i want kill the Container and all Data?"
echo -n " Shure: (yes/no) ";read -s Vara;echo
echo -n " Really Shure: (yes/no) ";read -s Varb;echo
clear
done
#done
if [ -z "$Varb" ];then
echo " Nothing deleted. We keep the Container and Files"
echo
echo -n " Press any key";read
exit 0
fi
if [ $Varb = "yes" ];then
myencfsfolder=`cat $HOME/.myencfs/myencfsfolder`
myencfs_idle_time=`cat $HOME/.myencfs/myencfsidle`
rm -r $HOME/.myencfs
rm -r $HOME/.$myencfsfolder
rm -r $HOME/$myencfsfolder
sync
sleep 0.5
echo
echo " All Container and Datas are deleted"
echo
echo -n " Press any key";read
else
echo " Nothing deleted. We keep the Container and Files"
echo
echo -n " Press any key";read
fi
'
;;
help)
xterm -T "$title_xterm" -e '
echo " myencfs help"
echo " ------------"
echo " let it blank"
echo " * will automatic build Container and password"
echo " * and turn on/off flipflop"
echo
echo " or use this commands:"
echo " on | off | createcontainer | status | time | wipeoutcontainer | help"
echo
echo " Hit any Key"
read
'
;;
esac
exit
6. Tipps
6.1. Debian Jessie
Es ist noch nicht im Repository von Jessie, aber ich habe encfs von sid manuel mit Browser gedownloaded und dann:
dpkg -i encfs_1.7.4-3.1_amd64.deb (ich brauche amd64), was mit fehler zurück kommt, ein paar Pakete fehlen, das korrigieren wir mit apt-get -f install, und dann nochmals dpkg -i encfs_1.7.4-3.1_amd64.deb und alles super. Läuft.
