• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Samba Rechte Problem

Hallo, ich probiere nun schon ein paar Tage aber es will nicht funktionieren. Ich möchte habe ein Verzeichnis das ich gerne freigeben möchte. In diesem verzeichnis sollen folgende Unix-rechte gelten.

User = sambauser = 5
Group = fileadmins = 7
RoW = Rest = 0

Die Unix-Rechte sind gesetzt und funktionieren wie sie sollen. Habe mittels su - Username getestet ob die Beschränkungen funktionieren.

Ich benutze OpenSuse 10.3 mit Samba 3.0.26a

-------------------------------------------------------------------------------------
In meiner smb.conf versuche ich das so hinzubekommen:

[global]
os level = 200
serverstring = Warlord
workgroup = SPAWN
local master = false
wins support = false
wins server = 192.168.0.3
veto files = /*.eml/*.nws/riched20.dll/*.{*}/
encrypt passwords = Yes
printing = CUPS
socket options = SO_KEEPALIVE IPTOS_LOWDELAY TCP_NODELAY
map to guest = Bad User
time server = false
unix extensions = Yes
security = user
prefered master = no
domain master = no
printcap name = CUPS

share modes = yes
[daten]
path = /mnt/daten/pub
writeable = yes
admin users = root purgatory applejuice
force group = fileadmins

------------------------------------------------------------------------------------

Von einem anderen Linux Rechner (Opensuse 10.3) versuche ich nun als User applejuice auf die Freigabe schreiben zuzugreifen. Das hab ich durch einen fstab Eintrag erledigt.


//192.168.0.5/daten /mnt/daten cifs auto,rw,username=applejuice,password=*******,iocharset=utf8


Nach dem mounten versuche ich auf dem client als User applejuice:


vi /mnt/daten/test.txt


schreib da was rein und speicher ab. Danach modifizier ich die Datei weiter habe dann keinen schreibzugriff mehr. Kann also erstellen, aber die erstellte Datei nicht bearbeiten.

Auf dem Samba Server ist mit aufgefallen das die erstellte Datei nicht vom User appljuice erstellt wurde.


-rwxr--r-- 1 root fileadmins 18 20. Jan 18:41 test.txt


Die Gruppe erzwinge ich ja, aber warum ist der Owner root und nicht applejuice? Durch den Parameter admin users sollte das Bearbeiten doch funktionieren?


Ich hoffe wirklich sehr das mir hier jemand einen Tip geben kann, mir gehen die Ideen aus. Vielen Dank schon mal im Vorraus.
 

stka

Guru
Wenn du nur Linux Rechner hast, würde ich an deiner Stelle NFS nehmen zusammen mit den ACL (setfacl / getfacl )
 

pft

Advanced Hacker
also meines Wissens führt "admin users =" dazu dass die angegebenen client user-ID auf dem Server auf root gemapped werden.

Zum anderen verstehe ich nicht, wie Du die User-IDs zwischen den Unix Systemen verwaltest. Das Mounten allein mit der User-ID "applejuice" sagt doch noch nichts über den username beim Dateizugriff aus, oder?
Gibt es den User denn auf beiden Systemen mit gleicher ID?
 

hauih

Newbie
das hat doch mit Samba nix zu tun ausser du greifst mit einem Windows Rechner darauf zu.
Ausserdem maps du in deiner Smaba.conf den Pfad
/mnt/daten/pub
und
unter Linux arbeitest du unter
/mnt/daten
D.h. jemand der auf die Sambafreigabe zugreift Sieht die Files eh nicht
 
OP
E

Ectoplasma

Newbie
Erstmal vielen Dank für die Antworten, hat bei mir ein wenig gedauert, hatte die letzten Tage aber keine Zeit mehr dafür.


pft schrieb:
also meines Wissens führt "admin users =" dazu dass die angegebenen client user-ID auf dem Server auf root gemapped werden.

Zum anderen verstehe ich nicht, wie Du die User-IDs zwischen den Unix Systemen verwaltest. Das Mounten allein mit der User-ID "applejuice" sagt doch noch nichts über den username beim Dateizugriff aus, oder?
Gibt es den User denn auf beiden Systemen mit gleicher ID?

Ja, du hast recht, durch den Parameter wird der Username auf root umgemapped. Wenn ich den Parameter lösche ist der Ersteller der Datei, der User der sich bei samba authentifiziert hat. Auf die Idee mit den ID´s bin ich auch gekommen. Habe auf den entsprechenden Systemen die User mit den gleichen ID´s erstellt.


hauih schrieb:
das hat doch mit Samba nix zu tun ausser du greifst mit einem Windows Rechner darauf zu.
Ausserdem maps du in deiner Smaba.conf den Pfad
/mnt/daten/pub
und
unter Linux arbeitest du unter
/mnt/daten
D.h. jemand der auf die Sambafreigabe zugreift Sieht die Files eh nicht


Ich glaub du hast da was falsch verstanden. In dem gezeigten Beispiel handelt es sich um zwei Opensuse. Als erstes kommt die Config-Datei des SMB-Servers. Weiter unten siehst du wie ich auf dem Client, der anderen Opensuse, die Freigabe "Daten" ,vom Sambaserver nach /mnt/daten mounte (fstab Eintrag). Iss nix NFS :)

stka schrieb:
Wenn du nur Linux Rechner hast, würde ich an deiner Stelle NFS nehmen zusammen mit den ACL (setfacl / getfacl )

NFS kann ich nicht verwenden, da auch Windows-Clients auf die Dateifreigabe zugreifen, aber auch erste Test mit NFS waren unbefriedigend.


Ich habe nun aber Änderungen an der smb.conf (Server). Damit kann applejuice schreiben und ist auch Owner der Datei. Die Gruppe Fileadmins erzwinge ich weiterhin. Jedoch kann die Gruppe über smb nun die Files nicht löschen, nur der Owner. Obwohl auf Unixebene die Gruppe alles darf (7).

-------------------------------------------------------------------------------------

[global]
os level = 200
serverstring = Warlord
workgroup = SPAWN
local master = false
wins support = false
wins server = 192.168.0.3
veto files = /*.eml/*.nws/riched20.dll/*.{*}/
encrypt passwords = Yes
printing = CUPS
socket options = SO_KEEPALIVE IPTOS_LOWDELAY TCP_NODELAY
map to guest = Bad User
time server = false
unix extensions = Yes
security = user
prefered master = no
domain master = no
printcap name = CUPS
share modes = yes

[daten]
path = /mnt/daten/pub
writeable = yes
force group = fileadmins
create mode = 775
directory mode = 775

-------------------------------------------------------------------------------------


Noch eine Idee?
 

pft

Advanced Hacker
welche Rechte- und Ownereinstellungen haben denn die erzeugten Dateien auf Unix ebene?

Evtl. kann es sein, dass du "create mode" durch "force create mode" ersetzen musst.

Wahrscheinlicher liegt das Problem aber am übergeordneten directory.

Kannst Du noch mal
- Rechte/owner von Dateien und übergeordnetem directory posten (Unixebene: "ls -la /mnt/daten/pub")
- klar zusammen fassen wer was tun können soll, irgendwie fehlt mir der Überblick
 
OP
E

Ectoplasma

Newbie
pft schrieb:
welche Rechte- und Ownereinstellungen haben denn die erzeugten Dateien auf Unix ebene?

Evtl. kann es sein, dass du "create mode" durch "force create mode" ersetzen musst.

Wahrscheinlicher liegt das Problem aber am übergeordneten directory.

Kannst Du noch mal
- Rechte/owner von Dateien und übergeordnetem directory posten (Unixebene: "ls -la /mnt/daten/pub")
- klar zusammen fassen wer was tun können soll, irgendwie fehlt mir der Überblick

Servus, klar mach ich das. Wenn ich eine Datei als User applejuice über Samba erstelle, hat diese dann auf Unixebende folgende Rechte:-

rw-r--r-- 1 applejuice fileadmins 0 24. Jan 15:05 /mnt/daten/Incoming/test.txt

Ein ls -l auf den gewünschten Ordner bringt das Ergebnis:

ls -l /mnt/daten/pub/

dr-xrwx--- 4 sambauser fileadmins 4096 24. Jan 15:05 Incoming
dr-xrwx--- 44 sambauser fileadmins 4096 18. Jan 00:27 Installdateien
dr-xrwx--- 13 sambauser fileadmins 4096 18. Jan 22:21 Mp3´s
dr-xrwx--- 61 sambauser fileadmins 4096 29. Dez 03:51 Video

Noch zur Sicherheit

ls -l /mnt/daten/
dr-xrwx--- 6 sambauser fileadmins 4096 24. Jan 15:12 pub


Zur Erkärung: Sambauser darf nur lesen und ausführen. In der Gruppe Fileadmins befindet sich z.B. der User applejuice.

Wie schon oben beschrieben funktionieren auf Unixebene die Rechte. Wenn ich mich lokal auf dem Sambaserver als der entsprechende User einlogge funktioniert es wie es soll.

Force create Mode probier ich aus...

Danke
 
OP
E

Ectoplasma

Newbie
Force Create Mode hatte keine Auswirkung. Datei wird mit unveränderten Rechten erstellt.

Seltsam.....
 

pft

Advanced Hacker
da stimmt was nicht.

Die Dateien haben die Rechte 644, also ist klar dass die Gruppe fileadmins nicht löschen kann, aber applejuice schon. Aber das ist auch auf Unix ebene so. D.h. diese Aussage kann ich nicht nachvollziehen:
Obwohl auf Unixebene die Gruppe alles darf (7).

Mit force create mode muss das gehen oder ich steh hier auf dem Schlauch. Probier das noch mal und vergiß nicht den erfolgreichen restart vom smbd zu prüfen und eine Datei neu anzulegen.

BTW, das mit pub vs. incoming irritiert, auch wenn ich es im Prinzip verstanden habe. Wenn ich nach Unix-Rechten zur Datein frage würde ich schon gern sicher sein das das die Sicht auf dem Server ist. Was Du auf dem Client siehst ist ja irrelevant.
 
OP
E

Ectoplasma

Newbie
pft schrieb:
da stimmt was nicht.

Die Dateien haben die Rechte 644, also ist klar dass die Gruppe fileadmins nicht löschen kann, aber applejuice schon. Aber das ist auch auf Unix ebene so. D.h. diese Aussage kann ich nicht nachvollziehen:
Obwohl auf Unixebene die Gruppe alles darf (7).

Mit force create mode muss das gehen oder ich steh hier auf dem Schlauch. Probier das noch mal und vergiß nicht den erfolgreichen restart vom smbd zu prüfen und eine Datei neu anzulegen.

BTW, das mit pub vs. incoming irritiert, auch wenn ich es im Prinzip verstanden habe. Wenn ich nach Unix-Rechten zur Datein frage würde ich schon gern sicher sein das das die Sicht auf dem Server ist. Was Du auf dem Client siehst ist ja irrelevant.

Schön, wir verstehen uns. Das ist die Sicht vom Sambaserver. Auf dem Sambaserver per Console ein ls -l. Kann dich aber beruhigen, auch über die Sambaconnection werden die Rechte genauso abgebildet.

Aber so klar ist das mit der Gruppe auch nicht, weil, wenn ich versuche als user applejuice Dateien zu löschen die 570 und Fileadmins als Gruppe haben, geht das auch nicht. Es sieht so aus als könnte das immer nur der Owner.

Bei einer reinen Consolen Session auf Warlord (Sambaserver), direkt auf dem Dateisystem funktionieren die Rechte. Nur über SMB halt nicht...

Selbstverständlich mach ich ein /etc/init.d/smb restart auch die Datei erstelle ich neu....
 

pft

Advanced Hacker
Nein, nein das kann nicht sein.

Auch auf der lokalen Konsole des Servers kann ein User der Gruppe fileadmins der nicht appljuice ist eine Datei löschen mit diesen Rechten:
Code:
rw-r--r-- 1 applejuice fileadmins 0 24. Jan 15:05 /mnt/daten/Incoming/test.txt
Zum Löschen braucht man Schreibrechte auf die Datei und die hat hier nur der Owner und nicht die Gruppe. Ausserdem brauchst Du natürlich Schreibrechte im Directory, weil Du ja den Eintrag für die Datei entfernen musst. Immer alles auf dem Server!

Also entweder hast da was durcheinander gebracht oder ich steige wieder um auf DOS :D
 

stka

Guru
Wenn ich eine Datei in einem Verzeichnis löschen will, brauche ich an der Datei KEINE Rechte aber am Verzeichnis muss ich rwx haben.
Auf alten Unixsystemen reichte es wenn man an dem Verzeichnis die Rechte -w- hatte. Wenn man dann wuste wie eine Datei in dem Verzeich heißt konnte man die löschen, auch wenn man nicht in das Verzeichnis wechseln konnte.
Bei modernen Systemen brauche ich IMMER alle Rechte am Verzeichnis um eine Datei löschen zu können. An der Datei selber keine Rechte.
 
OP
E

Ectoplasma

Newbie
pft schrieb:
Nein, nein das kann nicht sein.

Auch auf der lokalen Konsole des Servers kann ein User der Gruppe fileadmins der nicht appljuice ist eine Datei löschen mit diesen Rechten:
Code:
rw-r--r-- 1 applejuice fileadmins 0 24. Jan 15:05 /mnt/daten/Incoming/test.txt
Zum Löschen braucht man Schreibrechte auf die Datei und die hat hier nur der Owner und nicht die Gruppe. Ausserdem brauchst Du natürlich Schreibrechte im Directory, weil Du ja den Eintrag für die Datei entfernen musst. Immer alles auf dem Server!

Also entweder hast da was durcheinander gebracht oder ich steige wieder um auf DOS :D

Nein, kannst ruhig bei Linux bleiben. :D Hab mich ungenau ausgedrückt.
In dem Verzeichnis liegen bereits Dateien. Die haben als

Owner = sambauser (5)
Group = fileadmins (7)
ROW (0)

Group Fileadmins= ich , applejuice, dbox
sambauser = Standarduser für readonly zeug

Auf der Console, auf dem Sambaserver, kann jedes Mitglied der Gruppe die Dateien löschen die auch diese Rechtevergabe hat.
Die Files die ich über Samba erstelle, werden trotz force create Mode, die Rechte falsch erstellt und die kann ich selbstverständlich erst löschen wenn ich das mit nem chmod gerade gebogen hab.

Aber dann kann ich Dateien immer noch nicht per Samba löschen, editieren...

Verzeichnisse habe wie oben gezeigt Schreibrecht für die Gruppe Fileadmins. Erstellte Verzeichnisse über Samba machen die gleichen Probleme trotz directory mode wie die files....

Ich hoffe die Verwirrung ist nun nicht zu heftig....


VIELEN DANK für die Hilfe..
 

pft

Advanced Hacker
@Ectoplasma
Ich hoffe die Verwirrung ist nun nicht zu heftig....
Doch :(

Im Prinzip mache ich bei mir etwas ähnliches, nur nicht erzwingen einer Gruppe sondern Owner. Ich mache das mit setuid/setgid im directory auf Linux-ebene. So etwas ähnliches geht wohl auch mit "inherit permissions" in samba. Kannst ja mal damit spielen. Ich verstehe aber noch nicht warum "force create mode" nicht gehen sollte.

@stka
Löschen ohne Schreibrechte, dass ist nett :D
Ich habe gerade keinen Zugriff auf ein Linuxsystem, werde es heute abend ausprobieren. Aber es ist zumindest inline zur Doku die ich gestern gecheckt hatte (linuxwiki). Hab das gestern woihl zu oberflächlich gelesen (man liest ja immer was man lesen will und weniger was da steht :) )
 

stka

Guru
Ersteinmal an Ectoplasma: Der pft hat recht, versuche IMMER Rechteprobleme auf Linuxseite zu lösen, das ist erheblich einfacher als über samba. Lass doch alle Benutzer über samba so wie sie sind und arbeite lieber mit setfacl und getfacl und da vor allen Dingen mit den default-acls.
Unter Windows lässt man ja die Freigabeberechtigung ja auch auf "Jeder Vollzugriff" und steuert das über die Dateisystemrechte.

Hier noch eine kurze Erklärung warum das Löschen einer Datei unter Linux auch ohne Rechte an der Datei funktioniert:
Unter Linux / *nix ist alles eine Datei, eine Drucker, eine Maus, ein Textdokument und auch ein Verzeichnis. In einer "Datei" vom Typ Verzeichnis, steht drin, welche Inodes alles in dieses Verzeichnis verlinkt wurden. Wenn ich nun das Schreibrecht an der "Datei" Verzeichnis habe, kann ich diese also bearbeiten und den Link auf die Inode entfernen. Dadurch wird dann der Eintrag aus der Inodtabel in dem Verzeichnis gelöscht. Nicht aber die Datei (physikalischer Speicherplatz) selber, es sei denn, es ist der letzte hardlink auf die Datei. Das kann man an dem Linkzähler erkennen. Deshalb brauche ich keine Rechte an der Datei um diese löschen zu können.
Wenn jetzt einer kommt und seinen Senf dazu geben möchte nach dem Motto "Da fehlt aber noch was, das ganze ist viel komplexer" das weiß ich auch, ich finde aber das hier reicht um zu etwas zu verstehen was da passiert.
 

pft

Advanced Hacker
Hi,

ich habe da noch eine Idee warum das mit dem rechtesetzen nicht klappt.
Ich kann leider grad nix ausprobieren.

Aber wie stka ja ausdrücklich und zu Recht betont werden erst Samba-direktiven umgesetzt und dann die die UNixsettings. Also werden erstere im Zweifel von letzteren überschrieben.

Es könnte also sein, dass Du mit force create mode" etwas auf Samba-ebene erzwingst was dann gleich wieder auf Linux-ebene durch umask settings überschrieben wird. Typischerweise sind die ja oft auf 022 gesetzt, was genau zu einem Ergebnis führen sollte.

Also: probier mal "umask=000"
Wenn es geht und du damit leben kannst damn lass gut sein.
Wenn nicht dann mach das alles über Linux-rechte (setuid, setgid oder auch acl). Das ist im Zweifel,besser, einfacher und auch leichter zu debuggen.
 
stka schrieb:
Bei modernen Systemen brauche ich IMMER alle Rechte am Verzeichnis um eine Datei löschen zu können.
Nur +w und +x.
Code:
12:51 ccgmbh:/dev/shm > rf foo/bar
12:51 ccgmbh:/dev/shm > ls -dl foo
d-wx------ 2 jengelh users 40 2008-01-25 12:51 foo
 

hauih

Newbie
bei mir sieht das so aus:

smb.conf:

[einkauf]
comment = Einkauf und Beschaffung
path = /einkauf
read only = no
valid users = root,admin,+einkauf,+user
read list = +user,+einkauf
force group = einkauf
write list = +einkauf
force create mode = 02774
force directory mode = 02774
hide files = aquota.group/aquota.user/
msdfs proxy = no
security mask = 02774
force security mode = 02774
directory security mask = 02774
create mask = 02774
directory mask = 02774
admin users = root,admin


verzeichnis:
dr-srwx--- 7 root einkauf 4096 Jan 24 10:23 einkauf
 
OP
E

Ectoplasma

Newbie
Hallo zusammen,

ich habe nun noch ein wenig rumprobiert. Ich lass es euch zu erzählen was für seltsame Dinge passieren wenn man derzeit über samba Dateien oder Ordner erstellt. Ich kann euch sagen, nicht nur ihr seit verwirrt. :) Habt ihr ne einfache conf für mich die von samba aus alles erlaubt und ich alles über Linux Rechte regel?

pft schrieb:
Es könnte also sein, dass Du mit force create mode" etwas auf Samba-ebene erzwingst was dann gleich wieder auf Linux-ebene durch umask settings überschrieben wird. Typischerweise sind die ja oft auf 022 gesetzt, was genau zu einem Ergebnis führen sollte.

Also: probier mal "umask=000"

Hab ich probiert,auf dem Client den Parameter in der fstab eingefügt, keine Änderung.

stka schrieb:
Ersteinmal an Ectoplasma: Der pft hat recht, versuche IMMER Rechteprobleme auf Linuxseite zu lösen, das ist erheblich einfacher als über samba. Lass doch alle Benutzer über samba so wie sie sind und arbeite lieber mit setfacl und getfacl und da vor allen Dingen mit den default-acls.

Nichts lieber als das. genau das war mein Bestreben. Jedoch funkt mir samba immer dazwischen. Leider sagen mir die Parameter getfacl,setacl und defaulacl gar nichts. Da muss ich noch mal nachlesen. Wird in der manpage von samba stehen....

stka schrieb:
Unter Windows lässt man ja die Freigabeberechtigung ja auch auf "Jeder Vollzugriff" und steuert das über die Dateisystemrechte.

Dem kann ich nicht ganz zustimmen, aber in meinem Fall will ich es ja genau so. :(

pft schrieb:
.... Ich verstehe aber noch nicht warum "force create mode" nicht gehen sollte.

Ich auch nicht... :)

Wünsch allen eine schönes Wochenende....
 
OP
E

Ectoplasma

Newbie
hauih schrieb:
bei mir sieht das so aus:

smb.conf:
.....

verzeichnis:
dr-srwx--- 7 root einkauf 4096 Jan 24 10:23 einkauf

Habe deine Config ausprobiert. Doch die funktioniert auch nicht bei mir. Mit der Config kann ich gar nicht auf die Freigabe zugreifen. Wenn ich den Parameter "msdfs proxy = no" auskommentiere kann ich wieder lwie mit meiner Config auf die Freigabe zugreifen. Das heisst lesen, schreiben... Kann aber immer noch nicht die Dateien löschen mit Linuxrechte vergabe 570. Ich habs echt ausprobiert. Die bekomme ich nur gelöscht wenn das File 770 hat. Auch wenn der Owner nicht Mitglied der Grupe fileadmins ist. Solange der Owner ein Samba-Benutzer ist und Linuxrechte 770 gehts. Für mich total unlogisch. Und das nun in 2 verschiednen Configvarianten.

In deinem Configfile verwundert mich noch etwas. Warum benutzt du eine 5 stellige "create mode" usw? 4 Stellen bekomme ich zusammen und kann mir was drunter vorstellen, aber was ist denn die fünfte in der Linuxwelt?
 
Oben