Mit rsync Dateien über Schattenkopie kopieren

Hallo,

ich kopiere seit einiger Zeit eine Freigabe auf einem Win2003 Server, in der die Profilordner der einzelnen Clients liegen. Vorher wird allerdings eine Schattenkopie von Laufwerk C angelegt und über diese dann die Freigabe kopiert wird (um noch offene Dateien auch kopieren zu können). Jetzt kennt der eine oder andere sicher das Win2k3 Problem, dass auf jene Profilordner nicht zugegriffen werden kann sofern die entsprechende Gruppenrichtlinie nicht gesetzt wurde. Ich habe also selbst als Administrator keinen Zugriff auf manche Ordner bzw. Dateien. Gibt es eine Möglichkeit besagte Ordner dennoch mit rsync zu kopieren? Ich bekomme nämlich an dieser Stelle mit rsync immer den Fehler „Permission denied (13)“.

Da es sich um sehr viele Profilordner handelt möchte ich aber auch nicht alle von Hand den Adminzugriff gewähren da dazu eine ellenlange Prozedur erforderlich ist wie der eine oder andere sicher wissen wird. Man muss erst einmal den Besitz für den Ordner übernehmen, dann Admin, System und User den Vollzugriff gewähren und anschließend wieder den User als Besitzer eintragen. So zumindest kenne ich das oder gibt es auch eine Möglichkeit allen Ordnern auf einmal für den Admin zugreifbar zu machen, ohne dass die User dann Probleme bekommen da sie nicht mehr Besitzer etc. sind? Ich könnte ja jetzt rechts auf den Profilordner klicken und dann unter Sicherheit - Erweitert, für alle Unterordner die Berechtigungen ersetzen. Aber dadurch haue ich die Userberechtigungen ja total durcheinander.

Für Tipps wäre ich sehr dankbar.

Freundliche Grüße,
Andreas

Hallo Andreas,

„… Ich habe also selbst als Administrator keinen Zugriff auf manche Ordner bzw. Dateien…“

Wenn die Computer Mitglieder der Domäne sind, ist der Administrator Mitglied der lokalen Administratoren Gruppe und er hat alle Rechte.
Ansonsten kann man dies auch über Gruppenrichtlinien steuern: http://www.serverhowto.de/Lokale-Gruppenmitgliedscha…

Wenn die PC nicht Mitglieder der Domain sind, wird es schwierig, dann würde ich sie in die Domain aufnehmen. Sonst wird die Verwaltung sehr schwierig.

Falls Du noch weitere Fragen hast bzw. ich das problem nicht getroffen habe, melde Dich wieder.

Rainer

Hallo,

sorry, da kann ich Dir leider nicht helfen.

Gruß

Hallo Rainer,

erst einmal Danke für deine schnelle Antwort! Die Clients sind alle Mitglieder der Domäne und speichern ihre Pofile etc. über eine Ordnerumleitung auf dem Server ab (AD). Ich weiß nicht wie genau Du dich mit dem Windows Server 2003 auskennst, aber dort ist die Gruppenrichtlinie „Sicherheitsgruppe „Administratoren“ zu servergespeicherten Profilen hinzufügen“ standardmäßig deaktiviert. Dadurch kann selbst der Admin nicht auf die einzelnen Profilordner der User zugreifen da diese durch durch User automatisch erstellt werden (bei erster Anmeldung des Users) und wenn dann besagte Richtlinie deaktiviert ist wird der Admin nicht mit eingetragen und hat daher auch keinen Zugriff. Dieses Verhalten hat MS mit Service Pack 2 wenn ich mich recht entsinne wieder entfernt sprich ab Service Pack 2 ist die Richtlinie per default aktiviert. Allerdings wirkt sich die Richtlinie nicht nachträglich auf die damals angelegten Ordner aus sondern nur auf jene die danach neu angelegt werden. Nur weil man Administrator ist heißt das ja nicht dass man automatisch auch immer auf alles Zugriff hat.

Eine andere Frage, wie macht es eigentlich NtBackup mit dem Zugriffsrechten? Das scheint ja keine Probleme zu haben von allem ein Backup anzulegen. Soweit ich weiß geht NtBackup auch nur über eine Schattenkopie aber das hat ja nichts mit den Rechten zu tun.

Andreas

Hallo Andreas,

ich hatte das falsch verstanden und ging von Ordner auf den Computer aus - sorry.
Ziel soll sein, als als Admin das Recht auf alle servergespeicherte Profile zu haben. Daraufhin kann ein Backup durchgeführt werden.

„…Man muss erst einmal den Besitz für den Ordner übernehmen, dann Admin, System und User den Vollzugriff gewähren und anschließend wieder den User als Besitzer eintragen. …“

Ich nehme an,alle Profile sind auf dem Server in einem Ordner gespeichert.
Ich als Admin würde den Besitzt dieses Ordner übernehmen. Dabei werden die Benutzerrechte der User nicht geändert. Warum solltest Du dann die User Besitzer eintragen?

Rainer

Hallo Rainer,

richtig, die Profile sind auf dem Server alle in einem Ordner namens „Profile“ gespeichert. Auf diesem Ordner hat der Administrator bzw. JEDER bereits Zugriff. Die User Clients erstellen dann darin automatisch den Profilordner worauf dann aber nur die User Zugriff haben. Wenn ich nun den Besitz dieser einzelnen Userprofil-Ordner übernehme dann können die User nicht mehr darauf zugreifen. Unter den Ordneroptionen -> Sicherheit ist nach der Übernahme des Ordner erst einmal alles leer und ich muss dann erst einmal von Hand den Administrator und User eintragen. Erst dann hat der User auch wieder Zugriff darauf. Das ist bei über 200 Profilen natürlich extrem umständlich…

Andreas

Für Tipps wäre ich sehr dankbar.

NT hat eine Hintertür: wenn ein Prozess des Recth „SeBackupPrivilege“ (–> NTRights Tool) hat, dann kann der alles lesen, egal welche Rechte drauf sind, ohne sich Rechte zu geben. Die Hintertür nützen Backup-Programme wie NTBackup. Ein Prozess mit diesen Rechten kann auch alles wiederherstellen, samt Rechten, und konsequenter Weise danach selber nicht mehr darauf zugreifen, aber die Daten sind für diejenigen, die vorher Zugriff hatten, wieder voll verfügbar.

Du mönntest nun also versuchen, Dein RSync unter einem Account laufen zu lassen, dem Du dieses Recht gibst.

Allerdings ist da ein Haken: manche Rechte hat Microsoft so implementiert, dass das Recht, wenn es gewährt ist, vom Programm auch noch „in Besitz genommen“ werden muss. Das geht bedauerlicher Weise nur, wenn der Programmcode des Tools das explizit macht. Ob SebackupPrivilege dazu gehört --> ausprobieren, oder MSDN filzen.

Wenn der Versuch nicht klappt, musst Du ein anderes Tool finden, welches darauf eingerichtet ist, das Backup Privileg zu nützen. Du könntest z.B. ViceVersa eine Chance geben. Ich habs im Einsatz, aber nicht explizit auf das Profil-Problem angesetzt. Das Tool klinkt sich übriges selbst in den Volume Shadow Copy service, es könnte also unterm Strich eventuell die Gesamtlösung sogar noch vereinfachen.

Die haben eine voll funktionsfähige 40 Tage Demo zum Download, Du gehts also (außer Zeitverlust) kein Risiko ein.

Armin.

Hallo Armin,

danke für deine aufschlussreiche Antwort!

Schade dass das rsync wohl leider nicht kann. Kann denn dieses ViceVersa auch direkt auf einen Onlinespeicher sichern? Dazu am besten noch inkrementell „On the Fly“? Was ich nämlich bisher verschwiegen habe ist der Grund warum ich rsync nutze. Ich will nämlich auf einen Onlinespeicher sichern und dafür ist das ja im Grunde wie geschaffen. Es komprimiert den Upload und sichert auch inkrementell. Wenn denn nicht das Problem mit den Zugriffsrechten wäre - Permission denied (13).

Andreas

Kann denn
dieses ViceVersa auch direkt auf einen Onlinespeicher sichern?

Definiere Online-Speicher :smile: Du meinst einen LAN Netzwerkspeicher, der irgendwie einen Windows Sever nachäfft (SAMBA), oder willst Du gleich ins Internet sichern? Wenn zweiteres … da habe ich meine zweifel dass das so einfach klappt. Aber ViceVersa hat ein recht rühriges Benutzerforum, da tummeln sich wohl auch einige Jungs vom TGRMN Support (so nennt sich der Hersteller), und die geben recht bereitwillig und schnell Antwort.

Ich sichere damit Dateien Copy-on-Write von einem Windows 2003 Server auf eine Freigabe eines anderen Windows 2003 Servers. Ich denke, das ist das, was Du mit „on-the-fly“ gemeint hast. Ich habe allerdings nur „gewöhnliche“ Benutzerdaten im Visier und daher keine Probleme mit Zugriffsrechten, und mein Forscherdrang war bisher nicht groß genug das Programm auf (rechtemäßig) geschlossene Benutzerprofile anzuwenden. Sorry, Du musst wohl die Demo benützen und selber forschen.

Wenn sich Dein Online-Speicher also so verhält wie ein Windows Server mit Freigabe, ist das Ganze einen Versuch wert. Ich denke, sin Spiegelaccount (gleicher Benutzername + Kennwort) oder ANonymer Zugriff auf den Netzwerkspeicher (so der das kann) sollte klappen.

Datenkompression ist dabei so weit mir bekannt nicht vorgesehen.

Bei mir läuft ViceVersa als Dienst im Hintergrund (der dazu nötige VVLauncher Dienst wird mitgeliefert), und es funktioniert soweit ganz gut, ich habe allerdings ab und an Schwierigkeiten, dass sich der Volume Shadow Copy Service verhakt, und dann fällt auch ViceVersa auf die Nase. Ich spiele deshalb mit dem gedanken, ihn wieder abzuschalten. Offene Dateien sichern ist ein alter EDV Traum, der nur unter ganz bestimmten Umständen funktioniert: das Programm, das eine Datei offen hat, muss einen funktionierenden VSS Writer dabei haben, und das hat kaum eins --> man sichert wohl oft nur wertlosen Datenschrott weg, ist aber immerhin die beunruhigende Fehlermeldung los :smile:

Mich würde in dem Zusammenhang interessieren, wie genau Du den Volume Shadow Copy Service für Deine Zwecke einspannst. Ich habe da eine Weile geforscht und bin nicht wirklich warm geworden mit diesem Dienst, deshalb wundert mich dass Du so locker mit ihm umgehen kannst. Wie löst Du mit RSync den VSS Freeze und Thaw aus? Oder gibt es dafür Kommandos die ich bisher übersehen habe?

Armin.

Leider habe ich keine Server 2003 zur zeit laufen, stelle aber Deine Frage mal hier: http://www.mcseboard.de/

Rainer

Hallo Armin,

ich meine einen richtigen Onlinespeicher und keinen NAS im LAN etc. Es wird also über Internet gesichert. Der Onlinespeicher lässt sich aber als Netzlaufwerk ganz normal einspannen sodass jedes Programm auch darauf zugreifen könnte wie auf einen ganz normalen Ordner bzw. Laufwerk. Mit NtBackup würde das auch wunderbar funktionieren. Allerdings möchte ich auch inkrementell sichern können und dazu müsste dann erst wieder das ganze Backup runter geladen, verglichen und dann das inkrementelle erzeugt werden. Mit rsync würde das quasi entfallen und dass meinte ich mit „On the Fly“. Rsync muss nicht erst wieder runter laden sondern vergleicht einfach nur auf der Online-Freigabe das Änderungsdatum, Dateigröße etc. der Datei mit der auf der lokalen Festplatte (auch MD5 möglich). Das spart natürlich Unmengen an Zeit und Traffic. Daher suche ich ein Programm was dies auch kann und zusätzlich auch mit den Rechten klar kommt.

Zu dem VSS, da gibt es ein feines kleines Programm aus dem Windows SDK namens vshadow.exe. Damit ist es spielend einfach mit dem VSS zu hantieren und z.B. eine Schattenkopie eines Laufwerks zu erstellen, zu Mounten (sogar auf eine Netzwerkfreigabe) und zu löschen. Hier ein interessanter Artikel dazu http://www.msxfaq.de/tools/vshadow.htm

Andreas

Danke, die Seite ist mir bekannt aber bisher habe ich dort nichts finden können. Aber ich werde wie du vorgeschlagen hast auch dort mal nachfragen.

Andreas

Der interne Benutzer NT-AUTHORITÄT\System hat IMHO Vollzugriff auf die Profile. Damit müsste es zum einen möglich sein rsync auszuführen und zum anderen möglich sein, die Berechtigungen anzupassen ohne Besitzer zu werden.

Besitztum über eine ACL-geschützte Ressource zu übernehmen hat nämlich einen sehr gravierenden Nachteil: alle Berechtigungen werden zurückgesetzt. Als Benutzer SYSTEM musst du nicht erst Besitzer werden, du brauchst nur noch einen Eintrag für Vollzugriff Administrator hinzufügen.

Wie wird man nun Benutzer SYSTEM? Einfach anmelden geht natürlich nicht. Mittels des Befehls AT unter einer Eingabeaufforderung kann man aber einen Task erstellen, der als User SYSTEM gestartet wird. Des Weiteren werden alle Dienste standardmäßig als User SYSTEM ausgeführt.

Du kannst also einfach AT 14:30 „rsync …“ machen.

Falls du die Berechtigungen ändern möchtest, so dass rsync auch als normaler Admin läuft, kannst du das per Skript (z.B. PowerShell) machen. Falls Interesse besteht kann ich dir paar Tipps geben.

Hallo shreyder,

danke für Deine hilfreiche Antwort! Endlich mal einer der damit Erfahrung zu haben scheint.

Das mit dem Benutzer „SYSTEM“ hatte ich mir so ähnlich auch schon gedacht da dieser Benutzer ja standardmäßig immer mit angegeben wird. Ohne diesen Benutzer kann man auch mit z.B. NTBackup kein Backup machen da dieser vorausgesetzt wird.

Das Problem was Du angesprochen hast, nämlich den Besitz einer Ressource zu übernehmen, habe ich auch schon vermutet und hat mich bis dato davon abgehalten die Rechte der Profilordner zu ändern. Nicht grundlos wird man ja von Windows vorher gewarnt wenn man dies versucht.

Dein Tipp mit mit dem rsync über AT starten konnte ich nicht so ganz nachvollziehen. Du meinst also wenn ich rsync als „geplanten Task“ ausführe sollte es funktionieren weil rsync dann quasi vom Benutzer SYSTEM gestartet wird und daher die Rechte hat? Ich kann es mal versuchen obwohl ich dachte ich hätte das schon einmal gemacht. Habe mir nämlich ein Batch-Script geschrieben welches rsync ausführt und dieses Script via Taskplaner abends 22 Uhr ausführen lassen. Das sollte doch eigentlich den selben Effekt haben wie über AT oder?

Mir wäre es am liebsten die Berechtigungen aller Ordner so zu ändern dass der Admin auch Zugriff darauf hat. Daher würde ich deine Hilfe die Du mir angeboten hast gerne in Anspruch nehmen. Es kommt ja doch ab und an mal vor dass man als Admin auf einen Profilordner zugreifen will, um dort drin etwas Bspw. etwas zu löschen. Die PowerShell ist installiert falls die benötigt werden sollte.

Vielen Dank schon einmal im Voraus!

Freundliche Grüße,
Andreas

Sorry, aber damit kenne ich mich leider auch nicht aus und wüßte z. Zt. auch nicht, wo man dass nachlesen könnte! Leider bin ich im moment auch in einem Projekt und kann mich nicht des Problems annehmen!! Haben Sie die einschlägigen Foren schon durch…?

Frage in Google eingeben und schauen, welches Forum dieses Thema schon kennt…!?!

MfG aus dem Emsland

ReinerLee63

Google und diverse Foren sind immer meine erste Anlaufstelle bevor ich selber frage. Aber dennoch danke für Ihre Antwort!

Freundliche Grüße,
Andreas

Dein Tipp mit mit dem rsync über AT starten konnte ich nicht
so ganz nachvollziehen. Du meinst also wenn ich rsync als
„geplanten Task“ ausführe sollte es funktionieren weil rsync
dann quasi vom Benutzer SYSTEM gestartet wird und daher die
Rechte hat?

Genau das meine ich. Gib einfach mal AT /INTERACTIVE notepad.exe in die Kommandozeile ein, mach den Task Manager auf und du wirst sehen, dass ab notepad.exe als Benutzer SYSTEM ausgeführt wird.

Auf diese Weise kann man sich einen Windows Explorer mit Benutzer SYSTEM holen. Explorer vorher killen, und dann per AT starten lassen.

Ich hab leider nur Windows 7 zum Testen hier und da funktioniert /INTERACTIVE aufgrund von Sicherheitseinstellungen nicht, d.h. die Prozesse werden zwar als SYSTEM gestartet, bekommen jedoch keinen Zugriff auf die Benutzeroberfläche. Zu XP-Zeiten ging das noch, ich weiß nicht wie es bei Win2k3 ist. Ist aber nicht so wild, muss man sich halt ein Skript schreiben.

Mir wäre es am liebsten die Berechtigungen aller Ordner so zu
ändern dass der Admin auch Zugriff darauf hat. Daher würde ich
deine Hilfe die Du mir angeboten hast gerne in Anspruch
nehmen. Es kommt ja doch ab und an mal vor dass man als Admin
auf einen Profilordner zugreifen will, um dort drin etwas
Bspw. etwas zu löschen. Die PowerShell ist installiert falls
die benötigt werden sollte.

Hab diese Woche leider keine Zeit, nächste Woche könnte ich dir aber ein mal ein PowerShell Skript schicken.

MfG,
shreyder

Hallo shreyder,

ich hatte es letztens mal mit AT versucht und laut Task Manager wurden die Programme wie erwartet auch zu gewünschter Zeit als User SYSTEM gestartet. Nur leider funktioniert es nicht richtig. Starte ich die .bat per Hand so ist die CPU Auslastung immer um die 20% und der Speicherverbrauch verändert sich. Rufe ich selbige .bat über AT auf so passiert da rein gar nichts und die CPU Auslastung ist permanent 0% und es kommen auch keine Dateien auf den Onlinespeicher. Ich sehe auch keine Shell wenn AT die Batch startet. Dadurch kann ich natürlich auch nicht sehen was genau da im Scriptablauf passiert. Gut, das liegt wohl daran dass die Batch über AT als Dienst startet. Aber ist das normal und kann man das irgendwie ändern bzw. wieso startet es aber es passiert nichts?

Es eilt auch nicht auf eine Woche. Also wenn Du mir nächste Woche erst wieder helfen kannst wäre das zu verkraften.

Freundliche Grüße,
Andreas

So hier ein kleines PowerShell-Skript, dass in jedem direkten Unterverzeichnis eines Verzeichnisses einen Eintrag für Vollzugriff Administratoren hinzufügt.

Kopier das Skript in eine neue Datei und speicher es als .ps1 ab. Pass den Parameter $profileContainerDirectoryPath an. Vielleicht musst du auch den Parameter $user anpassen, da bei Domänen es noch die Gruppe Domänen-Administratoren gibt. Die hat leider keine fest SID, so dass ich sie nicht in meinem Skript aufführen konnte. In den Kommentaren ist ein Link zu einem Knowledge-Base-Artikel über bekannte SIDs. Du kannst statt einer SID auch einen Namen verwenden. Steht alles in den Kommentaren des Skripts.

Ganz wichtig: Vorher bitte mit einem anderen Verzeichnis testen!!! Nicht das irgendwas kaputt geht. Man weiß nie. Benutzung auf eigene Gefahr.

Jetzt brauchen wir eine PowerShell als User SYSTEM. Aufgrund von (durchaus sinnvollen) Sicherheitseinstellungen gehen die Tricks bei mir (Windows 7) nur eingeschränkt (keine interaktive Benutzeroberfläche). Deshalb: PsExec aus den PsTools (oder der gesamten Sysinternals Suite) von Microsoft Sysinternals benutzen (http://technet.microsoft.com/de-de/sysinternals/defa…). Runterladen, entpacken, Kommandozeile aufmachen, zum extrahierten Ordner wechseln und folgenden ausführen.

psexec -i -s „C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe“

Jetzt geht eine PowerShell auf. Dort mein Skript starten, indem du den Pfad zum Skript eingibst:

C:\bla\blub\skript.ps1

Voilà :smile:.

Leider wurden die Formatierungen meines Skripts bisschen durcheinander gebracht beim Posten, falls es Probleme gibt schiebe ich es auf Pastebin.

Hier das Skript:

Pfad des Verzeichnisses, welches die Benutzerprofile enthält

$profileContainerDirectoryPath = „D:\Users“

Security Identifier des Benutzers für den ein neuer Zugriffskontrolleintrag erstellt werden soll

Liste bekannter SIDs: http://support.microsoft.com/kb/243330

S-1-5-32-544 ist der vordefinierte Administrator

$user = New-Object System.Security.Principal.SecurityIdentifier(„S-1-5-32-544“)

Alternativ kann auch Benutzername spezifiziert werden.

#$user = New-Object System.Security.Principal.NTAccount(„BUILTIN\Administrators“)

Rechte des neuen Eintrags

$rights = [System.Security.AccessControl.FileSystemRights]::FullControl

Eintrag soll an Container (Verzeichnisse) und Objekte (Dateien) vererbt werden

$inheritanceFlags = [System.Security.AccessControl.InheritanceFlags]„ContainerInherit, ObjectInherit“

Eintrag soll keine Einschränkungen bei der Weitergabe besitzten

$propagationFlags = [System.Security.AccessControl.PropagationFlags]::None

Eintrag ist ein erlaubender Eintrag

$type = [System.Security.AccessControl.AccessControlType]::Allow

Eintrag erstellen

$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($user, $rights, $inheritanceFlags, $propagationFlags, $type)

Alle Unterobjekte von $profileContainerDirectoryPath holen

$profileDirectories = get-childitem -Path $profileContainerDirectoryPath
foreach($directory in $profileDirectories) {

Prüfen, ob es sich um ein Verzeichnis handelt

if($directory.Attributes -eq „Directory“) {

Alte Zugriffsliste bekommen

$acl = get-acl -Path $directory.FullName

Neuen Eintrag der alten Liste hinzufügen

$acl.AddAccessRule($rule)

Neue Liste anwenden

set-acl -Path $directory.FullName -AclObject $acl
}
}

Eine Sache habe ich bei PowerShell vergessen zu erwähnen. Du musst vorher externe Skripte erlauben. Dazu in der PowerShell set-executionpolicy RemoteSigned einstellen. Sobald das Skript ausgeführt wurde und alles so ist, wie dus haben willst, kannst du wieder set-executionpolicy AllSigned in der PowerShell einstellen.