From: Ian Bridges <icb@fastmail.org>
To: linkinjeon@kernel.org
Cc: senozhatsky@chromium.org, tom@talpey.com,
chenxiaosong@chenxiaosong.com, linux-cifs@vger.kernel.org,
linux-kernel@vger.kernel.org, Ian Bridges <icb@fastmail.org>,
Sashiko <sashiko-bot@kernel.org>,
stable@vger.kernel.org
Subject: [PATCH] ksmbd: keep group denials when a POSIX ACL entry decides access
Date: Mon, 9 Nov 2026 20:33:44 -0600 [thread overview]
Message-ID: <20261110023344.2105916-1-icb@fastmail.org> (raw)
When no ACE names the caller, Everyone or Authenticated Users,
smb_check_perm_dacl() lets a POSIX ACL entry for the caller decide
access. The entry's rights replace the result of the DACL walk. Deny
ACEs for the caller's groups, and OWNER RIGHTS for the owner, are then
lost.
For example, a deny of FILE_WRITE_DATA for one of the caller's groups
should refuse writes. A POSIX ACL entry that gives the caller write
access still lets the caller write.
Remove the requested rights that those ACEs deny from the entry's
rights. The DACL walk already records them in grp_denied.
Fixes: 42ac1f1917ae ("ksmbd: grant a caller what its groups and OWNER RIGHTS ACEs allow")
Reported-by: Sashiko <sashiko-bot@kernel.org>
Link: https://sashiko.dev/#/patchset/20261102200353.884509-1-icb%40fastmail.org
Link: https://sashiko.dev/#/patchset/20261103150458.11591-1-icb%40fastmail.org
Link: https://sashiko.dev/#/patchset/20261107062233.1579198-1-icb%40fastmail.org?part=1
Link: https://sashiko.dev/#/patchset/20261107231941.1824289-1-icb%40fastmail.org?part=1
Link: https://sashiko.dev/#/patchset/20261108182011.1888520-1-icb%40fastmail.org?part=1
Cc: stable@vger.kernel.org
Signed-off-by: Ian Bridges <icb@fastmail.org>
---
Notes:
A POSIX ACL entry that decides can still drop rights that ACEs for
the caller's groups grant. The implicit allowances that every
non-strict check adds are also unchanged.
For MAXIMUM_ALLOWED, only the rights named in the request are
checked against these denials. Group deny ACEs still do not limit
the rights that MAXIMUM_ALLOWED adds, as on the other paths of this
check.
Tested with KASAN on ksmbd-for-next 4ab80fd4d1f1, and over SMB on a
kernel whose fs/smb/server tree is identical to it. smbtorture
results are unchanged.
This patch was developed with LLM assistance.
fs/smb/server/smbacl.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/fs/smb/server/smbacl.c b/fs/smb/server/smbacl.c
index 1b387c262d59..45f70a05e21f 100644
--- a/fs/smb/server/smbacl.c
+++ b/fs/smb/server/smbacl.c
@@ -1764,6 +1764,15 @@ int smb_check_perm_dacl(struct ksmbd_conn *conn, const struct path *path,
if (!access_bits)
access_bits =
SET_MINIMUM_RIGHTS;
+ /*
+ * Only ACEs for the caller's groups,
+ * or OWNER RIGHTS for the owner, apply
+ * here. The POSIX ACL entry does not
+ * grant an explicitly requested right
+ * that they deny first in DACL order.
+ */
+ access_bits &= ~(grp_denied &
+ requested);
posix_acl_release(posix_acls);
goto check_access_bits;
}
base-commit: 4ab80fd4d1f1c4363b336ddb3d8818ea37c4997d
--
2.47.3
reply other threads:[~2026-11-10 2:33 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261110023344.2105916-1-icb@fastmail.org \
--to=icb@fastmail.org \
--cc=chenxiaosong@chenxiaosong.com \
--cc=linkinjeon@kernel.org \
--cc=linux-cifs@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sashiko-bot@kernel.org \
--cc=senozhatsky@chromium.org \
--cc=stable@vger.kernel.org \
--cc=tom@talpey.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®