This post contains patches to include the AppArmor application security framework, with request for inclusion into -mm for wider testing. These patches are currently against lkml but we will gladly rebase them against -mm so that they will apply cleanly. Any comments and feedback to improve implementation are appreciated. A second post dealing with the issue of passing NULL nameidata, will be posted to lkml for discussion. Changes since previous post: - remove custom pathname mangling - rework apparmor auditing to cleanup message formating and better use audit framework - change permission consistency checks from runtime to once at policy load - add change_profile feature and cleanup change_hat to use change_profile The patch series consists of five areas: (1) Pass struct vfsmount through to LSM hooks. (2) Fixes and improvements to __d_path(): (a) make it unambiguous and exclude unreachable paths from /proc/mounts, (b) make its result consistent in the face of remounts, (c) introduce d_namespace_path(), a variant of d_path that goes up to the namespace root instead of the chroot. (d) the behavior of d_path() and getcwd() remain unchanged, and there is no hidding of unreachable paths in /proc/mounts. The patches addressing these have been seperated from the AppArmor submission and will be introduced at a later date. Part (a) has been in the -mm tree for a while; this series includes an updated copy of the -mm patch. Parts (b) and (c) shouldn't be too controversial. (3) Be able to distinguish file descriptor access from access by name in LSM hooks. Applications expect different behavior from file descriptor accesses and accesses by name in some cases. We need to pass this information down the LSM hooks to allow AppArmor to tell which is which. (4) Convert the selinux sysctl pathname computation code into a standalone function. (5) The AppArmor LSM itself. (See below.) A tarball of the kernel patches, base user-space utilities, example profiles, and technical documentation (including a walk-through) are available at: http://forgeftp.novell.com//apparmor/LKML_Submission-June-07/ Explaining the AppArmor design in detail would take by far too much space here, so let me refer you to the technical documentation for that. Included is a low-level walk-through of the system and basic tools, and some examples. The manual pages included in the apparmor-parser package are worth a read as well. -- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
- Follow-Ups:
- [AppArmor 31/44] Add d_namespace_path() to compute namespace relative pathnames
- From: [email protected]
- [AppArmor 24/44] Pass struct vfsmount to the inode_getxattr LSM hook
- From: [email protected]
- Re: [AppArmor 00/44] AppArmor security module overview
- From: Andrew Morton <[email protected]>
- [AppArmor 04/44] Pass struct vfsmount to the inode_setattr LSM hook
- From: [email protected]
- [AppArmor 43/44] Switch to vfs_permission() in sys_fchdir()
- From: [email protected]
- [AppArmor 44/44] Fix file_permission()
- From: [email protected]
- [AppArmor 42/44] Switch to vfs_permission() in do_path_lookup()
- From: [email protected]
- [AppArmor 41/44] Add AppArmor LSM to security/Makefile
- From: [email protected]
- [AppArmor 40/44] AppArmor: all the rest
- From: [email protected]
- [AppArmor 39/44] AppArmor: Profile loading and manipulation, pathname matching
- From: [email protected]
- [AppArmor 38/44] AppArmor: Module and LSM hooks
- From: [email protected]
- [AppArmor 37/44] AppArmor: Main Part
- From: [email protected]
- [AppArmor 36/44] Export audit subsystem for use by modules
- From: [email protected]
- [AppArmor 35/44] Allow permission functions to tell between parent and leaf checks
- From: [email protected]
- [AppArmor 33/44] Pass struct file down the inode_*xattr security LSM hooks
- From: [email protected]
- [AppArmor 34/44] Factor out sysctl pathname code
- From: [email protected]
- [AppArmor 32/44] Enable LSM hooks to distinguish operations on file descriptors from operations on pathnames
- From: [email protected]
- [AppArmor 29/44] Fix __d_path() for lazy unmounts and make it unambiguous
- From: [email protected]
- [AppArmor 30/44] Make d_path() consistent across mount operations
- From: [email protected]
- [AppArmor 12/44] Add struct vfsmount parameters to vfs_link()
- From: [email protected]
- [AppArmor 26/44] Pass struct vfsmount to the inode_listxattr LSM hook
- From: [email protected]
- [AppArmor 28/44] Pass struct vfsmount to the inode_removexattr LSM hook
- From: [email protected]
- [AppArmor 27/44] Add a struct vfsmount parameter to vfs_removexattr()
- From: [email protected]
- [AppArmor 25/44] Add a struct vfsmount parameter to vfs_listxattr()
- From: [email protected]
- [AppArmor 21/44] Add a struct vfsmount parameter to vfs_setxattr()
- From: [email protected]
- [AppArmor 22/44] Pass struct vfsmount to the inode_setxattr LSM hook
- From: [email protected]
- [AppArmor 23/44] Add a struct vfsmount parameter to vfs_getxattr()
- From: [email protected]
- [AppArmor 20/44] Pass struct vfsmount to the inode_rename LSM hook
- From: [email protected]
- [AppArmor 19/44] Add struct vfsmount parameters to vfs_rename()
- From: [email protected]
- [AppArmor 18/44] Pass struct vfsmount to the inode_unlink LSM hook
- From: [email protected]
- [AppArmor 16/44] Call lsm hook before unhashing dentry in vfs_rmdir()
- From: [email protected]
- [AppArmor 17/44] Add a struct vfsmount parameter to vfs_unlink()
- From: [email protected]
- [AppArmor 15/44] Pass struct vfsmount to the inode_rmdir LSM hook
- From: [email protected]
- [AppArmor 14/44] Add a struct vfsmount parameter to vfs_rmdir()
- From: [email protected]
- [AppArmor 13/44] Pass the struct vfsmounts to the inode_link LSM hook
- From: [email protected]
- [AppArmor 11/44] Pass struct vfsmount to the inode_readlink LSM hook
- From: [email protected]
- [AppArmor 10/44] Pass struct vfsmount to the inode_symlink LSM hook
- From: [email protected]
- [AppArmor 08/44] Pass struct vfsmount to the inode_mknod LSM hook
- From: [email protected]
- [AppArmor 07/44] Add a struct vfsmount parameter to vfs_mknod()
- From: [email protected]
- [AppArmor 09/44] Add a struct vfsmount parameter to vfs_symlink()
- From: [email protected]
- [AppArmor 06/44] Pass struct vfsmount to the inode_mkdir LSM hook
- From: [email protected]
- [AppArmor 05/44] Add struct vfsmount parameter to vfs_mkdir()
- From: [email protected]
- [AppArmor 02/44] Pass struct path down to remove_suid and children
- From: [email protected]
- [AppArmor 01/44] Pass struct vfsmount to the inode_create LSM hook
- From: [email protected]
- [AppArmor 03/44] Add a vfsmount parameter to notify_change()
- From: [email protected]
- [AppArmor 31/44] Add d_namespace_path() to compute namespace relative pathnames
- Prev by Date: Re: [PATCH] Re: [2.6.21.1] soft lockup when removing netconsole module
- Next by Date: [AppArmor 03/44] Add a vfsmount parameter to notify_change()
- Previous by thread: [PATCH -mm] ALSA portman2x4 section mismatch
- Next by thread: [AppArmor 03/44] Add a vfsmount parameter to notify_change()
- Index(es):