Je pense que le système de fichiers FAT32 ne prend pas en charge les autorisations de fichiers. Toutefois, lorsque je le fais ls -l
sur une partition FAT32, cela ls -l
indique que les fichiers ont des autorisations:
-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
Pourquoi l' ls -l
affichage des autorisations des fichiers?
linux
permissions
filesystems
fat
fat32
utilisateur342731
la source
la source
Réponses:
Le système de fichiers stocké sur le disque ne stocke pas les autorisations de fichiers, mais le pilote de système de fichiers doit les fournir au système d'exploitation, car elles font partie intégrante du concept de système de fichiers Unix et les interfaces d'appel système n'ont aucun moyen de présenter les autorisations. manquant.
Pensez également à ce qui se produirait si un fichier ne contenait aucune autorisation. Serait-ce la même chose
0777
, c'est-à-dire l'accès à tous? ou le même que0000
, c'est-à-dire pas d'accès à personne? Mais les deux sont des autorisations de fichiers, alors pourquoi ne pas les afficher? Ou faites quelque chose de plus utile et disposez d'un moyen de définir des autorisations raisonnables.Le pilote simule donc certaines autorisations, les mêmes pour tous les fichiers. Les autorisations avec le propriétaire et le groupe de fichiers sont configurables au moment du montage. Celles-ci sont décrites dans "Options de montage pour la graisse" dans la page de manuel mount (8) :
Notez que les autorisations sont présentées sous forme de masques. Par conséquent, les autorisations finales correspondent à la négation du masque.
fmask=0133
tous les fichiers auraient des autorisations0644
, ourw-r--r--
.De plus, les valeurs par défaut sont héritées de l'appel du processus
mount()
. Par conséquent, si vous appelez àmount
partir de la ligne de commande, le shellumask
s'appliquera.la source
umask
option de montage, pour laquelle la valeur par défaut est umask ofmount
process (voir la page de manuel associée à cette réponse).chmod ugo-w
sur un fichier activera l'attribut en lecture seule. Utiliser l'fmask=0133
option comme dans votre exemple n'entraînera pas tous les fichiers avec l'autorisation 0644. Ce que FAT ne stocke absolument pas est un uid et un gid pour chaque fichier. Précisez s'il vous plaît; la réponse actuelle est très trompeuse.Mais les fichiers ont des autorisations. L'utilisateur john a un accès rw, alors que certains utilisateurs aléatoires n'ont qu'un accès en lecture. Ces autorisations ne proviennent pas du système de fichiers lui-même, mais des options de montage (-o uid / gid / umask), ce qui ne les rend pas moins réelles.
Vous pouvez avoir plusieurs partitions vfat montées avec différentes options et vous pouvez utiliser ls pour déterminer quelles sont ces options. Vous pourriez même utiliser mount --bind pour avoir un seul répertoire contenant des fichiers de différentes partitions vfat, et ls afficherait correctement les autorisations spécifiées pour chaque fichier.
la source
ls
ne connaît pas FAT32, il ne connait que l'interface VFS (Virtual Filesystem) exposée par le noyau avec les appels POSIXopen
/readdir
/stat
system.Linux ne supporte pas le concept de fichiers qui n'ont pas l' utilisateur / groupe / autres bits d'autorisation,
struct stat
contient simplement unmode_t st_mode;
membre (et uid, membres GID) que le noyau doit remplir quandls -l
fait desstat(2)
appels système.Il n'y a pas de code spécial qui signifie "non disponible" ou "non applicable" pour ces champs. Le pilote vfat du noyau doit donc inventer quelque chose. FAT16 / FAT32 a un indicateur en lecture seule, mais sinon, le propriétaire / groupe provient d'options de montage, de même qu'un umask.
la source