encfs


Inhalt

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.

encfs (zuletzt geändert am 2017-10-25 06:26:00 durch 46-127-165-199)