PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Samba Rechteverwaltung Problem



matrix1977
28.05.04, 19:21
Hallo,

ich hab anscheindend den Samba noch nicht verstanden !
Mein Problem:
Ich hab einen Linux-Server und mehrere WindowsXP Clients. Auf dem Linux-Server läuft Samba und ich hab in die "global section" eingetragen, dass Verzeichnisse und Dateien mit den Rechten 777 angelegt werden sollen, ich hab's auch noch mal bei den einzelnen Shares dazugeschrieben. Wenn nun die ganzen WindowsXP-Clients darauf zugreigen, funktioniert auch alles wunderbar, jeder kann mal einen Ordner anlegen und jeder beliebiger anderer kann in diesen Ordner Datein ablegen oder sogar den Ordner löschen usw, also rwx für den User und rwx für die Gruppe funktioniert einwandfrei. Gehe ich jedoch mit einem LinuxClient an den Samba heran (einer der WindowsXP Rechner hat auch Linux installiert, und er mountet beim booten die Samba-Shares) dann klappt das mit der Rechtevergabe nicht so einfach, denn der User am Linux-Rechner ist nicht der Eigentümer des Ordners den er anlegt auf einem Samba-Share, sondern als User wird die UID vergeben und zwar die, die der User auf dem Linux-Server hat. Diese ist eine andere als der User auf dem Linux-Client hat, damit kann der User in seinen selbst angelegten Ordner keine Dateien ablegen, weil er nicht der Eigentümer ist und keine Schreibrechte hat, da er zwar der richtigen Gruppe angehört aber die 777 Einstellung vom Samba irgendwie auf einmal uninteressant ist, denn mit dem LinuxClient hab ich nur 755, damit also keine Schreibrechte für die Gruppe. Somit bin ich kein Eigentümer, gehöre nur der richtigen Gruppe an, die aber keine Schreibrechte hat. Was mache ich hier falsch ??

Gruß
matrix1977

matrix1977
28.05.04, 22:41
ok, ich geb mal zum besseren Verständnis noch ein paar Sachen an:

in der smb.conf hab ich unter anderem in der global section
create mask = 0777
directory mask = 0777

was auch mit WindowsXP Clients hervorragend funtkioniert, wenn also ein WinXP Client auf einem Samba Share einen Ordner anlegt, dann hat der rwxrwxrwx Rechte.
Der Linux-Client mountet über die /etc/fstab beim booten die Samba Shares mit
//linux-server/share /mnt/samba/share smbfs uid=1000,gid=100,fmask=777,dmask=777,workgroup=...

Trotzdem hat ein Ordner, den der LinuxClient-User auf dem Samba Share anlegt nur 755 und dummerweise hat der LinuxClient-User die UID 1000, auf dem LinuxServer aber hat das UserKonto die UID 1001, und Samba vergibt nun dem angelegten Ordner die UID=1001. Damit bin ich direkt nach dem Anlegen des Ordners nicht mehr Eigentümer. Äußerst dämlich, denn die Gruppe users ist zwar OK, aber leider hat die Gruppe nur 5, also r-x Rechte, damit kann ich also keine Dateien im Ordner ablegen, mir fehlen ja die Schreibrechte.
Mir würde eigentlich eine Lösung gefallen, mit der ich als User auf dem LinuxClient Dateien und Ordner auf dem Samba Share mit 777 oder aber wenigsten 775 anlegen kann.

Gruß
matrix1977

dermartn
29.05.04, 09:17
hi,
vielleicht hilft dir ein "force user = ..." in der smb.conf.
damit zwingst du dann alle user, die auf shares (ggf. auch nur eine bestimmte freigabe) zugreifen, das sie automatisch ein bestimmter user sind.
so sollte dein vorhaben funzen ;)

- dermartn

matrix1977
29.05.04, 18:01
hmm, genau das macht er ja richtig, also nochmal ein Beispiel
auf dem Linux-Server, auf dem Samba läuft sind der Standard-Benutzer und 2 weitere Nutzer, die über das LAN auf die Samba-Shares zugreifen angelegt. Das sieht dann so aus:

Benuzter 1: Otto UID=1000
Benuzter 2: Hans UID=1001
Benutzer 3: Franz UID=1002

Jetzt haben Hans und Franz einen jeweils einen WindowsXP Rechner und greifen auf die Samba-Shares zu unter WindowsXP, sagen wir mal Franz legt einen Ordner an, auf dem Linux-Server hat dann der Ordner die Rechte 777, er gehört dem User 1002 und die Gruppe ist 'users' ! So ist alles perfekt, denn so kann jeder da was reinkopieren oder den Ordner löschen, weil alle der Gruppe 'users' angehören und die ja rwx Rechte hat.
Jetzt startet der Franz aber Linux statt Windows, auf dem Linux-System ist er der einzige Nutzer, also hat er da die UID=1000. Und nun legt er wieder auf dem Samba-Share einen Ordner an, und wieder ist der Eigentümer des Ordners die 1002, und wieder ist die Gruppe 'users', aber diesmal sind die Rechte nur 755. Wo zur Hölle steht, dass er Ordner mit 755 anlegen soll ?? Ich hab überall 777 eingetragen wo man es nur eintragen kann ....
Das Problem ist jetzt, das der Linux-Client und der Linux-Server mit ihren UID's in die Quere kommen, denn Franz hat ja eigentlich die UID=1000, der Ordner aber 1002, damit hat Franz keine Schreibrechte in seinem selbst angelegten Ordner.
Also die Zuordnung des Users hat schon korrekt funktioniert, denn Samba hat immerhin geschnallt, das Franz da einen Ordner anlegen will, und gesehen, dass der lokal die 1002 hat und dementsprechend den Eigentümer gesetzt. Unter Windows klappt das auch wunderbar, da hat Franz ja keine UID (gibts ja so nicht unter Windows), da wird Franz immer wieder mit seinem Namen 'Franz' identifiziert, und kann deswegen in den Ordner Dateien ablegen, und ausserdem hat ja die Gruppe auch noch Schreibrechte, somit kann dann auch Hans was da rein kopieren. Unter Linux aber identifiziert der Samba den User aber anscheinend über die UID, und die ist nunmal beim Franz 1000, der Ordner hat nun aber 1002, und die Rechte sind auch nur 755, damit ist die Schreibmöglichkeit über die Gruppenrechte auch hinfällig.....

was nun ?

Gruß
matrix1977

dermartn
29.05.04, 22:22
hi,
also ich glaube das ich dich richtig verstanden habe.
aber wenn du mit "force user = ..." oder "force group = ..." arbeitest, dann können theoretisch alle benutzer als ein (server-)system-user bzw. als eine gruppe auf dem server auftreten. und damit müssten alle probleme gelöst sein. dann dürfen die user bzw. gruppenmitglieder (sofern die rechte da sind) alles!

- dermartn

matrix1977
30.05.04, 11:52
sorry, das bringt nix, aber egal ich habs trotzdem mal gemacht, ich hab einen User angelegt und den mit 'force user' in die smb.conf eingetragen. Das klappt auch, wenn ich jetzt einen Ordner auf den Samba-Share anlege, dann ist der Eigentümer des Ordners der User, der mit 'force user' angegeben wurde. Doch auch dieser Ordner hat nur die Rechte 755, d.h. die Gruppe hat keine Schreibrechte. Wenn ich jetzt einen weiteren Ordner in diesem bereits angelegten Ordner erstellen will, dann darf ich dass nicht, denn ich bin ja nicht der Eigentümer, der ist ja dieser spezielle User, den ich mit 'force user' angegeben hab, über die Gruppenrechte müsste ich schreiben können, doch er legt neue Ordner nur mit 755 an, statt mit 777 obwohl ich ÜBERALL wo geht, 777 als directory mask / dmask angegeben hab.
Ich muss das mit den Rechten in den Griff kriegen, nur darüber gehts.

Gruß
matrix1977

P.S.: Oder hab ich Dich jetzt falsch verstanden ?

matrix1977
30.05.04, 18:49
OK, die Lösung ist gefunden :-)

in der smb.conf muss noch force directory mode = 0777 und force create mode = 0777 rein. Das war's
Denn der Samba macht eine logische AND Verknüpfung mit der umask des Linux-Nutzers, und da die nunmal per default 755 ist, kam da auch immer wieder 755 raus (bitAND(777,755)=755), wenn man aber nun noch 'force directory mode = 0777' angibt, dann macht er nochmal eine logische OR Verknüpfung, und da kommt dann das raus, was ich haben wollte, nämlich 777 (bitOR(777,bitAND(777,755))=777). Analog dazu verhält es sich mit der create mask und dem force create mode für Dateien.
Trotzdem danke an alle, die sich Gedanken gemacht haben :-)

Gruß
matrix1977