Re: samba4 unter ZFS

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Thu, 26 Sep 2013 11:43:29 +0200 (CEST)

Peter Ross wrote:
> [...]
> "The issue is essentially that the python-based provision code need to
> detect the use of zfs, load the zfsacl module in the generated smb.conf,
> and instead of testing simple posix ACLs, proceed to setting a full NT
> ACL when we create the sysvol share."
>
> Python habe ich nicht gelernt.. Ich versuche, den Code zu verstehen, sehe
> die Fehlermeldung auf ein sys_acl_init zurückgehend (das ist jetzt schon
> im C-Code, in samba-4.0.8/source3/lib/sysacls.c).
>
> Ich vermute, daß das Resultat NULL ist, da das zfsacl.so-Module nicht
> geladen ist und so kein Mepping der ACL-Funktionen stattfindet, die ich in
> samba-4.0.8/source3/modules/nfs4_acls.c finde (was in zfsacl.so eingeht).
>
> Kann man vielleicht dem Python-Skript beibringen, das Modul zu laden und
> dieses Mapping herzustellen?
>
> Irgenwie sowas wie
> if (file_system($file)=="zfs") load zfsacl.so
> stelle ich mir vor..

In Python bin ich firm, aber von den Samba4-Interna habe ich
leider nicht viel Ahnung.

Ich weiß nicht, ob es Dir hilft, aber ich musste mal in Python
die C-Funktion getvfsbyname() aufrufen. Ich hätte theoretisch
auch /usr/bin/lsvfs aufrufen und die Ausgabe parsen können,
aber das erschien mir zu fragil (und ineffizient).

Für viele libc-Funktionen gibt es bereits entsprechende Python-
Funktionen als Wrapper in Pythons Standard-Library, aber für
getvfsbyname() leider nicht, da das FreeBSD-spezifisch ist.
Ich habe das daher "manuell" gemacht und dokumentiert, falls
jemand anders das auch mal benötigt:

http://www.secnetix.de/olli/scripts/FreeBSD-admin/getvfsbyname.py

Wie gesagt, ich weiß nicht, ob es Dir hilft ... Eigentlich ist
das für Leute gedacht, die zumindest ein bisschen Ahnung von
Python haben. Andererseits ist Python-Code relativ leicht zu
lesen. Falls Du versuchst, obigen Code zu verwenden, musst Du
auf jeden Fall auf die Einrückungen achten, da Python daran
die Struktur erkennt (dafür braucht man keine geschweiften
Klammern).

Mit dem Code-Schnipsel kann man jedenfalls erkennen, ob ZFS-
Support im Kernel vorhanden ist, und wenn ja, ob er verwendet
wird, d.h. ob es ZFS-Mounts gibt (refcount > 0). Im Prinzip
erhält man die gleichen Informationen, die /usr/bin/lsvfs
ausgibt (z.B. "lsvfs zfs" oder "lsvfs ufs").

Falls Du Fragen hast, versuche ich gerne, sie zu beantworten.

Wie man dann dafür sorgt, dass Samba4 das zfsacl-Modul lädt,
kann ich Dir leider nicht sagen. Sie werden wohl in ihrem
Code irgendeine Funktion dafür haben, aber wie gesagt, da
habe ich noch nie einen Blick drauf geworfen.

Gruß
   Olli

-- 
Oliver Fromme,  secnetix GmbH & Co. KG,  Marktplatz 29, 85567 Grafing
Handelsregister:  Amtsgericht Muenchen, HRA 74606, Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsreg.: Amtsgericht München,
HRB 125758, Geschäftsführer:  Maik Bachmann,  Olaf Erb,  Ralf Gebhart
FreeBSD-Dienstleistungen/-Produkte + mehr: http://www.secnetix.de/bsd
"I started using PostgreSQL around a month ago, and the feeling is
similar to the switch from Linux to FreeBSD in '96 -- 'wow!'."
        -- Oddbjorn Steffensen
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Thu 26 Sep 2013 - 11:43:41 CEST

search this site