Tips en Trucs 2016

Bash script om een tekstbestand te versleutelen

Op een geheime cloudserver, die enkel via een ssh-sleutel bereikbaar is, staat een versleuteld tekstbestand met wachtwoorden die je maar niet kunt onthouden omdat je ze weinig gebruikt of er veel te veel zijn.

Om vlot het versleutelde tekstbestand te openen, aan te passen en terug te versleutelen, heb ik op GitHub een handig bash script gevonden.

Voorbereidingen en installatie

Met de volgende opdracht maken we in onze thuismap een map voor scripts:

dany@laptop:~> mkdir ~/scripts

Open de map met:

dany@laptop:~> cd ~/scripts/

Download het bash script van GitHub met:

dany@laptop:~/scripts> curl -s -O https://raw.githubusercontent.com/evanx/vellum/master/src/scripts/edit-secret.sh

Hoewel dit niet echt noodzakelijk is, maak je het script uitvoerbaar met:

dany@laptop:~/scripts> chmod +x edit-secret.sh

Even kijken of alles goed ging:

dany@laptop:~/scripts> ls -l edit-secret.sh
-rwxr-xr-x 1 dany users 1244 10 sep 12:46 edit-secret.sh

De drie x-tekens in de rechten van het bestand duiden op de uitvoerbaarheid van het script. Keer terug naar uw Persoonlijke map (thuismap) met:

dany@laptop:~/scripts> cd

Het script voer je uit met:

dany@laptop:~> bash ~/scripts/edit-secret.sh 
/usr/bin/openssl
Creating .secret in /home/dany
Password: 
/home/dany/scripts/edit-secret.sh: regel 77: EDITOR: ongebonden variabele
/home/dany/.secret
totaal 0
cat: info.enc: Bestand of map bestaat niet

Het script wordt afgebroken met een foutmelding in regel 77. In OpenSUSE Leap 42.1 wordt de omgevingsvariabele EDITOR niet standaard ingesteld. Deze variabele bevat uw favoriete terminal teksteditor. Dit kan vi, vim, nano, joe, enz. zijn. Ik persoonlijk gebruik graag joe. Pas het bash script aan met:

dany@laptop:~> joe scripts/edit-secret.sh

Elk goed script plaatst de variabelen met de voorkeuren gegroepeerd vooraan in het script. Dit script heeft drie in te stellen variabelen:

dir=.secret
enc=info.enc
txt=info.txt

Deze bevatten respectievelijk de map waarin het versleutelde bestand bewaard wordt, de verborgen map (naam begint met een punt) .secret. De tweede variabele bevat de naam van het versleutelde (encrypted) tekstbestand. De laatste variabele bevat de naam van het tijdelijke onsleutelde bestand dat je kunt lezen en aanpassen. Dit bestand wordt bij het verlaten van het script steeds gewist.

Om het script op OpenSUSE Leap 42.1 te laten werken, voeg de variabele met uw favoriete teksteditor toe:

EDITOR=joe

Als je joe gebruikt, sla je de aanpassingen op door eerst Ctrl+k en daarna x te drukken.

In KWrite ziet het script er zo uit:
BashTextCrypt in KWrite

Het bash script gebruiken

Telkens je uw versleutelde gegevens wilt raadplegen of aanpassen met uw favoriete teksteditor, voer je de volgende opdracht uit:

dany@laptop:~> bash ~/scripts/edit-secret.sh
/usr/bin/openssl
Password: 
Invoking joe info.txt
Processing '/etc/joe/joerc'...Processing '/etc/joe/ftyperc'...done
done

Het script controleert enkele voorwaarden (zoals de aanwezigheid van openssl) en opent na het ingeven van het wachtwoord om de gegevens te ontsleutelen uw favoriete teksteditor met een leeg tekstbestand. Na het intypen van de gevoelige informatie, sla je de tekst op. Daarbij versleutelt het script de tekst met hetzelfde opgegeven wachtwoord. De versleutelde tekst wordt daarna op het scherm weergegeven.

File info.txt saved
Removing info.txt
/home/dany/.secret
totaal 4
-rw-r--r-- 1 dany users 90 10 sep 16:04 info.enc
U2FsdGVkX1/6DvWAlNOYUdwwpWvM0h1B6lQ0P/UEG7PHdi5IU3lzaxwUCZngz9zH
EpJO1M38oIKvhSO2013HuQ==

Om de versleutelde informatie te lezen of verder aan te passen, start je het script nogmaals. Het script zorgt dus voor een eenvoudige gebruiksvriendelijke toegang tot uw versleutelde informatie. Het leuke aan scripts en open source is dat je het script zelf kunt uitbreiden en aanpassen om aan uw specifieke noden te voldoen.