Ich habe ein Skript, das ich auf einer NTFS-Partition ausführen muss. Die Berechtigung des Skripts ist auf 600 festgelegt.
Ich habe versucht, die Berechtigungen durch Ausführen zu ändern. Dabei chmod 755 script.sh
wird kein Fehler gemeldet. Die Berechtigungen für die Datei werden jedoch ebenfalls nicht geändert:
$ stat script.sh
File: `script.sh'
Size: 297070 Blocks: 584 IO Block: 4096 regular file
Device: 811h/2065d Inode: 35515 Links: 1
Access: (0600/-rw-------) Uid: ( 1000/ xxxxxx) Gid: ( 1000/ xxxxxx)
Access: 2010-09-30 14:05:16.041621000 -0700
Modify: 2010-09-30 14:05:05.070157000 -0700
Change: 2010-09-30 14:05:05.070475000 -0700
$ chmod 755 script.sh
$ stat script.sh
File: `script.sh'
Size: 297070 Blocks: 584 IO Block: 4096 regular file
Device: 811h/2065d Inode: 35515 Links: 1
Access: (0600/-rw-------) Uid: ( 1000/ xxxxxx) Gid: ( 1000/ xxxxxx)
Access: 2010-09-30 14:05:16.041621000 -0700
Modify: 2010-09-30 14:05:05.070157000 -0700
Change: 2010-09-30 14:05:05.070475000 -0700
Wie Sie sehen, bleibt es unverändert.
permissions
ntfs
chmod
Nathan Osman
quelle
quelle
Antworten:
Der Modus wird durch die Mount-Optionen der Partition bestimmt (Sie können ihn nicht über chmod ändern).
Für '755' für Dateien und '777' für Verzeichnisse würden Sie so etwas verwenden
quelle
/dev/whatever
und/mnt/whatever
wenn ich die Erlaubnis meiner HDD-Partition mit dem Namen/media/Prtn
ntfs-3g.usermap
. Siehe unten ...Im Gegensatz zu dem, was die meisten Leute glauben, ist NTFS ein POSIX-kompatibles Dateisystem, und es ist möglich, Berechtigungen für NTFS zu verwenden .
Um dies zu ermöglichen, benötigen Sie eine "Benutzerzuordnungsdatei" oder geben Sie
permissions
beim Mounten einfach die Option an (wenn keine Kompatibilität mit Windows erforderlich ist). Dies ordnet Linux-Benutzer auf Ihrem System den Benutzer-IDs zu, die von NTFS / Windows intern verwendet werden.Weitere Informationen und Beispiele finden Sie auf der Hilfeseite zu ntfs-3g . Weitere Informationen finden Sie in der erweiterten Dokumentation zu ntfs-3g zu Eigentumsrechten und Berechtigungen .
(Beachten Sie, dass dies auf FAT-Dateisystemen nicht funktioniert.)
¹ Ja, es können auch Dateinamen gespeichert werden, die unter Linux / Unix gültig sind, jedoch nicht unter Windows. Unterstützt Symlinks und Hardlinks usw.
quelle
sudo ntfs-3g.usermap /dev/disk/by-label/MY-NTFS
und dannsudo mv UserMapping /media/MY-NTFS/.NTFS-3G/
chmod 655 /some/file
für die unter Linux gemountete NTFS-Partition festlegen ? Ich versuche herauszufinden, wie ich meine Home-Partition von Linux in c: \ Users zusammenführen kann. Erlaubt mir die Verwendung von usermap, alle Berechtigungen beizubehalten? Ich hatte vor, das Verzeichnis c: \ Users in / home unter Linux zu mounten.ntfs-3g manpage
Verbindung unterbrochenVerwenden Sie für NTFS-Partitionen die
permissions
Option in fstab.Hängen Sie zuerst die ntfs-Partition aus.
Identifizieren Sie Ihre Partitions-UUID mit
blkid
Dann editieren
/etc/fstab
Fügen Sie eine Zeile für die ntfs-Partition hinzu oder bearbeiten Sie sie
Erstellen Sie einen Einhängepunkt (falls erforderlich)
Hängen Sie nun die Partition ein
Mit den Optionen, die ich Ihnen gegeben habe,
auto
wird die Partition beim Booten automatisch gemountet, undusers
Benutzer können das Mounten und Ummounten durchführen.Sie können dann chown und chmod auf der ntfs-Partition verwenden.
quelle
users
impliziert noexec , nosuid und nodev . ist nicht? Wie können Benutzer mounten / umounten,noexec
wenn sie festgelegt sind?Zusätzlich zum Festlegen der fmask und / oder dmask in der obigen Antwort von htorque musste ich auch die Mount-Option "exec" festlegen, wenn Sie Skripts auf dem Laufwerk ausführen möchten.
Das Beispiel wäre also:
quelle
Sie können den Skriptinterpreter jederzeit explizit aufrufen. In diesem Fall sind keine Ausführungsberechtigungen erforderlich. Wenn das Skript bash verwendet , wie anhand der ersten Zeile des Skripts überprüft werden kann, führen Sie es einfach aus
Beachten Sie, dass das Skript andere Skripte oder Binärdateien auf derselben Partition aufruft. Dies funktioniert nicht. Beachten Sie auch, dass die Strategie nicht mit Binärdateien funktioniert, sondern mit Text-Skriptdateien, die in Bash-Skript, Perl, Python oder dergleichen geschrieben wurden.
quelle
/lib64/ld-linux-x86-64.so.2 ./program.bin
zum Ausführen von Binärdateien 64-Bit- und/lib/ld-linux.so.2 ./program.bin
32-Bit -Programme .Nach Angaben des Eigentümer und Berechtigungen Abschnitt der NTFS-3G - Dokumentation können wir Mount - Optionen verwenden , um Datei zu steuern den Zugriff und Schöpfung . Die Kombinationen sind sehr kompliziert (siehe dort die beiden Tabellen). Auch ich lese nicht und bekomme sie alle. Zum Beispiel weiß ich nicht, ob POSIX-ACLs zur Kompilierungszeit des NTFS-3G-Binärpakets ausgewählt sind oder nicht. Das Beste, was ich bisher herausgefunden habe, ist die Verwendung einer Benutzerzuordnungsdatei in Kombination mit einigen Einhängeoptionen, um eine plausible Zuordnung von Dateibesitz und Berechtigungen zwischen Windows und Linux zu erreichen.
Warnung : Dies funktioniert nur am besten, wenn ich eine NTFS- Datenpartition (Laufwerk
D:
unter Windows) zwischen doppelt gebootetem Windows 8 und Kubuntu 14.04 freigebe. Die Anweisungen werden in sorgfältiger Rückschau aufgezeichnet, aber nicht gründlich getestet. Es ist zu anstrengend und langweilig, den gesamten Vorgang noch einmal zu wiederholen. Befolgen Sie es also auf eigenes Risiko. Wenn Sie dies dennoch tun, teilen Sie Ihre Erfahrungen mit. Wenn Sie sich dazu entschließen, die Anweisungen zu befolgen, lesen Sie sie bitte vollständig durch, um ein vollständiges Bild zu erhalten, bevor Sie tatsächlich handeln. Viel Glück!Okay, hier geht's! Die ausführliche Anleitung besteht aus drei Teilen. Teil 1 sollte unter Windows und Teil 2 unter Linux ausgeführt werden. Teil 3 dient zum Testen.
Teil 1
Im Abschnitt Benutzerzuordnung der NTFS-3G-Dokumentation werden zwei Versionen zum Einrichten der Benutzerzuordnung zwischen Windows und Linux angegeben, eine Windows-Version und eine Linux-Version. Meine Erfahrung war, dass die Linux-Version mit einem Miss endete . Das Linux-Konto wurde meinem Windows-Konto nicht zugeordnet, aber ein unbekanntes Konto wurde unter einer SID angezeigt . Das Ergebnis war ein Durcheinander, da dieses unbekannte Konto den Besitz aller Dateien meines Windows-Kontos übernimmt. In diesem Fall kann auf Dateien unter Ihrem Windows-Konto nicht zugegriffen werden, es sei denn, Sie haben Administratorrechte, um Ihren Besitz zurückzugewinnen. Aber selbst wenn Sie räumen, ist es immer nocheine falsche Zuordnung. Das bedeutet, dass alle Dateien, die Sie unter Linux erstellen, später unter Windows diesem unbekannten Konto zugewiesen werden und die unter Windows unter Linux root zugewiesen werden (wenn ich mich recht erinnere). Daher müssen Sie unter Windows den Besitz wieder übernehmen und unter Linux den Besitz ändern. Das erwarten wir nicht. Nach mehreren hoffnungslosen Versuchen, das Problem zu beheben, gab ich auf und wandte mich der Windows-Version zu. Das hat funktioniert. Es folgen detaillierte Anweisungen aus dem entsprechenden Abschnitt der NTFS-3G-Dokumentation:
Laden Sie das Usermap- Tool herunter , extrahieren Sie es irgendwo (in meinem Fall auf Laufwerk
C:
), besser außerhalb der NTFS-Partition (in meinem Fall auf LaufwerkD:
), um es gemeinsam zu nutzen.Öffnen Sie die Windows-Befehlszeile. Wechseln Sie in das extrahierte Verzeichnis
tools
(standardmäßig) desusermap
Tools. Führen Sie dann den folgenden Befehl aus:Dadurch wird eine Vorlage generiert und in eine Datei mit dem Namen umgeleitet
UserMapping
. Öffnen Sie die Datei mit einem Texteditor, sagen Sie "Editor". Die folgenden Zeilen sollten angezeigt werden:Vermutlich sollte die erste
SID
Ihre Benutzer-SID sein, während die zweite Ihre Gruppen-SID ist. Sie können sie jeweils mit den Befehlenwhoami /user
und überprüfenwhoami /groups
.Nachdem Sie sichergestellt haben, dass die SIDs korrekt sind, folgen Sie den Anweisungen im Kommentar, dh ändern Sie
user
in deruser::SID
Zeile Ihren Benutzernamen undgroup
in der:group:SID
Zeile Ihren primären Gruppennamen unter Linux. Auf Ubuntu sind sie gleich. Fügen Sie außerdem Ihren Linux-Gruppennamen auch nach dem ersten Doppelpunkt deruser::SID
Zeile hinzu. Die Linie sollte also ungefähr so aussehenuser:group:SID
. Andernfalls werden Dateien, die unter Windows erstellt wurden,user:root
unter Linux zugewiesen .Speicher die Datei. Verschieben Sie es in ein Verzeichnis mit dem Namen
.NTFS-3G
(erstellen Sie es, falls es noch nicht vorhanden ist) auf der zu teilenden NTFS-Partition (in meinem Fall LaufwerkD:
).Dieser Schritt dient zum Testen in Teil 3. Erstellen Sie auf der freigegebenen NTFS-Partition ein neues Verzeichnis und eine neue Datei.
Teil 2
Booten Sie jetzt in Linux.
sudo
Bearbeiten Sie die Datei/etc/fstab
. Fügen Sie die Zeile für die freigegebene NTFS-Partition wie folgt hinzu oder ändern Sie sie:Das Wesentliche ist die Einstellung
umask
(dmask
undfmask
kann auch funktionieren, aber nicht getestet). Wählen Sie einen Wert fürumask
Sie, obwohl ich gewählt habe077
. Ohne diese Einstellung werden anscheinend die vollständigen Berechtigungeno
für neu erstellte Dateien erteilt .Speicher die Datei. Jetzt
sudo mount
oder mounten (sudo umount
und dannsudo mount
) die gemeinsame NTFS - Partition (in meinem Fall/data
):Teil 3
Nun (noch unter Linux)
cd
zum Einhängepunkt (in meinem Fall/data
),ls -l
den Dateien dort. Überprüfen Sie, ob der Besitz und die Berechtigungen übereinstimmen, die Sie in derUserMapping
Datei angegeben undumask
festgelegt haben/etc/fstab
(die Übereinstimmung zwischen den Berechtigungenumask
erfordert eine Komplementberechnung; weitere Informationen finden Sie unter man (1) umask ). Wenn doch, Glückwunsch, ist das halbe Ziel erreicht. Ansonsten arm du. Fragen Sie Ubuntu oder Windows.Erstellen Sie dann ein neues Verzeichnis und eine neue Datei.
ls -l
um ihren Besitz und ihre Berechtigungen zu überprüfen. Der Eigentümer sollte wie gewohnt Ihr Benutzername und Ihre primäre Gruppe sein. Die Berechtigungen sollten mit den übereinstimmenumask
. Starten Sie nun Ihren Computer neu und starten Sie Windows. Suchen Sie auf der freigegebenen NTFS-Partition das Verzeichnis und die Datei, die Sie gerade unter Linux erstellt haben. Überprüfen Sie ihre Eigenschaften, um festzustellen, ob sie Ihrem Windows-Konto zugewiesen sind. Wenn dies der Fall ist, herzlichen Glückwunsch, sind Sie fertig. Ansonsten Pech. Fragen Sie Windows oder Ubuntu.EOF
quelle
Alter Thread, ich weiß, aber immer noch relevant und ohne einen bestimmten Anwendungsfall-Tipp, zusammengestellt aus verschiedenen Vorschlägen in verschiedenen anderen Foren / Threads und getestet auf Ubuntu GNOME 13.04, wo ich wollte, dass ein externes Laufwerk eine Steam-Bibliothek enthält ...
Befindet sich die NTFS-Partition beispielsweise auf einem externen USB-Laufwerk, was bedeutet, dass die Partition beim Herstellen einer Verbindung im laufenden Betrieb bereitgestellt wird, können Sie mit der folgenden Methode festlegen, dass udev ntfs-Partitionen mit Ausführungsrechten bereitstellt.
Öffne ein Terminalfenster und mache:
Fügen Sie dann diese Zeile in eine leere / neue Datei ein (wenn nicht, beenden Sie nano und geben Sie den Befehl erneut aus, aber beginnen Sie den Dateinamen mit einer höheren Zahl wie 91 -...):
Dann speichern und schließen. Trennen Sie das Laufwerk und führen Sie dann Folgendes im Terminal aus:
Als nächstes schließen Sie das Laufwerk wieder an und genießen Sie :)
quelle
Alle Schritte:
Installieren Sie
ntfs-3g
:Hängen Sie die NTFS- Partition aus:
Verwenden Sie
ntfs-3g.usermap
, um IhreUserMapping
Datei zu generieren :oder
Hängen Sie die NTFS- Partition erneut ein, um die
UserMapping
Datei hinzuzufügen :Aktualisieren Sie Ihre
fstab
Datei:Aktualisieren Mount - line:
#
am Anfang ein einfügen.UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0
UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0
(Verwendenntfs-3g
und nurdefault
Option)Es sollte ungefähr so aussehen:
#UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0
UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0
Zum Schluss montieren Sie erneut mit Ihrem
fstab
:Tun Sie dies einmal für jede NTFS- Partition, die Sie haben!
WARNUNG UNTER WINDOWS!
Ich überprüfe es mit Windows 7+ und die Berechtigungen wirken sich auf das Windows-Betriebssystem aus! Ich ändere die Berechtigungen meines Basisverzeichnisses auf der Windows-Partition und als ich Windows erneut verwendete, konnte ich feststellen, dass der Benutzer defekt war!
quelle
Es gibt keine verwandte Frage für USB-Geräte. Diese Antwort ist ein hässlicher Hack, wenn Sie jedes USB-Gerät automatisch mit Ausführungsberechtigungen mounten möchten.
quelle
Mounten Sie die NTFS-Partition auf einem USB-Laufwerk mit benutzerdefinierten Berechtigungen und Eigentümern
Unter Linux wird der Modus von NTFS (und FAT32) durch die Mount-Optionen der Partition bestimmt . Sie können es nicht über chmod ändern.
Annahme: Das USB-Laufwerk wird als " Ändern" angesehen
sdb1
, sodass es dem Laufwerksbuchstaben und der Partitionsnummer in Ihrem Fall entspricht . Die allgemeine Syntax lautetsdxn
, wobeix
der Laufwerksbuchstabe undn
die Partitionsnummer angegeben sind, wie dies beispielsweise der Fall istsudo lsblk -f
Vorbereiten
Hängen Sie die NTFS-Partition aus.
Erstellen Sie einen benutzerdefinierten Einhängepunkt (nur wenn Sie einen neuen Einhängepunkt möchten), zum Beispiel mit
Überprüfen Sie die
uid
Nummer Ihrer Benutzer-ID (normalerweise 1000, manchmal 1001 oder 1002 ...)und verwenden Sie diese Nummer, wenn Sie den Besitz übernehmen möchten (Standard ist
root
).Hängen Sie die NTFS-Partition ein
Beispiel 1 (ohne Ausführungsberechtigung für Dateien, kein Zugriff für 'Andere'),
In diesem Fall können Sie das Skript
this-script
mit ausführenBeispiel 2 (mit Ausführungsberechtigungen für Dateien, kein Zugriff für 'Andere'),
In diesem Fall können Sie das Skript
this-script
mit ausführenSie können auch ausführbare Programme von diesem Speicherort aus ausführen (dies wird jedoch nicht empfohlen).
Beispiel 3 (vollständige Berechtigungen für alle, was praktisch, aber nicht sicher ist, wenn mehrere Benutzer vorhanden sind),
quelle
/media$ sudo mkdir -p sdb1
/media$ sudo mount -o rw,users,umask=000,exec /dev/sdb1 ./sdb1/ mount: block device /dev/sdb1 is write-protected, mounting read-only
chkdsk /f X:
gemäß diesem Link auf ubuntuforums.org reparieren /… - Wenn Sie immer noch kein Glück haben, sichern Sie die Daten und versuchen Sie es gemäß askubuntu.com/questions/144852/…