Hinweis: Ich rate hier nur, ich bin kein Samba-Guru.
Samba / CIFS reproduziert, zumindest so wie Sie es hier verwenden, keine Anmeldeinformationen zwischen dem Server und dem Client. Aufgrund der force user
Anweisung auf dem Server werden alle Vorgänge als Benutzer erpm
auf dem Server ausgeführt. Da jedoch sowohl der Client als auch der Server ein Unix-System ausführen, haben sie die CIFS-POSIX-Erweiterungen automatisch ausgehandelt . Dadurch scheinen Unix-Berechtigungen bis zu einem gewissen Punkt zu funktionieren, jedoch nur, soweit der Server dies zulässt, und Sie sind auf einen Fall gestoßen, in dem sich die Ansprüche der Unix-Berechtigungen und die Anforderungen des Servers unterscheiden.
Sie werden feststellen, dass alle Dateien als Benutzer-ID 501 angezeigt werden. Dies ist ihre UID auf dem Server.
Wenn Sie versuchen, eine Datei zu erstellen oder zu entfernen, ist eine Schreibberechtigung für das Verzeichnis erforderlich. Alle Zugriffe werden einem einzelnen Benutzer auf dem Server zugeordnet. Die Schreibberechtigung beschränkt sich also darauf, ob erpm
in dieses Verzeichnis auf dem Server geschrieben werden darf. Die Antwort ist ja.
Beim Ausführen touch
wird die Datei erstellt und anschließend die Änderungszeit geändert. Das Ändern der Änderungszeit einer Datei erfordert den Besitz. Dies wird durch den generischen Dateisystemcode auf der Clientseite getestet.
Wenn Sie ausführen strace touch test
, werden Sie feststellen, dass der open
Aufruf (der die Datei erstellt) erfolgreich ist und der utimes
Aufruf (oder besser unter Linux der utimensat
Systemaufruf) die Zeiten nicht festlegt.
Dies ist eigentlich ein bisschen seltsam, weil utimes
es erfolgreich sein sollte , da touch
es mit einem NULL-Argument aufgerufen wird (was bedeutet, dass der Zeitstempel auf die aktuelle Zeit gesetzt wird), und dies sollte jedem Aufrufer gestattet sein, der in die Datei schreiben kann, und nicht nur an den Besitzer wie das Setzen eines beliebigen Zeitstempels. Ich vermute, dass utimensat
tatsächlich eine auf Berechtigungen basierende Überprüfung durchgeführt wird und festgestellt wird, dass die Berechtigungen besagen, dass Sie nicht in diese Datei schreiben können, obwohl das Dateisystem unabhängig von den tatsächlichen Berechtigungen einen Schreibvorgang zulassen würde.
Der Hauptvorteil der CIFS POSIX-Erweiterungen, wenn die Serverseite mit den Berechtigungen eines Nicht-Root-Benutzers ausgeführt wird, besteht darin, das ausführbare Bit und möglicherweise den Gruppenbesitz zu übertragen. Es ist möglicherweise weniger verwirrend, wenn Sie den Benutzereigentum mit der forceuid
Option mount einem einzelnen clientseitigen Benutzer zuordnen.