smack_inode_unlink(9)
π smack_inode_unlink(9) π
so bestie, welcome to the smack_inode_unlink(9) page β yes that's the kernel API manual, section 9, and yes we're doing this. this is the Smack check that runs when someone tries to delete an inode. it's giving security-module gatekeeper energy and honestly? iconic. let's get into it π¦
β¨ NAME β¨
smack_inode_unlink β the Smack check on inode deletion π
like, the vibe check that happens before a file gets unlinked. no cap.
πΈ SYNOPSIS πΈ
int smack_inode_unlink (struct inode *dir , struct dentry *dentry );
look at that signature. two pointers, one int. short, sweet, and it will absolutely tell you no if it's not feeling it π«Ά
π ARGUMENTS π
dirβ the containing directory object. the folder that's holding the thing being unlinked. think of it as the parent that has to also be okay with this whole situation πdentryβ the file to unlink. the actual victim of this operation. pour one out π
π§ DESCRIPTION π§
okay so here's the whole deal, plain and simple:
it returns 0 if the current process can write the containing directory and the object β and an error code otherwise β¨
that's it. that's the function. both checks, or no deal. the current task has to have write access to the directory and to the thing inside it, otherwise you get an error code back instead of that sweet sweet 0. periodt. π₯
lowkey important: it's and, not or. bestie cannot just have one of the two. the LSM does not do partial credit π
π SEE ALSO π
girl. sit down. hydrate. this list is long and we are not skipping a single one of them, because every single reference here is part of the Smack family and we love them all equally π
kernel file ./security/smack/smack_lsm.c, plus: 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), smack_ptrace_access_check(9), smack_ptrace_traceme(9), smack_syslog(9), 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), smack_inode_alloc_security(9), smk_rule_transmutes(9), smack_inode_init_security(9), smack_inode_link(9), smack_inode_rmdir(9), smack_inode_rename(9), smack_inode_permission(9), smack_inode_setattr(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), 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), 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), 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), 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), 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), smack_d_instantiate(9), smack_getselfattr(9), smack_getprocattr(9), do_setattr(9), smack_setselfattr(9), smack_setprocattr(9), 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), 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) π
like I said. everyone's invited to the party π
and that's the whole page bestie!! this one comes to you straight from ./security/smack, dated October 2026 β go forth and unlink responsibly, and remember: both the directory and the object. always both. mwah ππ§
π¦ 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