NTFS setzt alle Dateien executable

i18n

Well-Known Member
Moin. Ich habe heute den ganzen Tag Dateien zwischen FreeBSD und Linux verschoben.
Mangels Kompatibilität zwischen den Systemen und aufgrund großer Festplatte habe ich diese zum Austausch mit NTFS formatiert. Nachdem ich endlich mit allem Verschiebereien fertig war, mußte ich leider feststellen, daß sämtliche Dateien executable gesetzt waren. Nun ist das bei Ordnern ja schön, aber bei einfachen Dateien eher hinderlich.
Gibt es einen einfachen Befehl, vielleicht irgendwas mit "find", der mir das Problem wieder aus der Welt schafft? Sprich, alle Dateien wieder zurücksetzt, aber die Ordner executable beläßt? Bitte um Antwort, es wäre mir sehr geholfen.
 
Was den Befehl angeht: da schaue ich nochmal genauer nach, aber bei "find" kannst du mit der Option "-f" nach Dateien oder "-d" nach Verzeichnissen differenzieren. Vielleicht hilft dir das schon.

Anm.: Ich habe aus dem Grund, dass es kein modernes Dateisystem für große Datenmengen gibt, das BSD und Linux gleichermaßen gut schreiben und lesen können (zfs für Linux bewusst außen vor gelassen), seither nur mit FreeBSD 'gespielt' und keine Arbeitsmaschine damit in mein Netz aufgenommen. Dann habe ich mich mit SSH / scp / sftp befasst und beschlossen, dass ich damit den Datenaustausch abwickeln kann.
Vielleicht auch eine Idee für dich?
Jedenfalls richte ich mir jetzt endlich eine 'richtige' FreeBSD-Kiste ein.

VLG
Stephan
 
Zuletzt bearbeitet:
Ich habe es zwar selbst nie ausprobiert, aber eigentlich sollte FreeBSD 12.0 und höher ext4 lesen und vor allem auch schreiben können
Zumindest habe ich keine Probleme mit dem Fuse-Port. Inzwischen habe ich fast alles von ext2 auf ext4 umgestellt, weil das meiner Erfahrung nach noch problemloser läuft, als früher.

NTFS kennt doch gar keine Dateirechte, also keine Unix-Dateirechte.
Der Weg über Netzwerk ist deshalb in so einem Fall doch wesentlich einfacher und eleganter. Das geht doch viel besser, als mit externen Datenträgern und die verwendeten Dateisysteme auf Quell- und Zielrechnern sind auch egal.
 
...Gibt es einen einfachen Befehl, vielleicht irgendwas mit "find", der mir das Problem wieder aus der Welt schafft? Sprich, alle Dateien wieder zurücksetzt, aber die Ordner executable beläßt? Bitte um Antwort, es wäre mir sehr geholfen.
Gibt es sogar ohne find:
chmod -R u=rwX,g=rwX,o=rwX path/to/directory
Großes X setzt rekursiv Ordner auf 7(77) und Dateien auf 6(66), Vollzugriff ist vllt nicht gewünscht dann selbstständig anpassen
siehe man chmod

habe nur keine Ahnung ob das auch auf NTFS geht :(
 
NTFS kennt doch gar keine Dateirechte, also keine Unix-Dateirechte.
Da muß ich Dir widersprechen. Windows NTFS kennt jede Menge Dateiberechtigungen, mehr als man sich als ix-Nutzer vorstellen kann. Schon die Home-Versionen haben einiges zu bieten, bei den Pro-Versionen wird es dann richtig kompliziert. Hier drei Beispiele zum Nachlesen:

Vererbung - Was Sie unbedingt verstehen müssen

Best Practices zur Verwaltung von NTFS-Berechtigungen

NTFS Berechtigungen setzen
 
Gibt es sogar ohne find:
chmod -R u=rwX,g=rwX,o=rwX path/to/directory
Großes X setzt rekursiv Ordner auf 7(77) und Dateien auf 6(66), Vollzugriff ist vllt nicht gewünscht dann selbstständig anpassen
siehe man chmod

habe nur keine Ahnung ob das auch auf NTFS geht :(
Danke schön. Ich habe mich vielleicht nicht klar ausgedrückt. Ich habe eine riesige Menge von Dateien auf der NTFS-Festplatte zwischengeparkt und dann auf ext4 bei Linux bzw. UFS bei FreeBSD kopiert. Erst nach dem Kopieren wurden alle Dateien auf »ausführen« gesetzt.

Habe Deinen chmod-Befehl ausprobiert, funktioniert leider nicht. Wie gesagt, mir geht es nur darum, für alle Dateien die Ausführbarkeit zurückzusetzen, bei den Ordnern hingegen nicht. Das soll in sämtlichen Ordnern und Unterordnern bei /home/xxx passieren.
 
Der chmod Befehlt sollte eigentlich genau das machen. Aber alternativ noch die Variante mit find:

find /home/XXX -type f -exec chmod -x '{}' \;
 
Wunderbar, ich habe zwei funktionierende Befehle über die GhostBSD-Gruppe bekommen:
$ find . -type f -exec chmod 664 {} + This will find all the files in the current directory and then execute chmod 664 against all the files. This will give files the permissions: read and write for owner, read and write for group and read only for others. You can also do the same for all the directories in the current directory $ find . -type d -exec chmod 755 {} + This will find all the directories in the current directory and then execute chmod 755 against all the directories. This will give directories the permissions: read-write-execute for owner, read and execute for group and read and execute for others.
 
Habe Deinen chmod-Befehl ausprobiert, funktioniert leider nicht. Wie gesagt, mir geht es nur darum, für alle Dateien die Ausführbarkeit zurückzusetzen, bei den Ordnern hingegen nicht. Das soll in sämtlichen Ordnern und Unterordnern bei /home/xxx passieren.

... hatte ich überlesen, groß X nimmt kein Execute zurück. Pragmatischer Ansatz wäre, weil die Berechtigungen ja eh alle falsch waren, ein chmod -R 666 /home/xxx && chmod -R u=rwX,g=rwX,o=rwX :D einfach nur der Vollständigkeit halber, denn @crotchmaster Zeile gewinnt die Challenge bereits ;)
 
Xargs hat auch ein Problem wenn Leerzeichen im Pfad vorkommen, also ist die - exec Variante schon die robustere :)
 
Dafür gibt es ja bei diesen Tools die Trennung der Argumente durch \0 statt einem Leerzeichen.

Rob

Schon klar. Aber das Problem ist ja schon gelöst, es geht also nur mehr darum was "schöner" ist :D
Das ist zwar subjektiv aber mir gefällt da ein robustes -exec besser als die ganzen Dinge die ich mit xargs beachten müsste.
 
Meiner praktischen Erfahrung nach ist -print0 | xargs -0 wesentlich robuster als ein -exec. Als ich mal von allen Dateien auf meinem Server die SHA Checksumme haben wollte, ist mir der exec Weg direkt um die Ohren geflogen, weil irgendwelche Dateien ganz komische Zeichen in ihrem Namen hatten. print0 | xargs -0 funktionierte dann.
 
Zurück
Oben