ubuntuusers.de

Apache mit encfs nutzen?

Status: Gelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

mkdir

Anmeldungsdatum:
24. September 2012

Beiträge: 25

Ich habe ein Problem mit der Nutzung von encfs in Verbindung mit Apache.

Mein Ziel ist es, meine PHP-, HTML-, und CSS-Dateien zu verschlüsseln und dann mit Ubuntu One abzugleichen. Zuerst habe ich es mit dem /var/www-Verzeichnis versucht: Dabei wollte ich die verschlüsselten Daten in den Unterordner One-Daten-2 des Home-Verzeichnisses ablegen.

1
encfs -S /var/www ~/One-Daten-2

Das Problem: wenn ich mir danach auf meinem normalen (nicht-root) Benutzer den /var/www-Ordner angesehen habe, hatte ich nach dem Mounten keinen Zugriff mehr, der Ordner sah im Nautilus aus wie eine Hex-Datei! (also das Symbol mit dem 1 10 101 1001)

Danach versuchte ich es, den Apache-Ordner zu ändern auf einen Ordner innerhalb meines Home-Verzeichnisses und diesen dann auch zu verschlüsseln.

1
encfs -S ~/Projekte ~/One-Daten-2 

Das hat zur Folge dass, wenn ich im Nautilus als Root (!) unterwegs bin und das Verzeichnis gemountet habe, anstelle des Ordner, oder Volume-Symbols wieder das Hex-Symbol sehe! Versuche ich, ein Dokument im Browser aufzurufen erscheint nur ein Error 403.

Im Apache-Log (/var/log/apache2/error.log) ist zu entnehmen:

1
[Mon Sep 24 10:58:14 2012] [error] [client 127.0.0.1] (13)Permission denied: access to /AUFGERUFENESDOKUMENT denied

Vibaf

Ehemaliger

Anmeldungsdatum:
27. Dezember 2007

Beiträge: 3046

Du könntest Apache ja als nicht-rootuser laufen lassen.

Dazu musst du nur die Datei /etc/apache2/httpd.conf dahingehend editieren,

dass folgendes zusätzlich drin steht:

User <dein Username>
Group <dein Gruppe>

Danach apache neustarten. Hoffe, das ich mir das damals richtig notiert habe und es dein Problem eventuell lösen kann 😉

jug Team-Icon

Ehemalige
Avatar von jug

Anmeldungsdatum:
19. März 2007

Beiträge: 12335

Wohnort: Berlin

Ok, ganz langsam. Du hast mindestens zwei verschiedene Probleme, weißt das aber vermutlich gar nicht.

mkdir schrieb:

Mein Ziel ist es, meine PHP-, HTML-, und CSS-Dateien zu verschlüsseln und dann mit Ubuntu One abzugleichen.

Gut erste wichtige Frage: Wo sollen die Daten verschlüsselt sein? Auf deiner Festplatte oder nur im UbuntuOne?

Zuerst habe ich es mit dem /var/www-Verzeichnis versucht: Dabei wollte ich die verschlüsselten Daten in den Unterordner One-Daten-2 des Home-Verzeichnisses ablegen.

1
encfs -S /var/www ~/One-Daten-2

Das Problem: wenn ich mir danach auf meinem normalen (nicht-root) Benutzer den /var/www-Ordner angesehen habe, hatte ich nach dem Mounten keinen Zugriff mehr, der Ordner sah im Nautilus aus wie eine Hex-Datei! (also das Symbol mit dem 1 10 101 1001)

Richtig. Damit sagst du encfs, dass es ein verschlüsseltes Verzeichnis /var/www anlegen soll und die unverschlüsselten Daten über ~/One-Daten-2 zur Verfügung stellen soll. Ist logisch, dass du dann in /var/www nichts sinnvolles mehr findest.

Im Apache-Log (/var/log/apache2/error.log) ist zu entnehmen:

1
[Mon Sep 24 10:58:14 2012] [error] [client 127.0.0.1] (13)Permission denied: access to /AUFGERUFENESDOKUMENT denied

Das ist ein anderes Problem.

Ok, um dich mal in die richtige Richtung zu bringen. encfs kennt generell ein Quellverzeichnis und ein Zielverzeichnis. Im Quellverzeichnis liegen die eigentlichen Daten auf die du jedoch meistens nicht direkt zugreifst. Das Zielverzeichnis ist ein Mountpunkt für encfs … sobald auf dieses Zielverzeichnis zugegriffen wird, holt encfs die Daten transparent aus dem Quellverzeichnis und Ver- bzw. Entschlüsselt diese Daten.

Was du jetzt entscheiden musst ist folgendes: möchtest du dass die Daten auf deiner Festplatte verschlüsselt sind oder sollen sie nur auf UbuntuOne verschlüsselt abgelegt werden? Sollen sie auf deiner Festplatte verschlüsselt abgelegt werden, dann könntest du zum Beispiel sowas tun:

encfs /var/wwwcrypt /var/www 

In /var/wwwcrypt liegen dann die eigentlichen Daten, der Apache liest diese Klardaten aus /var/www. In jedem Fall müssen sich im DocumentRoot vom Apache natürlich unverschlüsselte Daten befinden.

Oder du willst die Daten nur für die Synchronisation auf UbuntuOne verschlüsseln. Dann ginge zum Beispiel sowas:

encfs --reverse /var/www ~/One-Daten-2 

Der Parameter --reverse sorgt dafür, dass die Daten aus dem Quellverzeichnis verschlüsselt werden und nicht entschlüsselt.

In beiden Fällen hast du am Ende ein Verzeichnis mit den verschlüsselten Daten, das du auf U1 synchronisieren kannst und ein Verzeichnis /var/www in dem sich Klartextdaten für den Apache befinden.

~jug

Edit: Ach nochwas. Bitte nicht im Nautilus als Root arbeiten!

mkdir

(Themenstarter)

Anmeldungsdatum:
24. September 2012

Beiträge: 25

Vibaf schrieb:

User <dein Username>
Group <dein Gruppe>

Erstmal Danke für die schnellen Antwort. Ich denke, auch das war ein Teilproblem, dass wenn ich das Volume als mein Benutzer einhänge, dann der Apache darauf nicht zugreifen kann.

jug schrieb:

Gut erste wichtige Frage: Wo sollen die Daten verschlüsselt sein? Auf deiner Festplatte oder nur im UbuntuOne?

Im UbuntuOne und auf der HD. Allerdings lasse ich jeden Tag eine unverschlüsselte Sicherung der entschlüsselten Daten anfertigen (falls ich den Schlüssel verliere)

Richtig. Damit sagst du encfs, dass es ein verschlüsseltes Verzeichnis /var/www anlegen soll und die unverschlüsselten Daten über ~/One-Daten-2 zur Verfügung stellen soll. Ist logisch, dass du dann in /var/www nichts sinnvolles mehr findest.

Na toll! Vertauschte Parameter...

Edit: Ach nochwas. Bitte nicht im Nautilus als Root arbeiten!

Mache ich nicht mehr (fand es nur einfacher, als für jede Dateioperation den Terminalbefehl nachzuschlagen)

Habe es dank eurer Hilfe nun wie folgt hinbekommen: Erstmal die richtigen Zugriffsrechte für /var/www setzen (damit man kein superuser sein muss, um den ganzen Kram zu mounten):

1
chown -R <Benutzername> /var/www

Dann noch dem Apache den richtigen Nutzer zuweisen (s. o.) Dann mounten (mit der richtigen Parameter-Reihenfolge):

1
encfs -S ~/One-Daten-2 /var/www

Und dann muss nur noch One-Daten-2 mit Ubuntu One synchronisiert werden.

Nochmal Danke für die ausgezeichnete Hilfe.

Antworten |