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: [email protected]
Concept
OSBD
Chapter
Locking daemon over CIFS for
OpenOffice.org
Verantwortlich
Stefan Hoefer. [email protected]
Beat Stebler, [email protected]
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