Konfigurieren des externen Speichers (Konfigurationsdatei)¶

eit ownCloud 4.0 ist es möglich, das Dateisystem so zu konfigurieren das externer Speicherplatz von Speicherplatz-Anbietern in das virtuelle Dateisystem von ownCloud eingebunden werden können. Sie können das Dateisystem Dateisysteme durch die Erstellung und Bearbeitung der data/mount.json konfigurieren. Diese Datei enthält alle Einstellungen in JSON (JavaScript Object Notation) Format. Im Augenblick sind zwei verschiedene Einträge vorhanden:

  • Group mounts: jeder Eintrag konfiguriert einen Mount-Punkt für jeden Benutzer in der Gruppe.
  • User mounts: jeder Eintrag konfiguriert einen Mount-Punkt für einen einzelnen Benutzer oder für alle Benutzer.

Für jeden Typ gibt es ein JSON Array mit dem Benutzer / Gruppennamen als Schlüssel, und ein Array der Konfigurationseinträge als Wert. Jeder Eintrag besteht aus dem Klassennamen des Speicher Backends und einem Array für Backend spezifische Optionen und werden von der Benutzeranmeldung ersetzt. Die Vorlage $user kann als Mount-Punkt eingesetzt werden oder für Backend Optionen. Die folgenden Speicher Backends sind für eine Nutzung bereits vorgesehen:

Hinweis

Sie benötigen zuerst die Externe Speicher Unterstützung App um eine Freigabe des Speicherplatzes sicherzustellen, damit die nachfolgenden Beispiele funktionieren. Lesen Sie sich daher vorher den Abschnitt Konfigurieren des externen Speichers (GUI) durch.

Bitte beachten Sie, dass einige Formatierung angewendet wurde und der Wagenrücklauf zur besseren Lesbarkeit hinzugefügt worden ist. In der data/mount.json müssen alle Werte verkettet und in eine Zeile geschrieben werden, nur unter diesen Voraussetzungen sind Änderungen möglich!

Es wird empfohlen, die Verwendung des Web-GUI Administrator-Panel zu verwenden, um Mount-Optionen hinzuzufügen, zu entfernen oder zu ändern, und um Probleme zu vermeiden!

verwenden selbstsignierter Zertifikate¶

Bei der Verwendung von selbstsignierten Zertifikaten für externe Speicherplätze muß das Zertifikat in den persönlichen Einstellungen des Benutzers importiert werden. Mehr Informationen dazu finden Sie unter im Blog.

Hinzufügen von Dateien zum externen Speicher¶

der Regel empfiehlt es sich, die Hintergrund-Jobs mit Webcron oder Cron zu konfigurieren, wie in dem Definieren von Hintergrundjobs Abschnitt beschrieben, so das ownCloud in der Lage ist, Dateien auf Ihren externen Speicher zuzufügen, ohne das die Notwendigkeit besteht, dass ein Benutzer seine ownCloud Installation verwendet, um damit Dateien dort zu speichern.

Bitte beachten Sie, dass ownCloud möglicherweise nicht immer in der Lage sein wird, herauszufinden, was gewesen ist, auch wenn Änderungen aus der Ferne (Veränderungen der Dateien ohne Umweg über ownCloud) vorgenommen wurden, insbesondere wenn es ganz tief in der Ordnerhierarchie des externen Speicher hineinreicht.

Vielleicht benötigen Sie, um das Setup eines cron-Job zu starten, die folgenden Befehle sudo -u www-data php occ files:scan --all (oder ersetzen "-all" mit dem Benutzernamen, siehe auch unter occ Befehle verwenden) damit Sie eine erneute Prüfung von Dateien des Benutzers in regelmäßigen Abständen auslösen (z.Bsp. alle 15 Minuten) können, das umfasst das Mounten des externen Speichers.

Beispiele¶

{"group":{
    "admin":{
        "\/$user\/files\/Admin_Stuff":{
            "class":"\\OC\\Files\\Storage\\Local",
            "options":{ ... },
            "priority":150
            }
        }
    }
 "user":{
    "all":{
        "\/$user\/files\/Pictures":{
            "class":"\\OC\\Files\\Storage\\DAV",
            "options":{ ... },
            "priority":100
            }
        }
    "someuser":{
        "\/someuser\/files\/Music":{
            "class":"\\OC\\Files\\Storage\\FTP",
            "options":{ ... },
            "priority":100
            }
        }
    }
}

Schwerpunkte¶

Eine erweiterte Funktion ist nur konfigurierbar direkt in der data/mount.json, wo den Mount-Konfigurationen eine dazugehörige Priorität zugewiesen werden kann. Wenn zwei oder mehr gültige Mount-Konfigurationen für den gleichen Mount-Punkt existieren, wird demjenigen mit der höchsten Priorität (die größte definierte Zahl) der Vorrang gewährt und wird für den Anwender verfügbar gemacht.

Jedem Backend wird eine Standard-Priorität zugewiesen, wenn eine Mount-Konfiguration mit einem Backend erstellt wird. Die Standardpriorität wird, wie im Beispielteil unten gezeigt, für jedes Backend festegelegt. Sollte ein Backend die Standardpriorität nicht verwenden können, wird ein Wert von 100 statt dessen verwendet.

Es gibt auch ein Konzept der Prioritätsarten, um die Kompatibilität mit früheren Mount Konfigurationen zu bewahren. Die Mount Konfigurationen werden in der ausgewerteten Reihenfolge, mit den später zu mountenen Typen immer überschrieben (d.h. alte Konfigurationen bleiben so lange erhalten bis diese durch neuere überschrieben wurden).

  • user -> all : globale Mount Konfiguration
  • group : Gruppen Mount Konfiguration
  • user (nicht alle) : einzelne-Benutzer Konfiguration
  • data/$user/mount.json : persönliche Mount Konfiguration

Backends¶

lokale Dateisysteme¶

Die lokalen Dateisystem-Backends mounten einen Ordner auf dem Server in das virtuellen Dateisystem, wobei die Klassen \OC\Files\Storage\Local und die folgenden Optionen verwendet werden:

  • datadir : der Pfad zu dem lokalen Verzeichnis, das zu mounten ist

Beispiel¶

{ "class":"\\OC\\Files\\Storage\\Local",
  "options":{ "datadir":"\/mnt\/additional_storage" },
  "priority":150
}

Hinweis

Sie müssen sicherstellen, dass der Web-Server ausreichend Berechtigungen für den Ordner hat.

FTP (or FTPS)¶

Der FTP-Backend verwendet einen Ordner auf einem FTP-Server und bindet ihn in das virtuelle Dateisystem ein wobei es Teil der "Externer Speicher Unterstützung" App ist. Die Klasse die dazu verwendet wird ist \OC\Files\Storage\FTP und setzt die folgenden Optionen ein:

  • host: der Hostname des FTP-Servers und optional die Portnummer
  • user: der Benutzername, der verwendet wird, um sich auf dem FTP-Server anmelden
  • password: das Passwort, um sich auf dem FTP-Server anmelden
  • secure: ob Sie das ftps verwenden: // (FTP über TLS), um sich um zum ftp Server zu verbinden statt ftp: // (optional, Standardeinstellung false)
  • root: die Fern Unterordner innerhalb des FTP-Servers an (optional, Standard weißt auf ein "/" hin)

Beispiel¶

{   "class":"\\OC\\Files\\Storage\\FTP",
    "options":{
        "host":"ftp.myhost.com:21",
        "user":"johndoe",
        "password":"secret",
        "root":"\/Videos",
        "secure":"false"
    },
    "priority":100
}

Hinweis

PHP muss mit FTP-Unterstützung installiert worden sein, damit Sie mit diesem Backend arbeiten können.

Hinweis

Ein nicht blockiertes oder richtig konfiguriert SELinux-Setup ist erforderlich um mit diesem Backend arbeiten können.

SFTP¶

Das SFTP-Backend mountet einen Ordner auf einem Remote-SSH-Server in das virtuelle Dateisystem und ist Teil der "Externer Speicher Unterstützung" App. Die Klasse, die verwendet wird, heißt \ OC \ Files \ Storage \ SFTP und setzt die folgende Optionen voraus:

  • host: der Hostname des SSH-Servers
  • user: der Benutzername, der verwendet wird, um sich an den SSH-Server anzumelden
  • password: das Passwort, um sich auf dem SSH-Server anzumelden
  • root: die Fern Unterordner innerhalb des SSH-Servers wie (optional, Standard weißt auf ein "/" hin)

Beispiel¶

{   "class":"\\OC\\Files\\Storage\\SFTP",
    "options":{
        "host":"ssh.myhost.com",
        "user":"johndoe",
        "password":"secret",
        "root":"\/Books"
    },
    "priority":100
}

Hinweis

PHP muss mit SFTP-Unterstützung installiert worden sein, damit Sie mit diesem Backend arbeiten können.

SMB¶

Der SMB-Backend verwendet einen Ordner auf einem Remote-Samba-Server, einem NAS-Gerät oder einer Windows-Maschine und bindet diesen in das virtuelle Dateisystem ein. Es ist Teil der "Externer Speicher Unterstützung" App, wobei die Klasse \OC\Files\Storage\SMB und die folgenden Optionen verwendet werden:

  • host: der Host-Name des Samba-Servers
  • user: den Benutzernamen oder die Domain / Username um auf dem Samba-Server anzumelden
  • password: das Passwort, um auf den Samba-Server anzumelden
  • share: der Freigabe des Samba-Servers die zu mounten ist
  • root: die Fern Unterordner, innerhalb der Samba-Freigabe, der diesem zugeordnet ist(optional, Standard weißt auf ein "/" hin). Um den ownCloud Anmeldebenutzernamen automatisch dem Unterordner, der anstelle von einem bestimmten Unterordner verwendet wird, wird der dem passenden $user zugewiesen.

Hinweis

Der SMB-Backend benötigt einen installierten smbclient auf dem Server.

Beispiel¶

Mit nur einem Benutzernamen:

{   "class":"\\OC\\Files\\Storage\\SMB",
    "options":{
        "host":"myhost.com",
        "user":"johndoe",
        "password":"secret",
        "share":"\/test",
        "root":"\/Pictures"
    },
    "priority":100
}

Mit einem Domainnamen und einem Benutzernamen:

{   "class":"\\OC\\Files\\Storage\\SMB",
    "options":{
        "host":"myhost.com",
        "user":"domain\/johndoe",
        "password":"secret",
        "share":"\/test",
        "root":"\/Pictures"
    },
    "priority":100
}

WebDAV¶

Der WebDAV-Backend verwendet einen Ordner auf einem Remote-WebDAV-Server um diesen in das virtuelles Dateisystem inzubinden und ist Teil der "Externer Speicher Unterstützung" App, die die Klasse \OC\Files\Storage\DAV und die folgenden Optionen verwendet:

  • host: der Hostname des WebDAV-Server.
  • user: der Benutzername, der verwendet wird, um sich auf dem WebDAV-Server anzumelden
  • password: das Passwort, um sich auf dem WebDAV-Server anzumelden
  • secure: ob https:// verwendet wird, anstatt sich mit http:// auf dem WebDAV-Server zu verbinden (optional, Standard ist false)
  • root: die Fern Unterordner innerhalb des WebDAV-Server, der zu mounten ist (optional, Standardmäßig weißt auf ein "/" hin)

Beispiel¶

{   "class":"\\OC\\Files\\Storage\\DAV",
    "options":{
        "host":"myhost.com\/webdav.php",
        "user":"johndoe",
        "password":"secret",
        "secure":"true"
    },
    "priority":100
}

Amazon S3¶

Der Amazon S3 Backend verwendet ein Bucket in der Amazon-Cloud um dieses in das virtuelle Dateisystem eunzubinden und ist Teil der "Externer Speicher Unterstützung" App, die die Klasse \OC\Files\Storage\AmazonS3 und die folgenden Optionen verwendet:

  • key: der Schlüssel, um sich bei der Amazon-Cloud anzumelden
  • secret: der geheime Code, um sich bei der Amazon-Cloud anzumelden
  • bucket: Das Bucket in der Amazon-Cloud der gemountet werden soll

Beispiel¶

{   "class":"\\OC\\Files\\Storage\\AmazonS3",
    "options":{
        "key":"key",
        "secret":"secret",
        "bucket":"bucket"
    },
    "priority":100
}

Dropbox¶

Der Dropbox-Backend montiert eine Dropbox aus der Dropbox Cloud in das virtuelle Dateisystem und ist Teil der "Externer Speicher Unterstützung" App, die die Klasse \OC\Files\Storage\Dropbox und die folgenden Optionen verwendet:

  • configured: ob das Laufwerk konfiguriert worden ist oder nicht (true oder false)
  • app_key: der App-Schlüssel, um sich auf Ihrer Dropbox anzumelden
  • app_secret: der geheime App-Schlüssel um sich auf Ihrer Dropbox anzumelden
  • token: der OAuth-Token, um sich auf Ihre Dropbox anzumelden
  • token_secret: der OAuth_Secret, um sich auf Ihre Dropbox anzumelden

Beispiel¶

{   "class":"\\OC\\Files\\Storage\\Dropbox",
    "options":{
        "configured":"#configured",
        "app_key":"key",
        "app_secret":"secret",
        "token":"#token",
        "token_secret":"#token_secret"
    },
    "priority":100
}

Google Drive¶

Der Google Drive Backend verwendet eine Freigabe von der Google Cloud die in das virtuelle Dateisystem eingebunden wird und ist Teil der "Externer Speicher Unterstützung" App, die die Klasse \OC\Files\Storage\Google verwendet und eine OAuth2.0 Anfrage durchführt. Das bedeutet, dass die App durch die Google APIs-Konsole registriert werden muß. Das Ergebnis der Registrierung ist eine Menge von Werten (inkl. Client_id, client_secret). Es verwendet die folgenden Optionen:

  • configured: ob das Laufwerk konfiguriert worden ist oder nicht (true oder false)
  • client_id: Die Client-ID, um sich bei Google-Drive anzumelden
  • client_secret: Der Client_secret, um sich bei Google-Drive anzumelden
  • token: einen Verbindung Wert einschließlich des Zugangs und des Refresh-Token

Beispiel¶

{   "class":"\\OC\\Files\\Storage\\Google",
    "options":{
        "configured":"#configured",
        "client_id":"#client_id",
        "client_secret":"#client_secret",
        "token":"#token"
    },
    "priority":100
}

OpenStack Swift¶

Die Swift-Backend verwendet einen Container auf einem Openstack Object Storage Server und bindet diesen das virtuelle Dateisystem ein und ist Teil der "Externer Speicher Unterstützung" App, das die Klasse \OC\Files\Storage\SWIFT und die folgenden Optionen verwendet:

  • host: der Hostname des Authentifizierungsserver der für den Swift-Backen verwendet wird.
  • user: der Benutzername, der verwendet wird, um sich auf dem Swift Server anzumelden
  • token: das Authentifizierungstoken, das verwendet wird, um sich auf dem Swift Server anzumelden
  • secure: ob Sie das ftps verwenden: //, um sich mit dem Swift Server zu verbinden statt der Verwendung von ftp: //(optional, Standard auf false)
  • root: der Container inerhalb des Swift Server der gemountet werden soll (optional, Standard weißt auf ein "/" hin)

Beispiel¶

{   "class":"\\OC\\Files\\Storage\\SWIFT",
    "options":{
        "host":"swift.myhost.com\/auth",
        "user":"johndoe",
        "token":"secret",
        "root":"\/Videos",
        "secure":"true"
    },
    "priority":100
}

externer Speicher Password Management¶

ownCloud verwendet Passwörter für die externe Speicherung anders als normale ownCloud Benutzer-Passwörter.

Die regelmäßigen Benutzer und Dateifreigabe-Passwörter (wenn Sie den Standard ownCloud Benutzer-Backend verwenden) werden unter Verwendung eines starken kryptografisch sicheren Hash Mechanismus in der Datenbank gespeichert. Für einen neuen Benutzer-Account mit einem neuen Passwort, wird das Kennwort gehasht und im der ownCloud-Datenbank gespeichert. Die Klartext-Passwörter werden nie gespeichert. Wenn der Benutzer sich anmeldet, wird der Hash des Passworts, das sie eingeben haben, mit dem Hash in der Datenbank verglichen. Wenn die Hashes stimmen erlangt der Benutzer Zutritt. Das kann nuicht verändert werden, wenn ein Benutzer sein Passwort verliert, besteht die Möglichkeit, ein neues Passwort zu erstellen.

Passwörter, die verwendet werden, um die externe Speichergeräte (z.Bsp. SMB oder FTP) zu verweden, werden nach den entsprechenden Implementierungen unterschieden:

  1. Einloggen mit den ownCloud Anmeldeinformationen

Wenn ein Mountpoint diese Option verwendet, zum Beispiel SMB / CIFS using OC login, wird das Passwort abgefangen, wenn sich ein Benutzer anmeldet und wird für die PHP Sitzung gespeichert (die eine Datei auf dem Dateisystem erstellt) und verschlüsselt diesen mit einem Schlüssel aus der Konfigurationsdatei. Jedes Mal, wenn dieses vergessen wird, liest ownCloud den erforderliche Schlüssel aus der PHP-Session-Datei neu aus.

Wenn Sie diese Option verwenden, werden Funktionen wie die gemeinsame Nutzung nicht richtig mit dem Mountpunkt arbeiten, wenn sich der Benutzer nicht richtig angemeldet hat.

Abhängig von der Implementierung der Anwendung bedeutet dies, dass das Passwort über den ps Ausgang kompromitiert werden kann, statt dessen verwenden wir den smbclient für den SMB-Speicher Zugang in der Community-Version. Dort gibt es dazu einen Fehlerbericht. Folglich können wir momentan einen alternativen Ansatz direkt auf der Bibliothek auswerten und damit leckt das Passwort nicht mehr. Dies ist bereits in der Enterprise-Edition in unserer Windows-Netzlaufwerk-Anwendung realisiert, und es wird in der kommenden Community-Version korrigiert, sobald wir den Code der files_external Application angepaßt und erweitert haben.

  1. gespeicherten Anmeldeinformationen

Wenn Sie die Anmeldeinformationen unter dem files_external Dialog auf dem Dateisystem gespeichert haben, wird ein verschlüsselt gespeicherter Schlüssel in der config.php abgelegt. Das ist erforderlich, damit ownCloud Zugriff auf diese Dateien und Freigaben erhält, auch wenn der Benutzer nicht eingeloggt ist, damit der Austausch und andere Schlüsselfunktionen ordnungsgemäß funktionieren werden.

Um es zusammenzufassen:

Der "Login mit ownCloud Anmeldeinformationen" SMB-Funktion in der Community Edition erstellt das Passwort in der Prozessliste des Serversystems. Wenn Sie dieses werden möchten, gelten diese Einschränkung weiter, wenn sicht nicht warten wollen, bis die CE korrigiert wurde können Sie die Enterprise Edition verwenden. Aber selbst dann wird das Passwort in der PHP Sitzung gespeichert und ein böswilliger Administrator könnte darauf zuzugreifen. Sie können Ihre PHP-Session-Schutz Dateien mit Schutzmaßnahmen in Ihrem Dateisystem versehen. Gespeicherte Anmeldeinformationen sind immer zugänglich für die ownCloud Instanz.