it-swarm.com.de

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 zu ändern, indem ich chmod 755 script.sh ausführe, wodurch kein Fehler gemeldet wird. 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.

126
Nathan Osman

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

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

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 beim Mounten einfach die Option permissions 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.

In der Manpage ntfs-3g finden Sie einige Informationen und Beispiele. 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.

83
JanC

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

Dann bearbeite /etc/fstab

# Graphical 
gksu gedit /etc/fstab

# Command line
Sudo -e /etc/fstab

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

Machen Sie einen Mount-Punkt (falls erforderlich)

Sudo mkdir /media/windows

Hängen Sie nun die Partition ein

mount /media/windows

Die Optionen, die ich Ihnen gegeben habe, auto, mounten die Partition automatisch beim Booten, und users ermöglicht Benutzern das Mounten und Ummounten.

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

37
Panther

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:

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

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

bash script.sh

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 Script, Perl, Python oder dergleichen geschrieben wurden.

13
loevborg

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:

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

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 -...):

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

Dann speichern und schließen. Trennen Sie das Laufwerk und führen Sie dann Folgendes im Terminal aus:

$ Sudo service udev restart

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

6
user17254

Alle Schritte:

  1. Installieren Sie ntfs-3g:

    Sudo apt-get install -y ntfs-3g
    
  2. Hängen Sie die NTFS Partition aus:

    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. Hänge die NTFS Partition neu ein, um die UserMapping Datei hinzuzufügen:

    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
    

    Update mount Zeile:

    1. Sichern Sie Ihre aktuelle Mount-Linie! Duplizieren Sie die Zeile und kommentieren Sie sie, indem Sie am Anfang einen # einfügen.
    2. Als nächstes ändern: UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0
    3. By next: UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0 (Verwenden Sie ntfs-3g und nur default)

    Es sollte ungefähr so ​​aussehen:

    #UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0

  6. Zum Schluss montieren Sie es erneut mit Ihrem fstab:

    Sudo umount /mnt/windows
    Sudo mount -a
    

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 betreffen das Windows-Betriebssystem! Ich ändere die Berechtigungen meines Basisverzeichnisses auf der Windows-Partition und als ich Windows erneut verwendete, konnte ich feststellen, dass der Benutzer defekt war!

4
Eduardo Cuomo

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

1
lumbric

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 sdb1, modifiziert stimmen Sie mit dem Laufwerksbuchstaben und der Partitionsnummer in Ihrem Fall überein . Die allgemeine Syntax lautet sdxn, wobei x der Laufwerksbuchstabe und n die Partitionsnummer ist, wie zum Beispiel _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 Einhängepunkt (nur wenn Sie einen neuen Einhängepunkt möchten), zum Beispiel mit

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

    _grep ^"$USER" /etc/group
    _

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

Mounten Sie die NTFS-Partition

Beispiel 1 (ohne Ausführungsberechtigung 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
    _

    sie 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),

_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
_
1
sudodus