Nant: Dateiberechtigung ändern

8

Ich habe eine ASP.NET-Anwendung. Grundsätzlich ist der Lieferprozess dieser:

  • Nant erstellt die Anwendung und erstellt eine ZIP-Datei auf dem Computer des Entwicklers mit den Anwendungsdateien ohne SVN-Ordner und nutzlose Dateien. Diese Datei wird mit einem Nant-Skript geliefert.
  • Die zip- und nant-Dateien werden auf den Computer des Clients
  • kopiert
  • Das Nant-Skript ersetzt die aktuellen Website-Dateien durch die in der ZIP-Datei enthaltene Datei.

Mein Problem ist, dass bei diesem Prozess beim Versuch, die Website zu öffnen, ein nicht autorisierter Zugriffsfehler vorliegt. Es scheint, dass die Dateien eine Berechtigung für den Benutzer " IIS_WPG " haben müssen.

Ich kann die IIS-Konfiguration nicht ändern, daher muss ich die Berechtigungen für jede Datei manuell ändern. Und jedes Mal, wenn ich die Dateien ersetze, werden die Berechtigungen entfernt und ich muss sie erneut einstellen.

Ich habe also zwei Fragen:

  • Kann ich die Dateiberechtigungen mit Nant ändern? Wie man es macht?
  • Ist es möglich, dieses Problem zu vermeiden? (Entwickler haben diesen Benutzer nicht auf ihren Computern)
Julien N 24.10.2008, 12:19
quelle

4 Antworten

4

Sie müssen das CACLS-Programm in Windows ausführen, um Berechtigungen für Dateien und Ordner zu erteilen. Von Nant aus können Sie das mit der EXEC-Task machen.

Probieren Sie einen Tag Block wie:

%Vor%     
Jeff Fritz 24.10.2008, 12:27
quelle
7

@ Jeff Fritz Autsch... Ihr Vorschlag ist die richtige Lösung, aber die Parameter sind ... gefährlich:).

Auf Dev-Computern bin ich als Administrator angemeldet und habe Ihren Vorschlag mit cmd versucht.

  • Es ersetzt alle gesetzten Berechtigungen, um nur diejenigen zu setzen, die im Befehl definiert sind (nach dem Befehl führte der Zugriff auf Dateien zu einem "Zugriff verweigert", sogar mit meinem Admin-Benutzer)
  • Es wurde auf das Verzeichnis C: \ WINDOWS \ angewendet, während ich den Befehl aus dem Ordner wwwroot aufgerufen habe. :)

Nach einigen Tests lautet der richtige Befehl:

%Vor%
  • / T: gilt für angegebene Ordner und Unterordner
  • / E: bearbeitet die ACL anstelle von ersetzt es:)
Julien N 24.10.2008 13:06
quelle
3

Am Ende haben wir unsere eigene Aufgabe mit ziemlich geradlinigem Code geschrieben:

%Vor%

Dann können Sie ein Nant-Skript schreiben, das die benutzerdefinierte Aufgabe lädt und ausführt:

%Vor%

Offensichtlich könnte dies für Ihre bestimmten Regeln geändert werden oder Sie könnten dies sogar in der Aufgabe parametrisieren, wenn Sie dies wünschen. Wir bevorzugen dies gegenüber der Verwendung der exec-Aufgabe, da sie uns ein wenig mehr Kontrolle über die Berechtigungen gibt, die angewendet wurden.

    
Scott Saad 24.10.2008 16:49
quelle
2

CACLS ist jetzt veraltet. Hier ist eine Version, die ICACLS, den Ersatz verwendet.

Nehmen wir an, wir haben Folgendes:

  • Der Stammordner unserer Installation lautet "c: \ inetpub \ wwwroot" und ist in der NANT-Variablen ${paths.myprogram.inetpub} gespeichert.
  • Der Ordner, den wir ändern möchten, heißt "uploads" und wird in ${upload.foldername} gespeichert.
  • Der Benutzer, dem Zugriff gewährt werden soll, ist "IIS_UPLOAD_USER", gespeichert in ${iis.upload.user}
  • Die Berechtigungsstufe, die wir gewähren wollen, ist "M", für "modify" Berechtigungen, gespeichert in ${iis.user.permissionlevel}

Mit diesen Annahmen ist unsere Aufgabe:

%Vor%

Hoffe, das hilft!

    
Ted Spence 22.10.2012 17:46
quelle

Tags und Links