OwnCloud ohne 'config.php' wiederherstellen

Konfiguration Symbol eines Kalenders 2019-03-08 Symbol eines Stiftes 2020-05-06 21:41 Symbol eines Auges 249

Die Daten sind gesichert, aber die config.php fehlt? In 5 einfachen Schritten ownCloud trotzdem wiederherstellen!

Eine schlechte Botschaft zuerst: Wenn die Dateien verschlüsselt sind, könnte es sein, dass diese Schritte nicht helfen und die Daten verloren sind. In der config.php ist nämlich der Schlüssel secret gesetzt, der unter anderem zur Verschlüsselung dient.

Zur vollständigen Wiederherstellung sind folgende Dinge erforderlich:

  • Die Dateien der Nutzer
  • Datenbank

Schritte

1. ownCloud herunterladen & entpacken

Als erstes wird ownCloud-Quellcode heruntergeladen und entpackt. Es wird dabei die gleiche Version verwendet, die vorher verwendet wurde. Das dabei liegende Setup wird jedoch nicht ausgefürt.

2. Anlegen der neuen config.php

Eine neue Konfiguration wird aus der, bei ownCloud beiliegenden, config.sample.php angelegt:

  • Datenbanktyp, -adresse und -passwort in die neue Konfiguration eintragen.
  • Tabellenpräfix angegeben werden (normalerweise oc_), mit diesem sind alle Tabellen in der Datenbank voran gestellt

Das Tabellenpräfix kann in der Datenbank nachgelesen werden.

Die neue Konfigurationsdatei sieht zum Beispiel dann so aus:

<?php
$CONFIG = array (
// ...
  'dbname' => 'owncloud',
  'dbhost' => 'localhost',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'dbuser' => 'nextcloud',
  'dbpassword' => 'geheimesPasswort123',
// ...
)

Auszug der neuen config.php

In diesem Beispiel wird eine MySQL-Datenbank verwendet.

3. Wiederherstellung des Datenordners

Der Datenordner wird an der gleichen Stelle wie vorher wiederhergestellt. Dies ist wichtig! Der ehemalige Pfad ist in der Datenbank hinterlegt. Dies kann zwar später geändert werden, jedoch sollte davon abgesehen werden, dieses während der Wiederherstellungzu tun.

Der Pfad kann aus der Datenbank usgelesen werden (Beispiel für eine MySQL-Datenbank owncloud mit dem Präfix oc_), dafür muss die Datenbank bereits wiederhergestellt sein:

USE owncloud;
SELECT id FROM oc_storages WHERE id LIKE 'local::%';

Der Pfad wird ebenfalls in der neuen Konfigurationsdatei hinterlegt. Beispiel für den Pfad /srv/owncloud-data:

<?php
$CONFIG = array (
// ...
  'datadirectory' => '/srv/owncloud-data/'
// ...
)

Auszug der neuen config.php

Können später die wiederhergestellten Dateien nicht heruntergeladen werde und es wird stattdessen der Statuscode 404 angezeigt, liegt vermutlich der Datenordner nicht da, wo dieser vorher war.

4. ownCloud die Änderungen mitteilen

Dazu wird in der neuen config.php die Option installed auf true gesetzt:

<?php
$CONFIG = array (
// ...
 'installed' => true,
// ...
)

Auszug der neuen config.php

Wird nun die Weboberfläche aufgerufen, sollte die Anmeldemaske erscheinen. Kann sich nicht angemeldet werden, liegt dies am verlorenen Passwort-Salt der ursprünglichen Konfigurationsdatei. Dieses kann durch die Kommandozeile wiederhergestellt werden.

5. Passwörter zurücksetzen

Die Passwörter werden in der Kommandozeile zurückgesetzt. Achtung: Spätestens ab hier ist der Zugriff auf verschlüsselte Dateien nicht mehr möglich, solange kein Wiederherstellungsschlüssel eingerichtet wurde.

$ sudo -u www-data php /var/www/owncloud/occ user:resetpassword admin
Enter a new password:
Confirm the new password:
Successfully reset password for admin

Fertig

Der Zugang auf die ownCloud oder Nextcloud sollte wieder möglich sein.

Links:

Über den Autor

Simon Biewald

Der Autor des Blog programmiert bereits seit jungen Jahren in Python und beschäftigt sich nun mit den Themen der IT-Sicherheit und studiert deshalb nun "IT-Sicherheit und Mobile System" an der Hochschule Stralsund.