Ganzheitliche Lösungen verlangen nach ganzheitlichem
Transcription
Ganzheitliche Lösungen verlangen nach ganzheitlichem
FOSS-Group GmbH Bismarckallee 9 4D-79098 Freiburg i.Br Tel. +41 (0)61 751 72 80 Fax +41 (0)61 751 78 79 www.FOSS-Group.eu Mail: info@FOSS-Group.eu Concept OSBD Chapter Locking daemon over CIFS for OpenOffice.org Verantwortlich Stefan Hoefer. stefan.hoefer@foss-group.ch Beat Stebler, beat.stebler@foss-group.ch Version 1.0 Ganzheitliche Lösungen verlangen nach ganzheitlichem Denken Inhaltsverzeichnis 1 Cifs Lockd.................................................................. .....3 1.1 1.2 1.3 1.4 1.5 The Problem...................................................................3 The Solution...................................................................3 FUSE-Filesystem............................................................ .3 Requirement..................................................................3 Grafisches Konzept........................................................4 2 Verhalten von OpenOffice.org..........................................4 3 lsof-Modul........................................ ..............................5 Seite 2 von 5 1 Cifs Lockd Der Cifs Lockd ist ein Sub-Projekt des OSBD (Open Server Based Desktop) und wird auch über diesen verwaltet. OpenOffice.org ist im Netzwerk nicht vernünftig einsetzbar, solange die Thematik mit dem File Locking nicht gelöst ist. 1.1 The Problem OpenOffice.org implements a locking mechanism that tries to ensure the integrity of documents that are opened multiple times by different clients. While the first client to open the document gets full access rights, subsequent clients get only read access in order to avoid different versions of the same document being overwritten by each other. The mechanism used by OpenOffice.org under the Linux OS works fine with UNIXbased filesystems such as ReiserFS, ext2/3 and NFS. SMB and CIFS however feature a different locking scheme that would have to be handled explicitely by OpenOffice.org (on Linux). This seems to be no option as far as the OpenOffice.org developers are concerned. Other ways of getting around this problem seem to be various manipulations of the locking mechanism used by Samba. However, these seem to be very (Samba) version dependent and sometimes tend to show bad side effects (e.g., Windows clients don't have any access at all anymore), while at other times they don't work at all. 1.2 The Solution One way of getting around this problem is to implement a locking daemon for CIFS and SMB shares, very similar to the locking daemon used by NFS. While the development and implementation of such a locking daemon as part of Samba or the Linux kernel would be very difficult (mainly for logistic reasons), there exists another possibility: FUSE. The „File Systems in Userspace“ project allows the development of specialized filesystems that require no altering of the kernel in order to work properly on any FUSEenabled system. 1.3 FUSE-Filesystem The idea is now to write a FUSE filesystem in such a way that it can be mounted over an existing Samba share on Linux systems. This FUSE mount point would then shadow the existing Samba mount point, thus rendering the Samba files inaccessible to normal processes on the system in question. However, the FUSE filesystem itself may still be able to access the shadowed directory, and may provide sort of a filtered access to the files and subdirectories on the Samba share. Read and write access on the FUSE filesystem would then be simply forwarded to the underlying Samba share, with the exception of an enforced UNIXish locking mechanism that accesses a server component of the locking daemon on the Samba server itself in order to provide mutual write access, very much as this is done by NFS using the lockd service. 1.4 Requirement This solution would not require any tempering with the existing software installation, neither on the server nor on the client side. It simply consists of a further software package on each client and server plus some simple configuration work. Seite 3 von 5 1.5 Grafisches Konzept 2 Verhalten von OpenOffice.org Das Verhalten von OpenOffice.org mit dem CIFS Lockdaemon ist exakt so, als wäre die betreffende Datei lokal (da der Lock auch lokal auf dem Remotesystem erzeugt wird). Ich hab das ausprobiert, das funktioniert so: 1. User1 öffnet ein Dokument, alles ist "normal" (Vollzugriff). 2. User2 öffnet das gleiche Dokument, er hat nun nur lesend Zugriff (in der Fenstertitelleiste steht explizit "read-only", es kann im Dokument effektiv auch nichts verändert werden). 3. User1 schliesst das Dokument 4. Für User2 bleibt das Dokument read-only 5. Sobald User2 das Dokument aber schliesst und erneut öffnet, hat er Schreibzugriff. Der erste Zugriff gewinnt also, alle anderen haben nur lesende Rechte. Dieses LockKonzept kommt von OpenOffice, die Schönheit des CIFS Lockd Konzepts liegt darin, dass es völlig transparent OpenOffice in dem unterstützt, was es von sich aus machen will. Seite 4 von 5 3 lsof-Modul Als Erweiterung des CIFS Lockd könnte ein OpenOffice Addon geschrieben werden, welches im Stil des Unix Befehls lsof anzeigt, wer eine spezifische Datei mit welchen Rechten geöffnet hat (interessant ist hier besonders die Frage, wer die Datei schreibend geöffnet hat). Während lsof rein lokal arbeitet, müsste besagtes Addon in der Lage sein, diese Information auch über das Netzwerk zu erfragen. Eine Lösung mit Datenbank wäre sehr aufwändig und anfällig für Inkonsistenzen. Es bietet sich jedoch an, dies direkt im CIFS Lockd zu implementieren, wobei aus Performance-Gründen darauf verzichtet würde, andere Informationen als diejenige aufzuzeichnen, wer gerade den Schreib-Lock inne hat. Seite 5 von 5