adminstorieskopierenvondateien

no way to compare when less than two revisions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


adminstorieskopierenvondateien [20120830 09:28] (aktuell) – angelegt Dirk Deimeke
Zeile 1: Zeile 1:
 +====== Kopieren von Dateien ======
  
 +  * Urspruenglicher Autor: Dirk Deimeke
 +  * Urspruengliches Datum: 12.08.2011
 +
 +Auch das gehoert zum Adminalltag dazu, das Finden von Loesungen, die die Gegebenheiten beruecksichtigen.
 +
 +Die Aufgabe ist prinzipiell ganz einfach, kopiere ein Verzeichnis inklusive aller Rechte von Rechner A auf Rechner B. "Eigentlich" ganz einfach, wenn da nicht eine Reihe an Nebenbedingungen waeren.
 +
 +  * Als ''root'' ist die Anmeldung auf dem Zielsystem nicht moeglich.
 +  * Alle Verzeichnisse auf die der eigene User Schreibrechte hat, bieten nicht genug Platz fuer die Daten. Auch nicht, wenn man sie komprimiert.
 +  * Um ''root'' werden zu koennen, wird sudo mit Passwort benutzt.
 +  * Konfigruationsdateien duerfen, erst recht nicht die ''sudoers''-Datei nicht geaendert werden, da kein genehmigter Change Request vorliegt.
 +  * Verzeichnisrechte auf dem Zielsystem duerfen auch nicht geaendert werden (oder gar ein Verzeichnis fuer den eigenen User erstellt werden).
 +
 +Klingt nahezu unmoeglich, ist es aber nicht. Wir nutzen eine Eigenschaft von ''sudo''aus, um die Daten zu kopieren. Die Variable ''passwd_timeout'' gibt die Zeit in Minuten an, wie haeufig sudo nach einem Passwort fragen soll. Im Standard steht sie auf 5, wenn also einmal das Passwort für ein sudo-Kommando eingegeben wurde, wird fuenf Minuten lang nicht erneut nach dem Passwort gefragt. Das funktioniert sogar prozessuebergreifend, was ich persoenlich fuer ein Sicherheitsproblem halte. Meiner Meinung nach sollte der Timeout abgelaufen sein, wenn man die Shell verlaesst.
 +
 +''gtar'' steht fuer GNU ''tar'', nicht zu verwechseln mit dem normalen ''tar'' auf Unix-Systemen. DIR ist das Verzeichnis, das uebertragen werden soll und TARGET ist das Verzeichnis in dem DIR auf dem Zielsystem B liegen wird.
 +
 +<code>ssh dirk@B "sudo ls"
 +gtar czf - DIR | ssh dirk@B "( cd TARGET ; sudo gtar xzvf - )"</code>
 +
 +Mit dem ersten Befehl wird eine Verbindung auf das Zielsystem aufgebaut und nach dem sudo-Passwort gefragt. Der zweite Befehl erstellt eine mit ''gzip'' komprimierte ''tar''-Datei und schreibt sie nach ''STDOUT''. Das wird mit dem Pipe-Symbol ''|'' an den zweiten Teil übergeben, der eine Verbindung zum Zielsystem aufbaut, in das Zielverzeichnis wechselt und dort den Datenstrom von ''STDIN'' liest, entpackt und auf die Platte schreibt.
 +
 +Ja, ok, das ist "von hinten durch die Brust ins Auge", aber es funktioniert sehr gut.
 +
 +**Update:** [[https://plus.google.com/102874704064476529613/posts/efMXYXsnRiD|Drueben bei Google+]] wurde ich darauf hingewiesen, dass ''ssh'' mit ''-t'' aufgerufen werden muss, um die Moeglichkeit zur Passworteingabe zu bekommen. Das ist voellig korrekt und war bei uns bereits in den Optionen enthalten.
 +
 +[[adminstoriesartikel|Zurück zur Uebersicht]]
  • adminstorieskopierenvondateien.txt
  • Zuletzt geändert: 20120830 09:28
  • von Dirk Deimeke