![](https://seccdn.libravatar.org/avatar/6cacaf4eb2894c2da1aaf9dab186ef82.jpg?s=120&d=mm&r=g)
Juergen Langowski wrote:
Ich benutze Suse 9.3 bzw. 10.0. Nach langen Windows-Jahren habe ich in der letzten Zeit eine Menge gelernt, stoße aber immer wieder auf Schwierigkeiten, zu denen mir trotz Suchen und Lesen irgendwann nichts mehr einfällt.
Hier ist ein Beispiel:
Der lokale Entwicklungs- und Testserver hat Kopien der Domains, die öffentlich sichtbar sind. Jede Domain hat einen eigenen ftp- Benutzer, der sich nur innerhalb der Domain bewegen darf. Die Domains benutzen z.T. kleine, selbst geschriebene PHP-Routinen, z.B. um Menüs und Fußzeilen einzublenden.
Eines dieser Skripte wird verändert und getestet, dann soll es auf die Domains verteilt werden.
Jetzt ist die Frage: Welche Domains benutzen dieses Skript überhaupt? Sicher nicht alle, so viel weiß ich. Soll ich jetzt wirklich ein Dutzendmal den ftp-Benutzer wechseln und mich mit den Domains verbinden, um herauszufinden, wo das Skript gebraucht wird und wo nicht? Zu umständlich.
Als root lasse ich mir das auf dem Entwicklungsserver mit "find" anzeigen. Ergebnis: 6 von 12 Domains benutzen das Skript und brauchen das Update.
Also kopiere ich das Skript sechsmal rüber.
Okay, soweit in Ordnung.
Beim nächsten Besuch der Domains als ftp-Benutzer merke ich dann, was ich vergessen habe. Die Rechte stimmen nicht, und der ftp- Benutzer darf nicht mehr dran.
Grins!
Was mir dazu einfällt:
- sechsmal kopieren und sechsmal mit chown zuweisen. Umständlich. - sechsmal als ftp-Benutzer anmelden, sechsmal hochladen. Auch umständlich.
Das solltest du mit einem Script machen. Ich musste das bisher nicht machen, aber es hat ungefähr 5 Minuten gedauert, bis ich das richtige Kommando (auf Suse 9.2) gefunden hatte. Wenn du die Datei gefunden hast mit find, dann mache VOR DEM KOPIEREN!! folgendes: previous_owner=`stat -c%U $filename_to_be_overwritten` previous_group=`stat -c%U $filename_to_be_overwritten` access_mode=`stat -c%a $filename_to_be_overwritten` cp $newfile $filename_to_be_overwritten chown $previous_owner:$previous_group $filename_to_be_overwritten chmod $access_mode $filename_to_be_overwritten Ich habe es jetzt nicht getestet, aber das sollte dein Problem beseitigen, egal, wer der Besitzer der Datei ist und wieviele Domains du verwalten musst.
Dazu käme dann noch, dass die Dateien weitere sechs Mal von den lokalen Domains auf die Produktivdomains übertragen werden müssen.
Wie kann man so etwas regelkonform, unter Sicherheitsaspekten einwandfrei UND effizient erledigen?
Scripten. Siehe oben.
cp -p erhält den Besitzer, aber wie passe ich beim Kopieren möglichst automatisch den Besitzer an? Ich hab mal nach "inherit ownership" usw. gesucht, finde aber nichts Passendes. Gibt es vielleicht im Suse-Paket sogar ein nachzuinstallierendes Tool, das mir bei solchen Aufgaben hilft?
Was machen eigentlich Leute, die auf einen Schlag nicht nur ein halbes Dutzend, sondern ein paar hundert Domains mit Updates versorgen müssen? So was soll's ja geben, glaube ich.
Scripten.
Vielleicht können alte Hasen darüber nur lachen, aber ich stolpere immer wieder über solche Kleinigkeiten und weiß manchmal einfach nicht, wo ich nachsehen/lesen könnte. Oder übersehe ich vielleicht etwas völlig Banales?
Banal ist das ganze nur, wenn man das schon viele male gemacht hat. Das Problem beim Scripten ist, dass man erst einmal einen gewissen Fundus an Programmen kennen muss, bevor man genügend Kombinationsmaterial hat, um das gewünschte Ergebnis zu erreichen. Manche Sachen stellen sich als sehr einfach heraus, während andere nur noch Kopfzerbrechen bereiten, weil dauernd Sicherheitsaspekte oder Komplikationen (Sonderzeichen, Zeichensätze, Leerzeichen, unkontrollierte Usereingaben etc.) auftauchen, die vorher nicht berücksichtigt wurden. Sandy -- Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com