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


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 chmod 755 script.sh, die keinen Fehler oder irgendetwas meldet - 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.


119
2017-11-06 23:12


Ursprung


Eine bessere Lösung kann gefunden werden Hier Diese beiden Fragen sollten miteinander verknüpft werden!


Antworten:


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 so etwas verwenden

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/whatever /mnt/whatever

75
2017-11-06 23:35



Okay, das würde auch ein paar andere Dinge erklären. - Nathan Osman
Was soll ich an Stelle stellen? /dev/whatever und /mnt/whatever wenn ich die Berechtigung meiner HDD-Partition ändern muss /media/Prtn - Prakash Gautam
Werden auf diese Weise die ursprünglichen Einstellungen der Festplatte beibehalten? I.e. es ist sicher, ein Windows-Laufwerk zu mounten? - Jonathan
Ich setze den Benutzer auf "andrew", was mein Hauptbenutzer ist. Durch ls für ntfs-Partition wird angezeigt, dass alle Dateien / Verzeichnisse darin von root verwaltet werden. - deathangel908
Die wirkliche Lösung ist ntfs-3g.usermap. Siehe unten... - Eduardo Cuomo


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 permissions Option beim Mounten (wenn keine Kompatibilität mit Windows benötigt wird). Dadurch werden Linux-Benutzer auf Ihrem System mit den Benutzer-IDs wie NTFS / Windows intern verwendet.

Siehe die ntfs-3g-Manpage für einige Infos und einige Beispiele. Wenn Sie weitere Informationen benötigen, finden Sie unter ntfs-3g erweiterte Dokumentation ü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 & Hardlinks usw.


78
2017-11-02 16:57



Hier ist eine gute Dokumentation. Zusamenfassend: sudo ntfs-3g.usermap /dev/disk/by-label/MY-NTFS und dann sudo mv UserMapping /media/MY-NTFS/.NTFS-3G/ - flying sheep
So können Sie beliebig Berechtigungen wie festlegen chmod 655 /some/file auf der NTFS-Partition in Linux gemountet? Ich versuche herauszufinden, wie ich meine Home-Partition von Linux in C: \ Benutzer zusammenführen. Kann ich mithilfe von Usermap alle Berechtigungen behalten? Ich plante, das Verzeichnis c: \ Users in / home in Linux zu mounten. - trusktr
Dies sollte die akzeptierte Antwort sein. - petermolnar
Lassen Sie mich Ihre Bemerkung nochmals betonen: "Wenn keine Kompatibilität mit Windows erforderlich ist". Ref: askubuntu.com/questions/92863/... - Eliptical view
ntfs-3g manpage Verbindung unterbrochen - ctrl-alt-delor


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

Deinstallieren Sie zuerst die ntfs-Partition.

Identifizieren Sie die UUID Ihrer Partition mit blkid

sudo blkid

Dann bearbeiten /etc/fstab

# Graphical 
gksu gedit /etc/fstab

# Command line
sudo -e /etc/fstab

Und fügen Sie eine Zeile für die ntfs-Partition hinzu oder bearbeiten Sie sie

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

Erstellen Sie einen Bereitstellungspunkt (falls erforderlich)

sudo mkdir /media/windows

Stellen Sie jetzt die Partition bereit

mount /media/windows

Die Möglichkeiten, die ich dir gegeben habe, auto, wird beim Booten automatisch die Partition mounten users ermöglicht Benutzern das Bereitstellen und Umbooten.

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


34
2017-12-28 16:31



Wie werden diese Berechtigungen gespeichert? In ADS? Andere Metadaten? - hexafraction
Was ist mit Fat32? Ich habe eine Micro-SD-Karte, die schreibgeschützt ist und ich kann nicht zugreifen, formatieren Sie es. - Waqas
@ RanaMuhammadWaqas - das ist eine alte Frage, aber Sie können es auch mit verschiedenen Optionen mounten. Schwer zu wissen, was Ihr Problem ist, vielleicht identifizieren Sie Ihre Hardware und stellen Sie eine separate Frage. - Panther
@ bodhi.zazen users impliziert noexec, Nosuid, und Knotenpunkt. ist nicht? Wie Benutzer mounten / umounten können noexec eingestellt werden? - Khurshid Alam
@EduardoCuomo - Wenn Sie einen Kommentar in einer Antwort schreiben, der besagt, dass er nicht funktioniert, ist es unwahrscheinlich, dass er Ihnen hilft. Welches Dateisystem? Ich schlage vor, Sie öffnen eine Frage. Sie müssen das Dateisystem identifizieren und Ihren fstab-Eintrag posten - Panther


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

So wäre das Beispiel:

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000,exec /dev/whatever /mnt/whatever

20
2017-12-14 08:26





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

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.


13
2017-12-14 10:00



+1 - Ich habe nie darüber nachgedacht, es auf diese Weise anzurufen. - Nathan Osman
Um Binärdateien auszuführen, verwenden Sie /lib64/ld-linux-x86-64.so.2 ./program.bin für 64-Bit-Programme und /lib/ld-linux.so.2 ./program.bin für 32-Bit-Einsen. - Lekensteyn


Entsprechend der Besitz und Berechtigungen Abschnitt der NTFS-3G-Dokumentation können wir Mount-Optionen zum Steuern der Datei verwenden Zugriff und Schaffung. 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 herausgekommen bin, ist ein BenutzerzuordnungDatei kombiniert mit einigen Mount-Optionen, um eine plausible Zuordnung von Dateibesitz und Berechtigungen zwischen Windows und Linux zu approximieren.


Warnung: Dies ist nur das, was am besten funktioniert, wenn ich ein NTFS teile Datenpartition (Fahrt D: unter Windows) zwischen Dual-Boot-Windows 8 und Kubuntu 14.04. 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!


In Ordnung, hier 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

Das Benutzerzuordnung Abschnitt der NTFS-3G-Dokumentation legt zwei Versionen fest, um eine Benutzerzuordnung zwischen Windows und Linux, eine Windows-Version und eine Linux-Version einzurichten. Meine Erfahrung war, dass die Linux Version mit einem Fräulein. Der Linux-Account war nicht meinem Windows-Konto aber einige zugeordnet unbekannte Konto erschien unter einem 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. Detaillierte Anweisungen, die aus dem relevanten Abschnitt der NTFS-3G-Dokumentation extrahiert wurden, folgen:

  1. Laden Sie die Benutzermap Werkzeug, extrahieren Sie es irgendwo (in meinem Fall, fahren Sie C:), besser außerhalb der NTFS - Partition (in meinem Fall Laufwerk D:) um geteilt zu werden.

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

    C:\tools> mapuser > UserMapping
    

    Dies erzeugt eine Vorlage und leitet sie in eine Datei mit dem Namen um UserMapping. Ö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 der erste SID sollte Ihre Benutzer-SID sein, während die zweite Ihre Gruppe SID. Sie können sie jeweils durch Befehle überprüfen whoami /user und whoami /groups.

  3. Nachdem Sie sichergestellt haben, dass die SIDs korrekt sind, befolgen Sie die Anweisungen im Kommentar, also ändern Sie user in dem user::SID Linie zu Ihrem Benutzernamen und group in dem :group:SID Linie zu Ihrem primären Gruppennamen unter Linux. Auf Ubuntu sind sie gleich. Außerdem fügen Sie Ihren Linux - Gruppennamen auch nach dem ersten Doppelpunkt des. Hinzu user::SIDLinie. Also sollte die Zeile ungefähr so ​​aussehen user:group:SID. Es scheint, dass wenn dies nicht geschieht, Dateien, die unter Windows erstellt wurden, zugewiesen werden user:root unter Linux.

  4. Speicher die Datei. Verschieben Sie es in ein benanntes Verzeichnis .NTFS-3G (Erstelle es, wenn es noch nicht existiert) auf der NTFS-Partition, die geteilt werden soll (in meinem Fall Laufwerk) 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 Bearbeiten Sie die Datei /etc/fstab. Fügen Sie die Zeile für die freigegebene NTFS-Partition ein oder ändern Sie sie wie folgt:

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

Das Wesentliche ist, das zu setzen umask (dmask und fmask kann auch funktionieren, aber nicht getestet). Wählen Sie einen Wert für umask Du magst, obwohl ich gepflückt habe 077. Es scheint, dass ohne diese Einstellung volle Berechtigungen vergeben werden ofür neu erstellte Dateien.

Speicher die Datei. Jetzt sudo mount oder neu mounten (sudo umount und dann sudo mount) die freigegebene NTFS - Partition (in meinem Fall /data):

$ sudo mount /data

Teil 3

Jetzt (immer noch unter Linux) cd zum Mount-Punkt (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 UserMapping Datei und die umask du stellst dich ein /etc/fstab (die Übereinstimmung zwischen Berechtigungen und umask erfordert eine Ergänzung Berechnung, siehe Mann (1) umask für mehr 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 ihre Eigentumsrechte und Berechtigungen zu überprüfen. Der Besitz sollte wie gewohnt Ihr Benutzername und Ihre primäre Gruppe sein. Die Berechtigungen sollten dem entsprechen umask. 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


8
2017-08-22 22:35





Alter Thread, ich weiß, aber immer noch relevant und verpasste einen bestimmten Use-Case-Tipp, verfasst 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 im laufenden Betrieb bereitgestellt wird - können Sie mithilfe der folgenden Methode udev-Partitionen mit Ausführungsrechten bereitstellen.

Öffne ein Terminalfenster und mache:

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

Dann fügen Sie diese Zeile in eine leere / neue Datei ein (falls nicht, dann beenden Sie nano und geben Sie den Befehl erneut aus, aber beginnen Sie 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 steck das Laufwerk wieder ein und genieß es :)


5
2017-09-14 23:51



Ausgezeichnet, dies sollte die akzeptierte Antwort sein. - leftaroundabout


Alle Schritte:

  1. Installieren ntfs-3g:

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

    sudo umount /mnt/windows
    
  3. Benutzen ntfs-3g.usermap um deine zu generieren UserMapping Datei:

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

    oder

    sudo ntfs-3g.usermap /dev/sdb1
    
  4. Remount NTFS Partition zum Hinzufügen UserMapping Datei:

    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 montieren Linie:

    1. Sichern Sie Ihre aktuelle Mount-Line! Duplizieren Sie die Zeile und kommentieren Sie sie durch Hinzufügen von a # am Anfang.
    2. Ändern Sie als nächstes: UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0
    3. Mit dem nächsten: UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0 (Benutzen ntfs-3g und nur default Möglichkeit)

    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, mounten Sie mit Ihrem fstab:

    sudo umount /mnt/windows
    sudo mount -a
    

Mach das einmal für jeden NTFS Partition hast du!

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 Windows-Partition, und als ich Windows wieder verwendete, konnte ich sehen, dass der Benutzer defekt war!


2
2018-02-26 14:49