WinSCP von Unix bis Windows - Zeitstempel, Besitz und Berechtigungen werden beibehalten

787
Pr4w

Ich migriere eine Reihe von Ordnern von einer Unix-Box auf einen Windows-Server und möchte Ordnerstruktur, Berechtigungen, Besitz (Benutzer und Gruppe) und idealerweise Zeitstempel der Originaldateien beibehalten.

Nach allem, was ich online sammeln konnte, scheint WinSCP die Arbeit gut zu machen, vorausgesetzt, ich deaktiviere die Option "Lebenslauf". Ich wollte nur nachprüfen, ob dies machbar ist und ob es eine andere Option gibt, an die ich vor dem Go-Live nicht gedacht hatte?

Gibt es bestimmte Einstellungen, die ich eingeben muss? Kann WinSCP all das oben aufheben?

Prost, Mark

1
Es gibt keine gute Übereinstimmung zwischen den Dateiattributen in Unix und Windows. Die Zeitstempel für den Zugriff und das Update stimmen überein, aber in Windows-Dateisystemen stimmt nichts mit den Berechtigungen für andere Benutzergruppen überein, und es gibt keine Lese- oder Ausführungsberechtigungen: Nur die Schreibberechtigung für Linux entspricht der schreibgeschützten Schreibweise von Windows. Es ist zwar möglich, Windows-ACLs zu verwenden, um eine Entsprechung mit einigen Linux-Attributen zu implementieren, aber ich bezweifle, dass `WinSCP` dies tut. AFH vor 8 Jahren 1
@AFH Gibt es eine Möglichkeit, in diesem Fall ein Skript zu erstellen? Wenn ich eine Liste aller Dateien / Ordner eines bestimmten Benutzers erhalte, gibt es ein Skript, das ich auf dem Windows-Computer ausführen könnte, das allen Dateien aus einer TXT-Datei oder ähnlichem den richtigen Besitz zuweist? Pr4w vor 8 Jahren 0
Unix `find 'erstellt diese Listen, aber ich habe bisher noch keine Windows-ACLs verwendet. Daher müssen andere Benutzer raten, wie sie in gleichwertige` cacls'-Befehle abgebildet werden sollen. Beachten Sie jedoch, dass einige der Zugriffssteuerungslisten-Berechtigungen immer noch eine schlechte Übereinstimmung sind, insbesondere für Verzeichnisse. Zum Beispiel wird der Zugriff auf Löschen / Umbenennen durch Berechtigungen für das übergeordnete Verzeichnis in Linux implementiert, jedoch auf Dateiebene in Windows. Denken Sie daran, dass es keine Ausführungsberechtigung in Windows gibt: Alle lesbaren Dateien sind ausführbar (vorausgesetzt, dies ist sinnvoll, abhängig von einer Kombination der Dateierweiterung und der magischen Nummer beim Start). AFH vor 8 Jahren 0
Das Leben könnte in Zukunft einfacher sein - siehe [hier] (https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/) - und ich werde es sehr schätzen Sie möchten wissen, ob sie Dateiattribute implementieren oder einfach alle Dateien vollständig zugänglich machen (oder nicht schreibgeschützt sind, wenn sie schreibgeschützt sind) und sich im Besitz eines einzelnen Benutzers befinden, wie im Beispiel beschrieben. Dies geschieht derzeit, wenn Sie eine Windows-Freigabe unter Linux anzeigen mit Samba. AFH vor 8 Jahren 1
@AFH: Das ist teilweise wahr und teilweise kompletter Unsinn. Windows NT verfügt seit dem ersten Tag über die Berechtigungen "Lesen" und "Ausführen". Schauen Sie sich nur die ACLs an, die Sie selbst nennen. Die "Execute" -Berechtigung _is_ wird für Dateien gewürdigt, es ist lediglich _set by default_ (und CreateProcess () kümmert sich nicht besonders um die Erweiterung, hauptsächlich die grafische Shell. Sie können calc.exe in calc.tmp umbenennen und erfolgreich ausführen über die Eingabeaufforderung). grawity vor 8 Jahren 0
@AFH: (Die Berechtigungsbits für POSIX-Benutzer / -Gruppen / andere Stellen sind nur eine begrenzte Form von ACLs - einige Programme geben vor, dass sie POSIX-ACL-Einträge sind, die problemlos zu NTFS-ACLs erweitert werden können. Obwohl Sie recht haben, dass WinSCP dies nicht tut machen Sie sich nicht die Mühe - aber ich würde vermuten, weil die _user-Konten nahezu unmöglich sind, die Systeme systemübergreifend abzubilden.) grawity vor 8 Jahren 0
@grawity - Ich stehe natürlich korrigiert: Ich sagte, ich sei kein ACL-Experte, obwohl ich seit den 80er Jahren mit Unix arbeite. Ich habe meinen Kommentar auf die Berechtigungen beschränkt, die von "cacls" festgelegt werden können, also Lesen, Schreiben, Ändern, Vollständig und Keine. Wie machen Sie eine Datei lesbar, aber nicht ausführbar oder umgekehrt für ein Verzeichnis? Ich weiß, dass .EXE-Dateien aufgrund der magischen Zahl in eine beliebige andere Erweiterung umbenannt werden können, aber ich kenne keine Möglichkeit, eine Batch-Skriptdatei mit dem Namen `batch.sh 'auszuführen. Ich denke also, meine Zusammenfassung (Kombination aus Erweiterung und Magie) Nummer) ist richtig. AFH vor 8 Jahren 0
@AFH: Der grafische Sicherheitsdialog in Win2000 + oder "icacls" in Win2003 + ist etwas aussagekräftiger - z. B. "icacls foo / grant fred: (oi) (ci) (r) / grant martin: (rx)` ". (Beim Exportieren von Linux / home über Samba ist das Fehlen von + x für EXE-Dateien sehr auffällig.) Bei Verzeichnissen hat + x auch die gleiche Bedeutung ("Ordner durchsuchen / Datei ausführen"), wird jedoch für einige standardmäßig ignoriert seltsame Gründe - Forschung "SeChangeNotifyPrivilege" aka "Bypass-Traversierung". grawity vor 8 Jahren 0
@ grawity - Danke, ich wusste nichts über `icacls`. Das erklärt viel. AFH vor 8 Jahren 0

1 Antwort auf die Frage

1
Martin Prikryl

WinSCP behält standardmäßig Zeitstempel bei (und Sie müssen die Unterstützung für den Lebenslauf nicht deaktivieren).

WinSCP kann den Besitz und die Berechtigungen nicht beibehalten. Es gibt kaum eine Möglichkeit, dies automatisch zu tun. Zunächst müssen Sie eine 1: 1-Zuordnung von * nix Benutzern und Gruppen zu Windows-Benutzern erstellen. Erst dann ist es sinnvoll, die Zuordnung von * nix-Berechtigungen zu Windows-ACLs zu starten. Mir ist kein Werkzeug bekannt, das dazu in der Lage ist.

Wenn SFTP Benutzernamen (und nicht UIDs) bereitstellt, wäre dies möglich - aber dann besteht das Problem, dass Root- oder Administratorrechte erforderlich sind, um _set_ den korrekten Besitzer für neu heruntergeladene Dateien zu setzen. grawity vor 8 Jahren 0