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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es klingt wie Sie Ihre push-erstellt oder ändert Dateien in der .hg-Ordner in einer solchen Weise, dass Sie sind (oder werden) unzugänglich für die anderen user.
Ich bin kein Experte auf NTFS-Datei Berechtigungen, aber ich denke, dass kann man solche Situationen, indem man den Inhalt von dem Ordner Erben die Berechtigungen. Versuchen Sie, "Ersetzen alle untergeordneten Objekt-Berechtigungen mit vererbbaren Berechtigungen von diesem Objekt" in den Erweiterten Sicherheitseinstellungen des Ordners.
Jedoch, die Aufteilung der repository-Dateien direkt mit Windows-file-sharing ist nicht empfohlen. Sie benötigen einen server-Prozess zwischen dem Nutzer und dem repository-Dateien aus Gründen der performance, Integrität und Sicherheit der Daten. Ohne einen solchen gatekeeper, die Gewährung von commit-Zugriff bedeutet auch die Gewährung der Fähigkeit zu zerstören/beschädigen die repository-Dateien (oder als Sie herausgefunden, in diesem Fall, ändern Sie Ihre Berechtigungen).
Sehen Publishing Mercurial-Repositories auf die Mercurial-wiki für mehr Informationen zu den anderen Optionen.
InformationsquelleAutor der Antwort Wim Coenen
Wenn Sie versuchen, einen commit auf meinem lokal geklonte repository ein code-repo in meinem Netzwerk teilen, ich wurde immer die gleiche Fehlermeldung:
Vermutlich allzu simpel, aber entfernen Sie einige der nur-lese-Berechtigungen für den betreffenden Dateien aus meinem
hg commit
funktionieren.InformationsquelleAutor der Antwort BennyLava
Ich hatte gerade das gleiche Problem
abort: Access is denied
. Die Ursache war mein firewall (Privatefirewall) still blockieren einige Aktionen der hg.InformationsquelleAutor der Antwort Roman Mishin
War ich immer genau die gleiche Fehlermeldung, wenn Sie versuchen zu hg push an der windows-Eingabeaufforderung. Ich hatte vor kurzem ein neues Benutzerprofil, nachdem der alte beschädigt hatte. Ich lief dann in diese "Zugriff Verweigert" Fehler. In TortoiseHg erhielt ich eine ähnliche Meldung von "Abgebrochen: Fehler 255".
Ich habe versucht, die Ratschläge, die hier gegeben durch Wim Coenenwie es schien zu passen; meine neue Benutzer-Anmeldeinformationen. Schließlich spürte ich die Fehler auf eine schlecht installierte Windows-Git. Es war nur nicht wenn ich in den repositories mit git-sub-repos.
Falls andere ein ähnliches problem mit der Git-sub-repos:
InformationsquelleAutor der Antwort Stephen Simpson