LSM defines a miscellaneous set of hooks to protect the remaining security sensitive actions that are not covered by the hooks discussed above. These hooks typically mediate system-level actions such as setting the system's host name or domain name, rebooting the system, and accessing I/O ports. The existing capability checks already protect these actions; however, the LSM hooks provide more finely grained access control.
The LSM interface leverages the pre-existing POSIX.1e capabilities infrastructure in the Linux kernel. The capability checks can often override standard DAC checks (akin to root). The checks are limited to a 32 bit vector describing the required capability, e.g., CAP_DAC_OVERRIDE, and thus give the module limited context when making access control decisions. The system-level capable() hook is placed in the existing capable() function which gives LSM easy compatibility with POSIX.1e capabilities as well as a moderate ability to override DAC checks.
The LSM framework adds a security system call, which is a thin wrapper around the sys_security() hook in the LSM interface. This system call is a simple multiplexor which allows a module to define a set of policy specific system calls. The LSM security system call interface is modeled after the standard Linux socket system call multiplexor, sys_socketcall(2).