Ich glaube, dass das FAT32-Dateisystem keine Dateiberechtigungen unterstützt. Wenn ich dies jedoch ls -l
auf einer FAT32-Partition tue , ls -l
zeigt dies, dass die Dateien über Berechtigungen verfügen:
-rw-r--r-- 1 john john 11 Mar 20 15:43 file1.txt
-rw-r--r-- 1 john john 5 Mar 20 15:49 file2.txt
Warum werden ls -l
die Berechtigungen von Dateien angezeigt?
linux
permissions
filesystems
fat
fat32
user342731
quelle
quelle
Antworten:
Das auf der Festplatte gespeicherte Dateisystem speichert keine Dateiberechtigungen, der Dateisystemtreiber muss sie jedoch dem Betriebssystem zur Verfügung stellen, da sie ein integraler Bestandteil des Unix-Dateisystemkonzepts sind und die Systemaufrufschnittstellen keine Möglichkeit haben, die Berechtigungen darzustellen fehlt.
Überlegen Sie auch, was passieren würde, wenn eine Datei überhaupt keine Berechtigungsbits hätte. Wäre es dasselbe wie
0777
, dh Zugang zu allen? oder das gleiche wie0000
, dh kein zugriff auf jemanden? Bei beiden handelt es sich jedoch um Dateiberechtigungen. Warum sollten Sie sie nicht anzeigen? Oder tun Sie etwas Nützlicheres und haben Sie die Möglichkeit, sinnvolle Berechtigungen festzulegen.Der Treiber fälscht also einige Berechtigungen, die für alle Dateien gleich sind. Die Berechtigungen sowie der Eigentümer und die Gruppe der Dateien können zum Zeitpunkt der Bereitstellung konfiguriert werden. Diese werden unter "Mount-Optionen für Fat" in der Manpage mount (8) beschrieben :
Beachten Sie, dass die Berechtigungen als Masken dargestellt werden, sodass die endgültigen Berechtigungen die Negation der Maske sind.
fmask=0133
würde dazu führen, dass alle Dateien Berechtigungen haben0644
, oderrw-r--r--
.Außerdem werden die Standardeinstellungen vom Prozessaufruf übernommen.
mount()
Wenn Sie alsomount
von der Befehlszeile aus aufrufen ,umask
gelten die Shell- Einstellungen.quelle
umask
Mount-Option abhängt. Der Standardwert ist umask ofmount
process (siehe die in dieser Antwort verlinkte Manpage).chmod ugo-w
In einer Datei wird das schreibgeschützte Attribut aktiviert. Wenn Sie diefmask=0133
Option wie in Ihrem Beispiel verwenden, haben nicht alle Dateien die Berechtigung 0644. Was FAT absolut nicht speichert, ist eine UID und eine GID für jede Datei. Bitte klären Sie; Die Antwort ist in der jetzigen Form sehr irreführend.Die Dateien haben jedoch Berechtigungen. Benutzer john hat RW-Zugriff, während einige zufällige Benutzer nur Lesezugriff haben. Diese Berechtigungen stammen nicht aus dem Dateisystem selbst, sondern aus den Mount-Optionen (-o uid / gid / umask), wodurch sie nicht weniger real werden.
Sie könnten mehrere vfat-Partitionen mit unterschiedlichen Optionen bereitstellen und mithilfe von ls ermitteln, welche Optionen dies sind. Sie könnten sogar mount --bind verwenden , um ein einziges Verzeichnis mit Dateien aus verschiedenen vfat-Partitionen zu erstellen, und ls würde korrekt anzeigen, welche Berechtigungen für jede Datei angegeben wurden.
quelle
ls
weiß nichts von FAT32, es kennt nur über die virtuelle Dateisystem (VFS) -Schnittstelle vom Kernel mit POSIX ausgesetztopen
/readdir
/stat
Systemaufrufen.Linux nicht das Konzept von Dateien unterstützen , die nicht haben , Benutzer / Gruppe / anderen Berechtigungs - Bits
struct stat
enthält einfach einmode_t st_mode;
Element (und uid, gid Mitglieder) , dass der Kernel muss ausfüllen, wennls -l
machtstat(2)
Systemaufrufe.Es gibt keinen speziellen Code, der für eines dieser Felder "nicht verfügbar" oder "nicht zutreffend" bedeutet, daher muss sich der vfat-Treiber des Kernels etwas ausdenken . FAT16 / FAT32 verfügt zwar über ein schreibgeschütztes Flag, ansonsten stammen der Besitzer / die Gruppe aus den Mount-Optionen, und auch eine Umask.
quelle