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.