OpenOffice/LibreOffice: Passwortschutz für Tabellen deaktivieren

Bei fertigen Tabellen ist es sinnvoll, komplexe Formeln vor ungewolltem Zugriff zu schützen. Bei dem Aktivieren dieses Schutzmechanismus über das Menü Extras und Dokument schützen kann dabei auch ein Passwort vergeben werden.

Falls man dieses Passwort aus Versehen vergessen sollte (was mir leider passiert ist), ist es dennoch sehr einfach, den Schutz zu deaktivieren, da der Schutzmechanismus in der intern verwendeten xml-Datei content.xml (Zugreifbar nach dem Entpacken der ods-Datei) allein auf einem Eintrag table:protected=”true” basiert.

Schwierig kann es jedoch dann werden, wenn die content.xml-Datei etwas größer geworden ist. Bei umfangreicheren Dokumenten kann die Datei im entpackten Zustand auch schon einmal die 10MB Grenze überschreiten. Dann sind einzelne Texteditoren mit der Suchen/Ersetzen-Funktion schon einmal überfordert. Aus diesem Grund habe ich mir für meinen Mac ein kleines Bash-Script zusammengebastelt, dass zwar wenig Kontrollmechanismen eingebaut hat (also bitte mit vorsicht verwenden!!), dafür aber auf dem kleinen Programm sed basiert und das Packen und Entpacken mit dem Programm zip ebenfalls integriert.

#!/bin/bash

TMPDIR=./MYTMPDIRECTORY

if [ -e $TMPDIR ]
then
    echo "Could not create TMP-Directory."
else
    if [ -n "$1" ]
    then
        FILE=`basename $1`
        echo "Processing $FILE"
        echo "Creating Backup..."
        cp $FILE $FILE.bak
        echo "Creating TMP-Directory..."
        mkdir $TMPDIR
        echo "Copying file to TMP-Directory..."
        cp $1 $TMPDIR
        cd $TMPDIR
        echo "Extracting Data..."
        unzip $FILE > /dev/null
        rm $FILE
        echo "Deleting password..."
        sed -e 's/table:protected="true"/table:protected="false"/g' content.xml > content2.xml
        rm content.xml
        mv content2.xml content.xml
        echo "Repack data..."
        zip -r $FILE * > /dev/null
        mv $FILE ../$FILE
        cd ..
        echo "Removing TMP-Directory..."
        rm -r $TMPDIR
        echo "Ready: Passwordprotection removed!"
    else
        echo "No Filename to delete password is given."
    fi
fi