cygwin Probleme - SSH Dienst und Besitzerrechte

wof

New Member
Hallo,

ich versuche mich seit ca. 3 Tagen in cygwin (Version 1.7.1, unter Windows XP) reinzufitzen, um eine rsync-Backuplösung für meinen VServer einzurichten. Installation und Einrichtung der Benutzer, SSH Keys und des SSH Dienstes klappten soweit ganz gut.

Mein erstes größeres Problem war (ist), dass ich keine Verbindung zu dem cygwin-Server über Putty mittels private/public key Verfahren herstellen konnte (per Login/Passwort klappt es jedoch einwandfrei). Die Anmeldung des SSH Dienstes erfolgte dabei als "Lokales System". Beim Login-Versuch erhielt ich folgende Fehlermeldung in der Konsole:

2 [main] -bash 3424 C:\cygwin\bin\bash.exe: *** fatal error - couldn't
dynamically determine load address for 'WSAGetLastError' (handle
0xFFFFFFFF), Win32 error 126

Aktiviere ich zusätzlich die Funktion "Datenaustausch zwischen Dienst und Desktop zulassen" in den Dienste-Einstellungen (Registerkarte: Anmelden), erhalte ich die Fehlermeldung zwar nicht mehr, der Server trennt aber ebenfalls gleich wieder die Verbindung, bevor der Prompt erscheint. Wie mir angezeigt wird, scheint die Authentifizierung mit dem key jedoch zunächst erfolgreich gewesen zu sein. Die Verbindung wird also nicht generell abgeblockt.

Nun habe ich die Anmeldung des SSH Dienstes auf ein spezielles Konto definiert, nämlich das Windows-Benutzerkonto, unter dem ich selber gerade angemeldet bin (in der Form: vorname.name). Dieses Konto ist das einzige, womit ich arbeite und es hat Administrator-Rechte. Ein extra Administrator-Konto existiert zwar (vermutlich von der Windows-Standardinstallation), wurde aber noch nie von mir verwendet (es gibt auch kein Windows-Profil). Erstaunlicherweise funktioniert der SSH Login über Putty darüber auch mittels Key-Files.

Zunächst dachte ich, dass damit all meine Probleme gelöst wären, was aber offensichtlich nicht der Fall ist. Bei allen Dateien unter cygwin wird mir als Besitzer: vorname.name [1003] bzw Gruppenzugehörigkeit: Kein [513] angezeigt. Ich hab Zugriff auf alle Dateien, kann diese ändern, umbenennen, löschen usw, gehe also davon aus, dass ich Administratorrechte besitze, so wie es sein sollte.

Mein Problem liegt jetzt jedoch bei rsync. Führe ich unter cygwin rsync aus, um damit bestimmte Dateien von meinem externen VServer zu holen, erhalten diese Dateien ebenfalls die Rechte vorname.name:Kein, wie alle Dateien auf dem cygwin System. Auf dem VServer hingegen hatten die Dateien andere Rechte, z.b. root:root, www-data:www-data oder irgendeinname:psacln. Trotz des -a Parameters bei rsync (welches ja auch -o und -g beinhaltet und somit die Rechte beibehalten sollte), werden die Rechte nicht beibehalten. Woran kann das liegen?

Nach längerem Recherchieren habe ich keine Lösung finden können und vermute, dass es mglw. mit den Anmelde-Einstellungen zu tun hat, die ich vorher im SSH Dienst vorgenommen habe. Auch habe ich Lösungsansätze gefunden, wie man offensichtlich mit Angabe von CYGWIN=nontsec das Windows-System daran hindern kann, sich in die Rechtevergabe von cygwin einzumischen. Irgendwie war ich damit aber auch nicht erfolgreich. Zumal dies wohl nur bei Aufruf über die cygwin.bat funktioniert, nicht aber per SSH Zugriff über Putty. Auch habe ich gelesen, dass es hier Änderungen zwischen cygwin 1.5 und 1.7 gegeben haben soll. Hier hat wohl jemand das gleiche Problem aber auch keine Lösung:

http://cygwin.com/ml/cygwin/2009-07/msg00567.html

Inzwischen bin ich äußerst ratlos und kurz davor, cygwin wieder runter zu schmeißen, da es so als Backup-Lösung absolut nicht zu gebrauchen ist. Aber vielleicht liegt das Problem ja auch ganz woanders und ist einfach zu lösen (wenn man nur wüsste, wie). Also hat vielleicht noch jemand einen Tipp für mich?

Vielen Dank.
 

wof

New Member
Hast Du es schon mit der Option "--numeric-ids" bei rsync versucht?
Danke für den Tipp. Dieser Parameter war mir bisher gar nicht bekannt. Klappt aber leider trotzdem nicht.

Nur nochmal zum besseren Verständnis: Grundsätzlich sollte es doch üblich sein, dass beim serverübergreifenden kopieren/synchronisieren von Dateien die Benutzer erhalten bleiben (entsprechende Parameter vorausgesetzt)!? Also wenn es den jeweiligen Benutzer auf dem Zielsystem nicht gibt, wird stattdessen die UID verwendet, richtig?

Das hieße also: Wird der Benutzer nicht beibehalten und stattdessen auf dem Zielsystem ein anderer Benutzer zugewiesen, sollte dies doch höchstwahrscheinlich auf eine falsche Konfiguration des Zielsystems zurückzuführen sein, oder? Das Problem wäre dann also nicht bei rsync, sondern bei cygwin zu suchen?

Vielen Dank.
 
Last edited by a moderator:

wof

New Member
Hallo zusammen,

ich habe es inzwischen hinbekommen, mich in cygwin als Benutzer root (UID 0, GID 0) einzuloggen, was so in der Standard-Installation nicht der Fall. Dazu habe ich die passwd und group Dateien händisch anpassen müssen (Details auf Nachfrage). Eigenartigerweise wurde dies aber in keiner einzigen Anleitung, die ich im Netz finden konnte, irgendwie auch nur ansatzweise angesprochen. Daher weiß ich jetzt nicht genau, ob es normal ist, dass der Login immer als aktueller Windows-Benutzer erfolgt, welcher eine UID oberhalb 1000 hat. Kann mich da vielleicht mal jemand freundlicherweise aufklären?

Jetzt klappt es übrigens auch, dass sich der sshd und cron Dienst als "Lokales System" starten lassen. Vorher gab es wie gesagt immer Probleme, wenn ich mich per SSH (Putty) mit Key Auth einloggen wollte.

Lediglich rsync macht mir noch zu schaffen. Ich kopiere einige (Test-)Dateien von meinem externen VServer in meine cygwin Umgebung. Gehört die Datei auf dem Quellsystem root (UID 0), funktioniert es einwandfrei. Gehört die Datei aber jemand anderem (sagen wir Benutzer www-data, Group www-data), wird sie unter cygwin einfach dem aktuellen Benutzer (in meinem Fall root:root) zugewiesen, Außerdem werden die Rechte auf 0600 geändert (vorher bspw. 0644). rsync spuckt zudem folgende Fehlermeldung aus:

rsync: chown "/backup/test/test.txt" failed: Invalid argument (22)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at /home/lapo/packaging/rsync-3.0.6-1/src/rsync-3.0.6/main.c(1505) [generator=3.0.6]

Ein Bekannter, der sich recht gut mit Linux auskennt (ist Admin mehrerer Server), aber absolut kein Windows-Freund ist und mit cygwin auch absolut keine Erfahrung hat, meint jetzt, das dies völlig normal sein kann und ich vielleicht von cygwin mehr verlange, als es tatsächlich kann. Mich würde daher mal eine (verbindliche) Aussage von jemandem interessieren, der sich besser mit cygwin auskennt: Also ist es normal, dass cygwin keine Benutzer, Gruppen, UIDs und GIDs zuverlässig kopiert, und sogar die CHMOD Rechte so verstümmelt? Oder liegt hier in meinem speziellen Fall ein Fehler vor?

Über entsprechende weitere Vorschläge wäre ich sehr dankbar, wie ich rsync endlich zuverlässig unter cygwin zum laufen bekomme. Wichtig ist mir auf jeden Fall, dass CHMOD Rechte sowie Benutzer- und Gruppen-Zugehörigkeiten erhalten bleiben (wenn vielleicht auch nicht namentlich, dann doch aber wenigstens UID und GID).

Vielen Dank.
 
Top