PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Frage] Samba 3 ACLs



[WCM]Manx
27.11.03, 18:52
Hi @all!

Scheinbar ist ja Samba 3 (mit LDAP) momentan total angesagt ;) .
Ich arbeite mich auch grad ein und bin bei den ACLs angekommen.

zur Info:

Debian 3, als Dateisystem ext3 mit ACL-patch.
Samba eingerichtet => Gruppen gemappt, man sieht sie auch von Windows aus:

Domänen Gruppen (http://members.aon.at/~dfidesse/samba-acl-auswahl.png)

man kann unter Sicherheitseinstellungen auch Gruppen hinzufügen und Rechte vergeben:

Dateirechte (http://members.aon.at/~dfidesse/samba-acl.png)

und unter Linux sieht's dann so aus:

aterm (http://members.aon.at/~dfidesse/samba-acl-aterm.png)

Frage: Wieso werden aus den Gruppennamen Nummern? bzw. Wo kommen die her?

Danke

Manx

[WCM]Manx
28.11.03, 14:23
... folgendes hab ich heraus gefunden:

Das "Group Mapping" erfolgt ja mit dem Kommando:
"net groupmap add ntgroup=“Windows_Gruppen_Name” UNIXgroup=unix_group_name"

Dabei kommt zum posixGroup Eintrag ein weiterer dazu, nämlich "sambaGroupMapping" mit den Attributen "SambaSID" und "sambaGroupType".

Dabei wird die RID in sambaSID folgenderweise berechnet:
2 x UnixGID + "algorithmic rid base" aus der smb.conf (default 1000) +1

z.B für eine UnixGruppe mit GID 5555:
2 x 5555 + 1001 = RID 12111

Wenn das so gemacht wird, werden die Gruppennamen in den ACLs unter Linux auch korrekt angezeigt (mit Namen).

Da lt. Samba Doku 3 Gruppen (Admins, User und Guests, RID 512-514) eingerichtet werden müssen, und ich das eben so gemacht habe:
"net groupmap add rid=512 ntgroup=usw.

... passt genau bei diesen drei Gruppen das Windows/Unix Mapping nicht mehr, deshalb werden aus den Gruppennamen scheinbar eben Zahlen.

so long

Manx

linux_user1311
30.11.03, 02:10
Kann man unter Suse 9.0 die ACL auch nutzen? Bin gerade dabei einen Samba server zu bauen. Und da es mir Linuxrechten manchmal ziemlich knapp ist, wollte ich es auch mal mit ACL testen. Muss man dazu noch Packete installieren?
Wäre nett wenn du ein wenig dazu schreiben würdest. :confused:

[WCM]Manx
30.11.03, 10:08
Hi!

Das sollte unter SuSE natürlich auch funktionieren.
Samba muss nur mit ACL-Support kompiliert worden sein (bei einem RPM gehe ich davon aus, das dem so ist)
Du brauchst ein Unix-Dateisystem das ACLs unterstützt. siehe auch:
http://www.suse.de/~agruen/acl/linux-acls/online/

In der smb.conf muss vorerst nicht's angepasst werden, ACLs funktionieren von Haus aus; siehe z.B "testparm -v |grep "acl" (2x ENTER drücken!) => nt acl support = Yes

Manx

PS: ich teste jetze mal JFS und lege ACLs auf Linuxseite fest und hoffe sie unter Windows auch zu sehen:

[edit] Linuxseitig sind ACL-Tools (setfacl, getfacl, usw.) noch ganz nützlich, keine Ahnung wie das RPM bei SuSE heißt, bei Debian heißt's acl.

mamue
30.11.03, 11:05
Funktioniert jetzt net groupmap auch mit ldap?
Bei der 3.0.1pre2 ging das nicht und in der Doku stand auch was von "soll der Admin selber für sorgen" also habe ich das groupmapping selber eingetragen. Dabei kann ich mir aber aussuchen, welche gid auf welche rid gemapped wird. Ich habe auch Beipiele gefunden, wo die gid 512 auf de rid 512 emapped wird.
Die Gruppen werden bei mir unter win auch angezeigt und ich könnte sogar unter NT4 jede Gruppe den Hauptbenutzern hinzufügen.
Nur die ACL kann ich nicht setzen. Wenn der Eigentümer einer Datei sie zu ändern versucht, gibt es die Fehlermeldung in etwa "konnte nicht, weil durfte nicht".
Kann es sein, dass der acl support trotz --with-acl-support nicht eincompliliert wurde? Kann mir mal jemand seine Ausgabe von ldd smbd geben?
Muss ich unter SuSI 9 die kernel source dafür installieren, oder was könnte ich da sonst noch vergessen haben?

Danke,
mamue

[WCM]Manx
30.11.03, 11:56
Hi mamue!

Vorerst mal der Output von ldd. Mein Samba 3 aus Debian/testing hat nur eine Macke (siehe no version Information ...) ich hoffe, dass mir das bei CUPS dann keine Probleme bereitet, aber das kommt ja erst:


p166:/var/log/samba# ldd /usr/sbin/smbd
/usr/sbin/smbd: /usr/lib/libgnutls.so.7: no version information available (required by /usr/lib/libcups.so.2)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x4001b000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x4002c000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x4008a000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0x400aa000)
libresolv.so.2 => /lib/libresolv.so.2 (0x400ae000)
liblber.so.2 => /usr/lib/liblber.so.2 (0x400c0000)
libldap.so.2 => /usr/lib/libldap.so.2 (0x400cd000)
libcups.so.2 => /usr/lib/libcups.so.2 (0x40105000)
libgnutls.so.7 => /usr/lib/libgnutls.so.7 (0x40122000)
libnsl.so.1 => /lib/libnsl.so.1 (0x40154000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x4016a000)
libpam.so.0 => /lib/libpam.so.0 (0x40197000)
libacl.so.1 => /lib/libacl.so.1 (0x4019f000)
libdl.so.2 => /lib/libdl.so.2 (0x401a6000)
libpopt.so.0 => /lib/libpopt.so.0 (0x401a9000)
libc.so.6 => /lib/libc.so.6 (0x401b0000)
libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x402e3000)
libtasn1.so.0 => /usr/lib/libtasn1.so.0 (0x402f5000)
libgcrypt.so.1 => /usr/lib/libgcrypt.so.1 (0x40303000)
libz.so.1 => /usr/lib/libz.so.1 (0x40340000)
libattr.so.1 => /lib/libattr.so.1 (0x4034e000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Nur zusätzlich Info, damit die sonstigen Umstände klar sind:

Ich hab nach Samba und LDAP-Einrichtung für root den Windows-relevanten Eintrag mit "pdbedit -a -u root" erzeugt um mit Clients der Domaine beitreten zu können.
(Durch das Mapping auf Basis der "algorithmic rid base (default 1000)" bekommt root automatisch folgende RIDs
sambaSID: S-1-5...-1000 => 2 x UnixUID + 1000 == 2 x 0 + 1000 = RID 1000 und
sambaPrimaryGroupSID: S-1-5...-1001 => 2 x UnixGID + 1001 = RID 1001

Als nächstes hab ich drei Unix-Gruppen für Admins, User und Guests angelegt (UnixGID frei wählbar) und die Gruppen auf die vorgeschriebenen RIDs gemappt ("net groupmap add rid=512 ntgroup=usw.") Gibt man "rid=..." nicht an, wird wieder auf "algorithmic rid basis" gemappt, was aber durch einen Eingriff in LDAP händisch korrigiert werden könnte um die vorgeschriebenen RIDs zu erreichen.

Ich hab einen Administrator-User angelegt (UnixUID bzw. Unix GID frei gewählt NICHT UnixUID bzw Unix GID 0 [NULL]), dem ich händisch im LDAP die sambaSID S-1-5...-500 (RID 500 == Domänen Administrator) verpasst habe und der Mitglied der Domänen Admin Group ist (sambaPrimaryGroupSID S-1-5...-512), die UnixGID korreliert natürlich zur GID der Domänen Administratoren. Somit hab ich auch unter Windows einen User mit Administratoren Rechten.

Mit normalen Benutzern hab ich noch wenig probiert. Grad eben schnell mit einem Testuser, wo es auch funktioniert einer Datei eine weitere Gruppe hinzuzufügen mit z.B nur Leserechten. Ob Domainenbenutzer zwingend in der Gruppe mit RID 513 sein müssen, muss ich erst ausprobieren.

Eine kurze Vorgangsbeschreibung, was Du genau versuchst und nicht geht, wäre hilfreich, dann probier ich's aus.

Grüße

Manx

mamue
30.11.03, 17:01
Original geschrieben von [WCM]Manx
Hi mamue!



libacl.so.1 => /lib/libacl.so.1 (0x4019f000)


Mit normalen Benutzern hab ich noch wenig probiert. Grad eben schnell mit einem Testuser, wo es auch funktioniert einer Datei eine weitere Gruppe hinzuzufügen mit z.B nur Leserechten. Ob Domainenbenutzer zwingend in der Gruppe mit RID 513 sein müssen, muss ich erst ausprobieren.

Eine kurze Vorgangsbeschreibung, was Du genau versuchst und nicht geht, wäre hilfreich, dann probier ich's aus.

Grüße
Manx

Ich habe die normalen Benutzer in anderen primären Gruppen, die ich auf irgend was phantasievolles gemapped habe. Das geht. Allerdings sind alle user zudem auch in einer Gruppe susers, die auf Domänenbenuter gemapped ist.
Bei mir taucht bei ldd smbd nicht libacl auf. Ich vermute mal, dass es das aber sollte. Also noch mal genauer die configure Ausgabe anschauen.
Ich versuche unter win2k:
rechte Maustaste auf Datei->Eigenschaften->berechtigung die Rechte zu ändern, indem ich Domänen-user Hinzufüge etc. Das Hinzufügen klappt auch, nur beim Abschliessenden Klick auf OK gibt es die Fehlermeldung, dass ich nicht das Recht dazu hätte. Ich sollte erst mal samba neu übersetzen denke ich.

Danke,
mamue

[WCM]Manx
30.11.03, 17:57
Hi!

Als erstes würde ich mal testen, ob das mit den ACLs unter Linux funktioniert, denn das ist Voraussetzung. Richtiges Dateisystem nehmen, ext2/3 brauchen einen Patch, ReiserFS kann es von Haus aus. Beide müssen aber mit der Option acl in der /etc/fstab gemountet werden.
Wenn ein "setfacl -m g:NEUE_GRUPPE:rx DATEI_oder_ORDNER funktioniert schaut's gut aus. Ich hab auf meiner Testpartition ein gepatches ext3.

Grüße

Manx

PS: mit JFS war ich nicht erfolgreich, jetzt kommt XFS dran. ;)

mamue
30.11.03, 19:22
XFS kann das von Haus aus. Nicht wundern, das Du nicht mit acl enable oder so mounten kannst. XFS unterstützt acl einfach so ;)
setfacl und getfacl funktionieren bei mir. Ich hatte acl-devel nicht installiert. Er übersetzt gerade (btw: CFLAGS="-O2 -funroll-loops -march=pentium3 -mcpu=pentium3" und ja, es ist wirklich nur ein P-III. Wenn man es übertreibt, bleibt bei mir der gcc bei pdbedit hängen oder smbd schmeist sich gelegentlich weg.)
configure meldet mir gerade:
WARNING: xfs/xfs.h present but cannot be compiled

Das sieht nicht gut aus. Ma sehen.

mamue

[WCM]Manx
30.11.03, 19:55
... o.k XFS funktioniert.
... bei mir ist der Testrechner ein P I (in Worten EINS!), wenn auch ein Dual P166 ;)

Manx

mamue
30.11.03, 20:06
libacl fehte. Neu übesetzt, kurz geprüft und jetzt geht es, danke.
Unvorsichtigerweise teste ich das gerade an dem Verzeichniss "programme". Ich weiss nicht genau, was da abgeht, aber es läuft jetzt seit 10 Minuten, top zeigt mir eine load von knapp 4 (mehrere slapd). Kann es sein, dass win rekursiv das gesamte Verzeichniss durchgeht? Ich Esel teste das mit der Hauptgruppe "susers", mit knapp 6000 memberUID. Selbst von der konsole aus dauerte das dann Stunden... Da wird ldap plötzlich richtig lahm.
Ich lass jetzt den w2k PC laufen und geh dann mal nach Hause.

Aber im Prinzip läuft es.
mamue