mode_strip_sgid(9)
π mode_strip_sgid β Kernel API Manual π
okay so bestie, welcome to mode_strip_sgid(9), the little kernel function that does the sgid bit vibe check for non-directories β¨
πΈ NAME πΈ
mode_strip_sgid β handles the sgid bit for non-directories, no cap π
β¨ SYNOPSIS β¨
umode_t mode_strip_sgid (struct mnt_idmap *idmap , const struct inode
*dir , umode_t mode );
π¦ ARGUMENTS π¦
idmapβ the idmap of the mount that the inode was created from πΊοΈdirβ the parent directory inode (the one it's all happening in) πmodeβ the mode of the file that's gonna be created indirπ
π DESCRIPTION π
okay so here's the situation, and honestly it's giving permission-check main character energy π
If the mode of the new file has both the S_ISGID and S_IXGRP bit raised, and dir has the S_ISGID bit raised too β then this function makes sure the caller is either in the group of the parent directory, or they have CAP_FSETID in their user namespace and are privileged over the parent directory. iykyk, that's the whole security vibe check π‘οΈ
In all other cases, it strips the S_ISGID bit from mode. literally just takes it right off, bye π
β RETURN β
the new mode to use for the file β that's it, that's the return value π«
π SEE ALSO π
all the kernel file friends from ./fs/inode.c, because we support each other's slay π«Ά
inode_init_always_gfp(9)alloc_inode(9)drop_nlink(9)clear_nlink(9)set_nlink(9)inc_nlink(9)inode_sb_list_add(9)__insert_inode_hash(9)__remove_inode_hash(9)evict_inodes(9)new_inode(9)unlock_new_inode(9)lock_two_nondirectories(9)unlock_two_nondirectories(9)inode_insert5(9)iget5_locked(9)iget5_locked_rcu(9)iget_locked(9)iunique(9)ihold(9)ilookup5_nowait(9)ilookup5(9)ilookup(9)find_inode_nowait(9)find_inode_rcu(9)find_inode_by_ino_rcu(9)iput(9)iput_not_last(9)bmap(9)inode_update_time(9)generic_update_time(9)atime_needs_update(9)file_remove_privs(9)current_time(9)file_update_time(9)file_modified_flags(9)file_modified(9)kiocb_modified(9)inode_init_owner(9)inode_owner_or_capable(9)inode_dio_wait(9)timestamp_truncate(9)inode_set_ctime_current(9)inode_set_ctime_deleg(9)in_group_or_capable(9)dump_inode(9)
π§ friendly reminder bestie: if that sgid check doesn't pass, the bit is gone, and there is no "undo" button π«Ά
π that's the page!! this one lives in ./fs, from the Kernel API Manual, dated October 2026 β mode_strip_sgid(9), periodt πβ¨πΈ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms