⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 security.h

📁 Linux Kernel 2.6.9 for OMAP1710
💻 H
📖 第 1 页 / 共 5 页
字号:
/* * Linux Security plug * * Copyright (C) 2001 WireX Communications, Inc <chris@wirex.com> * Copyright (C) 2001 Greg Kroah-Hartman <greg@kroah.com> * Copyright (C) 2001 Networks Associates Technology, Inc <ssmalley@nai.com> * Copyright (C) 2001 James Morris <jmorris@intercode.com.au> * Copyright (C) 2001 Silicon Graphics, Inc. (Trust Technology Group) * *	This program is free software; you can redistribute it and/or modify *	it under the terms of the GNU General Public License as published by *	the Free Software Foundation; either version 2 of the License, or *	(at your option) any later version. * *	Due to this file being licensed under the GPL there is controversy over *	whether this permits you to write a module that #includes this file *	without placing your module under the GPL.  Please consult a lawyer for *	advice before doing this. * */#ifndef __LINUX_SECURITY_H#define __LINUX_SECURITY_H#include <linux/fs.h>#include <linux/binfmts.h>#include <linux/signal.h>#include <linux/resource.h>#include <linux/sem.h>#include <linux/sysctl.h>#include <linux/shm.h>#include <linux/msg.h>#include <linux/sched.h>#include <linux/skbuff.h>#include <linux/netlink.h>/* * These functions are in security/capability.c and are used * as the default capabilities functions */extern int cap_capable (struct task_struct *tsk, int cap);extern int cap_ptrace (struct task_struct *parent, struct task_struct *child);extern int cap_capget (struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted);extern int cap_capset_check (struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted);extern void cap_capset_set (struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted);extern int cap_bprm_set_security (struct linux_binprm *bprm);extern void cap_bprm_apply_creds (struct linux_binprm *bprm, int unsafe);extern int cap_bprm_secureexec(struct linux_binprm *bprm);extern int cap_inode_setxattr(struct dentry *dentry, char *name, void *value, size_t size, int flags);extern int cap_inode_removexattr(struct dentry *dentry, char *name);extern int cap_task_post_setuid (uid_t old_ruid, uid_t old_euid, uid_t old_suid, int flags);extern void cap_task_reparent_to_init (struct task_struct *p);extern int cap_syslog (int type);extern int cap_vm_enough_memory (long pages);static inline int cap_netlink_send (struct sock *sk, struct sk_buff *skb){	NETLINK_CB (skb).eff_cap = current->cap_effective;	return 0;}static inline int cap_netlink_recv (struct sk_buff *skb){	if (!cap_raised (NETLINK_CB (skb).eff_cap, CAP_NET_ADMIN))		return -EPERM;	return 0;}/* * Values used in the task_security_ops calls *//* setuid or setgid, id0 == uid or gid */#define LSM_SETID_ID	1/* setreuid or setregid, id0 == real, id1 == eff */#define LSM_SETID_RE	2/* setresuid or setresgid, id0 == real, id1 == eff, uid2 == saved */#define LSM_SETID_RES	4/* setfsuid or setfsgid, id0 == fsuid or fsgid */#define LSM_SETID_FS	8/* forward declares to avoid warnings */struct nfsctl_arg;struct sched_param;struct swap_info_struct;/* bprm_apply_creds unsafe reasons */#define LSM_UNSAFE_SHARE	1#define LSM_UNSAFE_PTRACE	2#define LSM_UNSAFE_PTRACE_CAP	4#ifdef CONFIG_SECURITY/** * struct security_operations - main security structure * * Security hooks for program execution operations. * * @bprm_alloc_security: *	Allocate and attach a security structure to the @bprm->security field. *	The security field is initialized to NULL when the bprm structure is *	allocated. *	@bprm contains the linux_binprm structure to be modified. *	Return 0 if operation was successful. * @bprm_free_security: *	@bprm contains the linux_binprm structure to be modified. *	Deallocate and clear the @bprm->security field. * @bprm_apply_creds: *	Compute and set the security attributes of a process being transformed *	by an execve operation based on the old attributes (current->security) *	and the information saved in @bprm->security by the set_security hook. *	Since this hook function (and its caller) are void, this hook can not *	return an error.  However, it can leave the security attributes of the *	process unchanged if an access failure occurs at this point. It can *	also perform other state changes on the process (e.g.  closing open *	file descriptors to which access is no longer granted if the attributes *	were changed).  *	bprm_apply_creds is called under task_lock.  @unsafe indicates various *	reasons why it may be unsafe to change security state. *	@bprm contains the linux_binprm structure. * @bprm_set_security: *	Save security information in the bprm->security field, typically based *	on information about the bprm->file, for later use by the apply_creds *	hook.  This hook may also optionally check permissions (e.g. for *	transitions between security domains). *	This hook may be called multiple times during a single execve, e.g. for *	interpreters.  The hook can tell whether it has already been called by *	checking to see if @bprm->security is non-NULL.  If so, then the hook *	may decide either to retain the security information saved earlier or *	to replace it. *	@bprm contains the linux_binprm structure. *	Return 0 if the hook is successful and permission is granted. * @bprm_check_security: * 	This hook mediates the point when a search for a binary handler	will * 	begin.  It allows a check the @bprm->security value which is set in * 	the preceding set_security call.  The primary difference from * 	set_security is that the argv list and envp list are reliably * 	available in @bprm.  This hook may be called multiple times * 	during a single execve; and in each pass set_security is called * 	first. * 	@bprm contains the linux_binprm structure. *	Return 0 if the hook is successful and permission is granted. * @bprm_secureexec: *      Return a boolean value (0 or 1) indicating whether a "secure exec"  *      is required.  The flag is passed in the auxiliary table *      on the initial stack to the ELF interpreter to indicate whether libc  *      should enable secure mode. *      @bprm contains the linux_binprm structure. * * Security hooks for filesystem operations. * * @sb_alloc_security: *	Allocate and attach a security structure to the sb->s_security field. *	The s_security field is initialized to NULL when the structure is *	allocated. *	@sb contains the super_block structure to be modified. *	Return 0 if operation was successful. * @sb_free_security: *	Deallocate and clear the sb->s_security field. *	@sb contains the super_block structure to be modified. * @sb_statfs: *	Check permission before obtaining filesystem statistics for the @sb *	filesystem. *	@sb contains the super_block structure for the filesystem. *	Return 0 if permission is granted.   * @sb_mount: *	Check permission before an object specified by @dev_name is mounted on *	the mount point named by @nd.  For an ordinary mount, @dev_name *	identifies a device if the file system type requires a device.  For a *	remount (@flags & MS_REMOUNT), @dev_name is irrelevant.  For a *	loopback/bind mount (@flags & MS_BIND), @dev_name identifies the *	pathname of the object being mounted. *	@dev_name contains the name for object being mounted. *	@nd contains the nameidata structure for mount point object. *	@type contains the filesystem type. *	@flags contains the mount flags. *	@data contains the filesystem-specific data. *	Return 0 if permission is granted. * @sb_copy_data: *	Allow mount option data to be copied prior to parsing by the filesystem, *	so that the security module can extract security-specific mount *	options cleanly (a filesystem may modify the data e.g. with strsep()). *	This also allows the original mount data to be stripped of security- *	specific options to avoid having to make filesystems aware of them. *	@type the type of filesystem being mounted. *	@orig the original mount data copied from userspace. *	@copy copied data which will be passed to the security module. *	Returns 0 if the copy was successful. * @sb_check_sb: *	Check permission before the device with superblock @mnt->sb is mounted *	on the mount point named by @nd. *	@mnt contains the vfsmount for device being mounted. *	@nd contains the nameidata object for the mount point. *	Return 0 if permission is granted. * @sb_umount: *	Check permission before the @mnt file system is unmounted. *	@mnt contains the mounted file system. *	@flags contains the unmount flags, e.g. MNT_FORCE. *	Return 0 if permission is granted. * @sb_umount_close: *	Close any files in the @mnt mounted filesystem that are held open by *	the security module.  This hook is called during an umount operation *	prior to checking whether the filesystem is still busy. *	@mnt contains the mounted filesystem. * @sb_umount_busy: *	Handle a failed umount of the @mnt mounted filesystem, e.g.  re-opening *	any files that were closed by umount_close.  This hook is called during *	an umount operation if the umount fails after a call to the *	umount_close hook. *	@mnt contains the mounted filesystem. * @sb_post_remount: *	Update the security module's state when a filesystem is remounted. *	This hook is only called if the remount was successful. *	@mnt contains the mounted file system. *	@flags contains the new filesystem flags. *	@data contains the filesystem-specific data. * @sb_post_mountroot: *	Update the security module's state when the root filesystem is mounted. *	This hook is only called if the mount was successful. * @sb_post_addmount: *	Update the security module's state when a filesystem is mounted. *	This hook is called any time a mount is successfully grafetd to *	the tree. *	@mnt contains the mounted filesystem. *	@mountpoint_nd contains the nameidata structure for the mount point. * @sb_pivotroot: *	Check permission before pivoting the root filesystem. *	@old_nd contains the nameidata structure for the new location of the current root (put_old). *      @new_nd contains the nameidata structure for the new root (new_root). *	Return 0 if permission is granted. * @sb_post_pivotroot: *	Update module state after a successful pivot. *	@old_nd contains the nameidata structure for the old root. *      @new_nd contains the nameidata structure for the new root. * * Security hooks for inode operations. * * @inode_alloc_security: *	Allocate and attach a security structure to @inode->i_security.  The *	i_security field is initialized to NULL when the inode structure is *	allocated. *	@inode contains the inode structure. *	Return 0 if operation was successful. * @inode_free_security: *	@inode contains the inode structure. *	Deallocate the inode security structure and set @inode->i_security to *	NULL.  * @inode_create: *	Check permission to create a regular file. *	@dir contains inode structure of the parent of the new file. *	@dentry contains the dentry structure for the file to be created. *	@mode contains the file mode of the file to be created. *	Return 0 if permission is granted. * @inode_post_create: *	Set the security attributes on a newly created regular file.  This hook *	is called after a file has been successfully created. *	@dir contains the inode structure of the parent directory of the new file. *	@dentry contains the the dentry structure for the newly created file. *	@mode contains the file mode. * @inode_link: *	Check permission before creating a new hard link to a file. *	@old_dentry contains the dentry structure for an existing link to the file. *	@dir contains the inode structure of the parent directory of the new link. *	@new_dentry contains the dentry structure for the new link. *	Return 0 if permission is granted. * @inode_post_link: *	Set security attributes for a new hard link to a file. *	@old_dentry contains the dentry structure for the existing link. *	@dir contains the inode structure of the parent directory of the new file. *	@new_dentry contains the dentry structure for the new file link. * @inode_unlink: *	Check the permission to remove a hard link to a file.  *	@dir contains the inode structure of parent directory of the file. *	@dentry contains the dentry structure for file to be unlinked. *	Return 0 if permission is granted. * @inode_symlink: *	Check the permission to create a symbolic link to a file. *	@dir contains the inode structure of parent directory of the symbolic link. *	@dentry contains the dentry structure of the symbolic link. *	@old_name contains the pathname of file. *	Return 0 if permission is granted. * @inode_post_symlink: *	@dir contains the inode structure of the parent directory of the new link. *	@dentry contains the dentry structure of new symbolic link. *	@old_name contains the pathname of file. *	Set security attributes for a newly created symbolic link.  Note that *	@dentry->d_inode may be NULL, since the filesystem might not *	instantiate the dentry (e.g. NFS). * @inode_mkdir: *	Check permissions to create a new directory in the existing directory *	associated with inode strcture @dir.  *	@dir containst the inode structure of parent of the directory to be created. *	@dentry contains the dentry structure of new directory. *	@mode contains the mode of new directory. *	Return 0 if permission is granted. * @inode_post_mkdir: *	Set security attributes on a newly created directory. *	@dir contains the inode structure of parent of the directory to be created. *	@dentry contains the dentry structure of new directory. *	@mode contains the mode of new directory. * @inode_rmdir: *	Check the permission to remove a directory. *	@dir contains the inode structure of parent of the directory to be removed.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -