Why is the “ls” command showing permissions of files in a FAT32 partition?Base permissions on a fat32 usb driveChanging file permissions of auto-mounted hot-plugged FAT32 USB partitionWhy are 666 the default file creation permissions?How do file permissions work with partition filesystem?openSUSE Live USB with windows-accessible FAT32 partitionOne of my pdf files in my apache server can be accessed the other can't, with the same permissions and same directoryHow to rename multiple files by adding a common string at beginning of the files?Parted: Creating fat32 partition on new drive doesn't mount properly, uses loop deviceList complete file name on a local apache httpd serverHow to grep the rows with same column in different files and print specific column and add onto the original file?

How can I fix this gap between bookcases I made?

The magic money tree problem

Prevent a directory in /tmp from being deleted

Copenhagen passport control - US citizen

Can Medicine checks be used, with decent rolls, to completely mitigate the risk of death from ongoing damage?

N.B. ligature in Latex

XeLaTeX and pdfLaTeX ignore hyphenation

What defenses are there against being summoned by the Gate spell?

Set-theoretical foundations of Mathematics with only bounded quantifiers

I probably found a bug with the sudo apt install function

Why has Russell's definition of numbers using equivalence classes been finally abandoned? ( If it has actually been abandoned).

Is there a familial term for apples and pears?

Why don't electron-positron collisions release infinite energy?

Email Account under attack (really) - anything I can do?

Is there a minimum number of transactions in a block?

If Manufacturer spice model and Datasheet give different values which should I use?

How to report a triplet of septets in NMR tabulation?

"You are your self first supporter", a more proper way to say it

Should I join office cleaning event for free?

How to add power-LED to my small amplifier?

What typically incentivizes a professor to change jobs to a lower ranking university?

How to type dʒ symbol (IPA) on Mac?

How can the DM most effectively choose 1 out of an odd number of players to be targeted by an attack or effect?

I’m planning on buying a laser printer but concerned about the life cycle of toner in the machine



Why is the “ls” command showing permissions of files in a FAT32 partition?


Base permissions on a fat32 usb driveChanging file permissions of auto-mounted hot-plugged FAT32 USB partitionWhy are 666 the default file creation permissions?How do file permissions work with partition filesystem?openSUSE Live USB with windows-accessible FAT32 partitionOne of my pdf files in my apache server can be accessed the other can't, with the same permissions and same directoryHow to rename multiple files by adding a common string at beginning of the files?Parted: Creating fat32 partition on new drive doesn't mount properly, uses loop deviceList complete file name on a local apache httpd serverHow to grep the rows with same column in different files and print specific column and add onto the original file?






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








37















I believe that the FAT32 file system does not support file permissions, however when I do ls -l on a FAT32 partition, ls -l shows that the files have permissions:



-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


Why is ls -l displaying the permissions of files?










share|improve this question
























  • Good question! Welcome

    – 0xSheepdog
    Mar 28 at 22:43

















37















I believe that the FAT32 file system does not support file permissions, however when I do ls -l on a FAT32 partition, ls -l shows that the files have permissions:



-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


Why is ls -l displaying the permissions of files?










share|improve this question
























  • Good question! Welcome

    – 0xSheepdog
    Mar 28 at 22:43













37












37








37


1






I believe that the FAT32 file system does not support file permissions, however when I do ls -l on a FAT32 partition, ls -l shows that the files have permissions:



-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


Why is ls -l displaying the permissions of files?










share|improve this question
















I believe that the FAT32 file system does not support file permissions, however when I do ls -l on a FAT32 partition, ls -l shows that the files have permissions:



-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


Why is ls -l displaying the permissions of files?







linux permissions filesystems fat fat32






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 22 at 0:56









psmears

44728




44728










asked Mar 20 at 13:52









user342731user342731

19123




19123












  • Good question! Welcome

    – 0xSheepdog
    Mar 28 at 22:43

















  • Good question! Welcome

    – 0xSheepdog
    Mar 28 at 22:43
















Good question! Welcome

– 0xSheepdog
Mar 28 at 22:43





Good question! Welcome

– 0xSheepdog
Mar 28 at 22:43










3 Answers
3






active

oldest

votes


















71














The filesystem as stored on disk doesn't store file permissions, but the filesystem driver has to provide them to the operating system since they are an integral part of the Unix filesystem concept and the system call interfaces have no way of presenting that the permissions are missing.



Also consider what would happen if a file didn't have any permission bits at all? Would it be the same as 0777, i.e. access to all; or the same as 0000, i.e. no access to anyone? But both of those are file permissions, so why not show them? Or do something more useful and have a way to set some sensible permissions.



So, the driver fakes some permissions, same ones for all files. The permissions along with the files' owner and group are configurable at mount time. These are described under "Mount options for fat" in the mount(8) man page:




Mount options for fat

(Note: fat is not a separate filesystem, but a common part of the msdos, umsdos and vfat filesystems.)



uid=valueandgid=value

Set the owner and group of all files. (Default: the UID and GID of the current process.)



umask=value

Set the umask (the bitmask of the permissions that are not present). The default is the umask of the current process. The value
is given in octal.



dmask=value

Set the umask applied to directories only. The default is the umask of the current process. The value is given in octal.



fmask=value

Set the umask applied to regular files only. The default is the umask of the current process. The value is given in octal.




Note that the permissions are presented as masks, so the final permissions are the negation of the mask. fmask=0133 would result in all files having permissions 0644, or rw-r--r--.



Also, the defaults are inherited from the process calling mount(), so if you call mount from the command line, the shell's umask will apply.






share|improve this answer




















  • 7





    And the reason it does fake the permissions is that otherwise ls, and any other program that looked at file permissions (even just your code trying to read a file) would have to have the logic to handle all the different file system organizations built in.

    – jamesqf
    Mar 20 at 16:50






  • 4





    @jamesqf, yes, and even the system call interfaces don't have the option of "not having permissions", since the permissions have always been there. (That was what I was thinking when I wrote they're an "integral part".) Therefore, the permissions always shall be there, too, and things like ACLs are made so as to keep them meaningful.

    – ilkkachu
    Mar 20 at 16:59






  • 2





    I've usually seen mode 777 for all files in FAT filesystems (FAT16 with an old driver, at least).

    – forest
    Mar 21 at 20:13






  • 2





    @forest that depends on umask mount option, for which the default value is umask of mount process (see the man page linked to in this answer).

    – Ruslan
    Mar 22 at 14:21












  • But FAT does store some permissions/attributes (read-only, hidden, system, etc), even if they do not map exactly to the Unix ones. chmod ugo-w on a file will turn the read-only attribute on. Using the fmask=0133 option as in your example will not result in all files having the 0644 permission. What FAT absolutely does not store is a uid and a gid for each file. Please clarify; the answer as it stands is highly misleading.

    – mosvy
    Mar 23 at 9:24


















22














But the files do have permissions. User john has RW access, while some random user only has read access. These permissions didn’t come from the filesystem itself but rather from mount options (-o uid/gid/umask), which doesn’t make them any less real.



You could have multiple vfat partitions mounted with different options and you could use ls to determine what those options were. You could even use mount --bind to have a single directory contain files from different vfat partitions, and ls would correctly show what permissions have been specified for each file.






share|improve this answer






























    15














    ls doesn't know about FAT32, it only knows about the Virtual Filesystem (VFS) interface exposed by the kernel with POSIX open / readdir / stat system calls.



    Linux doesn't support the concept of files that don't have user/group/other permission bits, struct stat simply contains a mode_t st_mode; member (and uid, gid members) that the kernel must fill out when ls -l makes stat(2) system calls.



    There's no special code that means "not available" or "not applicable" for any of those fields, so the kernel's vfat driver must make something up. FAT16/FAT32 does have a read-only flag, but otherwise the owner/group come from mount options, and so does a umask.






    share|improve this answer























      Your Answer








      StackExchange.ready(function()
      var channelOptions =
      tags: "".split(" "),
      id: "106"
      ;
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function()
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled)
      StackExchange.using("snippets", function()
      createEditor();
      );

      else
      createEditor();

      );

      function createEditor()
      StackExchange.prepareEditor(
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: false,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: null,
      bindNavPrevention: true,
      postfix: "",
      imageUploader:
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      ,
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      );



      );













      draft saved

      draft discarded


















      StackExchange.ready(
      function ()
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f507441%2fwhy-is-the-ls-command-showing-permissions-of-files-in-a-fat32-partition%23new-answer', 'question_page');

      );

      Post as a guest















      Required, but never shown

























      3 Answers
      3






      active

      oldest

      votes








      3 Answers
      3






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      71














      The filesystem as stored on disk doesn't store file permissions, but the filesystem driver has to provide them to the operating system since they are an integral part of the Unix filesystem concept and the system call interfaces have no way of presenting that the permissions are missing.



      Also consider what would happen if a file didn't have any permission bits at all? Would it be the same as 0777, i.e. access to all; or the same as 0000, i.e. no access to anyone? But both of those are file permissions, so why not show them? Or do something more useful and have a way to set some sensible permissions.



      So, the driver fakes some permissions, same ones for all files. The permissions along with the files' owner and group are configurable at mount time. These are described under "Mount options for fat" in the mount(8) man page:




      Mount options for fat

      (Note: fat is not a separate filesystem, but a common part of the msdos, umsdos and vfat filesystems.)



      uid=valueandgid=value

      Set the owner and group of all files. (Default: the UID and GID of the current process.)



      umask=value

      Set the umask (the bitmask of the permissions that are not present). The default is the umask of the current process. The value
      is given in octal.



      dmask=value

      Set the umask applied to directories only. The default is the umask of the current process. The value is given in octal.



      fmask=value

      Set the umask applied to regular files only. The default is the umask of the current process. The value is given in octal.




      Note that the permissions are presented as masks, so the final permissions are the negation of the mask. fmask=0133 would result in all files having permissions 0644, or rw-r--r--.



      Also, the defaults are inherited from the process calling mount(), so if you call mount from the command line, the shell's umask will apply.






      share|improve this answer




















      • 7





        And the reason it does fake the permissions is that otherwise ls, and any other program that looked at file permissions (even just your code trying to read a file) would have to have the logic to handle all the different file system organizations built in.

        – jamesqf
        Mar 20 at 16:50






      • 4





        @jamesqf, yes, and even the system call interfaces don't have the option of "not having permissions", since the permissions have always been there. (That was what I was thinking when I wrote they're an "integral part".) Therefore, the permissions always shall be there, too, and things like ACLs are made so as to keep them meaningful.

        – ilkkachu
        Mar 20 at 16:59






      • 2





        I've usually seen mode 777 for all files in FAT filesystems (FAT16 with an old driver, at least).

        – forest
        Mar 21 at 20:13






      • 2





        @forest that depends on umask mount option, for which the default value is umask of mount process (see the man page linked to in this answer).

        – Ruslan
        Mar 22 at 14:21












      • But FAT does store some permissions/attributes (read-only, hidden, system, etc), even if they do not map exactly to the Unix ones. chmod ugo-w on a file will turn the read-only attribute on. Using the fmask=0133 option as in your example will not result in all files having the 0644 permission. What FAT absolutely does not store is a uid and a gid for each file. Please clarify; the answer as it stands is highly misleading.

        – mosvy
        Mar 23 at 9:24















      71














      The filesystem as stored on disk doesn't store file permissions, but the filesystem driver has to provide them to the operating system since they are an integral part of the Unix filesystem concept and the system call interfaces have no way of presenting that the permissions are missing.



      Also consider what would happen if a file didn't have any permission bits at all? Would it be the same as 0777, i.e. access to all; or the same as 0000, i.e. no access to anyone? But both of those are file permissions, so why not show them? Or do something more useful and have a way to set some sensible permissions.



      So, the driver fakes some permissions, same ones for all files. The permissions along with the files' owner and group are configurable at mount time. These are described under "Mount options for fat" in the mount(8) man page:




      Mount options for fat

      (Note: fat is not a separate filesystem, but a common part of the msdos, umsdos and vfat filesystems.)



      uid=valueandgid=value

      Set the owner and group of all files. (Default: the UID and GID of the current process.)



      umask=value

      Set the umask (the bitmask of the permissions that are not present). The default is the umask of the current process. The value
      is given in octal.



      dmask=value

      Set the umask applied to directories only. The default is the umask of the current process. The value is given in octal.



      fmask=value

      Set the umask applied to regular files only. The default is the umask of the current process. The value is given in octal.




      Note that the permissions are presented as masks, so the final permissions are the negation of the mask. fmask=0133 would result in all files having permissions 0644, or rw-r--r--.



      Also, the defaults are inherited from the process calling mount(), so if you call mount from the command line, the shell's umask will apply.






      share|improve this answer




















      • 7





        And the reason it does fake the permissions is that otherwise ls, and any other program that looked at file permissions (even just your code trying to read a file) would have to have the logic to handle all the different file system organizations built in.

        – jamesqf
        Mar 20 at 16:50






      • 4





        @jamesqf, yes, and even the system call interfaces don't have the option of "not having permissions", since the permissions have always been there. (That was what I was thinking when I wrote they're an "integral part".) Therefore, the permissions always shall be there, too, and things like ACLs are made so as to keep them meaningful.

        – ilkkachu
        Mar 20 at 16:59






      • 2





        I've usually seen mode 777 for all files in FAT filesystems (FAT16 with an old driver, at least).

        – forest
        Mar 21 at 20:13






      • 2





        @forest that depends on umask mount option, for which the default value is umask of mount process (see the man page linked to in this answer).

        – Ruslan
        Mar 22 at 14:21












      • But FAT does store some permissions/attributes (read-only, hidden, system, etc), even if they do not map exactly to the Unix ones. chmod ugo-w on a file will turn the read-only attribute on. Using the fmask=0133 option as in your example will not result in all files having the 0644 permission. What FAT absolutely does not store is a uid and a gid for each file. Please clarify; the answer as it stands is highly misleading.

        – mosvy
        Mar 23 at 9:24













      71












      71








      71







      The filesystem as stored on disk doesn't store file permissions, but the filesystem driver has to provide them to the operating system since they are an integral part of the Unix filesystem concept and the system call interfaces have no way of presenting that the permissions are missing.



      Also consider what would happen if a file didn't have any permission bits at all? Would it be the same as 0777, i.e. access to all; or the same as 0000, i.e. no access to anyone? But both of those are file permissions, so why not show them? Or do something more useful and have a way to set some sensible permissions.



      So, the driver fakes some permissions, same ones for all files. The permissions along with the files' owner and group are configurable at mount time. These are described under "Mount options for fat" in the mount(8) man page:




      Mount options for fat

      (Note: fat is not a separate filesystem, but a common part of the msdos, umsdos and vfat filesystems.)



      uid=valueandgid=value

      Set the owner and group of all files. (Default: the UID and GID of the current process.)



      umask=value

      Set the umask (the bitmask of the permissions that are not present). The default is the umask of the current process. The value
      is given in octal.



      dmask=value

      Set the umask applied to directories only. The default is the umask of the current process. The value is given in octal.



      fmask=value

      Set the umask applied to regular files only. The default is the umask of the current process. The value is given in octal.




      Note that the permissions are presented as masks, so the final permissions are the negation of the mask. fmask=0133 would result in all files having permissions 0644, or rw-r--r--.



      Also, the defaults are inherited from the process calling mount(), so if you call mount from the command line, the shell's umask will apply.






      share|improve this answer















      The filesystem as stored on disk doesn't store file permissions, but the filesystem driver has to provide them to the operating system since they are an integral part of the Unix filesystem concept and the system call interfaces have no way of presenting that the permissions are missing.



      Also consider what would happen if a file didn't have any permission bits at all? Would it be the same as 0777, i.e. access to all; or the same as 0000, i.e. no access to anyone? But both of those are file permissions, so why not show them? Or do something more useful and have a way to set some sensible permissions.



      So, the driver fakes some permissions, same ones for all files. The permissions along with the files' owner and group are configurable at mount time. These are described under "Mount options for fat" in the mount(8) man page:




      Mount options for fat

      (Note: fat is not a separate filesystem, but a common part of the msdos, umsdos and vfat filesystems.)



      uid=valueandgid=value

      Set the owner and group of all files. (Default: the UID and GID of the current process.)



      umask=value

      Set the umask (the bitmask of the permissions that are not present). The default is the umask of the current process. The value
      is given in octal.



      dmask=value

      Set the umask applied to directories only. The default is the umask of the current process. The value is given in octal.



      fmask=value

      Set the umask applied to regular files only. The default is the umask of the current process. The value is given in octal.




      Note that the permissions are presented as masks, so the final permissions are the negation of the mask. fmask=0133 would result in all files having permissions 0644, or rw-r--r--.



      Also, the defaults are inherited from the process calling mount(), so if you call mount from the command line, the shell's umask will apply.







      share|improve this answer














      share|improve this answer



      share|improve this answer








      edited Mar 22 at 16:17

























      answered Mar 20 at 13:56









      ilkkachuilkkachu

      63.2k10104181




      63.2k10104181







      • 7





        And the reason it does fake the permissions is that otherwise ls, and any other program that looked at file permissions (even just your code trying to read a file) would have to have the logic to handle all the different file system organizations built in.

        – jamesqf
        Mar 20 at 16:50






      • 4





        @jamesqf, yes, and even the system call interfaces don't have the option of "not having permissions", since the permissions have always been there. (That was what I was thinking when I wrote they're an "integral part".) Therefore, the permissions always shall be there, too, and things like ACLs are made so as to keep them meaningful.

        – ilkkachu
        Mar 20 at 16:59






      • 2





        I've usually seen mode 777 for all files in FAT filesystems (FAT16 with an old driver, at least).

        – forest
        Mar 21 at 20:13






      • 2





        @forest that depends on umask mount option, for which the default value is umask of mount process (see the man page linked to in this answer).

        – Ruslan
        Mar 22 at 14:21












      • But FAT does store some permissions/attributes (read-only, hidden, system, etc), even if they do not map exactly to the Unix ones. chmod ugo-w on a file will turn the read-only attribute on. Using the fmask=0133 option as in your example will not result in all files having the 0644 permission. What FAT absolutely does not store is a uid and a gid for each file. Please clarify; the answer as it stands is highly misleading.

        – mosvy
        Mar 23 at 9:24












      • 7





        And the reason it does fake the permissions is that otherwise ls, and any other program that looked at file permissions (even just your code trying to read a file) would have to have the logic to handle all the different file system organizations built in.

        – jamesqf
        Mar 20 at 16:50






      • 4





        @jamesqf, yes, and even the system call interfaces don't have the option of "not having permissions", since the permissions have always been there. (That was what I was thinking when I wrote they're an "integral part".) Therefore, the permissions always shall be there, too, and things like ACLs are made so as to keep them meaningful.

        – ilkkachu
        Mar 20 at 16:59






      • 2





        I've usually seen mode 777 for all files in FAT filesystems (FAT16 with an old driver, at least).

        – forest
        Mar 21 at 20:13






      • 2





        @forest that depends on umask mount option, for which the default value is umask of mount process (see the man page linked to in this answer).

        – Ruslan
        Mar 22 at 14:21












      • But FAT does store some permissions/attributes (read-only, hidden, system, etc), even if they do not map exactly to the Unix ones. chmod ugo-w on a file will turn the read-only attribute on. Using the fmask=0133 option as in your example will not result in all files having the 0644 permission. What FAT absolutely does not store is a uid and a gid for each file. Please clarify; the answer as it stands is highly misleading.

        – mosvy
        Mar 23 at 9:24







      7




      7





      And the reason it does fake the permissions is that otherwise ls, and any other program that looked at file permissions (even just your code trying to read a file) would have to have the logic to handle all the different file system organizations built in.

      – jamesqf
      Mar 20 at 16:50





      And the reason it does fake the permissions is that otherwise ls, and any other program that looked at file permissions (even just your code trying to read a file) would have to have the logic to handle all the different file system organizations built in.

      – jamesqf
      Mar 20 at 16:50




      4




      4





      @jamesqf, yes, and even the system call interfaces don't have the option of "not having permissions", since the permissions have always been there. (That was what I was thinking when I wrote they're an "integral part".) Therefore, the permissions always shall be there, too, and things like ACLs are made so as to keep them meaningful.

      – ilkkachu
      Mar 20 at 16:59





      @jamesqf, yes, and even the system call interfaces don't have the option of "not having permissions", since the permissions have always been there. (That was what I was thinking when I wrote they're an "integral part".) Therefore, the permissions always shall be there, too, and things like ACLs are made so as to keep them meaningful.

      – ilkkachu
      Mar 20 at 16:59




      2




      2





      I've usually seen mode 777 for all files in FAT filesystems (FAT16 with an old driver, at least).

      – forest
      Mar 21 at 20:13





      I've usually seen mode 777 for all files in FAT filesystems (FAT16 with an old driver, at least).

      – forest
      Mar 21 at 20:13




      2




      2





      @forest that depends on umask mount option, for which the default value is umask of mount process (see the man page linked to in this answer).

      – Ruslan
      Mar 22 at 14:21






      @forest that depends on umask mount option, for which the default value is umask of mount process (see the man page linked to in this answer).

      – Ruslan
      Mar 22 at 14:21














      But FAT does store some permissions/attributes (read-only, hidden, system, etc), even if they do not map exactly to the Unix ones. chmod ugo-w on a file will turn the read-only attribute on. Using the fmask=0133 option as in your example will not result in all files having the 0644 permission. What FAT absolutely does not store is a uid and a gid for each file. Please clarify; the answer as it stands is highly misleading.

      – mosvy
      Mar 23 at 9:24





      But FAT does store some permissions/attributes (read-only, hidden, system, etc), even if they do not map exactly to the Unix ones. chmod ugo-w on a file will turn the read-only attribute on. Using the fmask=0133 option as in your example will not result in all files having the 0644 permission. What FAT absolutely does not store is a uid and a gid for each file. Please clarify; the answer as it stands is highly misleading.

      – mosvy
      Mar 23 at 9:24













      22














      But the files do have permissions. User john has RW access, while some random user only has read access. These permissions didn’t come from the filesystem itself but rather from mount options (-o uid/gid/umask), which doesn’t make them any less real.



      You could have multiple vfat partitions mounted with different options and you could use ls to determine what those options were. You could even use mount --bind to have a single directory contain files from different vfat partitions, and ls would correctly show what permissions have been specified for each file.






      share|improve this answer



























        22














        But the files do have permissions. User john has RW access, while some random user only has read access. These permissions didn’t come from the filesystem itself but rather from mount options (-o uid/gid/umask), which doesn’t make them any less real.



        You could have multiple vfat partitions mounted with different options and you could use ls to determine what those options were. You could even use mount --bind to have a single directory contain files from different vfat partitions, and ls would correctly show what permissions have been specified for each file.






        share|improve this answer

























          22












          22








          22







          But the files do have permissions. User john has RW access, while some random user only has read access. These permissions didn’t come from the filesystem itself but rather from mount options (-o uid/gid/umask), which doesn’t make them any less real.



          You could have multiple vfat partitions mounted with different options and you could use ls to determine what those options were. You could even use mount --bind to have a single directory contain files from different vfat partitions, and ls would correctly show what permissions have been specified for each file.






          share|improve this answer













          But the files do have permissions. User john has RW access, while some random user only has read access. These permissions didn’t come from the filesystem itself but rather from mount options (-o uid/gid/umask), which doesn’t make them any less real.



          You could have multiple vfat partitions mounted with different options and you could use ls to determine what those options were. You could even use mount --bind to have a single directory contain files from different vfat partitions, and ls would correctly show what permissions have been specified for each file.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Mar 20 at 17:27









          Roman OdaiskyRoman Odaisky

          3434




          3434





















              15














              ls doesn't know about FAT32, it only knows about the Virtual Filesystem (VFS) interface exposed by the kernel with POSIX open / readdir / stat system calls.



              Linux doesn't support the concept of files that don't have user/group/other permission bits, struct stat simply contains a mode_t st_mode; member (and uid, gid members) that the kernel must fill out when ls -l makes stat(2) system calls.



              There's no special code that means "not available" or "not applicable" for any of those fields, so the kernel's vfat driver must make something up. FAT16/FAT32 does have a read-only flag, but otherwise the owner/group come from mount options, and so does a umask.






              share|improve this answer



























                15














                ls doesn't know about FAT32, it only knows about the Virtual Filesystem (VFS) interface exposed by the kernel with POSIX open / readdir / stat system calls.



                Linux doesn't support the concept of files that don't have user/group/other permission bits, struct stat simply contains a mode_t st_mode; member (and uid, gid members) that the kernel must fill out when ls -l makes stat(2) system calls.



                There's no special code that means "not available" or "not applicable" for any of those fields, so the kernel's vfat driver must make something up. FAT16/FAT32 does have a read-only flag, but otherwise the owner/group come from mount options, and so does a umask.






                share|improve this answer

























                  15












                  15








                  15







                  ls doesn't know about FAT32, it only knows about the Virtual Filesystem (VFS) interface exposed by the kernel with POSIX open / readdir / stat system calls.



                  Linux doesn't support the concept of files that don't have user/group/other permission bits, struct stat simply contains a mode_t st_mode; member (and uid, gid members) that the kernel must fill out when ls -l makes stat(2) system calls.



                  There's no special code that means "not available" or "not applicable" for any of those fields, so the kernel's vfat driver must make something up. FAT16/FAT32 does have a read-only flag, but otherwise the owner/group come from mount options, and so does a umask.






                  share|improve this answer













                  ls doesn't know about FAT32, it only knows about the Virtual Filesystem (VFS) interface exposed by the kernel with POSIX open / readdir / stat system calls.



                  Linux doesn't support the concept of files that don't have user/group/other permission bits, struct stat simply contains a mode_t st_mode; member (and uid, gid members) that the kernel must fill out when ls -l makes stat(2) system calls.



                  There's no special code that means "not available" or "not applicable" for any of those fields, so the kernel's vfat driver must make something up. FAT16/FAT32 does have a read-only flag, but otherwise the owner/group come from mount options, and so does a umask.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Mar 21 at 14:38









                  Peter CordesPeter Cordes

                  4,5831434




                  4,5831434



























                      draft saved

                      draft discarded
















































                      Thanks for contributing an answer to Unix & Linux Stack Exchange!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid


                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.

                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function ()
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f507441%2fwhy-is-the-ls-command-showing-permissions-of-files-in-a-fat32-partition%23new-answer', 'question_page');

                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

                      Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

                      Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript