Wie verwende ich 'chmod' auf einer NTFS (oder FAT32) Partition?

118

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 zu ändern, indem ich chmod 755 script.sh ausgeführt habe, was keinen Fehler meldet oder irgendetwas - aber es ändert auch nicht die Berechtigungen für die Datei:

$ 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 können, bleibt es unverändert.

    
Nathan Osman 07.11.2010, 00:12
quelle

10 Antworten

75

Der Modus wird durch die Mount-Optionen der Partition bestimmt (Sie können sie nicht mit chmod ändern).

Für '755' in Dateien und '777' in Verzeichnissen würden Sie etwas wie

verwenden
sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/whatever /mnt/whatever
    
htorque 07.11.2010, 00:35
quelle
78

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 "User Mapping File" oder geben Sie einfach die Option permissions beim Mounten ein (wenn keine Kompatibilität mit Windows erforderlich ist). Dies ordnet Linux-Benutzer auf Ihrem System mit den Benutzer-IDs wie NTFS / Windows intern zu.

Weitere Informationen finden Sie auf der ntfs-3g-Hilfeseite Beispiele. Weitere Informationen finden Sie in der erweiterten Dokumentation ntfs-3g über Besitz und Berechtigungen .

(Beachten Sie, dass dies bei FAT-Dateisystemen nicht funktioniert.)

¹ Ja, es kann auch Dateinamen speichern, die unter Linux / Unix, aber nicht unter Windows gültig sind, unterstützt Symlinks & amp; Hardlinks usw.

    
JanC 02.11.2011 17:57
quelle
34

Verwenden Sie für NTFS-Partitionen die Option permissions in fstab.

Hängen Sie zuerst die ntfs-Partition aus.

Identifizieren Sie Ihre Partitions-UUID mit blkid

sudo blkid

Bearbeiten Sie dann /etc/fstab

# Graphical 
gksu gedit /etc/fstab

# Command line
sudo -e /etc/fstab

Und eine Zeile für die ntfs-Partition hinzufügen oder bearbeiten

# change the "UUID" to your partition UUID
UUID=12102C02102CEB83 /media/windows ntfs-3g auto,users,permissions 0 0

Erstellen Sie einen Einhängepunkt (falls erforderlich)

sudo mkdir /media/windows

Stellen Sie jetzt die Partition bereit

mount /media/windows

Die Optionen, die ich Ihnen gegeben habe, auto , werden automatisch beim Booten die Partition mounten, und users erlaubt Benutzern das Mounten und Unmount.

Sie können dann chown und chmod auf der ntfs-Partition verwenden.

    
Panther 28.12.2011 17:31
quelle
20

Zusätzlich zur Einstellung der fmask und / oder dmask in htorques Antwort oben, wenn Sie Skripte auf dem Laufwerk ausführen wollen, musste ich auch die Mountoption "exec" einstellen.

Also wäre das Beispiel:

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000,exec /dev/whatever /mnt/whatever
    
dbrews 14.12.2010 09:26
quelle
13

Sie können den Skript-Interpreter immer explizit aufrufen. In diesem Fall sind keine Ausführungsberechtigungen erforderlich. Wenn das Skript bash verwendet, wie durch Überprüfung der ersten Zeile des Skripts verifiziert werden kann, führen Sie einfach

aus
bash script.sh

Beachten Sie, dass das Skript andere Skripts oder Binärdateien auf derselben Partition aufruft. Dies funktioniert nicht. Beachten Sie auch, dass die Strategie nicht mit Binärdateien im Gegensatz zu textbasierten Skriptdateien funktioniert, die in Bash Script, Perl, Python oder ähnlichem geschrieben sind.

    
loevborg 14.12.2010 11:00
quelle
8

Laut Besitz und Berechtigungen Abschnitt des NTFS-3G Dokumentation können wir Mount-Optionen verwenden, um Datei Zugriff und Erstellung zu steuern. Die Kombinationen sind sehr kompliziert (siehe die beiden Tabellen dort). Auch ich lese nicht und bekomme alle von ihnen. Zum Beispiel weiß ich nicht, ob POSIX-ACLs zur Kompilierzeit des NTFS-3G-Binärpakets ausgewählt ist oder nicht. Aber das Beste, was ich herausgeholt habe, ist eine User Mapping -Datei, die mit einem Mount kombiniert wurde Optionen zur ungefähren Zuordnung von Dateibesitz und Berechtigungen zwischen Windows und Linux.

Warnung : Dies funktioniert nur, wenn ich eine NTFS Datenpartition (Laufwerk D: unter Windows) zwischen Dual-Boot Windows 8 und Kubuntu 14.04 teile. Die Anweisungen werden in sorgfältiger Rückschau aufgezeichnet, aber nicht gründlich getestet. Es ist zu ermüdend und ermüdend, den ganzen Vorgang noch einmal zu wiederholen. Also folge es auf eigene Gefahr. Aber wenn du es tust, teile deine Erfahrung mit anderen. Wenn Sie sich entscheiden, den Anweisungen zu folgen, lesen Sie bitte vollständig, um ein vollständiges Bild zu haben, bevor Sie tatsächlich handeln. Viel Glück!

Alles klar, los gehts! Die detaillierte Anleitung besteht aus drei Teilen. Teil 1 sollte unter Windows ausgeführt werden, Teil 2 unter Linux. Teil 3 ist für den Test.

Teil 1

Der Abschnitt Benutzerzuordnung der NTFS-3G-Dokumentation gibt zwei Versionen an Einrichten einer Benutzerzuordnung zwischen Windows und Linux, einer Windows-Version und einer Linux-Version. Meine Erfahrung war, dass die Linux-Version mit einem Miss endete. Das Linux-Konto wurde nicht meinem Windows-Konto zugeordnet, aber ein unbekanntes Konto wurde unter SID . Das Ergebnis war ein Durcheinander, da dieses unbekannte Konto Besitz aller Dateien meines Windows-Kontos übernimmt. In diesem Fall sind Dateien unter Ihrem Windows-Konto nicht mehr zugänglich, es sei denn, Sie verfügen über Administratorrechte, um Ihr Eigentum zurückzunehmen. Aber selbst wenn du richtest, ist es immer noch eine falsche Zuordnung. Das bedeutet, dass später alle Dateien, die Sie unter Linux erstellen, diesem unbekannten Konto unter Windows zugewiesen werden und diejenigen unter Windows, die unter Linux root zugewiesen sind (wenn ich mich richtig erinnere). Unter Windows müssen Sie also das Eigentumsrecht wieder zurückgewinnen und unter Linux die Eigentumsrechte ändern. Das ist nicht das, was wir erwarten. Nach einigen hoffnungslosen Versuchen, das Problem zu beheben, gab ich auf und wandte mich an die Windows-Version. Das hat funktioniert. Ausführliche Anweisungen aus dem relevanten Abschnitt der NTFS-3G-Dokumentation folgen:

  1. Laden Sie das Tool usermap herunter, extrahieren Sie es irgendwo (in meinem Fall C: ), besser außerhalb der NTFS-Partition (in meinem Fall Laufwerk D: ) geteilt werden.

  2. Öffnen Sie die Windows-Befehlszeile. Wechseln Sie in das extrahierte Verzeichnis tools (standardmäßig) des Tools usermap . Führen Sie dann den folgenden Befehl aus:

    C:\tools> mapuser > UserMapping
    

    Dadurch wird eine Vorlage generiert und in eine Datei namens UserMapping umgeleitet. Öffnen Sie die Datei mit einem Texteditor, sagen Sie Editor, sollten Sie die folgenden Zeilen sehen:

    # Generated by usermap for Windows, v 1.1.5
    # For Windows account "Account" in domain "Domain"
    # Replace "user" and "group" hereafter by matching Linux login
    user::SID
    :group:SID
    

    Vermutlich sollte das erste SID Ihre Benutzer-SID sein, während das zweite Ihre Gruppen-SID sein sollte. Sie können sie jeweils mit den Befehlen whoami /user und whoami /groups überprüfen.

  3. Nachdem Sie sichergestellt haben, dass die SIDs korrekt sind, folgen Sie den Anweisungen im Kommentar, dh ändern Sie user in der user::SID -Zeile auf Ihren Benutzernamen und group in der :group:SID -Zeile auf Ihr primärer Gruppenname unter Linux. Auf Ubuntu sind sie gleich. Außerdem fügen Sie Ihren Linux-Gruppennamen auch nach dem ersten Doppelpunkt der user::SID -Zeile hinzu. Daher sollte die Zeile ungefähr wie user:group:SID aussehen. Es scheint, dass Dateien, die unter Windows erstellt wurden, auf Linux unter user:root zugewiesen werden.

  4. Speichern Sie die Datei. Verschiebe es in ein Verzeichnis namens .NTFS-3G (erstelle es, wenn es noch nicht existiert) auf der NTFS-Partition, die geteilt werden soll (in meinem Fall fahre D: ).

  5. Dieser Schritt dient zum Testen in Teil 3. Erstellen Sie auf der freigegebenen NTFS-Partition ein neues Verzeichnis und eine neue Datei.

Teil 2

Starten Sie jetzt in Linux. sudo bearbeite die Datei /etc/fstab . Fügen Sie die Zeile für die freigegebene NTFS-Partition hinzu oder ändern Sie sie wie folgt:

UUID=...    /data    ntfs    defaults,umask=077,utf8    0    0

Das Wichtigste ist, dass umask ( dmask und fmask ebenfalls funktionieren, aber nicht getestet werden). Wählen Sie einen Wert für umask , den Sie mögen, obwohl ich 077 ausgewählt habe. Es scheint, dass ohne diese Einstellung volle Berechtigungen für o thers für neu erstellte Dateien vergeben werden.

Speichern Sie die Datei.Jetzt sudo mount oder remount ( sudo umount und dann sudo mount ) die freigegebene NTFS-Partition (in meinem Fall /data ):

$ sudo mount /data

Teil 3

Jetzt (noch unter Linux) cd an den Mount-Point (in meinem Fall /data ), ls -l die Dateien dort. Überprüfen Sie, ob ihre Eigentümer und Berechtigungen mit denen übereinstimmen, die Sie in der Datei UserMapping und umask in /etc/fstab angegeben haben (die Übereinstimmung zwischen Berechtigungen und umask erfordert eine Komplementberechnung, siehe man (1) umask für weitere Informationen). Wenn sie es tun, wird Glückwünsche, ein halbes Ziel erreicht. Ansonsten, du arm. Fragen Sie Ubuntu oder Windows.

Erstellen Sie dann ein neues Verzeichnis und eine neue Datei. ls -l , um deren Besitz und Berechtigungen zu überprüfen. Der Besitz sollte wie gewohnt Ihr Benutzername und Ihre primäre Gruppe sein. Die Berechtigungen sollten mit umask übereinstimmen. Starten Sie jetzt Ihren Computer neu und booten Sie in Windows. Suchen Sie in der freigegebenen NTFS-Partition das Verzeichnis und die Datei, die Sie gerade auf Linux erstellt haben. Überprüfen Sie ihre Eigenschaften, um festzustellen, ob sie Ihrem Windows-Konto zugewiesen sind. Wenn sie es sind, herzlichen Glückwunsch, Sie sind alle fertig. Sonst Pech. Fragen Sie Windows oder Ubuntu.

EOF

    
reflectionalist 23.08.2014 00:35
quelle
5

Alter Thread, ich weiß, aber immer noch relevant und verpasste einen bestimmten Anwendungsfall-Tipp, zusammengesetzt aus verschiedenen Vorschlägen zu verschiedenen anderen Foren / Threads und getestet auf Ubuntu GNOME 13.04, wo ich ein externes Laufwerk für eine Steam-Bibliothek haben wollte ...

Wenn sich die NTFS-Partition beispielsweise auf einem externen USB-Laufwerk befindet - was bedeutet, dass die Partition bei der Verbindung sofort gemountet wird -, können Sie die folgende Methode verwenden, um udev mount ntfs-Partitionen mit Ausführungsrechten einzurichten.

Öffnen Sie ein Terminalfenster und tun Sie:

$ sudo nano /etc/udev/rules.d/90-usb-disks.rules

Fügen Sie dann diese Zeile in eine leere / neue Datei ein (falls nicht, beenden Sie nano und geben Sie den Befehl erneut aus, starten Sie jedoch den Dateinamen mit einer höheren Nummer wie 91 -...):

ENV{ID_FS_TYPE}=="ntfs", ENV{ID_FS_TYPE}="ntfs-3g"

Dann speichern und schließen. Trennen Sie das Laufwerk und dann im Terminal:

$ sudo service udev restart

Als nächstes schließen Sie das Laufwerk wieder an und genießen Sie:)

    
user17254 15.09.2013 01:51
quelle
2

Alle Schritte:

  1. Installieren Sie ntfs-3g :

    sudo apt-get install -y ntfs-3g
    
  2. Unmount NTFS Partition:

    sudo umount /mnt/windows
    
  3. Verwenden Sie ntfs-3g.usermap , um Ihre UserMapping -Datei zu generieren:

    sudo ntfs-3g.usermap /dev/disk/by-label/MY-NTFS
    

    oder

    sudo ntfs-3g.usermap /dev/sdb1
    
  4. Remount NTFS Partition hinzufügen UserMapping file:

    mount -a
    sudo mkdir /mnt/windows/.NTFS-3G
    sudo mv UserMapping /mnt/windows/.NTFS-3G/
    
  5. Aktualisieren Sie Ihre fstab -Datei:

    sudo vim /etc/fstab
    

    Aktualisieren mount -Zeile:

    1. Sichern Sie Ihre aktuelle Mount-Line! Duplizieren Sie die Zeile und kommentieren Sie sie durch Hinzufügen von # am Anfang.
    2. Ändern als nächstes: UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0
    3. Weiter: UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0 (Verwenden Sie ntfs-3g und nur default -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

  6. Schließlich mount wieder mit Ihrem fstab :

    sudo umount /mnt/windows
    sudo mount -a
    

Mach das einmal für jede NTFS Partition, die du hast!

WARNUNG MIT WINDOWS OS!

Ich überprüfe es mit Windows 7 + und die Berechtigungen betreffen Windows OS! Ich ändere die Berechtigungen meines Home-Verzeichnisses auf der Windows-Partition, und als ich Windows wieder verwendete, konnte ich sehen, dass der Benutzer defekt war!

    
Eduardo Cuomo 26.02.2017 15:49
quelle
1

Es gibt eine verwandte Frage für USB-Geräte. Diese Antwort bietet einen hässlichen Hack, wenn Sie jedes USB-Gerät automatisch mit Ausführen Berechtigungen bereitstellen möchten.

    
lumbric 28.12.2011 16:06
quelle
1

Hängen Sie die NTFS-Partition auf einem USB-Laufwerk mit benutzerdefinierten Berechtigungen und Eigentümer

ein

In 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 sdb1 betrachtet, wird geändert, um in Ihrem Fall dem Laufwerksbuchstaben und der Partitionsnummer zu entsprechen. Die allgemeine Syntax lautet sdxn , wobei x der Laufwerksbuchstabe und n die Partitionsnummer ist, die beispielsweise angezeigt wird sudo lsblk -f

Vorbereitung

  • Hängen Sie die NTFS-Partition aus.

    sudo umount /dev/sdxn   # general syntax
    sudo umount /dev/sdb1   # modify to match your case
    
  • Erstellen Sie einen benutzerdefinierten Mountpoint (nur wenn Sie einen neuen Mountpoint wünschen), zum Beispiel mit

    sudo mkdir -p /mnt/sd1
    
  • Überprüfen Sie die uid -Zahl Ihrer Benutzer-ID (normalerweise 1000, manchmal 1001 oder 1002 ...)

    grep ^"$USER" /etc/group
    

    und verwenden Sie diese Nummer, wenn Sie Eigentümerschaft übernehmen möchten (Standard ist root ).

Hängen Sie die NTFS-Partition ein

Beispiel 1 (ohne Ausführungsberechtigungen für Dateien, kein Zugriff für 'andere'),

sudo mount -o rw,user,uid=1000,dmask=007,fmask=117 /dev/sdxn /mnt/sd1  # general syntax
sudo mount -o rw,user,uid=1000,dmask=007,fmask=117 /dev/sdb1 /mnt/sd1  # modify to match your case
  • In diesem Fall können Sie das Skript this-script mit

    ausführen
    bash /mnt/sd1/this-script
    

Beispiel 2 (mit Ausführungsberechtigungen für Dateien, kein Zugriff für 'andere'),

sudo mount -o rw,user,uid=1000,umask=007,exec /dev/sdxn /mnt/sd1  # general syntax
sudo mount -o rw,user,uid=1000,umask=007,exec /dev/sdb1 /mnt/sd1  # modify to match your case
  • In diesem Fall können Sie das Skript this-script mit

    ausführen
    /mnt/sd1/this-script
    

    und Sie können auch ausführbare Programme von diesem Ort ausführen (nicht, dass es empfohlen wird).

Beispiel 3 (vollständige Berechtigungen für alle, was praktisch, aber nicht sicher ist, wenn mehrere Benutzer vorhanden sind),

sudo mount -o rw,users,umask=000,exec /dev/sdxn /mnt/sd1  # general
sudo mount -o rw,users,umask=000,exec /dev/sdb1 /mnt/sd1  # modify to match your case
    
sudodus 15.09.2017 13:02
quelle

Tags und Links