📄 audit.h
字号:
#define AUDIT_ARCH_S390 (EM_S390)#define AUDIT_ARCH_S390X (EM_S390|__AUDIT_ARCH_64BIT)#define AUDIT_ARCH_SH (EM_SH)#define AUDIT_ARCH_SHEL (EM_SH|__AUDIT_ARCH_LE)#define AUDIT_ARCH_SH64 (EM_SH|__AUDIT_ARCH_64BIT)#define AUDIT_ARCH_SHEL64 (EM_SH|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)#define AUDIT_ARCH_SPARC (EM_SPARC)#define AUDIT_ARCH_SPARC64 (EM_SPARCV9|__AUDIT_ARCH_64BIT)#define AUDIT_ARCH_V850 (EM_V850|__AUDIT_ARCH_LE)#define AUDIT_ARCH_X86_64 (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)#define AUDIT_PERM_EXEC 1#define AUDIT_PERM_WRITE 2#define AUDIT_PERM_READ 4#define AUDIT_PERM_ATTR 8struct audit_status { __u32 mask; /* Bit mask for valid entries */ __u32 enabled; /* 1 = enabled, 0 = disabled */ __u32 failure; /* Failure-to-log action */ __u32 pid; /* pid of auditd process */ __u32 rate_limit; /* messages rate limit (per second) */ __u32 backlog_limit; /* waiting messages limit */ __u32 lost; /* messages lost */ __u32 backlog; /* messages waiting in queue */};/* audit_rule_data supports filter rules with both integer and string * fields. It corresponds with AUDIT_ADD_RULE, AUDIT_DEL_RULE and * AUDIT_LIST_RULES requests. */struct audit_rule_data { __u32 flags; /* AUDIT_PER_{TASK,CALL}, AUDIT_PREPEND */ __u32 action; /* AUDIT_NEVER, AUDIT_POSSIBLE, AUDIT_ALWAYS */ __u32 field_count; __u32 mask[AUDIT_BITMASK_SIZE]; /* syscall(s) affected */ __u32 fields[AUDIT_MAX_FIELDS]; __u32 values[AUDIT_MAX_FIELDS]; __u32 fieldflags[AUDIT_MAX_FIELDS]; __u32 buflen; /* total length of string fields */ char buf[0]; /* string fields buffer */};/* audit_rule is supported to maintain backward compatibility with * userspace. It supports integer fields only and corresponds to * AUDIT_ADD, AUDIT_DEL and AUDIT_LIST requests. */struct audit_rule { /* for AUDIT_LIST, AUDIT_ADD, and AUDIT_DEL */ __u32 flags; /* AUDIT_PER_{TASK,CALL}, AUDIT_PREPEND */ __u32 action; /* AUDIT_NEVER, AUDIT_POSSIBLE, AUDIT_ALWAYS */ __u32 field_count; __u32 mask[AUDIT_BITMASK_SIZE]; __u32 fields[AUDIT_MAX_FIELDS]; __u32 values[AUDIT_MAX_FIELDS];};#ifdef __KERNEL__#include <linux/sched.h>struct audit_sig_info { uid_t uid; pid_t pid; char ctx[0];};struct audit_buffer;struct audit_context;struct inode;struct netlink_skb_parms;struct linux_binprm;struct mq_attr;struct mqstat;#define AUDITSC_INVALID 0#define AUDITSC_SUCCESS 1#define AUDITSC_FAILURE 2#define AUDITSC_RESULT(x) ( ((long)(x))<0?AUDITSC_FAILURE:AUDITSC_SUCCESS )extern int __init audit_register_class(int class, unsigned *list);extern int audit_classify_syscall(int abi, unsigned syscall);#ifdef CONFIG_AUDITSYSCALL/* These are defined in auditsc.c */ /* Public API */extern int audit_alloc(struct task_struct *task);extern void audit_free(struct task_struct *task);extern void audit_syscall_entry(int arch, int major, unsigned long a0, unsigned long a1, unsigned long a2, unsigned long a3);extern void audit_syscall_exit(int failed, long return_code);extern void __audit_getname(const char *name);extern void audit_putname(const char *name);extern void __audit_inode(const char *name, const struct inode *inode);extern void __audit_inode_child(const char *dname, const struct inode *inode, const struct inode *parent);extern void __audit_inode_update(const struct inode *inode);static inline int audit_dummy_context(void){ void *p = current->audit_context; return !p || *(int *)p;}static inline void audit_getname(const char *name){ if (unlikely(!audit_dummy_context())) __audit_getname(name);}static inline void audit_inode(const char *name, const struct inode *inode) { if (unlikely(!audit_dummy_context())) __audit_inode(name, inode);}static inline void audit_inode_child(const char *dname, const struct inode *inode, const struct inode *parent) { if (unlikely(!audit_dummy_context())) __audit_inode_child(dname, inode, parent);}static inline void audit_inode_update(const struct inode *inode) { if (unlikely(!audit_dummy_context())) __audit_inode_update(inode);} /* Private API (for audit.c only) */extern unsigned int audit_serial(void);extern void auditsc_get_stamp(struct audit_context *ctx, struct timespec *t, unsigned int *serial);extern int audit_set_loginuid(struct task_struct *task, uid_t loginuid);extern uid_t audit_get_loginuid(struct audit_context *ctx);extern void audit_log_task_context(struct audit_buffer *ab);extern int __audit_ipc_obj(struct kern_ipc_perm *ipcp);extern int __audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, mode_t mode);extern int audit_bprm(struct linux_binprm *bprm);extern int audit_socketcall(int nargs, unsigned long *args);extern int audit_sockaddr(int len, void *addr);extern int audit_avc_path(struct dentry *dentry, struct vfsmount *mnt);extern int audit_set_macxattr(const char *name);extern int __audit_mq_open(int oflag, mode_t mode, struct mq_attr __user *u_attr);extern int __audit_mq_timedsend(mqd_t mqdes, size_t msg_len, unsigned int msg_prio, const struct timespec __user *u_abs_timeout);extern int __audit_mq_timedreceive(mqd_t mqdes, size_t msg_len, unsigned int __user *u_msg_prio, const struct timespec __user *u_abs_timeout);extern int __audit_mq_notify(mqd_t mqdes, const struct sigevent __user *u_notification);extern int __audit_mq_getsetattr(mqd_t mqdes, struct mq_attr *mqstat);static inline int audit_ipc_obj(struct kern_ipc_perm *ipcp){ if (unlikely(!audit_dummy_context())) return __audit_ipc_obj(ipcp); return 0;}static inline int audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, mode_t mode){ if (unlikely(!audit_dummy_context())) return __audit_ipc_set_perm(qbytes, uid, gid, mode); return 0;}static inline int audit_mq_open(int oflag, mode_t mode, struct mq_attr __user *u_attr){ if (unlikely(!audit_dummy_context())) return __audit_mq_open(oflag, mode, u_attr); return 0;}static inline int audit_mq_timedsend(mqd_t mqdes, size_t msg_len, unsigned int msg_prio, const struct timespec __user *u_abs_timeout){ if (unlikely(!audit_dummy_context())) return __audit_mq_timedsend(mqdes, msg_len, msg_prio, u_abs_timeout); return 0;}static inline int audit_mq_timedreceive(mqd_t mqdes, size_t msg_len, unsigned int __user *u_msg_prio, const struct timespec __user *u_abs_timeout){ if (unlikely(!audit_dummy_context())) return __audit_mq_timedreceive(mqdes, msg_len, u_msg_prio, u_abs_timeout); return 0;}static inline int audit_mq_notify(mqd_t mqdes, const struct sigevent __user *u_notification){ if (unlikely(!audit_dummy_context())) return __audit_mq_notify(mqdes, u_notification); return 0;}static inline int audit_mq_getsetattr(mqd_t mqdes, struct mq_attr *mqstat){ if (unlikely(!audit_dummy_context())) return __audit_mq_getsetattr(mqdes, mqstat); return 0;}extern int audit_n_rules;#else#define audit_alloc(t) ({ 0; })#define audit_free(t) do { ; } while (0)#define audit_syscall_entry(ta,a,b,c,d,e) do { ; } while (0)#define audit_syscall_exit(f,r) do { ; } while (0)#define audit_dummy_context() 1#define audit_getname(n) do { ; } while (0)#define audit_putname(n) do { ; } while (0)#define __audit_inode(n,i) do { ; } while (0)#define __audit_inode_child(d,i,p) do { ; } while (0)#define __audit_inode_update(i) do { ; } while (0)#define audit_inode(n,i) do { ; } while (0)#define audit_inode_child(d,i,p) do { ; } while (0)#define audit_inode_update(i) do { ; } while (0)#define auditsc_get_stamp(c,t,s) do { BUG(); } while (0)#define audit_get_loginuid(c) ({ -1; })#define audit_log_task_context(b) do { ; } while (0)#define audit_ipc_obj(i) ({ 0; })#define audit_ipc_set_perm(q,u,g,m) ({ 0; })#define audit_bprm(p) ({ 0; })#define audit_socketcall(n,a) ({ 0; })#define audit_sockaddr(len, addr) ({ 0; })#define audit_avc_path(dentry, mnt) ({ 0; })#define audit_set_macxattr(n) do { ; } while (0)#define audit_mq_open(o,m,a) ({ 0; })#define audit_mq_timedsend(d,l,p,t) ({ 0; })#define audit_mq_timedreceive(d,l,p,t) ({ 0; })#define audit_mq_notify(d,n) ({ 0; })#define audit_mq_getsetattr(d,s) ({ 0; })#define audit_n_rules 0#endif#ifdef CONFIG_AUDIT/* These are defined in audit.c */ /* Public API */extern void audit_log(struct audit_context *ctx, gfp_t gfp_mask, int type, const char *fmt, ...) __attribute__((format(printf,4,5)));extern struct audit_buffer *audit_log_start(struct audit_context *ctx, gfp_t gfp_mask, int type);extern void audit_log_format(struct audit_buffer *ab, const char *fmt, ...) __attribute__((format(printf,2,3)));extern void audit_log_end(struct audit_buffer *ab);extern void audit_log_hex(struct audit_buffer *ab, const unsigned char *buf, size_t len);extern const char * audit_log_untrustedstring(struct audit_buffer *ab, const char *string);extern const char * audit_log_n_untrustedstring(struct audit_buffer *ab, size_t n, const char *string);extern void audit_log_d_path(struct audit_buffer *ab, const char *prefix, struct dentry *dentry, struct vfsmount *vfsmnt); /* Private API (for audit.c only) */extern int audit_filter_user(struct netlink_skb_parms *cb, int type);extern int audit_filter_type(int type);extern int audit_receive_filter(int type, int pid, int uid, int seq, void *data, size_t datasz, uid_t loginuid, u32 sid);#else#define audit_log(c,g,t,f,...) do { ; } while (0)#define audit_log_start(c,g,t) ({ NULL; })#define audit_log_vformat(b,f,a) do { ; } while (0)#define audit_log_format(b,f,...) do { ; } while (0)#define audit_log_end(b) do { ; } while (0)#define audit_log_hex(a,b,l) do { ; } while (0)#define audit_log_untrustedstring(a,s) do { ; } while (0)#define audit_log_n_untrustedstring(a,n,s) do { ; } while (0)#define audit_log_d_path(b,p,d,v) do { ; } while (0)#endif#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -