Warum kann ein eingebundenes Dateisystem Dateien erstellen, aber Umbenennungen ablehnen?

Eva Wong ist die Technische Redakteurin und und leidenschaftliche Tüftlerin bei ZimaSpace. Eine lebenslange Geek mit einer Leidenschaft für Homelabs und Open-Source-Software, sie spezialisiert sich darauf, komplexe technische Konzepte in zugängliche, praktische Anleitungenzu übersetzen. Eva ist der Meinung, dass Self-Hosting Spaß machen und nicht einschüchternd sein sollte. Durch ihre Tutorials befähigt sie die Community, Hardware-Setups zu entmystifizieren, vom Bau ihres ersten NAS bis hin zur Beherrschung von Docker-Containern.

Ein eingebundenes Dateisystem kann zwar das Erstellen von Dateien erlauben, Umbenennungen jedoch ablehnen, weil für eine Umbenennung separate Anforderungen an Verzeichnisse, Besitzrechte, Dateisystemgrenzen, Flags und geöffnete Handles gelten.

Eine erfolgreiche Einbindung beweist lediglich, dass das Dateisystem verbunden ist, und ein erfolgreicher Dateischreibvorgang zeigt, dass der Client mindestens ein Objekt erstellen oder ändern kann. Eine Umbenennung ist eine Operation am Verzeichniseintrag und kann Berechtigungen für sowohl das Quell- als auch das Zielverzeichnis, Löschrechte, einen Pfad innerhalb desselben Dateisystems, einen gültigen Zielnamen sowie keinen widersprüchlichen SMB-Freigabemodus oder kein geschütztes Dateiflag erfordern. Erfassen Sie den genauen Fehler und vergleichen Sie Erstellen, Umbenennen, Verschieben und Löschen getrennt, bevor Sie von einem beschädigten Dateisystem ausgehen.

Erfassen Sie den genauen Umbenennungsfehler, bevor Sie Berechtigungen ändern

Wiederholen Sie eine Umbenennung sowohl auf dem Host als auch auf dem betroffenen Client. Notieren Sie Quellpfad, Zielpfad, Benutzeridentität, Dateisystem, Einhängepunkt, Fehlercode und ob der Zielname bereits vorhanden ist.

Die Fehler des Linux-Systemaufrufs rename unterscheiden zwischen Berechtigungsfehlern, belegten Einhängepunkten, geräteübergreifenden Verschiebungen, schreibgeschützten Dateisystemen, nicht leeren Zielen und anderen Bedingungen, die in einer grafischen Dateiverwaltung identisch aussehen können.

Wenn das Erstellen einer neuen Datei funktioniert, ihre Umbenennung jedoch fehlschlägt, bewahren Sie diesen Unterschied. Dadurch lässt sich das Problem auf das Ersetzen eines Verzeichniseintrags, fehlende Löschberechtigungen, Namensregeln, Sperren oder eine Pfadgrenze eingrenzen und nicht auf gewöhnlichen Schreibzugriff.

Überprüfen Sie die Berechtigungen beider übergeordneten Verzeichnisse

Prüfen Sie Besitzrechte, Modusbits, ACLs und die effektive Identität für das Verzeichnis, das den alten Namen enthält, sowie für das Verzeichnis, das den neuen Namen enthalten soll. Die Berechtigung zum Umbenennen wird in erster Linie durch die Verzeichnisse bestimmt, nicht durch das Schreibbit der Datei.

Red Hat erklärt, dass das Sticky-Bit das Umbenennen und Löschen in gemeinsam beschreibbaren Verzeichnissen auf den Dateibesitzer, den Verzeichnisbesitzer oder einen privilegierten Benutzer beschränkt, selbst wenn mehrere Benutzer dort Dateien erstellen können.

Testen Sie mit demselben NAS-Benutzer, der den Fehler erhält. Ein Erfolg mit einem Administratorkonto beweist nicht, dass das normale Konto für beide Verzeichniseinträge über Lösch- oder Umbenennungsrechte verfügt.

Überprüfen Sie unveränderliche, unlöschbare und Nur-Anhängen-Flags

Prüfen Sie zusätzlich zu den normalen Berechtigungen und ACLs die Dateisystem-Flags der Datei und ihrer übergeordneten Verzeichnisse. Wiederherstellungen, Sicherheitstools oder Aufbewahrungsprozesse können Flags beibehalten, die in einer einfachen Berechtigungsauflistung nicht sichtbar sind.

Das FreeBSD-Sicherheitshandbuch weist darauf hin, dass ein unveränderliches Dateiflag Änderungen oder das Löschen verhindert, während Nur-Anhängen- und Unlöschbarkeits-Flags ebenfalls die für eine Umbenennung erforderlichen Verzeichnisänderungen blockieren können.

Entfernen Sie ein Schutzflag erst, nachdem Sie ermittelt haben, welche Richtlinie oder Anwendung es gesetzt hat. Das globale Löschen von Flags kann Aufbewahrungs-, Sicherungs- oder Ransomware-Schutzmaßnahmen außer Kraft setzen.

Schließen Sie eine geräteübergreifende Verschiebung innerhalb eines einzigen Verzeichnisbaums aus

Ermitteln Sie für Quell- und Zielverzeichnisse Geräte-IDs, Einhängepunkte, Bind-Mounts, Datasets und Containerpfade. Zwei Ordner unter derselben Freigabe können dennoch zu unterschiedlichen eingebundenen Dateisystemen gehören.

Die GNU-C-Bibliothek definiert EXDEV als Fehler bei einer geräteübergreifenden Umbenennung. Ein Verschiebungsprogramm auf höherer Ebene kann dies durch Kopieren und Löschen ausgleichen, während eine Anwendung, die eine atomare Umbenennung erwartet, einfach fehlschlagen kann.

Wenn eine lokale Verschiebung nur durch Kopieren der gesamten Datei funktioniert, handelte es sich nicht um eine atomare Umbenennung. Passen Sie die temporären und endgültigen Pfade der Anwendung an oder halten Sie beide Phasen auf demselben Dateisystem.

Überprüfen Sie geöffnete Handles und die SMB-Freigabe zum Löschen

Listen Sie geöffnete Dateien und SMB-Sitzungen für die Quell- und Zielverzeichnisse auf. Schließen Sie nacheinander Vorschauprogramme, Miniaturbildgeneratoren, Editoren, Medienscanner, Antivirenprogramme und Sicherungsclients.

Microsoft dokumentiert einen Fall mit einem Netzwerkordner, bei dem ein geöffnetes Handle des Miniaturbild-Caches die Umbenennung blockiert. Das zeigt, warum das Lesen oder Erstellen anderer Dateien eine Freigabeverletzung am betreffenden Objekt nicht ausschließt.

Starten Sie nicht den gesamten NAS neu, bevor Sie die Hinweise auf das offene Handle gesichert haben. Ein Neustart kann die Sperre lösen und zugleich verbergen, welcher Client oder Dienst sie erneut verursacht hat.

Vergleichen Sie SMB-Umbenennungsregeln mit dem Dateinamen des Clients

Testen Sie im selben Verzeichnis einen einfachen Namen mit Kleinbuchstaben und ASCII-Zeichen. Vergleichen Sie anschließend reine Änderungen der Groß- und Kleinschreibung, reservierte Zeichen, nachgestellte Punkte oder Leerzeichen, die Unicode-Normalisierung sowie einen bereits vorhandenen Zielnamen.

Das Samba-Modul für die macOS-Interoperabilität bietet eine Kompatibilitätsoption für POSIX-Umbenennungen. Dies verdeutlicht, dass die Namenssemantik von Client und Server beeinflussen kann, ob eine Verzeichnisumbenennung akzeptiert wird.

Wenn nur ein bestimmtes Dateinamensmuster fehlschlägt, bewahren Sie die ursprüngliche Namenszuordnung, bevor Sie sie normalisieren. Eine massenhafte Umbenennung ohne Wiederherstellungsliste kann Medienbibliotheken, Synchronisierungsaufträge, Verknüpfungen und Sicherungen beschädigen.

Beheben Sie die nachgewiesene Ursache und überprüfen Sie jeden Vorgang

Beheben Sie nur die nachgewiesene Ursache: Berechtigung des übergeordneten Verzeichnisses, Besitz gemäß Sticky-Bit, geschütztes Flag, Pfad auf demselben Dateisystem, offenes Handle oder inkompatibler Dateiname. Wiederholen Sie den Test mit dem ursprünglichen Benutzer und der ursprünglichen Anwendung.

Der ZimaSpace-Artikel über Kollisionen von Dateinamen, die sich nur in der Groß- und Kleinschreibung unterscheiden, behandelt den engeren plattformübergreifenden Fall, in dem zwei Namen am Ziel als gleichwertig gelten.

Das Problem ist behoben, wenn Erstellen, Schließen, Umbenennen, Verschieben, Löschen und erneutes Erstellen im vorgesehenen Pfad nach einer erneuten Verbindung und einem Neustart erfolgreich funktionieren. Beenden Sie Schreibvorgänge, wenn das Dateisystem schreibgeschützt wird oder Beschädigungs- bzw. Hardware-E/A-Fehler meldet.

Häufig gestellte Fragen

Warum kann ich eine Datei erstellen, sie aber nicht umbenennen?

Zum Erstellen benötigen Sie die Berechtigung, einen Verzeichniseintrag hinzuzufügen. Eine Umbenennung kann zusätzlich Löschrechte für den alten Eintrag, Schreib- und Ausführungsrechte für beide übergeordneten Verzeichnisse, kompatible Namensregeln sowie keine geschützten Flags oder widersprüchlichen Handles erfordern.

Bedeutet ein EXDEV-Fehler bei der Umbenennung, dass das Dateisystem beschädigt ist?

Nein. In der Regel bedeutet er, dass sich Quelle und Ziel auf unterschiedlichen Dateisystemen befinden und der Kernel daher keine atomare Umbenennung durchführen kann. Eine Verschiebung durch Kopieren und Löschen kann trotzdem funktionieren.

Kann eine geöffnete Datei umbenannt werden?

Viele lokale POSIX-Dateisysteme erlauben dies. SMB-Clients und Anwendungen können Dateien jedoch ohne Freigabe zum Löschen öffnen, woraufhin der Server die Umbenennung ablehnt, bis das Handle geschlossen wird.

Support & Tipps

Mehr zum Lesen

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.