Freigegebene Dateien können nicht gelöscht werden

Ich habe versuchsweise mehrer Dateien und Verzeichnisse mit Freigaben versehen. Diese kann weder ich, der sie frei gegeben hat, noch der, für den sie freigegeben sind löschen obgleich die Freigabe das Löschen durch den Begünstigten erlaubt. Das ist nicht nur ein temporärer Effekt.
Wenn ich mir in der Datenbank die Tabelle oc_file_locks anschaue sehe ich das dort gelockt ist. Natürlich kann ich mittels sql Statement die locks aufheben, aber es kann ja nicht sein das ich jedes mal einen db admin brauche um die locks raus zu bekommen. Kann mir einer sagen ob das so gewollt ist, oder was ich falsch mache das es zu diesem Zustand kommt.

HI Tja klingt so als würde oben drüber stehen “Du hast keine Berechtigung, hier Dateien hochzuladen oder zu erstellen”

Kann das sein ?

Nein, sonst könnte ich keine erzeugen oder frei geben, erst wenn ich sie frei gebe, der für den sie freigegeben sind sie lädt und dann versuche sie zu löschen, geht das nicht mehr, dabei ist es unerheblich von welchem Rechner die geladen wurden.

welche rechte hat die datei dann ?

sehe ich leider nicht, aber da es klappt wenn ich die Sperren rausnehme in der Datenbank, liegt es nicht an den Rechten, sondern an der Sperre in der Datenbank. Ist aber so lästig das ich erst mal nix mehr freigebe, jedesmal in der Datenbank oc_file_locks entsperren für hunderte von Records ist unlustig.

So ich habe es noch mal probiert.

  1. Verzeichnis anlegen
  2. Dateien ein kopieren
  3. Verzeichnis freigeben mit Passwort und recht zu löschen
  4. externer lädt die für ihn frei gegebenen Dateien
  5. er versucht sie zu löschen, geht nicht
  6. ich versuche sie zu löschen, geht nicht
  7. ich gehe in die Admin oberfläche der Datenbank, setze ein selekt ab: delete from oc_file_locks where oc_file_locks.lock !=0;
  8. ich lösche die dateien, geht
    Das ist aber keine Lösung, ich nenne so etwas Panzerfahren, es scheint beim Download zum Lock zu kommen der nicht wieder aufgelöst wird. Ich finde allerdings auch nichts wo ich das abschalten kann.

Ich habe es mal auf einer zweiten Instanz probiert, selbes Ergebnis, es geht nicht ohne das ich die in der Datenbank entsperre. So ist die Freigabe für mich leider nicht brauchbar da ich nicht mal ansatzweise eine Idee hätte wie ich es umgehen kann.

ich frag mich was du in der Datenbank sperrst ?

Ich sperre nichts, ich muss es entsperren, Dazu setze ich wie oben beschrieben: delete from oc_file_locks where oc_file_locks.lock !=0; und delete für etwas löschen was da ist und !=0 für alles was nicht 0 ist, also sperrt da offensichtlich die Applikation indem sie in das Felddie Anzahl der Sperren einträgt. Ich würde gerne verhindern das sie das tut, geht aber nicht und so lange da was drin steht für den jeweiliegen Record darf ich den nicht löschen… und wenn ich hier schaue gibt es inzwischen drei Stränge zu merkwürdigem Verhalten der Freigaben.

Hmm also ihrgendwas ist in deiner Datenbank im ar… setzt das ding neu auf den normal ist das überhaupt nicht

Ich habe es oben geschrieben, ich habe es auf einer zweiten Instanz probiert, gleiches Ergebnis. Alleine im deutschen forum haben drei Probleme mit den Freigaben was löschen angeht. Auch von der Logik, wenn ein Programm einen Eintrag in der Datenbank locked, dann hat das normalerweise den Sinn zu verhindern das ein anderer diesen recorder verändern kann. Dann allerdings muss das Programm den lock wieder raus nehmen… Genau das aber passiert nicht. Das es mit einer neuen Datenbank klappen kann ist schon mal nicht sehr wahrscheinlich, wenn der Fehler allerdings wie bei mir auch auf einer zweiten Instanz auf tritt, liegt es an einer Einstellung, oder das Programm kommt durcheinander und vergisst das raus nehmen. Ist blöde und macht die Funktion leider unbrauchbar.

Benutzt du Redis für File-Locking?
https://docs.nextcloud.com/server/13/admin_manual/configuration_files/files_locking_transactional.html

Nein, oder zumindest nicht das ich es wüsste, ich habe die beiden Instanzen unterschiedlich, die beim Hoster ist eine 12er, installiert mit: Web Installer wie auf der Homepage beschrieben und dann aber die Datenbank Mysqul gewählt. Die zweite Instanz rennt auf meiner Synologi, da aber mit Archiv File installiert da dort Web Installer nicht zum Laufen zu bringen war. Beides waren 12er, die auf der Syno habe ich nachdem der update nicht lief gelöscht (panzer fahren) und als 13er neu gesetzt. Bei beiden habe ich nur card und cal aktiv. Wissentlich habe ich da Redis nicht eingeschaltet, weil ich habe nix eingeschaltet sondern so gelassen wie es kam. Bei beiden tragen sich die locks in der Datenbank ein, bei beiden kann ich die mit delete from oc_file_locks where oc_file_locks.lock !=0; raus hauen und danach kann ich die Dateien auch löschen. Irgend wie zählt der Eintrag auch hoch, bei der einen Datei steht 1 drin, dann eine mit 3 und auch mit 5 hatte ich schon. Macht aber nix. Ich nutze die Freigaben halt nicht mehr.

Wie viele benutzer hast du dort? Dort kannst du bei wenigen Benutzern in Erwägung ziehen das File Locking zu deaktivieren.

Dort würde ich einfach Redis installieren. Dort könnte die Redis-Instanz ebenfalls das File Locking von deiner Webinstanz bei deinem Filehoster übernehmen. 2 Fliegen mit einer Klappe :wink:
Nur beim Zugriff aus dem Internet sollte dann ein sicheres Passwort gesetzt werden :wink:

ich habe genau 3 User und die auch nur sporadisch für die Files auf dem Server im Internet. Auf der Syno auch drei User, aber bis auf Testzwecke ist die Syno nur über VPN Tunnel zu erreichen und damit besteht da User bezogen eh Vollzugriff auf das Dateiensystem.
Für Kalender und Adressen arbeitet der Server im Internet mit Thunderbird und EM Client. Die Daten werden aber in den Clients regelmäßig exportiert und zusätzlich gesichert. Nichts des do trotz schaue ich mir mal redis an.

Dann sollte ein deaktivieren sinnvoll sein, solange nicht 2 User gleichzeitig eine Datei bearbeiten /verändern, File Locking zu deaktiveren. Alternativ kannst du auch ein Script erstellen, welches die Tabelle von File Locking regelmäßig leert. Das Locking ist dafür da, dass nicht ausversehen 2 Benutzer eine Datei verändert und diese Datei letztendlich beschädigt wird.
Da der Server im Internet hauptsächlich für CardDav und CalDav arbeitet, ist File Locking ebenfalls uninteressant, da Card-/CalDav hauptsächlich über MySQL arbeitet und die Sachen dort abspeichert.
Redis ist dennoch einfach zu benutzen :wink:

Ich werde es mit Panzerfahren in der Datenbank machen, da habe ich mir den Select gespeichert und weg sind die locks. Wofür die sind ist mir klar, unklar ist mir nur warum die nicht wieder raus genommen werden, normalerweise sollte ja der lock rein kommen wenn ein User die Datei angreift und sobald er wieder weg ist sollte auch der Lock weg sein. Ich habe das Gefühl das bei mir der Lock hoch zählt.

War das schon immer oder mit der jetzigen letzten Server version nur? Probier es auf Github, vielleicht ist es wirklich ein Bug.

Kann ich nicht sagen, ich habe das eigentlich nur für die Adressen und Kalender gebraucht, die Freigaben habe ich dann probiert um einfach zwei Freunden eine CD mit Musik zur Verfügung zu stellen und dann ging es los mit der Meldung können wir nicht löschen. Gibt aber ein paar mehr im Netz die da mit Probleme haben, aber die sind immer eine Spur anders gelagert, nur von alleine bin ich ja nicht drauf gekommen welche tabelle ich anschauen muss und was ich damit tun muss damit es geht.

Strike, Ich glaube Du hast gerade dem 2. aus der Klemme geholfen. Ich habe es bei mir gerade mal mit Heidi versucht, auch das geht, aber mit PHP Tool ist es doch schöner. Ich schaue mal weiter, aber momentan geht die Tendenz das es des öfteren auftritt.