我试图弄清楚以下 (v)FAT 的 Mountoption 到底做了什么(在 Linux 中):
allow_utime=### -- 该选项控制mtime/atime的权限检查。
20 - If current process is in group of file's group ID, you can change timestamp. 2 - Other users can change timestamp. The default is set from `dmask' option. (If the directory is writable, utime(2) is also allowed. I.e. ~dmask & 022) Normally utime(2) checks current process is owner of the file, or it has CAP_FOWNER capability. But FAT filesystem doesn't have uid/gid on disk, so normal check is too unflexible. With this option you can relax it.
[来源]
问题:这(上面)是什么意思?
试图查找它时,我以 C 代码结束,这对我没有多大帮助,所以这和man 2 utime
(如上所述)目前都对我没有多大帮助。我喜欢使用源……
从utime
:utime() 系统调用将 filename 指定的 inode 的访问和修改时间更改为行动时间和modtime
时间字段。
我将其读为:启用更改时间戳。超级额外的荣誉给你,谁能给出一个如何使用这个 Mountoption 的实际例子(allow_utim
)
答案1
在支持普通 Unix 文件属性的文件系统上,每个文件都有一个被指定为所有者的用户。只有文件的所有者可以更改其时间戳utime
。其他用户不允许更改时间戳,即使他们具有写入权限。
FAT 文件系统不会像所有者那样记录任何内容。 FAT 文件系统驱动程序假装特定用户是每个文件的所有者:执行安装的用户或参数指定的用户uid
。使用正常规则,只有该用户才被允许更改时间戳。文件还有一个所属组,由gid
参数确定。
FAT 文件系统不记录 Unix 文件权限,因此驱动程序会弥补它们。它根据umask
、fmask
和dmask
参数分配权限,因此所有目录和所有常规文件都具有相同的权限。
当所有者以外的用户对文件系统具有写访问权限时,他们不仅可以修改常规文件和目录,还可以修改文件元数据,这是有意义的。 FAT 文件系统上令人感兴趣的主要元数据是文件的时间戳。通常,只有拥有用户才能修改时间戳。通过传递allow_utime
挂载选项,您也可以允许其他用户更改时间戳。例如,要允许组foo
修改文件系统中的任何内容,并允许其他人读取但不能写入,您可以传递参数
gid=foo,umask=002,allow_utime=20
allow_utime
(这实际上是基于 umask 的默认值)。