cached data is invalidated on \fBopen\fP(2) if the modification
time or the size of the file has changed since it was last opened.
.TP
-\fBumask=M\fP
-Override the permission bits in \fIst_mode\fP set by the filesystem. The resulting permission bits are the ones missing from the given umask value. The value is given in octal representation.
+\fBumask=M fmask=M dmask=M\fP
+Override the permission bits set by the filesystem in \fIst_mode\fP. The resulting permission bits are the ones missing from the mask value, which is given in octal representation. \fBfmask\fP and \fBdmask\fP (respectively) may be used to control the permission bits of files and directories separately. umask is overridden by the individual fmask and dmask options.
.TP
\fBuid=N\fP
Override the \fIst_uid\fP field set by the filesystem (N is numeric).
{
if (!f->conf.use_ino)
stbuf->st_ino = nodeid;
- if (f->conf.set_mode)
- stbuf->st_mode = (stbuf->st_mode & S_IFMT) |
- (0777 & ~f->conf.umask);
+ if (f->conf.set_mode) {
+ if (f->conf.dmask && S_ISDIR(stbuf->st_mode))
+ stbuf->st_mode = (stbuf->st_mode & S_IFMT) |
+ (0777 & ~f->conf.dmask);
+ else if (f->conf.fmask)
+ stbuf->st_mode = (stbuf->st_mode & S_IFMT) |
+ (0777 & ~f->conf.fmask);
+ else
+ stbuf->st_mode = (stbuf->st_mode & S_IFMT) |
+ (0777 & ~f->conf.umask);
+ }
if (f->conf.set_uid)
stbuf->st_uid = f->conf.uid;
if (f->conf.set_gid)
FUSE_LIB_OPT("no_rofd_flush", no_rofd_flush, 1),
FUSE_LIB_OPT("umask=", set_mode, 1),
FUSE_LIB_OPT("umask=%o", umask, 0),
+ FUSE_LIB_OPT("fmask=", set_mode, 1),
+ FUSE_LIB_OPT("fmask=%o", fmask, 0),
+ FUSE_LIB_OPT("dmask=", set_mode, 1),
+ FUSE_LIB_OPT("dmask=%o", dmask, 0),
FUSE_LIB_OPT("uid=", set_uid, 1),
FUSE_LIB_OPT("uid=%d", uid, 0),
FUSE_LIB_OPT("gid=", set_gid, 1),
" -o [no]auto_cache enable caching based on modification times (off)\n"
" -o no_rofd_flush disable flushing of read-only fd on close (off)\n"
" -o umask=M set file permissions (octal)\n"
+" -o fmask=M set file permissions (octal)\n"
+" -o dmask=M set dir permissions (octal)\n"
" -o uid=N set file owner\n"
" -o gid=N set file group\n"
" -o entry_timeout=T cache timeout for names (1.0s)\n"