Warum Mercurial return "Abzubrechen: Zugriff Verweigert" beim Versuch, push auf ein repository?

Ich in ein problem mit einem user nicht in der Lage, schieben seine begeht, in ein Mercurial-repository und bin ratlos, warum es nicht für ihn arbeiten. Ich habe versucht, mehrere Dinge, um herauszufinden, was ist Los, Googeln auftauchen nicht alles, was hilfreich ist... also hier bin ich.

Erste, der Konfiguration. Wir haben einen Windows XP SP2 x64-Maschine auf unserem Netzwerk-Sie fungieren als unsere offiziellen repository server. Diese enthält mehrere repositories auf. Wir Klonen /push /pull mit einem Ordner auf das Laufwerk, das gemeinsam genutzt wird. Berechtigungen sind alle für den lese-Zugriff. Benutzer können push (einschließlich der Benutzer, die Probleme hat), vollständige Kontrolle. Der Benutzer der Maschine ist Win XP Basis. Meine Maschine (zur Unterstützung der Behandlung von Sachen) ist auch Win XP basiert.

Zweite, die Symptome. Der Benutzer ist mit TortoiseHg 2.1.1 um seine Arbeit zu tun. Er kann sogar ganz gut, ist verpflichtet, seinem lokalen repo-a-o-k usw. Wenn er versucht zu drücken, jedoch TortoiseHg gibt einen "Abbrechen", "ausgeschieden " 255" eingeben. Nicht sehr hilfreich. So, wir haben eben auf der Kommandozeile ausgegeben haben, "hg push -v --debug". Hier gibt es "abort: Zugriff Verweigert". Diese gleichen Benutzer können auf den server zu schreiben, die den freigegebenen Ordner kein problem-er kann Dateien anlegen, Verzeichnisse und löschen die gleiche wie gut. Also, Lesen /schreiben Zugriff auf das Laufwerk /Ordner ist nicht ein Problem.

Dritten, unsere Experimente Ergebnisse. Hier sind einige seltsame Ergebnisse aus den Tests. Der Benutzer erstellt eine neue, lokale test-repo. Ich loggte mich in dem server-Computer und erstellt ein test-repo für ihn zu drängen. Der Benutzer überprüft die Datei und dann schob es bis zu dem test-repo auf dem server-Rechner. Dies funktionierte gut. Keine Abbrüche. Das Leben war gut. Er war in der Lage zu tun, ein paar weitere Stöße, und es weiterhin wie erwartet funktionieren. Ich habe dann die geklonte repo auf meinem Rechner, aktualisiert eine Datei, und schob es wieder raus. Nachdem der Benutzer dann zog Sie meinen änderungen und versuchte Sie zurück zu drängen, um den server, dass er wieder auftreten der gefürchteten "Zugriff Verweigert" - Meldung. Mittlerweile, kann ich immer noch aktualisieren Sie das Projekt ohne Probleme.

Als ein weiteres experiment, hatten wir den Benutzer Abmelden und einen anderen Benutzer anmelden. Sie Taten dies und waren in der Lage, push-to-repo-server, ohne ein problem. Original Benutzer sich wieder anmeldet, nimmt einige änderungen, etc. und wieder einmal trifft die Mauer "Zugriff Verweigert".

Soweit wir das sagen können, das problem ist nicht mit der Windows-Anmeldeinformationen. Sonst würden wir erwarten, dass die Schaffung beliebige Dateien auf dem server freigegebene Ordner nicht funktionieren würde. Weiter, bis ich ein update gemacht auf die test-repo die Benutzer erstellt, die er drücken könnte, dass insbesondere repo-einfach nur gut.

Irgendwelche Ideen? Welche zusätzliche Berechtigung überprüft wird Mercurial machen, dass könnte der Grund HIERFÜR sein?

UPDATE:

Nach einem Tipp von Wim, fing ich an, Blick auf die Berechtigungen für die verschiedenen Objekte des repo mit 'cacls'. Dies ist ein Windows-tool, das "zeigt oder ändert access control lists von Dateien". Ich hatte die Benutzer-erstellen Sie einen neuen repo-und nahm dann eine Momentaufnahme der Berechtigungen. Dann habe ich mir in einer Datei auf dem gleichen repo und nahm einen weiteren Schnappschuss von den änderungen.

Es stellt sich heraus, dass es mehrere repo-Datei Berechtigungen, die gibts als Ergebnis dieser: rückgängig machen.Lesezeichen, rückgängig machen.Zweig, rückgängig machen.desc, rückgängig machen.dirstate, branchheads, 00changelog.ich, 00manifest.ich, rückgängig zu machen, und die einzelne Datei aus dem repository. Alle diese Dateien hatte die Berechtigungen, die der folgenden ähnelt:

C:\Projects\Mercurial\hgtest4\.hg\store\undo BUILTIN\Administrators:F 
                                         NT AUTHORITY\SYSTEM:F 
                                         DOMAINxxxx\USERIDxxxx:F 
                                         BUILTIN\Users:R 

(tatsächliche DOMAINxxxx und USERIDxxxx Werte geändert wurden). Vor meinem check-in, DOMAINxxxx & USERIDxxxx spiegelt sich der Domäne des Benutzers und Benutzer-id. Nach meinem check-in, diese aktualisiert wurde, mir (wir sind auf der gleichen Domäne, aber die user-id ist natürlich anders.) Ich war in der Lage, Dinge zu überprüfen und aus, obwohl meine userid war nicht dabei weil ich bin ein Mitglied der Gruppe VORDEFINIERT\Administratoren. Der Benutzer mit dem problem nicht. Also, ich vermute, dass, nachdem ich überprüft, die Dinge in das system nicht mehr sah ihn als einen authentifizierten Benutzer mit Schreibzugriff (BUILTIN\User:R-zeigt nur-Lese-Zugriff), und daher verursacht die Zugriffsverweigerung.

Ich habe ein schrecklich F&D fixieren jetzt (Benutzer ist nun Teil der Admin-Gruppe...) sind Die echt fix sein, um die repo aus der Windows-Freigabe und auf einen richtigen server-Konfiguration.

InformationsquelleAutor der Frage MutantXenu | 2011-12-01

Schreibe einen Kommentar