Re: samba4 unter ZFS

From: Peter Ross <Peter.Ross(at)alumni.tu-berlin.de>
Date: Wed, 2 Oct 2013 10:02:23 +1000 (EST)

Hallo Olli,

On Tue, 1 Oct 2013, Oliver Fromme wrote:

> Peter Ross wrote:
> > Für mich sieht es so aus, als wenn schon mal jemand drüber nachgedacht hat
> > ("besser wir verstecken die Mountinformationen vor den Jails"), dann aber
> > das in.. sysctl_vfs_conflist(?) vergessen hat?
>
> Der "jemand" war ich, vor 12 bzw. 10 Jahren. :-)

:-)

> Über Sensitivität hat jeder Admin seine eigenen Ansichten.
> Die Jail-Implementation sollte die Mechanismen zur Verfügung
> stellen, die es jedem Admin erlauben, seine eigenen Ansichten
> zu verwirklichen.

Dann würde ich in diesem Fall auf ein sysctl plädieren, sol daß entweder
die Daten durchgereicht werden oder aber der Zugriff verweigert wird.

Der Default sollte wahrscheinlich den Zugriff verweigern.

Wäre das die "richtige" Lösung?

> > Dann müßte Dein Skript aber auch auf was anderem aufbauen, um mir im Jail
> > sagen zu können, ob ZFS darin eine Rolle spielt.
>
> Ziel des Patches ist doch, dass im Jail diese Informatione
> gerade _nicht_ verfügbar ist. Wenn man auf etwas anderem
> aufbauen könnte, dann müsste man das auch wegpatchen. :-)
> Das Skript funktioniert dann nur noch außerhalb von Jails.
>
> > Eigentlich sollte im Falle von Samba der Check des Filesystemtyps pro
> > Share stattfinden, denn ich kann ja durchaus einen Mix von Filesystemen
> > haben.. (Ich will da lieber nicht weiter drüber nachdenken;-)
>
> Den Absatz habe ich nicht ganz verstanden, um ehrlich zu sein.

Nun, was bei der Konfiguration von Samba4 wirklch von Interesse ist, ist
das oder die Filesysteme, auf denen die Daten abgelegt werden sollen und
demzufolge die ACLs abgespeichert werden.

Das kann ein Provisions-Skript nicht wirklich mit Sicherheit sagen.

Ich kann ja z.B. mein System mit UFS aufsetzen und mich dazu entschließen,
später ein ZFS für die Shares aufzusetzen.

Dann ist "/" UFS und ZFS gibt es noch gar nicht. Und wenn es ZFS gibt,
dann kann das Provision-Skript nicht erraten, was denn wirklich für Samba
benutzt wird.

Wahrscheinlich ist es für die meisten Fälle hinreichend, den Filetyp des
Root-Systems festzustellen und dann das entsprechende VFS-Modul zu laden.

Das würde z.B. in meinem Jail ausreichen - da gibt es nur ZFS.

Wenn man dann das "Ratren" dokumentiert noch eine Option wie "--use-zfs"
hinzufügt, ist man auf der sicheren Seite.

Einen "gemischten Betrieb" (UFS und ZFS) würde ich erst einmal
ausschließen, ich weiß nicht, ob das überhaupt geht, es gibt z.B. nur eine
smb.conf und die verwendeten ACL-Typen werden bei der Provision global
abgespeichert.

Eventuell geht das auch per Share, aber das würde ich dann manueller
Anpassung in der smb.conf überlassen und nicht ins Provisionsskript tun
("too hard";-)

> > Ich habe aber ein anderes Problem, was mit meiner Unbedarftheit in
> > Richtung Python und Samba zu tun hat: das Laden von Modulen.
> >
> > Samba hat ladbare Module und eines ist zfsacl.so.
> >
> > Ich finde:
> >
> > % pkg query %Fp samba4 | grep zfs
> > /usr/local/lib/shared-modules/vfs/zfsacl.so
> >
> > aber:
> >
> > % pkg query %Fp samba4 | grep xattr | grep '.so'
> > /usr/local/lib/python2.7/site-packages/samba/dcerpc/xattr.so
> > /usr/local/lib/python2.7/site-packages/samba/xattr_native.so
> > /usr/local/lib/python2.7/site-packages/samba/xattr_tdb.so
> > /usr/local/lib/python2.7/site-packages/libxattr_tdb.so
> > /usr/local/lib/shared-modules/vfs/acl_xattr.so
> > /usr/local/lib/shared-modules/vfs/streams_xattr.so
> > /usr/local/lib/shared-modules/vfs/xattr_tdb.so
> >
> > Wenn ich es richtig verstehe, wird mit
> > "import samba.xattr_native" in samba/ntacl.py
> > /usr/local/lib/python2.7/site-packages/samba/xattr_native.so
> > geladen.
> >
> > Ist /usr/local/lib/python2.7/site-packages/samba/xattr_native.so)
> > ein Wrapper um die "System-Bibliotheken" unter
> > /usr/local/lib/shared-modules/vfs ?)
> >
> > D.h. muß erst noch eine solcher "Python-Wrapper" um zfsacl.so gebaut
> > werden, damit ich es in einem Python-Skript (und nicht nur im s3fs-Binary)
> > benutzen kann?
>
> Das kann ich leider nicht beantworten. Momentan habe ich
> gerade kein Samba4 unter meinen Fingern, um mir das näher
> anzusehen. Auf meiner Kiste hier verwende ich noch Samba3.

Danke für die Hinweise.

Das Problem: Es gibt in Samba (seit Samba3) der Dokumentation nach
ladbare Module.

Ich sehe im gesamten samba-tool keine CDLL-Anweisung, die ich nach meinem
"Anfänger-Wissen" für eine Bibliothek erwarten würde.

Ich sehe aber "import samba.xattr_native" und im Verzeichnis
(/usr/local/lib/python2.7/site-packages/samba) sehe ich kein .py-Skript,
sondern ein xattr_native.so.

Ein solches sehe ich nicht für zfs, lediglich ein Modul "außerhalb
Pythons": /usr/local/lib/shared-modules/vfs/zfsacl.so.

Die Frage: Muß ich die Bibliothek "Python-fähig" machen, damit sie mit
"import" statt "CDDL" bei Bedarf geladen werden kann?

Anders ausgedrückt: Ich würde am liebsten etwas wie

if use_zfs
    import samba.zfsacl

Nur gibt es samba.zfsacl noch gar nicht.

Oder halt ganz anders?

Ich sehe in der zfsacl.so eine Struktur, die der Dokumentation entspricht,
wie Samba auf ein Filesystem zugreifen möchte (Zeiger auf VFS-Funktionen).

Wenn ich das richtig verstehe, würden dann die benutzten ACL-Funktionen
(z.B. sowas wie make_simple_acl) auf diese VFS-Funktionen zugreifen und
keine Fehler mehr erzeugen.

(Zur Zeit versucht dieser Test POSIX-ACLs zu verwenden und erzeugt so
einen Fehler, der zum Abbruch führt.)

Es grüßt
Peter

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 02 Oct 2013 - 02:03:10 CEST

search this site