7Saturn
Anmeldungsdatum: 4. Juli 2013
Beiträge: 45
|
Hier rennt auf einer echten Maschine ein Ubuntu 14.04 mit dem dort aktuellen Samba. Dort habe ich schon seit geraumer Zeit Freigaben so eingerichtet, dass die auf dem dortigen NTFS-Laufwerk (USB-Platte, sollte auch an einem Windows ohne extra Software laufen...) liegenden Dateien dem Client mit Ausführbar-Recht angeboten werden. Mittel- bis langfristig soll neue Hardware für den Server her, wo dann diese Platte fest verbaut sein und EXT4 haben soll. Und auch ein neueres Ubuntu 16. Damit könnte man sich, so meinte ich zumindest, diese Geschichte mit X-Bit für alles sparen. Deshalb habe ich das mal zum ausprobieren in eine VM installiert und versucht, das zu erreichen, was ich ursprünglich schon haben wollte: Der Samba-Server soll die Dateien von ihren Rechten her genau so anbieten, wie er sie auf dem Server vorfindet. Also nur die Dateien, die dort bewusst mit X-Bit versehen sind, sollen auch als ausführbar vom Client gesehen werden. Der Rest nicht ausführbar. Es liegen einige Skripte dort, die ich gerne von dort direkt starten möchte, ohne erst davor stellen zu müssen. Aber z. B. Text-Dateien sollen eben gerade nicht ausführbar sein, weil der Filemanager (auch Ubuntu) sonst beim Öffnen jedes mal extra nachfragt, was er damit machen soll. Ich krieg's nur irgendwie nicht hin. Entweder ich setze die UMASK so, dass alles ausführbar ist, oder aber eben nichts (der jetzige Server mit dem 14er Ubuntu). Andere Alternative ist, dass er gar keine Rechte an den Client weiter gibt (so sieht das momentan aus, mit den Freigaben auf dem 16er in der VM ohne dass ich eine mask verwende). Beides ist nicht was ich will. NFS wollte ich eigentlich auch nicht auspacken, weil Windows das ja auch nicht unbedingt von sich aus mit macht.
|
Max-Ulrich_Farber
Anmeldungsdatum: 23. Januar 2007
Beiträge: 7992
|
Dort habe ich schon seit geraumer Zeit Freigaben so eingerichtet, dass die auf dem dortigen NTFS-Laufwerk (USB-Platte, sollte auch an einem Windows ohne extra Software laufen...) liegenden Dateien dem Client mit Ausführbar-Recht angeboten werden
Bei NTFS-Partitionen ist immer die erste Frage: Wie ist diese Partition auf dem Server eingebunden (gemountet)? Sie sollte über einen Eintrag in /etc/fstab statisch gemountet sein, und zwar möglichst mit den Optionen permissions und evtl. noch acl (siehe dazu aich NTFS-3G). Dann lässt sie sich ganz wie eine Partition mit einem Original UNIX-Dateisystem (ext3|4) behandeln. So kannst Du dann alles realisieren, wie Du es wünschst. Und bei einem späteren eventuellen Wechsel auf ext4 kann das meiste unverändert bleiben. NFS wollte ich eigentlich auch nicht auspacken
Ist auch gar nicht nötig. Mit Samba kommt Windows weit besser klar. Gruß – Max-Ulrich
|
7Saturn
(Themenstarter)
Anmeldungsdatum: 4. Juli 2013
Beiträge: 45
|
Max-Ulrich_Farber schrieb: Dort habe ich schon seit geraumer Zeit Freigaben so eingerichtet, dass die auf dem dortigen NTFS-Laufwerk (USB-Platte, sollte auch an einem Windows ohne extra Software laufen...) liegenden Dateien dem Client mit Ausführbar-Recht angeboten werden
Bei NTFS-Partitionen ist immer die erste Frage: Wie ist diese Partition auf dem Server eingebunden (gemountet)?
Genau so: UUID=7854796E5479304C /home/martin/nas ntfs uid=1000,umask=0000,auto,strictatime,errors=continue 0 0
Sie sollte über einen Eintrag in /etc/fstab statisch gemountet sein, und zwar möglichst mit den Optionen permissions und evtl. noch acl (siehe dazu aich NTFS-3G).
Sehe ich mir noch mal an.
Dann lässt sie sich ganz wie eine Partition mit einem Original UNIX-Dateisystem (ext3|4) behandeln. So kannst Du dann alles realisieren, wie Du es wünschst.
Der Punkt ist: Auf der VM, in der ja ein EXT4 auf der lokalen Systemplatte verwendet und ein Ordner davon via SMB freigegeben wird, ist das dann ja offensichtlich bereits OK. Und da hatte ich den Effekt, dass ich gar keine Rechte auf dem Client sehen könnte (wurde im entsprechenden Reiter einfach als nicht bekannt deklariert).
Und bei einem späteren eventuellen Wechsel auf ext4 kann das meiste unverändert bleiben.
Das wäre natürlich richtig angenehm. =)
NFS wollte ich eigentlich auch nicht auspacken
Ist auch gar nicht nötig. Mit Samba kommt Windows weit besser klar.
So war auch mein Denken. Nur wie ich das so konfe, dass der Client die Rechte auch genau so sieht, wie sie der Server sieht, das habe ich noch nicht ganz verstanden.
|
Max-Ulrich_Farber
Anmeldungsdatum: 23. Januar 2007
Beiträge: 7992
|
Nur wie ich das so konfe, dass der Client die Rechte auch genau so sieht, wie sie der Server sieht, das habe ich noch nicht ganz verstanden.
Da musst Du für einen Linux- und einen Windows-Client verschieden verfahren:
Linux-Clients: Mit dem GVFS geht das nicht. Das GVFS wird standardmäßig von den Dateimanagern zum "Einbinden per Mausklick" verwendet. Beim cifs-vfs und bei smbclient sind hingegen die cifs-UNIX-Extensions standardmäßig aktiviert, und damit geht es. Für Windows-Clients sind die UNIX-Extensions unwirksam. Das ist verständlich, weil ja Windows die UNIX-Dateirechte gar nicht kennt. Du kannst aber seit Samba 4.0 auf dem Windows-Client für die freigegebenen Ordner ACL setzen. Diese werden dann von Samba auf dem Server in POSIX-ACL gemappt.
Leider gibt es bisher noch kein einheitliches Verfahren für UNIX- und Windows-Clients. Ob dies überhaupt möglich wäre, weiß ich nicht. … Und da hatte ich den Effekt, dass ich gar keine Rechte auf dem Client sehen könnte (wurde im entsprechenden Reiter einfach als nicht bekannt deklariert).
Da hattest Du die Freigaben vermutlich auf dem Client mittels GVFS eingebunden oder unbeabsichtigt auf dem Server die UNIX-Extensions deaktiviert (?).
|
7Saturn
(Themenstarter)
Anmeldungsdatum: 4. Juli 2013
Beiträge: 45
|
Hui, stimmt. Daran habe ich noch gar nicht gedacht, dass es einen Unterschied machen kann, ob man per Mausklick SMB-Freigaben nutzt, oder (wie bei mir eingerichtet) einen festen mountpoint im Dateisystem zuweist. In erster Linie geht es mir eigentlich darum, mit meinen Linux-Clients zu arbeiten. Unter Windows dürfte es ja keinen Unterschied für die Ausführbarkeit von Batch-Skripten oder exe-Binaries machen, ob da ein X-Bit gesetzt ist, oder nicht. Für Linux dagegen hätte ich diese Unterschiedung gerne auf Dateibasis, eben wegen oben genanntem Unterschied zwischen x-beliebigen Text-Dateien und tatsächlichen Skripten. Dann nur um sicher zu gehen, dass ich es richtig verstanden habe: Für feste Mountpoints, via cifs-vfs sollten die Dateirechte so widergespiegelt werden, wie sie der Server sieht? Muss ich dem Samba-Server das noch mal extra sagen, dass er die durch reicht, oder war das der angesprochene Hinweis mit permissions und acl Optionen? Dann würde ich nämlich etwas weiter basteln, um das mal so auszuprobieren: Aktuell ist es so, dass ich lokal auf dem Client in der fstab diesen Eintrag habe:
//192.168.0.1/martin /home/martin/NAS cifs users,rw,exec,credentials=/home/martin/.smbcredentials 0 2 Darüber wird das üblicherweise eingebunden. Meine Tests mit der VM dagegen waren dynamisch, also über Nautlius die Freigabe der VM als smb:// zugegriffen. Damit funktioniert es dann also nicht, weil eben nicht cifs verwendet wird(?).
|
Max-Ulrich_Farber
Anmeldungsdatum: 23. Januar 2007
Beiträge: 7992
|
Dann nur um sicher zu gehen, dass ich es richtig verstanden habe: Für feste Mountpoints, via cifs-vfs sollten die Dateirechte so widergespiegelt werden, wie sie der Server sieht? Muss ich dem Samba-Server das noch mal extra sagen, dass er die durch reicht, oder war das der angesprochene Hinweis mit permissions und acl Optionen?
Ich glaube, da vermischst Du noch zwei Dinge:
Wenn beim statischen Mounten der NTFS-Partition auf dem Server die Optionen permissions und acl gesetzt werden, dann kann man die NTFS-Partition wie eine Partition mit ext3|4 behandeln, d.h. mit chown und chmod (bzw. mittels Dateimanager) die Dateirechte passend festlegen bzw. verändern. Sonst geht das bei NTFS nicht. Mit Samba hat dies primär noch nichts zu tun. Wenn man in der Datei smb.conf nichts Gegenteiliges einträgt, dann sind auf dem Server die cifs-UNIX-Extensions standardmäßig aktiviert. Wenn man die Freigaben auf dem Client mittels cifs-vfs einbindet (z.B. mittels Eintrag in fstab) und dabei nicht die Option nounix einträgt, dann werden die Dateirechte zwischen Server und Client 1:1 übernommen, und zwar in beide Richtungen. Voraussetzung ist allerdings, dass die numerischen Werte der UID und ggf. GID für die betreffenden Benutzer auf dem Server und dem Client gleich sind. Bei NTFS muss außerdem auf dem Server die Option permissions gesetzt sein. Mit dem GVFS und bei Windows-Clients funktioniert dies nicht. Und die Mount-Option nounix unterbindet beim cifs-vfs auf dem Client für einzelne Freigaben die UNIX-Extensions.
|
7Saturn
(Themenstarter)
Anmeldungsdatum: 4. Juli 2013
Beiträge: 45
|
Zumindest einen Teilerfolg habe ich inzwischen. =) Beim Punkt 1 scheint es noch Schwierigkeiten zu geben. Momentan reicht das permissions allein nämlich nicht aus, denn wenn ich über chmod oder Nautilus die Rechte zu verändern versuche, juckt ihn das weder vom Client noch vom Server aus. Für den EXT-Teil drum rum (das NTFS ist mitten rein gemountet) scheint es aber sauber zu klappen. Muss also wohl an der Art und Weise liegen, wie das NTFS behandelt wird. Aber was ich so lese, muss ich »nur« ein Mapping des Users von Linux zum User von Windows machen, dann sollte ich auch wieder frei die Rechte setzen können. Oder kann ich auch einfach die alten Rechte weg hauen? Denn die Platte wird momentan eigentlich nur zum Sichern an Windows betrieben. Da sind mir Rechte unter Windows eher egal. Zu 2.: Dachte ich mir. Daran hätte ich auch sicher nicht geschraubt, denn das wollte ich ja von Anfang an. Beim ersten Mal war ich einfach nur zufrieden, dass ich es überhaupt so weit bekommen habe. Da wäre das X-Bit-Zeug nur das i-Tüpfelchen gewesen. Aber das möchte ich beim nächsten System besser machen (können). 3.: Das Detail mit den User-IDs wusste ich noch nicht. Danke. Das muss ich dann berücksichtigen. Momentan tut es aber wie es soll. P. S.: Gibt es eigentlich eine Möglichkeit, Binnen-Code-Blöcke im Forum anzulegen? Also nicht immer mindestens eine ganze Zeile. Z. B. das »permissions« von oben in Monospace, aber eben nicht als eigene Zeile sondern im Fließtext.
|
Max-Ulrich_Farber
Anmeldungsdatum: 23. Januar 2007
Beiträge: 7992
|
Gibt es eigentlich eine Möglichkeit, Binnen-Code-Blöcke im Forum anzulegen?
Ja. Einfach den Text in 3 geschweifte Klammern einschließen: {{{ Text }}} . Siehe auch Codeblock. Momentan reicht das permissions allein nämlich nicht aus, denn wenn ich über chmod oder Nautilus die Rechte zu verändern versuche, juckt ihn das weder vom Client noch vom Server aus
Das müsste funktionieren. Natürlich müssen dann alle widersprechenden Optionen für uid, gid, file_mode und dir_mode weg. Wie sieht denn der fstab-Eintrag für die NTFS-Partition auf dem Server aus? Das Detail mit den User-IDs wusste ich noch nicht.
Das ist auch nur dann von Bedeutung, wenn man die UNIX-Extensions verwendet (genau wie bei NFS). Aber was ich so lese, muss ich »nur« ein Mapping des Users von Linux zum User von Windows machen, dann sollte ich auch wieder frei die Rechte setzen können.
Ein echtes Mapping (nötig, damit Windows und Linux beim direkten Zugriff gegenseitig die Rechte anerkennen) ist ein bisschen kompliziert. Doch hier genügt auch ein "Schein-Mapping". Dieser Weg ist vor allem für USB-Sticks, die man nicht statisch einbindet, praktisch.
|
7Saturn
(Themenstarter)
Anmeldungsdatum: 4. Juli 2013
Beiträge: 45
|
Max-Ulrich_Farber schrieb: Gibt es eigentlich eine Möglichkeit, Binnen-Code-Blöcke im Forum anzulegen?
Ja. Einfach den Text in 3 geschweifte Klammern einschließen: {{{ Text }}} . Siehe auch Codeblock.
OK, dann mal ein Versuch . OK, »binnen« passt nicht so ganz.
Momentan reicht das permissions allein nämlich nicht aus, denn wenn ich über chmod oder Nautilus die Rechte zu verändern versuche, juckt ihn das weder vom Client noch vom Server aus
Das müsste funktionieren. Natürlich müssen dann alle widersprechenden Optionen für uid, gid, file_mode und dir_mode weg. Wie sieht denn der fstab-Eintrag für die NTFS-Partition auf dem Server aus?
So: UUID=7854796E5479304C /home/martin/nas ntfs uid=1000,auto,strictatime,acl,permissions,windows_names,errors=continue 0 0
Ich verstehe das dann also so, dass die uid noch weg muss?
Das Detail mit den User-IDs wusste ich noch nicht.
Das ist auch nur dann von Bedeutung, wenn man die UNIX-Extensions verwendet (genau wie bei NFS). Aber was ich so lese, muss ich »nur« ein Mapping des Users von Linux zum User von Windows machen, dann sollte ich auch wieder frei die Rechte setzen können.
Ein echtes Mapping (nötig, damit Windows und Linux beim direkten Zugriff gegenseitig die Rechte anerkennen) ist ein bisschen kompliziert. Doch hier genügt auch ein "Schein-Mapping". Dieser Weg ist vor allem für USB-Sticks, die man nicht statisch einbindet, praktisch.
OK. Also lasse ich das erst mal außenvor.
|
7Saturn
(Themenstarter)
Anmeldungsdatum: 4. Juli 2013
Beiträge: 45
|
Klappt jetzt, so wie ich mir das vorstelle. Danke!
|