Answers:
磁盘上存储的文件系统不存储文件许可权,但文件系统驱动程序必须将其提供给操作系统,因为它们是Unix文件系统概念的组成部分,并且系统调用接口无法表示许可权是失踪。
还考虑如果文件根本没有任何权限位会发生什么情况?是否与相同0777
,即可以访问所有人?或与相同0000
,即无法访问任何人?但是这两个都是文件权限,那么为什么不显示它们呢?或者做一些更有用的事情,并有办法设置一些合理的权限。
因此,驱动程序会伪造一些权限,所有文件的权限都相同。这些权限以及文件的所有者和组可以在安装时进行配置。这些在mount(8)手册页的 “胖的装载选项”下进行了描述:
fat的挂载选项
(注意:fat不是独立的文件系统,而是msdos,umsdos和vfat文件系统的公共部分。)
uid=value
并gid=value
设置所有文件的所有者和组。(默认值:当前进程的UID和GID。)
umask=value
设置umask(不存在的权限的位掩码)。默认值为当前进程的umask。该值以八进制表示。
dmask=value
设置仅应用于目录的umask。默认值为当前进程的umask。该值以八进制表示。
fmask=value
设置仅适用于常规文件的umask。默认值为当前进程的umask。该值以八进制表示。
请注意,权限以掩码形式显示,因此最终权限是掩码的取反。fmask=0133
会导致所有文件都具有权限0644
,或者rw-r--r--
。
而且,默认值是从调用的进程继承而来的mount()
,因此,如果mount
从命令行调用,则将使用shell的默认值umask
。
umask
安装选项,其默认值为mount
进程的umask (请参见此答案中链接至的手册页)。
chmod ugo-w
在文件上打开只读属性。fmask=0133
如您的示例中那样使用该选项将不会导致所有文件都具有0644权限。FAT绝对不存储的是每个文件的uid和gid。请澄清; 目前的答案是极具误导性的。