client: prohibit unprivileged users from setting sgid/suid bits
authorKefu Chai <tchaikov@gmail.com>
Sat, 5 Jul 2025 08:23:36 +0000 (16:23 +0800)
committerSalvatore Bonaccorso <carnil@debian.org>
Sat, 16 May 2026 12:52:24 +0000 (14:52 +0200)
commita7cc8ae303d6ddc2ab76192f0df5bedff0c1fee5
tree0f2cadf53ec268ddc5f5ba7a05ec103a2d2cd6fc
parent65445271e90660e27b2a8a7606b0ccb6d3bbb79d
client: prohibit unprivileged users from setting sgid/suid bits

Origin: https://github.com/ceph/ceph/commit/7028ed21138522495df1e9f8b01195a3c43d47ff

Prior to fb1b72d, unprivileged users could add mode bits as long as
S_ISUID and S_ISGID were not included in the change.

After fb1b72d, unprivileged users were allowed to modify S_ISUID and
S_ISGID bits only when no other mode bits were changed in the same
operation. This inadvertently permitted unprivileged users to set
S_ISUID and/or S_ISGID bits when they were the sole bits being modified.

This behavior should not be allowed. Unprivileged users should be
prohibited from setting S_ISUID and/or S_ISGID bits under any
circumstances.

This change tightens the permission check to prevent unprivileged
users from setting these privileged bits in all cases.

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
Gbp-Pq: Name client-prohibit-unprivileged-users-from-setting-sgid.patch
src/client/Client.cc
src/test/libcephfs/suidsgid.cc