Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

adminstorieskopierenvondateien [20120830 09:28] (aktuell)
Dirk Deimeke angelegt
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]]