AppArmor security module overview
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest44 patches 31 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/44 | Pass struct vfsmount to the inode_create LSM hookfs/ include/ security/ +1 more | +10 | 2 replies | |
| 2/44 | Pass struct path down to remove_suid and childrenfs/ fs/ fs/ +5 more | +15 | 0 replies | |
| 3/44 | Add a vfsmount parameter to notify_change()fs/ fs/ fs/ +11 more | +45 | 0 replies | |
| 4/44 | Pass struct vfsmount to the inode_setattr LSM hookfs/ include/ security/ +1 more | +13 | 0 replies | |
| 5/44 | Add struct vfsmount parameter to vfs_mkdir()fs/ fs/ fs/ +2 more | +15 | 0 replies | |
| 6/44 | Pass struct vfsmount to the inode_mkdir LSM hookfs/ include/ security/ +1 more | +10 | 0 replies | |
| 7/44 | Add a struct vfsmount parameter to vfs_mknod()fs/ fs/ fs/ +2 more | +14 | 0 replies | |
| 8/44 | Pass struct vfsmount to the inode_mknod LSM hookfs/ include/ security/ +1 more | +10 | 0 replies | |
| 9/44 | Add a struct vfsmount parameter to vfs_symlink()fs/ fs/ fs/ +1 more | +16 | 0 replies | |
| 10/44 | Pass struct vfsmount to the inode_symlink LSM hookfs/ include/ security/ +1 more | +10 | 0 replies | |
| 11/44 | Pass struct vfsmount to the inode_readlink LSM hookfs/ include/ security/ +1 more | +10 | 0 replies | |
| 12/44 | Add struct vfsmount parameters to vfs_link()fs/ fs/ fs/ +1 more | +13 | 0 replies | |
| 13/44 | Pass the struct vfsmounts to the inode_link LSM hookfs/ include/ security/ +1 more | +26 | 0 replies | |
| 14/44 | Add a struct vfsmount parameter to vfs_rmdir()fs/ fs/ fs/ +3 more | +13 | 0 replies | |
| 15/44 | Pass struct vfsmount to the inode_rmdir LSM hookfs/ include/ security/ +1 more | +13 | 0 replies | |
| 16/44 | Call lsm hook before unhashing dentry in vfs_rmdir()fs/ | +7 | 0 replies | |
| 17/44 | Add a struct vfsmount parameter to vfs_unlink()fs/ fs/ fs/ +3 more | +8 | 0 replies | |
| 18/44 | Pass struct vfsmount to the inode_unlink LSM hookfs/ include/ security/ +1 more | +14 | 0 replies | |
| 19/44 | Add struct vfsmount parameters to vfs_rename()fs/ fs/ fs/ +1 more | +21 | 0 replies | |
| 20/44 | Pass struct vfsmount to the inode_rename LSM hookfs/ include/ security/ +1 more | +26 | 0 replies | |
| 21/44 | Add a struct vfsmount parameter to vfs_setxattr()fs/ fs/ include/ | +21 | 0 replies | |
| 22/44 | Pass struct vfsmount to the inode_setxattr LSM hookfs/ include/ security/ +2 more | +41 | 0 replies | |
| 23/44 | Add a struct vfsmount parameter to vfs_getxattr()fs/ fs/ fs/ +2 more | +25 | 0 replies | |
| 24/44 | Pass struct vfsmount to the inode_getxattr LSM hookfs/ include/ security/ +1 more | +13 | 0 replies | |
| 25/44 | Add a struct vfsmount parameter to vfs_listxattr()fs/ include/ | +16 | 0 replies | |
| 26/44 | Pass struct vfsmount to the inode_listxattr LSM hookfs/ include/ security/ +1 more | +10 | 0 replies | |
| 27/44 | Add a struct vfsmount parameter to vfs_removexattr()fs/ fs/ include/ | +11 | 0 replies | |
| 28/44 | Pass struct vfsmount to the inode_removexattr LSM hookfs/ include/ security/ +2 more | +16 | 0 replies | |
| 29/44 | Fix __d_path() for lazy unmounts and make it unambiguousfs/ | +98 | 0 replies | |
| 30/44 | Make d_path() consistent across mount operationsfs/ | +8 | 0 replies | |
| 31/44 | Add d_namespace_path() to compute namespace relative pathnamesfs/ fs/ include/ +1 more | +34 | 0 replies | |
| 32/44 | Enable LSM hooks to distinguish operations on file descriptors from operations on pathnamesfs/ fs/ include/ | +21 | 4 replies | |
| 33/44 | Pass struct file down the inode_*xattr security LSM hooksfs/ include/ include/ +3 more | +80 | 0 replies | |
| 34/44 | Factor out sysctl pathname codeinclude/ kernel/ security/ | +34 | 0 replies | |
| 35/44 | Allow permission functions to tell between parent and leaf checksfs/ | +6 | 0 replies | |
| 36/44 | Export audit subsystem for use by modulesinclude/ kernel/ | +15 | 0 replies | |
| 37/44 | AppArmor: Main Partsecurity/ | +1255 | 0 replies | |
| 38/44 | AppArmor: Module and LSM hookssecurity/ | +817 | 0 replies | |
| 39/44 | AppArmor: Profile loading and manipulation, pathname matchingsecurity/ security/ security/ | +920 | 0 replies | |
| 40/44 | AppArmor: all the restsecurity/ security/ security/ +5 more | +1067 | 0 replies | |
| 41/44 | Add AppArmor LSM to security/Makefilesecurity/ security/ security/ | +4 | 0 replies | |
| 42/44 | Switch to vfs_permission() in do_path_lookup()fs/ | +6 | 0 replies | |
| 43/44 | Switch to vfs_permission() in sys_fchdir()fs/ | +7 | 0 replies | |
| 44/44 | Fix file_permission()fs/ | +7 | 0 replies |
Reviews trailers per patch
1 of 44 patches has a Reviewed-by or Acked-by.
| Patch | Alan Cox |
|---|---|
| 1/44 | |
| 2/44 | |
| 3/44 | |
| 4/44 | |
| 5/44 | |
| 6/44 | |
| 7/44 | |
| 8/44 | |
| 9/44 | |
| 10/44 | |
| 11/44 | |
| 12/44 | |
| 13/44 | |
| 14/44 | |
| 15/44 | |
| 16/44 | |
| 17/44 | |
| 18/44 | |
| 19/44 | |
| 20/44 | |
| 21/44 | |
| 22/44 | |
| 23/44 | |
| 24/44 | |
| 25/44 | |
| 26/44 | |
| 27/44 | |
| 28/44 | |
| 29/44 | A-b |
| 30/44 | |
| 31/44 | |
| 32/44 | |
| 33/44 | |
| 34/44 | |
| 35/44 | |
| 36/44 | |
| 37/44 | |
| 38/44 | |
| 39/44 | |
| 40/44 | |
| 41/44 | |
| 42/44 | |
| 43/44 | |
| 44/44 |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [AppArmor 00/44] AppArmor security module overview
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.