[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 1/3] virtiofsd: Add an option to enable/disable posix acls
From: |
Vivek Goyal |
Subject: |
[PATCH 1/3] virtiofsd: Add an option to enable/disable posix acls |
Date: |
Tue, 16 Feb 2021 18:36:09 -0500 |
fuse has an option FUSE_POSIX_ACL which needs to be opted in by fuse
server to enable posix acls.
Add virtiofsd option "-o posix_acl/no_posix_acl" to let users enable/disable
posix acl support. By default it is disabled as of now.
Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
---
tools/virtiofsd/passthrough_ll.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/tools/virtiofsd/passthrough_ll.c b/tools/virtiofsd/passthrough_ll.c
index 147b59338a..34b2848e61 100644
--- a/tools/virtiofsd/passthrough_ll.c
+++ b/tools/virtiofsd/passthrough_ll.c
@@ -168,6 +168,7 @@ struct lo_data {
/* An O_PATH file descriptor to /proc/self/fd/ */
int proc_self_fd;
+ int user_posix_acl;
};
static const struct fuse_opt lo_opts[] = {
@@ -198,6 +199,8 @@ static const struct fuse_opt lo_opts[] = {
{ "allow_direct_io", offsetof(struct lo_data, allow_direct_io), 1 },
{ "no_allow_direct_io", offsetof(struct lo_data, allow_direct_io), 0 },
{ "announce_submounts", offsetof(struct lo_data, announce_submounts), 1 },
+ { "posix_acl", offsetof(struct lo_data, user_posix_acl), 1 },
+ { "no_posix_acl", offsetof(struct lo_data, user_posix_acl), 0 },
FUSE_OPT_END
};
static bool use_syslog = false;
@@ -630,6 +633,23 @@ static void lo_init(void *userdata, struct fuse_conn_info
*conn)
"does not support it\n");
lo->announce_submounts = false;
}
+
+ if (lo->user_posix_acl == 1) {
+ /*
+ * User explicitly asked for this option. Enable it unconditionally.
+ * If connection does not have this capability, it should fail
+ * in fuse_lowlevel.c
+ */
+ fuse_log(FUSE_LOG_DEBUG, "lo_init: enabling posix acl\n");
+ conn->want |= FUSE_CAP_POSIX_ACL;
+ } else {
+ /*
+ * Either user specified to disable posix_acl, or did not specify
+ * anything. In both the cases do not enable posix acl.
+ */
+ fuse_log(FUSE_LOG_DEBUG, "lo_init: disabling posix_acl\n");
+ conn->want &= ~FUSE_CAP_POSIX_ACL;
+ }
}
static void lo_getattr(fuse_req_t req, fuse_ino_t ino,
@@ -3533,6 +3553,7 @@ int main(int argc, char *argv[])
.posix_lock = 0,
.allow_direct_io = 0,
.proc_self_fd = -1,
+ .user_posix_acl = -1,
};
struct lo_map_elem *root_elem;
struct lo_map_elem *reserve_elem;
--
2.25.4
- [PATCH 0/3] virtiofsd: Add options to enable/disable posix acl, Vivek Goyal, 2021/02/16
- [PATCH 1/3] virtiofsd: Add an option to enable/disable posix acls,
Vivek Goyal <=
- [PATCH 2/3] virtiofsd: Add umask to seccom allow list, Vivek Goyal, 2021/02/16
- [PATCH 3/3] virtiofsd: Change umask if posix acls are enabled, Vivek Goyal, 2021/02/16
- Re: [PATCH 0/3] virtiofsd: Add options to enable/disable posix acl, no-reply, 2021/02/16
- Re: [PATCH 0/3] virtiofsd: Add options to enable/disable posix acl, Luis Henriques, 2021/02/17