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 userAnweisung auf dem Server werden alle Vorgänge als Benutzer erpmauf 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 erpmin dieses Verzeichnis auf dem Server geschrieben werden darf. Die Antwort ist ja.
Beim Ausführen touchwird 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 openAufruf (der die Datei erstellt) erfolgreich ist und der utimesAufruf (oder besser unter Linux der utimensatSystemaufruf) die Zeiten nicht festlegt.
Dies ist eigentlich ein bisschen seltsam, weil utimes es erfolgreich sein sollte , da touches 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 utimensattatsä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 forceuidOption mount einem einzelnen clientseitigen Benutzer zuordnen.