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.
root
ist die Anmeldung auf dem Zielsystem nicht moeglich.root
werden zu koennen, wird sudo mit Passwort benutzt.sudoers
-Datei nicht geaendert werden, da kein genehmigter Change Request vorliegt.
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.
ssh dirk@B "sudo ls" gtar czf - DIR | ssh dirk@B "( cd TARGET ; sudo gtar xzvf - )"
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: 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.