Datei-Besitzer / Zugriffsrechte am Client ändern Seltsames Verhalten von Samba

O

okidokibaby

Grünschnabel
Hallo Linux-Gemeinde, seit einigen Wochen beschäftige ich mich intensiv mit Ubuntu, bislang recht zufriedenstellend, habe viel gesucht und gelesen und größtenteils erfolgreich umgesetzt. Dennoch komme ich bei einem Problem schon seit 5 Tagen nicht weiter:

Ich habe 2 Rechner mit Ubuntu 10.04 aufgesetzt, auf dem einen ist Samba-Server installiert und dort ist ein Ordner freigegeben.

Im zweiten Ubuntu Rechner (Client) wird dieser freigegebene Ordner per sudo mount -t smbfs -o username=user,password=pwd //192.168.152.1/freiordner /media/ntzl als netzlaufwerk ntzl gemountet.

Man kann die Dateien sehen, öffnen, löschen und kopieren. Soweit, so gut. Ich kann auch problemlos die Lese/Schreibrechte der Dateien ändern.

Wenn ich allerdings versuche im Gnome (als root) oder per sudo chown.... den Besitzer oder die Gruppe von einer Datei oder Unterordner zu ändern wird die Änderung/Zugriff verweigert. Die cifs-UNIX-Erweiterungen sind eingeschaltet.

Den gleichen Fehler habe ich auch wenn das mounten automatisch läuft über einen Eintrag in der fstab.

In der Wiki steht: Sind die CIFS-UNIX-Erweiterungen aktiv (auf dem Samba-Server: unix extensions = yes, Standard), so werden die echten Besitz- und Zugriffsrechte zwischen Server und Client übertragen. Ändert man auf dem Client mittels chmod oder chown oder über den Eigenschaften-Dialog der GUI die Rechte, ist die Änderung ebenso auch auf dem Server und auf allen anderen Clients wirksam, die auf die Freigabe zugreifen.

Ich habe es nach mehreren Tagen herumprobieren geschaft, dieses Problem teilweise zu beheben: Es funktioniert NUR wenn ich auf dem Samba-Server einen Samba-Benutzer mit dem Unix-Namen root und Windows-Namen root eintrage dazu noch ein passwort. Beim mounten des Client wird als username root mit dem passwort verwendet. Dann kann ich als root den Dateibesitzer und die Gruppe ändern. Diese Änderungen werden dann auch auf dem Server übernommen.

Es kann aber nicht angehen, dass ich mich überall als root anmelde.

Was mache ich falsch ?

Ich hoffe, ich habe mein Problem verständlich dargestellt.

Kann mir bitte jemand helfen ?

Viele Grüße okidokibaby
 
Probiers vielleicht mit cifs, statt smbfs.

Verwend root nicht als user, user sachen sind usersachen und root macht admin zeug, misch das nicht damit schaffst du dir nur Probleme.

Du solltest dir auch fuse ansehen, damit kannst du echt als user mounten.
 
@marcellus
Danke für die Hinweise, die ändern aber leider am Problem nichts. Jetzt gehört der user der Gruppe fuse an.
Mounten konnte ich als user auch vorher.
Es geht ausdrücklich um Änderung der Besitzrechte, weil manche Programm nur dann laufen, wenn sie als Besitzer der Dateien eingetragen sind.
Ich habe bislang bei mir folgendes festgestellt - bitte korrigieren wenn ich falsch liege:
1. Auf einem Linuxsystem darf ausschliesslich der root die Besitzerrechte einer lokalen Datei oder eines lokalen Ordners ändern.
2. Bei einem eingehängten Netzlaufwerk (samba-server), das durch einen user gemountet wurde kann NICHT EINMAL root den Besitzer oder die Gruppe ändern geschweige der user selbst.
3. Beim mounten kann man die cifs-UNIX-Erweiterungen umgehen, indem man uid=.... und gid=.... setzt. Ändern kann man anschliessend trotzdem nichts.

Ich möchte / muss aber die Attribute ändern können, und ich habe das nur geschaft, wie ich im ersten Beitrag beschrieben habe.
Es ist aber nicht im Sinne des Erfinders, dass ich alles als root mache oder ?

Danke schon für mögliche Antworten und einen schönen 2. Advent
 
  1. nein
    Jeder user mit den passenden Zugriffsrechten darf dateien ändern.

    Als test:
    Code:
    touch blah
    ls -alh blah
    chmod 777 blah
    ls -alh blah
    chmod 000 blah
    ls -alh blah
    rm blah
  2. jein

    Du musst unterscheiden zwischen dem lokalen user und dem remote user. Du kannst komplett unterschiedliche usernamen, uids, pids und Zugriffsrechte haben auf deinem remote server.

    Wenn du ein samba share als user A mountest hast du auf dem lokalen System maximal die Zugriffsrechte von user A und lokal irgendwas als root zu machen bringt nichts, die daten gehören dem remote server und dem ist dein lokalen root zugang egal.

  3. nein

    Wenn du uid=...,gid=... wird der Besitzt vom mount an den User übergeben, das funktioniert aber auch zb mit einem cd laufwerk und hat mit samba im speziellen nichts zu tun

Fuse solltest du dir ansehen, das hat mit dem mount Befehl, den du kennst nichts zu tun.

Ich weiß nicht genau wo es jetzt hakt, aber da wird dir niemand helfen können, solang du nicht die /etc/fstab postest, die Befehle, die du verwendest, um zu mounten, eine liste mit usern, wo dabeisteht welcher user auf welchem pc was macht, die Berechtigungen vom mount und sonst noch alles, was dir nützlich vorkommt.

Bitte verwend
Code:
 tags
 
wow... ich selber habe einen Linux-server und Samba am laufen...

und erst jetzt wo ich das Problem lese, fällt es mir auf. Stimmt... bei mir ist es ebenfalls so..

greifst du denn von Windows-Dosen auf diese Dateien zu ?.. Wenn nicht empfehle ich dir eher NFS zu verwenden anstatt SMB.

Code:
Ein NFS-Server ohne Secure-RPC exportiert Dateisysteme an bestimmte andere Rechner (von root durch IP-Adressen festgelegt), d. h. der root-User eines Clientrechners kann auf alle Dateien zugreifen, die der Server an den Client exportiert, unabhängig von deren Zugriffsrechten. Die Zugriffsrechte (der Benutzer) werden von NFS an den Client mitübertragen und vom Betriebssystem des jeweiligen Rechners ausgewertet und gegenüber den Benutzern durchgesetzt. Die Konsistenz der Benutzerdatenbank auf den beteiligten Rechnern wird dabei z. B. durch NIS erreicht

Quelle = http://de.wikipedia.org/wiki/Network_File_System
 
Zuletzt bearbeitet:
@marcellus
Danke noch mal für die Tips. Ich werde diese Punkt für Punkt abarbeiten und schauen, was passiert. Meine fstab werde ich auch posten.

@faber38
Noch bin ich am experimentieren. Ziel ist es einen vorhanenen, als Windows-Server dienenden Win-XP -PC zu ersetzen. Darauf sollen auch Win-Maschinen greifen , denn komplett auf Windows kann ich zu meinem Bedauern nicht verzichten. Es gibt einige Programme, die nur auf Windows laufen (und wine will ich voererst nicht). Deshalb samba.
 
@marcellus
Zum Punkt 1.
das mit dem chmod ist alles klar und funktioniert wie es soll. Mein Problem ist aber chown. Den Dateibesitzer kann ich nur als Administrator und nur mit sudo chown ändern.

Zum Punkt 2. folgendes Konstrukt:
Auf dem Client ist ein Benutzer namens <Max>; er hat das Passwort <moritz>
Auf dem Server ist ebenfalls ein Benutzer namens <Max>; er hat auch dort das Passwort <moritz>
Max besitzt auf dem Server ein Verzeichnis names freimax, das er freigegeben hat.
In den Sambafreigaben des Servers ist <Max> ebenfalls eingetragen; er hat auch dort das Passwort <moritz>,das freigegebene Verzeichnis ist für <max> sichtbar und veränderbar.

auf dem Client sorgt folgende fstab für das mounten der Freigabe:

Code:
# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/sdc1 during installation
UUID=cd2880a9-9fa8-4506-8bd5-dc3476ae08d2 /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
UUID=c27fcb4c-f31b-450e-a508-3103685e238c none            swap    sw              0       0
# swap was on /dev/sdc5 during installation
UUID=cdeaeaef-0b80-4f74-8bc9-e135000f97eb none            swap    sw              0       0
//192.168.152.1/freimax /media/ntzl smbfs user=max,passwd=moritz,auto   0   0

<max> hat vollen Zugriff auf diese Freigabe. Er kann aber NICHT den Namen des Besitzers von <max> auf <peter> ändern. Der Befehl (sudo)chown peter:peter datei-xyz funktioniert nicht. Und der funktioniert auch nicht wenn <max> auf dem Client Administratorrechte hat.

Aber gerade das möchte ich haben. Der Hintergrund: Ich möchte die Daten einer Mysql-Datenbank auf dem (Daten)Server haben aber den Mysql-server auf dem Client. Damit dieses funktioniert muss der Mysql-Server der Besitzer der Daten sein, die allerdings auf dem (Daten)Server sind. Der Besitz der Daten wird per sudo chown gesetzt. Das geht eben nicht. Oder doch, wie ich im 1. Beitrag beschrieben habe.
Verrückt mein Vorhaben oder ?

Punkt 3. Hier muss ich Dir teilweise widersprechen.
wenn in der fstab folgender Eintrag z.B.steht:

Code:
//192.168.152.1/freimax /media/ntzl smbfs user=max,passwd=moritz,uid=peter,gid=peter,auto   0   0

dann haben die gemounteten Dateien und Ordner (die von <max> stammen) auf dem Client als Besitzer <peter> und Gruppe <peter> und können vom Benutzer <peter> frei verändert werden. Die Rechte ändern sich auf dem Server aber nicht. Die bleiben im Besitz von <max>.

Fuse habe ich mir reingezogen. Für mein Problem taucht es leider nichts denn laut wiki:
Das Mounten mittels FuseSMB hat keinerlei Einfluss auf die echten Besitz- und Zugriffsrechte auf dem Server. Die beim Mounten festgelegten Rechte sind nur auf dem Client für die betreffende Sitzung gültig (simuliert) und lassen sich bis zum Aushängen der Freigaben (s.u.) nicht mehr ändern. Die Befehle chown und chmod sowie die Dialoge von Gnome oder KDE zur Verwaltung der Zugriffsrechte sind hier unwirksam.
So, das war mein 2. Advent!
Ich hoffe dass jetzt mehr Klarheit über meine Frage herrscht und danke Euch für die Hilfe
 
Du mountest noch immer mit smbfs und nicht mit cifs. Wenn du die cifs erweiterungen haben willst verwend auch cifs.

//192.168.152.1/freimax /media/ntzl cifs user=max,passwd=moritz,uid=peter,gid=peter,auto 0 0

Ich wusste gar nicht, dass man bei der uid auch den Benutzternamen angeben kann, da lern ich auch mal was neues :).

Ich bin mir nicht so sicher, dass das was du mit mysql vor hast so eine schlaue Idee ist, aber gerade bei sowas, wenn du zwei Gnu/Linux Kisten hast würd ich nfs verwenden. Übers Netzwerk würd ich mir auch nicht so eine tolle Performance erwarten.
 
Zur Info:
Laut wiki ist bis einschließlich Ubuntu Lucid Lynx 10.04 LTS smbfs zu installieren.

Erst Ab Ubuntu Maverick Meerkat 10.10 werden die cifs-utils installiert.

Dort steht auch
Als Netzwerk-Dateisystem auf dem Client ersetzt cifs-vfs das früher verwendete Dateisystem smbfs, das nicht weiter gewartet wird. Das Paket smbfs enthält jedoch Hilfsprogramme ("Wrapper"), mit denen man aus Gründen der Kompatibilität die Bezeichnung "smbfs" auch weiterhin als Synonym für "cifs" verwenden kann.

Und da ich 10.04 verwende...
 

Ähnliche Themen

Zugriff auf Samba Fileserver Freigaben verweigert(Samba 4 Active Directory Domäne)

Problem mit Win-Zugriff auf SAMBA

mv auf Samba-Share mit 'preserving permissions'

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

Windows clients können nicht mehr auf lange laufendes System zugreifen

Zurück
Oben