malte70.blog()

NTFS unter Linux

Vor allem in Dualboot-Umgebungen braucht man von Linux aus Zugriff auf NTFS-Dateisysteme. Lange Zeit war der Kernel-Treiber ntfs mangels Unterstützung für Schreibzugriff keine wirkliche Alternative zum Userspace-Treiber NTFS-3G, was sich seit Kernel 5.14 mit ntfs3 geändert hat.

ntfs3 vs ntfs-3g

Abgesehen davon, dass NTFS-3G ein FUSE1-Treiber ist, gehen die beiden Treiber bei der Rechteverwaltung unterschiedliche Wege:

  1. NTFS-3G nutzt auf Wunsch die Windows-ACLs, und nutzt ein User-Mapping um Windows-Security-IDs (SIDs) mit Linux-Gruppen/Benutzern zu verknüpfen.
  2. ntfs3 hingegen (und standardmäßig aber dazu inkompatibel auch NTFS-3G) verwendet von Windows getrennte Zugriffsberechtigungen, die in erweiterten Attributen gespeichert werden.

Gerade in einer Mehrbenutzer-Multiboot-Umgebung bietet sich NTFS-3G mit ACLs an, um jedem Benutzer sowohl unter Windows als auch unter Linux die gleichen Rechte zu gewähren.

Im folgenden gehe ich näher auf das User-Mapping und einige weitere Mount-Optionen für NTFS-3G ein.

NTFS-3G User-Mapping

Für die Zuordnung von Linux-Benutzern und -Gruppen zu Windows-SIDs muss die Datei \.NTFS-3G\UserMapping im Wurzelverzeichnis des Dateisystems angelegt werden. Diese kann dann z.B. so aussehen (ohne die erste Zeile, und mit abschließendem Zeilenumbruch!):

# Linux-UID : Linux-GID : SID
1000::S-1-5-21-138981746-3230083771-4035192890-1001
:985:S-1-5-21-138981746-3230083771-4035192890-513
::S-1-5-21-138981746-3230083771-4035192890-10000

Mithilfe des folgenden PowerShell-Skriptes können die Benutzer/Gruppen und ihre SIDs unter Windows in eine CSV-Datei geschrieben werden. Daraus kässt sich dann die UserMapping-Datei wie oben zu sehen zusammen basteln:

New-Item -Path "C:\" -Name ".NTFS-3G" -ItemType "Directory"
Set-Location "C:\.NTFS-3G"

# Benutzer
Get-LocalUser | Where-Object { $_.Enabled } | Select-Object -Property Name,SID | Export-Csv -Path WindowsLocalUsers.csv
# Gruppen
Get-LocalGroup | Select-Object -Property Name,SID | Export-Csv -Path WindowsLocalGroups.csv

Alternativ kann auch das Programm ntfsusermap genutzt werden.

Wichtige Mount-Optionen für NTFS-3G

OptionBeschreibung
hide_dot_filesKennzeichnet neu erstellten Dateien mit „.“ am Anfang auch unter Windows als versteckt
hide_hid_filesUnter Windows versteckte Dateien unter Linux ebenfalls ausblenden
inheritUnterordner und Dateien „erben“ wie unter Windows die Berechtigungen des Elternordners
streams_interface=xattrDateistreams als erweiterte Attribute
windows_namesErzwingt mit Windows kompatible Dateinamen. NTFS unterstützt theoretisch alle Zeichen in Dateinamen, nur kann Windows auf diese Dateien dann nicht mehr zugreifen

Siehe dazu auch meinen Blogpost „Windows-Systemordner in Linux-Dateimanagern ausblenden: .hidden“.


  1. Filesystem in USErspace ↩︎