smack_inode_setattr(9)
π smack_inode_setattr(9) β like, the Smack check for setting attributes, bestie
okay so real talk, this whole page lives in the Kernel API Manual, and it's genuinely so niche and so specific and I'm obsessed. Basically: before your kernel goes and changes a file's attributes, Smack wants a lil vibe check first. That's it. That's the function. Let's get into it π
β¨ SYNOPSIS β¨
int smack_inode_setattr (struct mnt_idmap *idmap , struct dentry *dentry
, struct iattr *iattr );
like yes, that's the whole signature, she's not complicated and honestly? icon behavior π
π«Ά ARGUMENTS π«Ά
idmapβ the idmap of the mount. that's her whole job, she's just tagging along to tell you which mount's id mapping we're talking about π¦dentryβ the object. the actual thing getting its attributes fiddled with. main character energy, fr fr β¨iattrβ and this one is here for the force flag. yep, that's the reason she got invited to the function π
πΈ DESCRIPTION πΈ
no cap, it's simple:
Returns 0 if access is permitted, an error code otherwise.
that's the whole deal. 0 = you're clear, go set your attributes, slay π. anything else = nope, Smack said no, and you get an error code instead π
β SEE ALSO β
so the source of all this is the kernel file ./security/smack/smack_lsm.c, and ngl the SEE ALSO section is huge, like she brought her entire group chat. every single one of these is invited, I'm not leaving anybody out π«Ά
π§ the smk core girlies
smk_fetch(9)init_inode_smack(9)init_task_smack(9)smk_copy_rules(9)smk_copy_relabel(9)smk_ptrace_mode(9)smk_ptrace_rule_check(9)
π¦ ptrace & syslog besties
π superblock / mount vibes
smack_sb_alloc_security(9)smack_fs_context_submount(9)smack_fs_context_dup(9)smack_fs_context_parse_param(9)smack_set_mnt_opts(9)smack_sb_statfs(9)smack_bprm_creds_for_exec(9)
π inode crew (literally my faves)
smack_inode_alloc_security(9)smk_rule_transmutes(9)smack_inode_init_security(9)smack_inode_link(9)smack_inode_unlink(9)smack_inode_rmdir(9)smack_inode_rename(9)smack_inode_permission(9)smack_inode_getattr(9)smack_inode_xattr_skipcap(9)smack_inode_setxattr(9)smack_inode_post_setxattr(9)smack_inode_getxattr(9)smack_inode_removexattr(9)smack_inode_set_acl(9)smack_inode_get_acl(9)smack_inode_remove_acl(9)smack_inode_getsecurity(9)smack_inode_listsecurity(9)smack_inode_getlsmprop(9)
π file hooks
smack_file_alloc_security(9)smack_file_ioctl(9)smack_file_lock(9)smack_file_fcntl(9)smack_mmap_file(9)smack_file_set_fowner(9)smack_file_send_sigiotask(9)smack_file_receive(9)smack_file_open(9)
π₯ creds, she's got range
smack_cred_alloc_blank(9)smack_cred_free(9)smack_cred_prepare(9)smack_cred_transfer(9)smack_cred_getsecid(9)smack_cred_getlsmprop(9)smack_kernel_act_as(9)smack_kernel_create_files_as(9)
πΈ task girlies
smk_curacc_on_task(9)smack_task_setpgid(9)smack_task_getpgid(9)smack_task_getsid(9)smack_current_getlsmprop_subj(9)smack_task_getlsmprop_obj(9)smack_task_setnice(9)smack_task_setioprio(9)smack_task_getioprio(9)smack_task_setscheduler(9)smack_task_getscheduler(9)smack_task_movememory(9)smack_task_kill(9)smack_task_to_inode(9)
π sockets & netlabel (networking era)
smack_sk_alloc_security(9)smack_sk_free_security(9)smack_sk_clone_security(9)smack_ipv4host_label(9)smack_ipv6host_label(9)smack_netlbl_add(9)smack_netlbl_delete(9)smk_ipv4_check(9)smk_ipv6_check(9)smk_ipv6_port_label(9)smk_ipv6_port_check(9)smack_inode_setsecurity(9)smack_socket_post_create(9)smack_socket_socketpair(9)smack_socket_bind(9)smack_socket_connect(9)smack_flags_to_may(9)
π§ ipc grp (shm, sem, msg β all of it)
smack_msg_msg_alloc_security(9)smack_of_ipc(9)smack_ipc_alloc_security(9)smk_curacc_shm(9)smack_shm_associate(9)smack_shm_shmctl(9)smack_shm_shmat(9)smk_curacc_sem(9)smack_sem_associate(9)smack_sem_semctl(9)smack_sem_semop(9)smk_tskacc_msq(9)smk_curacc_msq(9)smack_msg_queue_associate(9)smack_msg_queue_msgctl(9)smack_msg_queue_msgsnd(9)smack_msg_queue_msgrcv(9)smack_ipc_permission(9)smack_ipc_getlsmprop(9)
π instantiate + the get/set selfattr & procattr crew
smack_d_instantiate(9)smack_getselfattr(9)smack_getprocattr(9)do_setattr(9)smack_setselfattr(9)smack_setprocattr(9)
π unix sockets, skbs & netlabel conversions
smack_unix_stream_connect(9)smack_unix_may_send(9)smack_socket_sendmsg(9)smack_from_secattr(9)smack_from_skb(9)smack_from_netlbl(9)smack_socket_sock_rcv_skb(9)smack_socket_getpeersec_stream(9)smack_socket_getpeersec_dgram(9)smack_inet_conn_request(9)smack_inet_csk_clone(9)
π¦ keys, audit & io_uring (the cool older cousins)
smack_key_alloc(9)smack_key_permission(9)smack_watch_key(9)smack_post_notification(9)smack_audit_rule_init(9)smack_audit_rule_known(9)smack_audit_rule_match(9)smack_ismaclabel(9)smack_to_secctx(9)smack_secid_to_secctx(9)smack_lsmprop_to_secctx(9)smack_secctx_to_secid(9)smack_uring_override_creds(9)smack_uring_sqpoll(9)smack_uring_cmd(9)smack_init(9)
and that's the whole page bestie π«Ά iykyk. this lil gem comes out of ./security/smack, dated October 2026, and she's officially filed as smack_inode_setattr(9) β go forth and set those attributes, but like, only if you get that 0 back πβ¨π
π¦ 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