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

Dieses Script beherscht nur einen Container Ordner, wer mehrere verschiedene Container will, müsste es verändern oder von Hand encfs benützen.

myencfs:

Zusätzlich wird noch xterm benötigt beim script hier, bitte nachinstallieren. Das Script erkennt selber ist in meinem Home ein container gemounted oder nicht, je nachdem wird es mounten oder unmounten oder es wird einen Container erstellen. Sollte selbsterklärend sein. Es lohnt sich dann einen Starter ins Startmenu dafür zu legen.

/!\ 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
# You need to install encfs fuse and xterm
# 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:
# Put the Script to /usr/local/bin/myencfs
# chown root.root /usr/local/bin/myencfs
# chmod 755 /usr/local/bin/myencfs
#Use: Now the user can run myencfs
#
#Ver: Sept2014

cmd=$1

if [ -d $HOME/.myencfs ]; then
echo "============================================================================================="
echo -n "Folder exist ";echo -n $HOME;echo "/.myencfs"
echo "In this Folder we keep some Config Info"
echo
echo "myencfs help"
echo "============================================================================================="
else
echo "============================================================================================="
echo -n "Create Folder ";echo -n $HOME;echo "/.myencfs"
echo "In this Folder we keep some Config Info"
echo 
echo "myencfs help"
echo "============================================================================================="
mkdir $HOME/.myencfs
touch $HOME/.myencfs/myencfsfolder
echo 5 > $HOME/.myencfs/myencfsidle
fi

myencfsfolder=`cat $HOME/.myencfs/myencfsfolder`
myencfs_idle_time=`cat $HOME/.myencfs/myencfsidle`


if [ -z "$cmd" ]; then
        Var_myencfs=`mount | grep $HOME/$myencfsfolder`
                if [ "$Var_myencfs" == "" ]; then
                        cmd=on
                else
                        cmd=off
                fi

fi

#if [ -z `cat $HOME/.myencfs/myencfsfolder` ]; then
if [ -z $myencfsfolder ]; then
        cmd=createcontainer
fi

case "$cmd" in

off)

        fusermount -u $HOME/$myencfsfolder
        xmessage -center -timeout 1 " Unmount Encfs Container "
        ;;
on)

                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
                sleep 1
                '
                Var_myencfs=`mount | grep $HOME/$myencfsfolder`
                if [ "$Var_myencfs" == "" ]; then
                        xmessage -center -timeout 3 " Mount Encfs Container Failled , mybe Password wrong "
                else
                        xmessage -center -timeout 1 " Mount Encfs Container done "
                fi
                ;;

createcontainer)

        fusermount -u $HOME/$myencfsfolder > /dev/null 2>&1
        xmessage -center -timeout 1 " Unmount Encfs Container "

        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 "What is the Name for the Container (Folder)?"
                echo -n "Folder: ";read  Vara           
            done
            echo $Vara > $HOME/.myencfs/myencfsfolder
            myencfsfolder=`cat $HOME/.myencfs/myencfsfolder`
            myencfs_idle_time=`cat $HOME/.myencfs/myencfsidle`
            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
            sleep 1
            '
            Var_myencfs=`mount | grep $HOME/$myencfsfolder`
                if [ "$Var_myencfs" == "" ]; then
                        xmessage -center -timeout 3 " Mount Encfs Container failed , mybe password wrong "
                else
                        xmessage -center -timeout 1 " Mount Encfs Container done "
                fi
            ;;
        
status)

        Var_myencfs=`mount | grep $HOME/$myencfsfolder`
                if [ "$Var_myencfs" == "" ]; then
                        xmessage -center -timeout 1 " Encfs Container is OFF State "
                else
                        xmessage -center -timeout 1 " Encfs Container is ON State "
                fi
                ;;



time)

        fusermount -u $HOME/$myencfsfolder > /dev/null 2>&1
        xmessage -center -timeout 1 " Unmount Encfs Container "
        
                
        xterm -e '
        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
        while [ -z "$Vara" ];do
        echo -n "New Time (default 5): ";read Vara
        done                            
        echo $Vara > $HOME/.myencfs/myencfsidle
        '
        myencfs_idle_time=`cat $HOME/.myencfs/myencfsidle`

        #startup
                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
                sleep 1
                '
                Var_myencfs=`mount | grep $HOME/$myencfsfolder`
                if [ "$Var_myencfs" == "" ]; then
                        xmessage -center -timeout 3 " Mount Encfs Container failed , mybe password wrong "
                else
                        xmessage -center -timeout 1 " Mount Encfs Container done "
                fi
                
        ;;

wipeoutcontainer)
        fusermount -u $HOME/$myencfsfolder > /dev/null 2>&1
        xmessage -center -timeout 1 " Unmount Encfs Container "

        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                      
                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)
        echo "myencfs help"
        echo "------------"
        echo "let it blank will automatic build Container and password and turn on/off flipflop"
        echo 
        echo "or use this commands: on | off | createcontainer | status | time | wipeoutcontainer | help"
        ;;


esac

exit